@dskripchenko/embed 1.5.2 → 1.6.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.
@@ -3,35 +3,35 @@
3
3
  `).split(`
4
4
  `);for(;t.length>0&&t[0].trim()===``;)t.shift();for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();let n=1/0;for(let e of t)e.trim()!==``&&(n=Math.min(n,e.length-e.trimStart().length));return!Number.isFinite(n)||n===0?t.join(`
5
5
  `):t.map(e=>e.slice(Math.min(n,e.length-e.trimStart().length))).join(`
6
- `)}function D(e){let t=(e.getAttribute(`type`)??``).trim().toLowerCase();return t!==``&&t!==`module`&&!/javascript|ecmascript/.test(t)}function ee(e){for(let t of Array.from(e.children))if(t.tagName===`SCRIPT`&&D(t))return E(t.textContent??``);for(let t of Array.from(e.children))if(t.tagName===`TEMPLATE`)return E(t.innerHTML);let t=``;for(let n of Array.from(e.childNodes))(n.nodeType===Node.TEXT_NODE||n.nodeType===Node.ELEMENT_NODE&&!T.has(n.tagName)&&!n.hasAttribute(`data-dsk-root`))&&(t+=n.textContent??``);return E(t)}function O(e){let t={};for(let n of Array.from(e.attributes)){let e=n.name.startsWith(`data-`)?n.name.slice(5):n.name;(!(e in t)||n.name.startsWith(`data-`))&&(t[e]=n.value)}return t}function k(e){let t=[],n=[];for(let r of Array.from(e.children))r.tagName===`SOURCE`?t.push(O(r)):r.tagName===`TRACK`&&n.push(O(r));return{sources:t,tracks:n}}var A={"dsk-video":{plugin:`media`,methods:[`play`,`pause`,`toggle`,`seek`,`playChapter`],getters:[`state`,`media`,`chapters`],objects:[]},"dsk-audio":{plugin:`media`,methods:[`play`,`pause`,`toggle`,`seek`,`next`,`prev`],getters:[`state`,`media`],objects:[]},"dsk-diagram":{plugin:`diagram`,methods:[`enterFullscreen`,`exitFullscreen`],getters:[`svg`,`fullscreen`],objects:[]},"dsk-openapi":{plugin:`openapi`,methods:[`go`,`open`,`print`,`enterFullscreen`,`exitFullscreen`],getters:[`loaded`,`value`,`fullscreen`],objects:[`spec`,`send`,`labels`]},"dsk-flow":{plugin:`flow`,methods:[`fit`,`select`,`enter`,`back`,`refresh`,`undo`,`redo`,`enterFullscreen`,`exitFullscreen`],getters:[`stack`,`fullscreen`],objects:[`graph`,`loadSubgraph`,`persistToggle`,`labels`,`registry`]},"dsk-markdown":{plugin:`markdown`,methods:[],getters:[`value`],objects:[]},"dsk-board":{plugin:`board`,methods:[`fit`,`select`,`toPng`,`toSvg`,`undo`,`redo`,`enterFullscreen`,`exitFullscreen`],getters:[`value`,`fullscreen`],objects:[`board`,`provider`,`labels`]},"dsk-editor":{plugin:`editor`,methods:[`focus`],getters:[`controller`],objects:[]},"dsk-asyncapi":{plugin:`openapi`,methods:[`enterFullscreen`,`exitFullscreen`],getters:[`loaded`,`fullscreen`],objects:[`spec`,`labels`]},"dsk-bpmn":{plugin:`bpmn`,methods:[`fit`,`undo`,`redo`,`toSvg`,`enterFullscreen`,`exitFullscreen`],getters:[`value`,`fullscreen`],objects:[`labels`,`highlight`]},"dsk-dmn":{plugin:`bpmn`,methods:[`fit`,`undo`,`redo`,`toSvg`,`open`,`enterFullscreen`,`exitFullscreen`],getters:[`value`,`fullscreen`],objects:[`labels`,`highlight`]},"dsk-calendar":{plugin:`calendar`,methods:[],getters:[`value`],objects:[]},"dsk-kanban":{plugin:`kanban`,methods:[],getters:[`value`,`board`],objects:[]},"dsk-drawio":{plugin:`drawio`,methods:[`showPage`,`enterFullscreen`,`exitFullscreen`],getters:[`svg`,`pages`,`page`,`fullscreen`],objects:[]}},j=null,M={io:null};function N(e,t){typeof IntersectionObserver==`function`?(M.io??=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(M.io.unobserve(t.target),t.target._dskLazyStart?.())},{rootMargin:`200px`}),e._dskLazyStart=t,M.io.observe(e)):t()}function te(e,t,n){let r=n.map(f);class i extends HTMLElement{static get observedAttributes(){return r}_overrides={};_source=null;_children={sources:[],tracks:[]};_instance=null;_container=null;_starting=!1;_waitingForParse=!1;_updateQueued=!1;_resolveReady;_ready;constructor(){super(),this._ready=new Promise(e=>this._resolveReady=e)}get ready(){return this._ready}get source(){return this._source===null&&this._capture(),this._source??``}set source(e){this._source=String(e??``),this._queueUpdate()}connectedCallback(){this.hasAttribute(`data-dsk`)||this.setAttribute(`data-dsk`,``),!(this._instance||this._starting)&&(document.readyState===`loading`?this._waitingForParse||(this._waitingForParse=!0,document.addEventListener(`DOMContentLoaded`,()=>{this._waitingForParse=!1,this.isConnected&&this.connectedCallback()},{once:!0})):this.getAttribute(`loading`)===`lazy`?N(this,()=>this._start()):this._start())}disconnectedCallback(){M.io?.unobserve(this),queueMicrotask(()=>{this.isConnected||this._destroy()})}attributeChangedCallback(e,t,n){t!==n&&(e===`loading`&&n!==`lazy`&&!this._instance&&!this._starting&&this.isConnected&&this._start(),this._queueUpdate())}refresh(){this._capture(!0),this._queueUpdate()}_capture(e=!1){(this._source===null||e)&&(this._source=ee(this),this._children=k(this))}_props(){let{props:t,errors:r}=x(this,n);for(let t of r)console.warn(`[dsk-embed] <${e} ${t.attr}>: ${t.message}`);return{...t,...this._overrides}}_locale(){let e=this._overrides.locale??this.getAttribute(`locale`);return typeof e==`string`&&e!==``?s(e):j?.config().locale??`en`}_queueUpdate(){this._instance&&!this._updateQueued&&(this._updateQueued=!0,queueMicrotask(()=>{this._updateQueued=!1,this._instance?.update()}))}_start(){let n=j;if(!n||this._starting||this._instance)return;this._starting=!0,this._capture();for(let e of Array.from(this.childNodes))e.nodeType===Node.ELEMENT_NODE&&T.has(e.tagName)||e.nodeType===Node.ELEMENT_NODE&&e.hasAttribute(`data-dsk-root`)||e.remove();let r=document.createElement(`div`);r.setAttribute(`data-dsk-root`,``),r.className=`dsk-root`,this.appendChild(r),this._container=r,this.setAttribute(`data-dsk-state`,`loading`),n.load(t.plugin).then(i=>{if(!this.isConnected||this._container!==r)return;if(!i.mountElement)throw Error(`plugin ${t.plugin} has no elements`);let a={host:n,el:this,tag:e,container:r,props:()=>this._props(),source:()=>this.source,children:()=>this._children,emit:(e,t)=>n.emit(e,t,this),locale:()=>this._locale()};this._instance=i.mountElement(a),this.setAttribute(`data-dsk-state`,`ready`),this._resolveReady(),n.emit(`ready`,{tag:e},this)}).catch(t=>{let i=t instanceof Error?t.message:String(t);console.error(`[dsk-embed] <${e}> failed to load`,t),this.setAttribute(`data-dsk-state`,`error`),r.replaceChildren();let a=document.createElement(`div`);a.className=`dsk-error`,a.setAttribute(`role`,`alert`),a.textContent=i,r.appendChild(a),n.emit(`error`,{tag:e,message:i},this)}).finally(()=>{this._starting=!1})}_destroy(){if(this._instance)try{this._instance.destroy()}catch(t){console.error(`[dsk-embed] <${e}> destroy failed`,t)}this._instance=null,this._container?.remove(),this._container=null,this.removeAttribute(`data-dsk-state`),this._ready=new Promise(e=>this._resolveReady=e)}}let a=i.prototype;for(let e of n)e.prop in a||Object.defineProperty(a,e.prop,{configurable:!0,enumerable:!0,get(){let t=this._instance?.api;return t&&e.prop in t?t[e.prop]:e.prop in this._overrides?this._overrides[e.prop]:this._props()[e.prop]},set(t){t===void 0?delete this._overrides[e.prop]:this._overrides[e.prop]=t,this._queueUpdate()}});for(let e of t.objects)Object.defineProperty(a,e,{configurable:!0,enumerable:!0,get(){let t=this._instance?.api;return t&&e in t?t[e]:this._overrides[e]},set(t){t===void 0?delete this._overrides[e]:this._overrides[e]=t,this._queueUpdate()}});for(let n of t.methods)a[n]=function(...t){let r=()=>{let r=this._instance?.api?.[n];if(typeof r!=`function`)throw Error(`<${e}>.${n}() is not available`);return r(...t)};return this._instance?r():this.ready.then(r)};for(let e of t.getters)Object.defineProperty(a,e,{configurable:!0,enumerable:!0,get(){return this._instance?.api?.[e]}});return i}function P(e,t,n=customElements){j=e;for(let[e,r]of Object.entries(A))n.get(e)||t&&!t.has(r.plugin)||n.define(e,te(e,r,w[e]??[]))}var ne=/^[a-z0-9][a-z0-9_+.-]*$/;function re(e){return String(e).trim().toLowerCase()}function F(e){if(typeof e==`function`)return e;if(e&&typeof e==`object`&&(typeof e.mount==`function`||typeof e.html==`string`)){let t=e;return()=>t}throw TypeError("a block renderer is a function, or an object with `html` or `mount`")}function ie(){let e=new Map,t=new Set,n=()=>{for(let e of[...t])e()},r={register(t,i){let a=re(t);if(!ne.test(a))throw TypeError(`invalid block language "${t}"`);let o=F(i);return e.set(a,o),n(),()=>{e.get(a)===o&&r.unregister(a)}},unregister(t){e.delete(re(t))&&n()},get:t=>e.get(re(t)),has:t=>e.has(re(t)),languages:()=>[...e.keys()],all:()=>Object.fromEntries(e),subscribe(e){return t.add(e),()=>t.delete(e)}};return r}var ae=new WeakMap,oe=`[data-dsk-root], [contenteditable], .uid-markdown, dsk-markdown, dsk-editor`;function se(e,t){for(let n of[t,e]){if(!n)continue;let e=n.getAttribute(`data-lang`)??n.getAttribute(`data-language`);if(e)return e.trim().toLowerCase();for(let e of Array.from(n.classList)){let t=/^(?:language|lang)-(.+)$/.exec(e);if(t)return t[1].toLowerCase()}}return null}function ce(e,t,n={}){let r=n.languages?.map(e=>e.toLowerCase()),i=[],a=[];e instanceof HTMLElement&&e.tagName===`PRE`&&a.push(e),a.push(...Array.from(e.querySelectorAll(`pre`)));for(let e of a){if(e.hasAttribute(`data-dsk-failed`)||e.closest(oe))continue;let n=e.querySelector(`:scope > code`),a=se(e,n);a&&t.has(a)&&(!r||r.includes(a))&&i.push({pre:e,code:(n??e).textContent??``,language:a})}return i}function le(e){return e instanceof Error?e.message:String(e)}function ue(e,t,n){t.setAttribute(`data-dsk-failed`,``),t.title=n,e.isConnected&&e.replaceWith(t),ae.delete(e)}async function de(e,t,n={}){let r=ce(e,t,n),i=0,a=r.map(async({pre:e,code:n,language:r})=>{let a=t.get(r),o=document.createElement(`div`);o.className=`dsk-block dsk-block--${r}`,o.setAttribute(`data-dsk-block`,r),o.setAttribute(`data-dsk-state`,`loading`),e.replaceWith(o),ae.set(o,{pre:e,handle:null});let s;try{s=await a(n,{language:r,index:i++})}catch(t){return ue(o,e,le(t)),0}if(!o.isConnected)return 0;if(!s||s.error!==void 0||s.html===void 0&&!s.mount)return ue(o,e,s?.error??`nothing to render`),0;if(s.mount)try{let t=s.mount(o,{code:n,language:r,editable:!1,setCode:()=>{}});ae.set(o,{pre:e,handle:typeof t==`function`?{destroy:t}:t??null})}catch(t){return ue(o,e,le(t)),0}else o.innerHTML=s.html;return o.setAttribute(`data-dsk-state`,`ready`),1});return(await Promise.all(a)).reduce((e,t)=>e+t,0)}function fe(e){let t=0,n=[];e instanceof Element&&e.hasAttribute(`data-dsk-block`)&&n.push(e),n.push(...Array.from(e.querySelectorAll(`[data-dsk-block]`)));for(let e of n){let n=ae.get(e);if(n){try{n.handle?.destroy?.()}catch(e){console.error(`[dsk-embed] block destroy failed`,e)}e.replaceWith(n.pre),ae.delete(e),t++}}return t}var pe=[`media`,`diagram`,`openapi`,`flow`,`markdown`,`editor`,`board`,`bpmn`,`drawio`,`kanban`,`calendar`],me={mermaid:`diagram`,plantuml:`diagram`,puml:`diagram`,dot:`diagram`,graphviz:`diagram`,d2:`diagram`,dbml:`diagram`,structurizr:`diagram`,wardley:`diagram`,openapi:`openapi`,asyncapi:`openapi`,bpmn:`bpmn`,dmn:`bpmn`,drawio:`drawio`,kanban:`kanban`,calendar:`calendar`,flow:`flow`,board:`board`,video:`media`,audio:`media`};function he(e){let t=u(e.config??{},document,e.versions),n=ie(),r=a(document),i=new Map,o=new Set(e.plugins??pe),s=new Map,c={version:e.version,config:()=>t.get(),onConfig:e=>t.subscribe(e),blocks:n,emit:(e,t,n)=>r.emit(e,t,n),load(n){let r=i.get(n);if(!r){let a=s.get(n);if(!a&&!o.has(n))return Promise.reject(Error(`the ${n} plugin is not on this page`));r=(a?a():e.loadPlugin(n,t.get())).then(e=>(e.setup?.(c),e)),r.catch(()=>i.delete(n)),i.set(n,r)}return r}},l=e=>{let t=new Set(e);for(let[e,r]of Object.entries(me))t.has(r)&&!n.has(e)&&n.register(e,async(t,n)=>{let i=(await c.load(r)).renderers?.[e];return i?i(t,n):{error:`no ${e} renderer in the ${r} plugin`}})};l(o),t.subscribe(e=>{r.emit(`config`,{theme:e.theme,resolvedTheme:e.resolvedTheme,locale:e.locale})});let d={version:e.version,mode:e.mode,versions:Object.freeze({...e.versions}),importMap:e.importMap??null,get config(){return t.get()},configure:e=>t.configure(e),blocks:{register:(e,t)=>n.register(e,t),unregister:e=>n.unregister(e),has:e=>n.has(e),list:()=>n.languages()},on:r.on,once:r.once,off:r.off,emit:r.emit,renderBlocks:(e=document.body,t)=>de(e,n,t),unrenderBlocks:(e=document.body)=>fe(e),preload:async(...e)=>{await Promise.all(e.map(e=>c.load(e)))},plugins:()=>[...o],extend(e){let t=[];for(let[n,r]of Object.entries(e))r&&!o.has(n)&&(s.set(n,typeof r==`function`?r:()=>Promise.resolve(r)),o.add(n),t.push(n));return t.length>0&&(P(c,o),l(t)),t},host:c};return P(c,o),d}function ge(e){let t={...globalThis.DskEmbedConfig??{}};if(e){let n=e.getAttribute(`data-theme`),r=e.getAttribute(`data-locale`),i=e.getAttribute(`data-cdn-base`);n&&(t.theme=n),r&&(t.locale=r),i&&(t.cdnBase=i)}return t}function _e(e,t){if(!t||!t.hasAttribute(`data-render-blocks`))return;let n=t.getAttribute(`data-render-blocks`)||`body`,r=()=>{for(let t of Array.from(document.querySelectorAll(n)))e.renderBlocks(t)};document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,r,{once:!0}):r()}function ve(e){return e.head.querySelector(`link[rel="stylesheet"]:not([data-dsk-embed]), style:not([data-dsk-embed])`)}function ye(e){let t=e.head.querySelectorAll(`link[data-dsk-embed], style[data-dsk-embed]`);return t.length>0?t[t.length-1]:null}function be(e,t){let n=ye(e);if(n)n.after(t);else{let n=ve(e);n?n.before(t):e.head.appendChild(t)}}function xe(e,t,n=document){if(n.querySelector(`style[data-dsk-embed="${e}"]`))return;let r=n.createElement(`style`);r.setAttribute(`data-dsk-embed`,e),r.textContent=t,be(n,r)}function Se(e,t){let r=document.currentScript instanceof HTMLScriptElement?document.currentScript:null,i=window.DskEmbed;if(i&&typeof i.extend!=`function`){console.warn(`[dsk-embed] already loaded (${i.mode} ${i.version}), without extend(); this bundle is ignored`);return}for(let[e,n]of t)xe(e,n);if(xe(`base`,n),i){i.extend(e);return}let a=he({mode:`bundle`,version:`1.5.2`,versions:{vue:`3.5.44`,"@dskripchenko/ui":`1.18.1`,"@dskripchenko/wysiwyg":`0.5.3`,"@dskripchenko/diagrams":`1.3.1`,"@dskripchenko/openapi":`1.2.0`,"@dskripchenko/flow":`1.2.0`,"@dskripchenko/board":`0.3.0`,"@dskripchenko/bpmn":`0.4.1`,"@dskripchenko/drawio":`0.1.0`},config:ge(r),plugins:Object.keys(e),loadPlugin:async t=>{let n=e[t];if(!n)throw Error(`the ${t} plugin is not in this bundle`);return n}});window.DskEmbed=a,_e(a,r),document.dispatchEvent(new CustomEvent(`dsk:embed-ready`,{detail:{version:`1.5.2`,mode:`bundle`}}))}var Ce={diagram:[`tokens`,`themes`],media:[`tokens`,`themes`,`kit`],markdown:[`tokens`,`themes`,`kit`],openapi:[`tokens`,`themes`,`kit`,`openapi`],flow:[`tokens`,`themes`,`kit`,`flow`],editor:[`tokens`,`themes`,`kit`,`editor`],board:[`tokens`,`themes`,`kit`,`board`],bpmn:[`tokens`,`themes`,`kit`,`bpmn`],drawio:[`tokens`,`themes`],kanban:[`tokens`,`themes`,`kit`],calendar:[`tokens`,`themes`,`kit`]},we={tokens:`:root{--uid-color-zinc-50:#fafafa;--uid-color-zinc-100:#f4f4f5;--uid-color-zinc-200:#e4e4e7;--uid-color-zinc-300:#d4d4d8;--uid-color-zinc-400:#a1a1aa;--uid-color-zinc-500:#71717a;--uid-color-zinc-600:#52525b;--uid-color-zinc-700:#3f3f46;--uid-color-zinc-800:#27272a;--uid-color-zinc-900:#18181b;--uid-color-zinc-950:#09090b;--uid-color-teal-50:#f0fdfa;--uid-color-teal-100:#ccfbf1;--uid-color-teal-300:#5eead4;--uid-color-teal-400:#2dd4bf;--uid-color-teal-500:#14b8a6;--uid-color-teal-600:#0d9488;--uid-color-teal-700:#0f766e;--uid-color-teal-900:#134e4a;--uid-color-rose-50:#fff1f2;--uid-color-rose-400:#fb7185;--uid-color-rose-500:#f43f5e;--uid-color-rose-600:#e11d48;--uid-color-rose-700:#be123c;--uid-color-rose-950:#4c0519;--uid-color-emerald-50:#ecfdf5;--uid-color-emerald-400:#34d399;--uid-color-emerald-600:#059669;--uid-color-emerald-950:#022c22;--uid-color-amber-50:#fffbeb;--uid-color-amber-400:#fbbf24;--uid-color-amber-600:#d97706;--uid-color-amber-950:#451a03;--uid-color-blue-50:#eff6ff;--uid-color-blue-400:#60a5fa;--uid-color-blue-600:#2563eb;--uid-color-blue-950:#172554;--uid-color-white:#fff;--uid-font-family-sans:"Inter", system-ui, -apple-system, sans-serif;--uid-font-family-display:"Inter Display", var(--uid-font-family-sans);--uid-font-family-mono:"IBM Plex Mono", "Fira Code", "Cascadia Mono", "Roboto Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace;--uid-font-size-xs:12px;--uid-font-size-sm:14px;--uid-font-size-md:16px;--uid-font-size-base:var(--uid-font-size-md);--uid-font-size-lg:18px;--uid-font-size-xl:20px;--uid-font-size-2xl:24px;--uid-font-size-3xl:30px;--uid-font-size-4xl:36px;--uid-font-weight-regular:400;--uid-font-weight-medium:500;--uid-font-weight-semibold:600;--uid-font-weight-bold:700;--uid-line-height-tight:1.25;--uid-line-height-snug:1.375;--uid-line-height-normal:1.5;--uid-line-height-relaxed:1.625;--uid-space-0:0;--uid-space-2xs:2px;--uid-space-xs:4px;--uid-space-sm:8px;--uid-space-md:16px;--uid-space-lg:24px;--uid-space-xl:32px;--uid-space-2xl:48px;--uid-space-3xl:64px;--uid-size-sm:32px;--uid-size-md:40px;--uid-size-lg:48px;--uid-radius-none:0;--uid-radius-sm:3px;--uid-radius-md:6px;--uid-radius-lg:10px;--uid-radius-full:9999px;--uid-duration-fast:.1s;--uid-duration-base:.2s;--uid-duration-slow:.35s;--uid-ease-out:cubic-bezier(0, 0, .2, 1);--uid-ease-in:cubic-bezier(.4, 0, 1, 1);--uid-ease-in-out:cubic-bezier(.4, 0, .2, 1);--uid-z-base:0;--uid-z-raised:1;--uid-z-sticky:100;--uid-z-affix:100;--uid-z-fixed:150;--uid-z-dropdown:200;--uid-z-overlay:300;--uid-z-drawer:400;--uid-z-modal:400;--uid-z-popover:450;--uid-z-toast:500;--uid-z-tooltip:600;--uid-bp-sm:480px;--uid-bp-md:768px;--uid-bp-lg:1024px;--uid-bp-xl:1280px;--uid-bp-2xl:1536px}`,themes:`:root[data-theme=light]{--uid-surface-base:var(--uid-color-zinc-50);--uid-surface-raised:var(--uid-color-white);--uid-surface-overlay:var(--uid-color-white);--uid-text-primary:var(--uid-color-zinc-900);--uid-text-secondary:var(--uid-color-zinc-500);--uid-text-tertiary:var(--uid-color-zinc-400);--uid-text-on-accent:var(--uid-color-white);--uid-border-subtle:var(--uid-color-zinc-200);--uid-border-default:var(--uid-color-zinc-300);--uid-border-hover:var(--uid-color-zinc-400);--uid-accent:var(--uid-color-teal-500);--uid-accent-hover:var(--uid-color-teal-600);--uid-accent-subtle:var(--uid-color-teal-50);--uid-accent-text:var(--uid-color-teal-700);--uid-danger:var(--uid-color-rose-600);--uid-danger-hover:var(--uid-color-rose-700);--uid-danger-subtle:var(--uid-color-rose-50);--uid-success:var(--uid-color-emerald-600);--uid-success-subtle:var(--uid-color-emerald-50);--uid-warning:var(--uid-color-amber-600);--uid-warning-subtle:var(--uid-color-amber-50);--uid-info:var(--uid-color-blue-600);--uid-info-subtle:var(--uid-color-blue-50);--uid-shadow-sm:0 1px 2px #0000000d;--uid-shadow-md:0 4px 12px #00000014;--uid-shadow-lg:0 8px 24px #0000001f;--uid-shadow-xl:0 20px 60px #0000004d}:root[data-theme=dark]{--uid-surface-base:#1c1c1e;--uid-surface-raised:#2c2c2e;--uid-surface-overlay:#3a3a3c;--uid-text-primary:var(--uid-color-zinc-100);--uid-text-secondary:var(--uid-color-zinc-400);--uid-text-tertiary:var(--uid-color-zinc-600);--uid-text-on-accent:var(--uid-color-white);--uid-border-subtle:var(--uid-color-zinc-700);--uid-border-default:var(--uid-color-zinc-600);--uid-border-hover:var(--uid-color-zinc-400);--uid-accent:var(--uid-color-teal-400);--uid-accent-hover:var(--uid-color-teal-300);--uid-accent-subtle:var(--uid-color-teal-900);--uid-accent-text:var(--uid-color-teal-300);--uid-danger:var(--uid-color-rose-400);--uid-danger-hover:var(--uid-color-rose-500);--uid-danger-subtle:var(--uid-color-rose-950);--uid-success:var(--uid-color-emerald-400);--uid-success-subtle:var(--uid-color-emerald-950);--uid-warning:var(--uid-color-amber-400);--uid-warning-subtle:var(--uid-color-amber-950);--uid-info:var(--uid-color-blue-400);--uid-info-subtle:var(--uid-color-blue-950);--uid-shadow-sm:0 1px 2px #0003;--uid-shadow-md:0 4px 12px #0006;--uid-shadow-lg:0 8px 24px #0009;--uid-shadow-xl:0 20px 60px #0009}:root{--uid-color-bg:var(--uid-surface-raised);--uid-color-bg-subtle:var(--uid-surface-base);--uid-color-overlay:var(--uid-surface-overlay);--uid-color-surface:var(--uid-surface-raised);--uid-color-surface-raised:var(--uid-surface-raised);--uid-color-surface-hover:var(--uid-surface-base);--uid-color-text:var(--uid-text-primary);--uid-color-text-primary:var(--uid-text-primary);--uid-color-text-secondary:var(--uid-text-secondary);--uid-color-text-tertiary:var(--uid-text-tertiary);--uid-color-text-disabled:var(--uid-text-tertiary);--uid-color-text-on-primary:var(--uid-text-on-accent);--uid-color-border:var(--uid-border-default);--uid-color-border-hover:var(--uid-border-hover);--uid-color-primary:var(--uid-accent);--uid-color-primary-hover:var(--uid-accent-hover);--uid-color-primary-subtle:var(--uid-accent-subtle);--uid-focus-ring:0 0 0 3px var(--uid-color-primary-subtle);--uid-color-focus-ring:var(--uid-accent);--uid-color-danger:var(--uid-danger);--uid-color-danger-subtle:var(--uid-danger-subtle);--uid-color-success:var(--uid-success);--uid-color-success-subtle:var(--uid-success-subtle);--uid-color-warning:var(--uid-warning);--uid-color-warning-subtle:var(--uid-warning-subtle);--uid-color-warning-dark:var(--uid-warning);--uid-color-info:var(--uid-info);--uid-color-info-subtle:var(--uid-info-subtle)}`,kit:`.uid-button{--uid-button-bg:var(--uid-accent);--uid-button-bg-hover:var(--uid-accent-hover);--uid-button-color:var(--uid-text-on-accent);--uid-button-border:transparent;--uid-button-radius:var(--uid-radius-md);--uid-button-height:var(--uid-size-md);--uid-button-padding-x:var(--uid-space-md);--uid-button-padding-y:var(--uid-space-xs);justify-content:center;align-items:center;gap:var(--uid-space-xs);min-height:var(--uid-button-height);padding:var(--uid-button-padding-y) var(--uid-button-padding-x);border:1px solid var(--uid-button-border);border-radius:var(--uid-button-radius);background:var(--uid-button-bg);color:var(--uid-button-color);font:inherit;font-size:var(--uid-font-size-md);font-weight:var(--uid-font-weight-medium);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background var(--uid-duration-fast) var(--uid-ease-out), border-color var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out), opacity var(--uid-duration-fast) var(--uid-ease-out);line-height:1;text-decoration:none;display:inline-flex}.uid-button:hover:not([disabled]):not([data-loading=true]){background:var(--uid-button-bg-hover)}.uid-button:active:not([disabled]):not([data-loading=true]){transform:scale(.98)}.uid-button:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px;border-radius:inherit}.uid-button[disabled],.uid-button[aria-disabled=true]{opacity:.5;cursor:not-allowed}.uid-button[data-loading=true]{opacity:.7;cursor:wait;pointer-events:none}.uid-button--secondary{--uid-button-bg:var(--uid-surface-raised);--uid-button-bg-hover:var(--uid-border-subtle);--uid-button-color:var(--uid-text-primary);--uid-button-border:var(--uid-border-default)}.uid-button--ghost{--uid-button-bg:transparent;--uid-button-bg-hover:var(--uid-border-subtle);--uid-button-color:var(--uid-text-primary);--uid-button-border:transparent}.uid-button--danger{--uid-button-bg:var(--uid-danger);--uid-button-bg-hover:var(--uid-danger-hover);--uid-button-color:var(--uid-text-on-accent)}.uid-button--danger:focus-visible{outline-color:var(--uid-danger)}.uid-button--sm{--uid-button-height:var(--uid-size-sm);--uid-button-padding-x:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-button--lg{--uid-button-height:var(--uid-size-lg);--uid-button-padding-x:var(--uid-space-lg);font-size:var(--uid-font-size-lg)}.uid-button__prepend,.uid-button__append{flex-shrink:0;align-items:center;display:inline-flex}.uid-button__icon{flex-shrink:0}.uid-button--icon-only{width:var(--uid-button-height);min-width:var(--uid-button-height);padding:0}.uid-input-field{--uid-input-height:var(--uid-size-md);--uid-input-padding-x:var(--uid-space-sm);--uid-input-font-size:var(--uid-font-size-md);--uid-input-bg:var(--uid-surface-raised);--uid-input-border:var(--uid-border-default);--uid-input-border-focus:var(--uid-accent);--uid-input-color:var(--uid-text-primary);--uid-input-placeholder:var(--uid-text-tertiary);--uid-input-radius:var(--uid-radius-md);--uid-input-gap:var(--uid-space-xs);gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-input-field__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-input-field__required{color:var(--uid-danger)}.uid-input-field__control{min-height:var(--uid-input-height);padding:var(--uid-space-xs) var(--uid-input-padding-x);align-items:center;gap:var(--uid-input-gap);background:var(--uid-input-bg);border:1px solid var(--uid-input-border);border-radius:var(--uid-input-radius);transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);display:flex}.uid-input-field__control:focus-within{border-color:var(--uid-input-border-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent);outline:none}.uid-input-field__input{min-width:0;color:var(--uid-input-color);font:inherit;font-size:var(--uid-input-font-size);background:0 0;border:none;outline:none;flex:1;padding:0;line-height:1.5}.uid-input-field__input::placeholder{color:var(--uid-input-placeholder)}.uid-input-field__prepend,.uid-input-field__append{color:var(--uid-text-secondary);flex-shrink:0;align-items:center;display:inline-flex}.uid-input-field__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-input-field__hint--error{color:var(--uid-danger)}.uid-input-field--error .uid-input-field__control{border-color:var(--uid-danger)}.uid-input-field--error .uid-input-field__control:focus-within{border-color:var(--uid-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-danger) 15%, transparent)}.uid-input-field--disabled .uid-input-field__control{opacity:.5;cursor:not-allowed;background:var(--uid-surface-base)}.uid-input-field--disabled .uid-input-field__input{cursor:not-allowed;pointer-events:none}.uid-input-field--readonly .uid-input-field__control{background:var(--uid-surface-base);border-style:dashed}.uid-input-field--sm{--uid-input-height:var(--uid-size-sm);--uid-input-font-size:var(--uid-font-size-sm);--uid-input-padding-x:var(--uid-space-xs)}.uid-input-field--lg{--uid-input-height:var(--uid-size-lg);--uid-input-font-size:var(--uid-font-size-lg);--uid-input-padding-x:var(--uid-space-md)}.uid-textarea-field{--uid-textarea-padding-x:var(--uid-space-sm);--uid-textarea-padding-y:var(--uid-space-xs);--uid-textarea-font-size:var(--uid-font-size-md);--uid-textarea-bg:var(--uid-surface-raised);--uid-textarea-border:var(--uid-border-default);--uid-textarea-border-focus:var(--uid-accent);--uid-textarea-color:var(--uid-text-primary);--uid-textarea-placeholder:var(--uid-text-tertiary);--uid-textarea-radius:var(--uid-radius-md);gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-textarea-field__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-textarea-field__required{color:var(--uid-danger)}.uid-textarea-field__textarea{box-sizing:border-box;width:100%;padding:var(--uid-textarea-padding-y) var(--uid-textarea-padding-x);background:var(--uid-textarea-bg);border:1px solid var(--uid-textarea-border);border-radius:var(--uid-textarea-radius);color:var(--uid-textarea-color);font:inherit;font-size:var(--uid-textarea-font-size);transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);outline:none;line-height:1.5}.uid-textarea-field__textarea::placeholder{color:var(--uid-textarea-placeholder)}.uid-textarea-field__textarea:focus-visible{border-color:var(--uid-textarea-border-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent)}.uid-textarea-field__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-textarea-field__hint--error{color:var(--uid-danger)}.uid-textarea-field--error .uid-textarea-field__textarea{border-color:var(--uid-danger)}.uid-textarea-field--error .uid-textarea-field__textarea:focus-visible{border-color:var(--uid-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-danger) 15%, transparent)}.uid-textarea-field--disabled .uid-textarea-field__textarea{opacity:.5;cursor:not-allowed;background:var(--uid-surface-base)}.uid-textarea-field--readonly .uid-textarea-field__textarea{background:var(--uid-surface-base);cursor:default;border-style:dashed}.uid-textarea-field--sm{--uid-textarea-font-size:var(--uid-font-size-sm);--uid-textarea-padding-x:var(--uid-space-xs)}.uid-textarea-field--lg{--uid-textarea-font-size:var(--uid-font-size-lg);--uid-textarea-padding-x:var(--uid-space-md)}.uid-checkbox{--uid-checkbox-size:16px;--uid-checkbox-radius:var(--uid-radius-sm);--uid-checkbox-border:var(--uid-border-default);--uid-checkbox-bg:var(--uid-surface-raised);--uid-checkbox-checked-bg:var(--uid-accent);--uid-checkbox-checked-border:var(--uid-accent);--uid-checkbox-mark:var(--uid-text-on-accent);--uid-checkbox-gap:var(--uid-space-sm);gap:var(--uid-space-xs);flex-direction:column;display:inline-flex}.uid-checkbox__label{align-items:center;gap:var(--uid-checkbox-gap);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.uid-checkbox__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.uid-checkbox__box{width:var(--uid-checkbox-size);height:var(--uid-checkbox-size);border:1.5px solid var(--uid-checkbox-border);border-radius:var(--uid-checkbox-radius);background:var(--uid-checkbox-bg);transition:background var(--uid-duration-fast) var(--uid-ease-out), border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);flex-shrink:0;position:relative}.uid-checkbox__box:after{content:"";border:1.5px solid var(--uid-checkbox-mark);opacity:0;width:4px;height:8px;transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out);border-top:none;border-left:none;margin:auto;position:absolute;inset:0;transform:rotate(45deg)translateY(-1px)scale(0)}.uid-checkbox__box:before{content:"";background:var(--uid-checkbox-mark);opacity:0;width:8px;height:1.5px;transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out);border-radius:1px;margin:auto;position:absolute;inset:0;transform:scale(0)}.uid-checkbox__input:checked+.uid-checkbox__box{background:var(--uid-checkbox-checked-bg);border-color:var(--uid-checkbox-checked-border)}.uid-checkbox__input:checked+.uid-checkbox__box:after{opacity:1;transform:rotate(45deg)translateY(-1px)scale(1)}.uid-checkbox__input:indeterminate+.uid-checkbox__box{background:var(--uid-checkbox-checked-bg);border-color:var(--uid-checkbox-checked-border)}.uid-checkbox__input:indeterminate+.uid-checkbox__box:before{opacity:1;transform:scale(1)}.uid-checkbox__input:focus-visible+.uid-checkbox__box{box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent);border-color:var(--uid-accent);outline:none}.uid-checkbox__text{font-size:var(--uid-font-size-md);color:var(--uid-text-primary);line-height:1.4}.uid-checkbox__required{color:var(--uid-danger);margin-left:2px}.uid-checkbox__hint{padding-left:calc(var(--uid-checkbox-size) + var(--uid-checkbox-gap));font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-checkbox__hint--error{color:var(--uid-danger)}.uid-checkbox--error .uid-checkbox__box{border-color:var(--uid-danger)}.uid-checkbox--error .uid-checkbox__input:focus-visible+.uid-checkbox__box{box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-danger) 15%, transparent);border-color:var(--uid-danger)}.uid-checkbox--disabled .uid-checkbox__label{cursor:not-allowed;opacity:.5}.uid-checkbox-group{gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-checkbox-group__legend{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);align-items:center;gap:var(--uid-space-2xs);margin:0;line-height:1.4;display:flex}.uid-checkbox-group__required{color:var(--uid-danger)}.uid-checkbox-group__options{gap:var(--uid-space-sm);display:flex}.uid-checkbox-group--vertical .uid-checkbox-group__options{flex-direction:column}.uid-checkbox-group--horizontal .uid-checkbox-group__options{flex-flow:wrap}.uid-checkbox-group__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-checkbox-group__hint--error{color:var(--uid-danger)}.uid-checkbox-group--disabled{cursor:not-allowed;opacity:.5}.uid-radio{--uid-radio-size:16px;--uid-radio-border:var(--uid-border-default);--uid-radio-bg:var(--uid-surface-raised);--uid-radio-checked-border:var(--uid-accent);--uid-radio-dot:var(--uid-accent);--uid-radio-gap:var(--uid-space-sm);align-items:center;gap:var(--uid-radio-gap);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.uid-radio__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.uid-radio__circle{width:var(--uid-radio-size);height:var(--uid-radio-size);border:1.5px solid var(--uid-radio-border);background:var(--uid-radio-bg);transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-radio__circle:after{content:"";background:var(--uid-radio-dot);opacity:0;width:6px;height:6px;transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out);border-radius:50%;transform:scale(.5)}.uid-radio__input:checked+.uid-radio__circle{border-color:var(--uid-radio-checked-border)}.uid-radio__input:checked+.uid-radio__circle:after{opacity:1;transform:scale(1)}.uid-radio__input:focus-visible+.uid-radio__circle{box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent);border-color:var(--uid-accent);outline:none}.uid-radio__text{font-size:var(--uid-font-size-md);color:var(--uid-text-primary);line-height:1.4}.uid-radio--disabled{cursor:not-allowed;opacity:.5}.uid-radio-group{gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-radio-group__legend{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);align-items:center;gap:var(--uid-space-2xs);margin:0;line-height:1.4;display:flex}.uid-radio-group__required{color:var(--uid-danger)}.uid-radio-group__options{gap:var(--uid-space-sm);display:flex}.uid-radio-group--vertical .uid-radio-group__options{flex-direction:column}.uid-radio-group--horizontal .uid-radio-group__options{flex-flow:wrap}.uid-radio-group__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-radio-group__hint--error{color:var(--uid-danger)}.uid-radio-group--disabled{cursor:not-allowed;opacity:.5}.uid-switch{--uid-switch-track-width:36px;--uid-switch-track-height:20px;--uid-switch-thumb-size:14px;--uid-switch-thumb-offset:3px;--uid-switch-track-bg:var(--uid-border-default);--uid-switch-track-on-bg:var(--uid-accent);--uid-switch-thumb-bg:var(--uid-color-white);--uid-switch-gap:var(--uid-space-sm);gap:var(--uid-space-xs);flex-direction:column;display:inline-flex}.uid-switch__label{align-items:center;gap:var(--uid-switch-gap);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.uid-switch__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.uid-switch__track{width:var(--uid-switch-track-width);height:var(--uid-switch-track-height);background:var(--uid-switch-track-bg);border-radius:var(--uid-radius-full);transition:background var(--uid-duration-base) var(--uid-ease-in-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);flex-shrink:0;position:relative}.uid-switch__thumb{top:var(--uid-switch-thumb-offset);left:var(--uid-switch-thumb-offset);width:var(--uid-switch-thumb-size);height:var(--uid-switch-thumb-size);background:var(--uid-switch-thumb-bg);box-shadow:var(--uid-shadow-sm);transition:transform var(--uid-duration-base) var(--uid-ease-in-out);border-radius:50%;position:absolute;transform:translate(0)}.uid-switch__input:checked+.uid-switch__track{background:var(--uid-switch-track-on-bg)}.uid-switch__input:checked+.uid-switch__track .uid-switch__thumb{transform:translateX(calc(var(--uid-switch-track-width) - var(--uid-switch-thumb-size) - var(--uid-switch-thumb-offset) * 2))}.uid-switch__input:focus-visible+.uid-switch__track{box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent);outline:none}.uid-switch__text{font-size:var(--uid-font-size-md);color:var(--uid-text-primary);line-height:1.4}.uid-switch__required{color:var(--uid-danger);margin-left:2px}.uid-switch__hint{padding-left:calc(var(--uid-switch-track-width) + var(--uid-switch-gap));font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-switch__hint--error{color:var(--uid-danger)}.uid-switch--error .uid-switch__track{outline:1.5px solid var(--uid-danger);outline-offset:1px}.uid-switch--disabled .uid-switch__label{cursor:not-allowed;opacity:.5}.uid-switch--sm{--uid-switch-track-width:28px;--uid-switch-track-height:16px;--uid-switch-thumb-size:10px;--uid-switch-thumb-offset:3px}.uid-switch--lg{--uid-switch-track-width:44px;--uid-switch-track-height:24px;--uid-switch-thumb-size:18px;--uid-switch-thumb-offset:3px}.uid-label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:var(--uid-line-height-tight);cursor:default;display:inline-flex}.uid-label--disabled{opacity:.5;cursor:not-allowed}.uid-label__required{color:var(--uid-danger)}.uid-form-field{gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-form-field__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-form-field--disabled .uid-form-field__label{opacity:.5}.uid-form-field__required{color:var(--uid-danger)}.uid-form-field__content{flex-direction:column;display:flex}.uid-form-field__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-form-field__hint--error{color:var(--uid-danger)}.uid-spinner{--uid-spinner-size:20px;--uid-spinner-color:currentColor;--uid-spinner-width:2px;width:var(--uid-spinner-size);height:var(--uid-spinner-size);border:var(--uid-spinner-width) solid color-mix(in srgb, var(--uid-spinner-color) 20%, transparent);border-top-color:var(--uid-spinner-color);animation:uid-spin var(--uid-duration-slow) linear infinite;border-radius:50%;flex-shrink:0;display:inline-block}@keyframes uid-spin{to{transform:rotate(360deg)}}.uid-spinner--sm{--uid-spinner-size:16px}.uid-spinner--lg{--uid-spinner-size:28px;--uid-spinner-width:2.5px}.uid-skeleton{background:linear-gradient(90deg, var(--uid-surface-raised) 25%, color-mix(in srgb, var(--uid-text-tertiary) 18%, var(--uid-surface-raised)) 50%, var(--uid-surface-raised) 75%);border-radius:var(--uid-radius-sm);vertical-align:middle;background-size:200% 100%;animation:1.6s ease-in-out infinite uid-skeleton-shimmer;display:inline-block}.uid-skeleton--rounded{border-radius:var(--uid-radius-md)}.uid-skeleton--full{border-radius:var(--uid-radius-full)}.uid-skeleton-lines{gap:var(--uid-space-sm);flex-direction:column;width:100%;display:flex}.uid-skeleton-lines .uid-skeleton{display:block}@keyframes uid-skeleton-shimmer{0%{background-position:200%}to{background-position:-200%}}.uid-badge{--uid-badge-bg:color-mix(in srgb, var(--uid-text-primary) 10%, transparent);--uid-badge-color:var(--uid-text-primary);--uid-badge-radius:var(--uid-radius-full);padding:2px var(--uid-space-xs);background:var(--uid-badge-bg);color:var(--uid-badge-color);border-radius:var(--uid-badge-radius);font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-medium);white-space:nowrap;vertical-align:middle;justify-content:center;align-items:center;line-height:1.4;display:inline-flex}.uid-badge--dot{border-radius:50%;width:8px;height:8px;padding:0}.uid-badge--sm{padding:1px 5px;font-size:10px}.uid-badge--info{--uid-badge-bg:color-mix(in srgb, var(--uid-accent) 15%, transparent);--uid-badge-color:var(--uid-accent-text)}.uid-badge--success{--uid-badge-bg:var(--uid-success-subtle);--uid-badge-color:var(--uid-success)}.uid-badge--warning{--uid-badge-bg:var(--uid-warning-subtle);--uid-badge-color:var(--uid-warning)}.uid-badge--danger{--uid-badge-bg:var(--uid-danger-subtle);--uid-badge-color:var(--uid-danger)}.uid-badge--dot.uid-badge--default{background:var(--uid-text-tertiary)}.uid-badge--dot.uid-badge--info{background:var(--uid-accent)}.uid-badge--dot.uid-badge--success{background:var(--uid-success)}.uid-badge--dot.uid-badge--warning{background:var(--uid-warning)}.uid-badge--dot.uid-badge--danger{background:var(--uid-danger)}.uid-alert{--uid-alert-bg:var(--uid-accent-subtle);--uid-alert-color:var(--uid-accent-text);--uid-alert-border:var(--uid-accent);align-items:flex-start;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-alert-bg);border:1px solid color-mix(in srgb, var(--uid-alert-border) 30%, transparent);border-left:3px solid var(--uid-alert-border);border-radius:var(--uid-radius-md);color:var(--uid-alert-color);display:flex}.uid-alert__icon{flex-shrink:0;margin-top:1px;display:flex}.uid-alert__content{flex:1;min-width:0}.uid-alert__title{margin:0 0 var(--uid-space-xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-alert-color);line-height:1.4}.uid-alert__body{font-size:var(--uid-font-size-sm);color:var(--uid-text-primary);line-height:1.5}.uid-alert__close{padding:var(--uid-space-xs);margin:calc(-1 * var(--uid-space-xs)) calc(-1 * var(--uid-space-xs)) 0 0;color:var(--uid-alert-color);cursor:pointer;border-radius:var(--uid-radius-sm);opacity:.7;transition:opacity var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-alert__close:hover{opacity:1}.uid-alert__close:focus-visible{outline:2px solid var(--uid-alert-border);outline-offset:1px;opacity:1}.uid-alert--info{--uid-alert-bg:var(--uid-accent-subtle);--uid-alert-color:var(--uid-accent-text);--uid-alert-border:var(--uid-accent)}.uid-alert--success{--uid-alert-bg:var(--uid-success-subtle);--uid-alert-color:var(--uid-success);--uid-alert-border:var(--uid-success)}.uid-alert--warning{--uid-alert-bg:var(--uid-warning-subtle);--uid-alert-color:var(--uid-warning);--uid-alert-border:var(--uid-warning)}.uid-alert--danger{--uid-alert-bg:var(--uid-danger-subtle);--uid-alert-color:var(--uid-danger);--uid-alert-border:var(--uid-danger)}.uid-toast-list{bottom:var(--uid-space-lg);right:var(--uid-space-lg);z-index:var(--uid-z-toast);gap:var(--uid-space-sm);pointer-events:none;max-width:400px;width:calc(100vw - var(--uid-space-lg) * 2);flex-direction:column;align-items:flex-end;display:flex;position:fixed}.uid-toast{--uid-toast-bg:var(--uid-surface-overlay);--uid-toast-color:var(--uid-text-primary);--uid-toast-border:var(--uid-border-default);--uid-toast-accent:var(--uid-accent);align-items:flex-start;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-toast-bg);border:1px solid var(--uid-toast-border);border-left:3px solid var(--uid-toast-accent);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-lg);pointer-events:all;box-sizing:border-box;width:100%;display:flex}.uid-toast__icon{color:var(--uid-toast-accent);flex-shrink:0;margin-top:1px;display:flex}.uid-toast__content{flex:1;min-width:0}.uid-toast__title{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-toast-color);margin:0 0 2px;line-height:1.4}.uid-toast__message{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-toast__close{padding:var(--uid-space-xs);margin:calc(-1 * var(--uid-space-xs)) calc(-1 * var(--uid-space-xs)) 0 0;color:var(--uid-text-tertiary);cursor:pointer;border-radius:var(--uid-radius-sm);transition:color var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-toast__close:hover{color:var(--uid-text-primary)}.uid-toast__close:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px}.uid-toast--info{--uid-toast-accent:var(--uid-accent)}.uid-toast--success{--uid-toast-accent:var(--uid-success)}.uid-toast--warning{--uid-toast-accent:var(--uid-warning)}.uid-toast--danger{--uid-toast-accent:var(--uid-danger)}.uid-toast-enter-active,.uid-toast-leave-active{transition:opacity var(--uid-duration-base) var(--uid-ease-out), transform var(--uid-duration-base) var(--uid-ease-out)}.uid-toast-move{transition:transform var(--uid-duration-base) var(--uid-ease-out)}.uid-toast-enter-from,.uid-toast-leave-to{opacity:0;transform:translate(100%)}.uid-toast-leave-active{position:absolute}.uid-progress-wrapper{gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-progress-header{justify-content:space-between;align-items:center;gap:var(--uid-space-sm);display:flex}.uid-progress-label,.uid-progress-value{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);line-height:1.4}.uid-progress{--uid-progress-height:8px;--uid-progress-bg:var(--uid-border-subtle);--uid-progress-fill:var(--uid-accent);--uid-progress-radius:var(--uid-radius-full);width:100%;height:var(--uid-progress-height);background:var(--uid-progress-bg);border-radius:var(--uid-progress-radius);position:relative;overflow:hidden}.uid-progress__bar{background:var(--uid-progress-fill);border-radius:var(--uid-progress-radius);height:100%;transition:width var(--uid-duration-base) var(--uid-ease-out)}.uid-progress--indeterminate:after{content:"";background:linear-gradient(90deg, transparent 0%, var(--uid-progress-fill) 40%, var(--uid-progress-fill) 60%, transparent 100%) no-repeat center / 50% 100%;animation:1.5s linear infinite uid-progress-indeterminate;position:absolute;inset:0}@keyframes uid-progress-indeterminate{0%{background-position:-50%}to{background-position:150%}}.uid-progress--sm{--uid-progress-height:4px}.uid-progress--lg{--uid-progress-height:12px}.uid-progress--default,.uid-progress--info{--uid-progress-fill:var(--uid-accent)}.uid-progress--success{--uid-progress-fill:var(--uid-success)}.uid-progress--warning{--uid-progress-fill:var(--uid-warning)}.uid-progress--danger{--uid-progress-fill:var(--uid-danger)}.uid-modal-overlay{z-index:var(--uid-z-modal);padding:var(--uid-space-md);background:var(--uid-modal-overlay,#00000080);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.uid-modal{width:100%;max-height:calc(100vh - var(--uid-space-xl));background:var(--uid-modal-bg,var(--uid-color-surface));border:1px solid var(--uid-modal-border,var(--uid-color-border));border-radius:var(--uid-modal-radius,var(--uid-radius-lg));box-shadow:var(--uid-modal-shadow,var(--uid-shadow-xl,0 20px 60px #0000004d));outline:none;flex-direction:column;display:flex;position:relative;overflow:hidden}.uid-modal--sm{max-width:400px}.uid-modal--md{max-width:560px}.uid-modal--lg{max-width:768px}.uid-modal--xl{max-width:1024px}.uid-modal--full{max-width:none;height:calc(100vh - var(--uid-space-xl))}.uid-modal--full .uid-modal__body{flex:1;overflow:auto}.uid-modal__header{padding:var(--uid-space-md) 20px;border-bottom:1px solid var(--uid-color-border);flex-shrink:0;align-items:flex-start;gap:12px;display:flex}.uid-modal__title{font-size:var(--uid-font-size-lg);color:var(--uid-color-text-primary);flex:1;margin:0;font-weight:600;line-height:1.3}.uid-modal__close{border-radius:var(--uid-radius-sm);width:28px;height:28px;color:var(--uid-color-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.uid-modal__close:hover{background:var(--uid-color-surface-hover);color:var(--uid-color-text-primary)}.uid-modal__close:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-modal__body{flex:1;padding:20px;overflow-y:auto}.uid-modal__footer{justify-content:flex-end;align-items:center;gap:var(--uid-space-sm);border-top:1px solid var(--uid-color-border);flex-shrink:0;padding:12px 20px;display:flex}.uid-modal-enter-active,.uid-modal-leave-active{transition:opacity var(--uid-duration-base) var(--uid-ease-out)}.uid-modal-enter-active .uid-modal,.uid-modal-leave-active .uid-modal{transition:opacity var(--uid-duration-base) var(--uid-ease-out), transform var(--uid-duration-base) var(--uid-ease-out)}.uid-modal-enter-from,.uid-modal-leave-to{opacity:0}.uid-modal-enter-from .uid-modal,.uid-modal-leave-to .uid-modal{opacity:0;transform:scale(.95)translateY(-8px)}.uid-drawer-overlay{z-index:var(--uid-z-modal);background:var(--uid-drawer-overlay,#00000080);position:fixed;inset:0}.uid-drawer{background:var(--uid-drawer-bg,var(--uid-color-surface));border-color:var(--uid-drawer-border,var(--uid-color-border));box-shadow:var(--uid-drawer-shadow,var(--uid-shadow-xl,0 20px 60px #0000004d));border-style:solid;border-width:0;outline:none;flex-direction:column;display:flex;position:fixed;overflow:hidden}.uid-drawer--right{width:var(--uid-drawer-width,400px);border-width:0 0 0 1px;top:0;bottom:0;right:0}.uid-drawer--left{width:var(--uid-drawer-width,400px);border-width:0 1px 0 0;top:0;bottom:0;left:0}.uid-drawer--top{height:var(--uid-drawer-height,50vh);border-radius:0 0 var(--uid-radius-lg) var(--uid-radius-lg);border-width:0 0 1px;top:0;left:0;right:0}.uid-drawer--bottom{height:var(--uid-drawer-height,50vh);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border-width:1px 0 0;bottom:0;left:0;right:0}.uid-drawer__header{padding:var(--uid-space-md) 20px;border-bottom:1px solid var(--uid-color-border);flex-shrink:0;align-items:flex-start;gap:12px;display:flex}.uid-drawer__title{font-size:var(--uid-font-size-lg);color:var(--uid-color-text-primary);flex:1;margin:0;font-weight:600;line-height:1.3}.uid-drawer__close{border-radius:var(--uid-radius-sm);width:28px;height:28px;color:var(--uid-color-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.uid-drawer__close:hover{background:var(--uid-color-surface-hover);color:var(--uid-color-text-primary)}.uid-drawer__close:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-drawer__body{flex:1;padding:20px;overflow-y:auto}.uid-drawer__footer{justify-content:flex-end;align-items:center;gap:var(--uid-space-sm);border-top:1px solid var(--uid-color-border);flex-shrink:0;padding:12px 20px;display:flex}.uid-drawer-right-enter-active,.uid-drawer-right-leave-active,.uid-drawer-left-enter-active,.uid-drawer-left-leave-active,.uid-drawer-top-enter-active,.uid-drawer-top-leave-active,.uid-drawer-bottom-enter-active,.uid-drawer-bottom-leave-active{transition:opacity var(--uid-duration-base) var(--uid-ease-out)}.uid-drawer-right-enter-active .uid-drawer,.uid-drawer-right-leave-active .uid-drawer,.uid-drawer-left-enter-active .uid-drawer,.uid-drawer-left-leave-active .uid-drawer,.uid-drawer-bottom-enter-active .uid-drawer,.uid-drawer-bottom-leave-active .uid-drawer{transition:transform var(--uid-duration-base) var(--uid-ease-out)}.uid-drawer-right-enter-from,.uid-drawer-right-leave-to{opacity:0}.uid-drawer-right-enter-from .uid-drawer,.uid-drawer-right-leave-to .uid-drawer{transform:translate(100%)}.uid-drawer-left-enter-from,.uid-drawer-left-leave-to{opacity:0}.uid-drawer-left-enter-from .uid-drawer,.uid-drawer-left-leave-to .uid-drawer{transform:translate(-100%)}.uid-drawer-bottom-enter-from,.uid-drawer-bottom-leave-to{opacity:0}.uid-drawer-bottom-enter-from .uid-drawer,.uid-drawer-bottom-leave-to .uid-drawer{transform:translateY(100%)}.uid-drawer-top-enter-active .uid-drawer,.uid-drawer-top-leave-active .uid-drawer{transition:transform var(--uid-duration-base) var(--uid-ease-out)}.uid-drawer-top-enter-from,.uid-drawer-top-leave-to{opacity:0}.uid-drawer-top-enter-from .uid-drawer,.uid-drawer-top-leave-to .uid-drawer{transform:translateY(-100%)}.uid-tooltip-anchor{display:contents}.uid-tooltip{z-index:var(--uid-z-tooltip);max-width:var(--uid-tooltip-max-width,240px);padding:var(--uid-tooltip-padding-y,var(--uid-space-xs)) var(--uid-tooltip-padding-x,var(--uid-space-sm));background:var(--uid-tooltip-bg,var(--uid-color-zinc-900));color:var(--uid-tooltip-color,var(--uid-color-zinc-50));font-size:var(--uid-tooltip-font-size,var(--uid-font-size-sm));border-radius:var(--uid-tooltip-radius,var(--uid-radius-sm));pointer-events:none;white-space:normal;word-break:break-word;line-height:1.4}.uid-tooltip-enter-active,.uid-tooltip-leave-active{transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out)}.uid-tooltip-enter-from,.uid-tooltip-leave-to{opacity:0;transform:scale(.95)}.uid-popover-trigger{display:contents}.uid-popover{z-index:var(--uid-z-popover,450);min-width:var(--uid-popover-min-width,200px);padding:var(--uid-popover-padding,12px);background:var(--uid-popover-bg,var(--uid-color-surface));border:1px solid var(--uid-popover-border,var(--uid-color-border));border-radius:var(--uid-popover-radius,var(--uid-radius-md));box-shadow:var(--uid-popover-shadow,var(--uid-shadow-lg,0 8px 24px #00000026))}.uid-popover-enter-active,.uid-popover-leave-active{transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out)}.uid-popover-enter-from,.uid-popover-leave-to{opacity:0;transform:scale(.96)translateY(-4px)}.uid-menu-trigger{display:contents}.uid-menu{z-index:var(--uid-z-popover,450);min-width:var(--uid-menu-min-width,180px);padding:var(--uid-menu-padding-y,var(--uid-space-xs)) 0;background:var(--uid-menu-bg,var(--uid-color-surface));border:1px solid var(--uid-menu-border,var(--uid-color-border));border-radius:var(--uid-menu-radius,var(--uid-radius-md));box-shadow:var(--uid-menu-shadow,var(--uid-shadow-lg,0 8px 24px #00000026));outline:none}.uid-menu-item{align-items:center;gap:var(--uid-space-sm);width:100%;padding:var(--uid-space-sm) 12px;font-size:var(--uid-font-size-sm);color:var(--uid-menu-item-color,var(--uid-color-text-primary));text-align:left;cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;border-radius:0;display:flex}.uid-menu-item:hover:not([disabled]),.uid-menu-item:focus-visible:not([disabled]),.uid-menu-item:focus-visible{background:var(--uid-menu-item-bg-hover,var(--uid-color-surface-hover));outline:none}.uid-menu-item__icon{color:var(--uid-menu-item-icon-color,currentColor);flex-shrink:0}.uid-menu-item--danger{color:var(--uid-menu-item-color-danger,var(--uid-color-danger))}.uid-menu-item--disabled,.uid-menu-item[disabled]{opacity:.4;cursor:not-allowed;pointer-events:none}.uid-menu-separator{height:1px;margin:var(--uid-space-xs) 0;background:var(--uid-color-border)}.uid-submenu{display:block}.uid-submenu__label{flex:auto;min-width:0}.uid-submenu__chevron{color:var(--uid-menu-submenu-chevron-color,var(--uid-color-text-secondary,currentColor));flex-shrink:0;margin-left:auto}.uid-submenu__trigger--open:not([disabled]){background:var(--uid-menu-item-bg-hover,var(--uid-color-surface-hover))}.uid-submenu__panel{max-height:calc(100vh - 16px);overflow-y:auto}.uid-submenu-enter-active,.uid-submenu-leave-active{transition:opacity var(--uid-duration-fast) var(--uid-ease-out)}.uid-submenu-enter-from,.uid-submenu-leave-to{opacity:0}.uid-menu-enter-active,.uid-menu-leave-active{transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out)}.uid-menu-enter-from,.uid-menu-leave-to{opacity:0;transform:scale(.96)translateY(-4px)}.uid-tabs{flex-direction:column;display:flex}.uid-tabs--vertical{gap:var(--uid-space-md);flex-direction:row}.uid-tabs__list{gap:var(--uid-space-xs);border-bottom:1px solid var(--uid-color-border);scrollbar-width:thin;scroll-snap-type:x proximity;flex-shrink:0;display:flex;overflow:auto hidden}.uid-tabs__list>.uid-tab{scroll-snap-align:start;flex:none}.uid-tabs--vertical .uid-tabs__list{border-bottom:none;border-right:1px solid var(--uid-color-border);gap:var(--uid-space-2xs);scroll-snap-type:none;flex-direction:column;padding-right:0;overflow-x:visible}.uid-tabs__panels{flex:1}.uid-tab{align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-sm) var(--uid-radius-sm) 0 0;font-size:var(--uid-font-size-sm);color:var(--uid-tab-color,var(--uid-color-text-secondary));cursor:pointer;white-space:nowrap;transition:color var(--uid-duration-fast) var(--uid-ease-out), background var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;font-weight:500;display:inline-flex;position:relative}.uid-tab:after{content:"";height:2px;transition:background var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border-radius:1px;position:absolute;bottom:-1px;left:0;right:0}.uid-tab:hover:not([disabled]){color:var(--uid-tab-color-hover,var(--uid-color-text-primary));background:var(--uid-color-surface-hover)}.uid-tab--active{color:var(--uid-tab-color-active,var(--uid-color-primary))}.uid-tab--active:after{background:var(--uid-color-primary)}.uid-tab[disabled]{opacity:.4;cursor:not-allowed;pointer-events:none}.uid-tab:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px;border-radius:var(--uid-radius-sm)}.uid-tabs--vertical .uid-tab{border-radius:var(--uid-radius-sm) 0 0 var(--uid-radius-sm);padding:var(--uid-space-sm) 12px;justify-content:flex-start}.uid-tabs--vertical .uid-tab:after{width:2px;height:auto;inset:0 -1px 0 auto}.uid-tab-panel{padding:var(--uid-space-md) 0;outline:none}.uid-tab-panel:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px;border-radius:var(--uid-radius-sm)}.uid-breadcrumb__list{font-size:var(--uid-breadcrumb-font-size,var(--uid-font-size-sm));flex-wrap:wrap;align-items:center;gap:0;margin:0;padding:0;list-style:none;display:flex}.uid-breadcrumb__item{align-items:center;display:flex}.uid-breadcrumb__separator:before{content:var(--uid-breadcrumb-sep,"/");padding:0 var(--uid-space-sm);color:var(--uid-breadcrumb-sep-color,var(--uid-color-text-disabled));-webkit-user-select:none;user-select:none}.uid-breadcrumb__item:first-child>.uid-breadcrumb__separator{display:none}.uid-breadcrumb__link{color:var(--uid-breadcrumb-link-color,var(--uid-color-text-secondary));transition:color var(--uid-duration-fast) var(--uid-ease-out);text-decoration:none}.uid-breadcrumb__link:hover{color:var(--uid-breadcrumb-link-color-hover,var(--uid-color-text-primary));text-decoration:underline}.uid-breadcrumb__link:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px;border-radius:var(--uid-radius-sm)}.uid-breadcrumb__link--button{font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.uid-breadcrumb__text{color:var(--uid-breadcrumb-text-color,var(--uid-color-text-secondary))}.uid-breadcrumb__current{color:var(--uid-breadcrumb-current-color,var(--uid-color-text-primary));font-weight:500}.uid-breadcrumb--nowrap{min-width:0}.uid-breadcrumb--nowrap .uid-breadcrumb__list{white-space:nowrap;flex-wrap:nowrap;overflow:hidden}.uid-breadcrumb--nowrap .uid-breadcrumb__item{min-width:var(--uid-breadcrumb-item-min-width,3em);max-width:var(--uid-breadcrumb-item-max-width,none);flex:0 8 auto}.uid-breadcrumb--nowrap .uid-breadcrumb__item:last-child{flex-shrink:1}.uid-breadcrumb--nowrap .uid-breadcrumb__separator{flex-shrink:0}.uid-breadcrumb--nowrap .uid-breadcrumb__item>:not(.uid-breadcrumb__separator){text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.uid-breadcrumb--measuring .uid-breadcrumb__list>.uid-breadcrumb__item{flex-shrink:0}.uid-breadcrumb__item--collapsed{display:none}.uid-breadcrumb--collapse .uid-breadcrumb__item--ellipsis{flex-shrink:0}.uid-breadcrumb__item--ellipsis>:not(.uid-breadcrumb__separator):not(.uid-breadcrumb__ellipsis){display:none}.uid-breadcrumb__ellipsis{color:var(--uid-breadcrumb-link-color,var(--uid-color-text-secondary))}.uid-breadcrumb__ellipsis--button{padding:0 var(--uid-space-xs,4px);border-radius:var(--uid-radius-sm);font:inherit;line-height:inherit;cursor:pointer;background:0 0;border:none}.uid-breadcrumb__ellipsis--button:hover,.uid-breadcrumb__ellipsis--button[aria-expanded=true]{color:var(--uid-breadcrumb-link-color-hover,var(--uid-color-text-primary));background:var(--uid-color-bg-subtle)}.uid-breadcrumb__ellipsis--button:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-breadcrumb__probe{visibility:hidden;pointer-events:none;white-space:nowrap;font-size:var(--uid-breadcrumb-font-size,var(--uid-font-size-sm));position:absolute}.uid-breadcrumb__menu{z-index:var(--uid-z-popover,450);min-width:160px;max-width:min(320px,100vw - 16px);max-height:280px;padding:var(--uid-space-xs,4px);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);flex-direction:column;display:flex;overflow-y:auto}.uid-breadcrumb__menu-item{width:100%;padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-sm,4px);color:var(--uid-color-text);font:inherit;font-size:var(--uid-breadcrumb-font-size,var(--uid-font-size-sm));text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;display:block;overflow:hidden}.uid-breadcrumb__menu-item:hover,.uid-breadcrumb__menu-item:focus-visible{background:var(--uid-color-bg-subtle);outline:none}.uid-breadcrumb__menu-item[aria-disabled=true]{color:var(--uid-color-text-secondary);cursor:default}.uid-link{color:var(--uid-link-color,var(--uid-color-primary));-webkit-text-decoration:var(--uid-link-decoration,underline);-webkit-text-decoration:var(--uid-link-decoration,underline);text-decoration:var(--uid-link-decoration,underline);text-underline-offset:2px;cursor:pointer;transition:color var(--uid-duration-fast) var(--uid-ease-out), opacity var(--uid-duration-fast) var(--uid-ease-out)}.uid-link:hover:not(.uid-link--disabled){color:var(--uid-link-color-hover,var(--uid-color-primary-hover))}.uid-link:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px;border-radius:var(--uid-radius-sm)}.uid-link--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.uid-pagination{align-items:center;gap:var(--uid-space-xs);display:inline-flex}.uid-pagination__btn{min-width:32px;height:32px;padding:0 var(--uid-space-xs);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-pagination-btn-bg,var(--uid-color-surface));font-size:var(--uid-font-size-sm);color:var(--uid-pagination-btn-color,var(--uid-color-text-primary));cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), border-color var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);justify-content:center;align-items:center;font-weight:500;display:inline-flex}.uid-pagination__btn--labeled{gap:var(--uid-space-xs);padding:0 12px}.uid-pagination__btn:hover:not([disabled]):not(.uid-pagination__btn--active){background:var(--uid-pagination-btn-bg-hover,var(--uid-color-surface-hover));border-color:var(--uid-color-border-hover)}.uid-pagination__btn--active{background:var(--uid-pagination-btn-bg-active,var(--uid-color-primary));border-color:var(--uid-color-primary);color:var(--uid-pagination-btn-color-active,var(--uid-color-text-on-primary));cursor:default}.uid-pagination__btn[disabled]{opacity:.4;cursor:not-allowed}.uid-pagination__btn:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-pagination__ellipsis{min-width:32px;height:32px;font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;display:inline-flex}.uid-load-more{padding:var(--uid-space-md) 0;justify-content:center;display:flex}.uid-load-more__btn{align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) 20px;border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-surface);font-size:var(--uid-font-size-sm);color:var(--uid-color-text-primary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), border-color var(--uid-duration-fast) var(--uid-ease-out);font-weight:500;display:inline-flex}.uid-load-more__btn:hover:not([disabled]){background:var(--uid-color-surface-hover);border-color:var(--uid-color-border-hover)}.uid-load-more__btn[disabled]{opacity:.4;cursor:not-allowed}.uid-load-more__btn:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-infinite-scroll__loader{padding:var(--uid-space-md) 0;justify-content:center;display:flex}.uid-infinite-scroll__sentinel{height:1px}.uid-page-size{align-items:center;gap:var(--uid-space-sm);font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);display:inline-flex}.uid-page-size__select{padding:var(--uid-space-xs) var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-surface);font-size:var(--uid-font-size-sm);color:var(--uid-color-text-primary);cursor:pointer}.uid-page-size__select:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-card{background:var(--uid-card-bg,var(--uid-color-surface));border:1px solid var(--uid-card-border,var(--uid-color-border));border-radius:var(--uid-card-radius,var(--uid-radius-lg));flex-direction:column;display:flex;overflow:hidden}.uid-card--clickable{cursor:pointer;transition:box-shadow var(--uid-duration-fast) var(--uid-ease-out), border-color var(--uid-duration-fast) var(--uid-ease-out)}.uid-card--clickable:hover{border-color:var(--uid-color-border-hover);box-shadow:var(--uid-shadow-md,0 4px 12px #0000001a)}.uid-card--clickable:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-card__media{flex-shrink:0}.uid-card__media img{width:100%;display:block}.uid-card__header{padding:var(--uid-space-md) var(--uid-space-md) 0;font-size:var(--uid-font-size-lg);color:var(--uid-color-text-primary);font-weight:600}.uid-card__body{flex:1}.uid-card__footer{align-items:center;gap:var(--uid-space-sm);padding:12px var(--uid-space-md);border-top:1px solid var(--uid-color-border);display:flex}.uid-card--pad-none .uid-card__body{padding:0}.uid-card--pad-sm .uid-card__body{padding:12px}.uid-card--pad-md .uid-card__body{padding:var(--uid-space-md)}.uid-card--pad-lg .uid-card__body{padding:var(--uid-space-lg)}.uid-card--pad-sm .uid-card__header{padding:12px 12px 0}.uid-card--pad-lg .uid-card__header{padding:var(--uid-space-lg) var(--uid-space-lg) 0}.uid-card--pad-sm .uid-card__footer{padding:var(--uid-space-sm) 12px}.uid-card--pad-lg .uid-card__footer{padding:var(--uid-space-md) var(--uid-space-lg)}.uid-avatar{color:#fff;background:var(--uid-avatar-bg,var(--uid-color-primary));-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:inline-flex;overflow:hidden}.uid-avatar--xs{width:24px;height:24px;font-size:10px}.uid-avatar--sm{width:32px;height:32px;font-size:12px}.uid-avatar--md{width:40px;height:40px;font-size:14px}.uid-avatar--lg{width:56px;height:56px;font-size:18px}.uid-avatar--xl{width:72px;height:72px;font-size:22px}.uid-avatar--circle{border-radius:50%}.uid-avatar--square{border-radius:var(--uid-radius-md)}.uid-avatar__img{object-fit:cover;width:100%;height:100%;display:block}.uid-avatar__initials{color:#fff;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.uid-avatar-group{align-items:center;display:inline-flex}.uid-avatar-group>*{margin-left:var(--uid-avatar-group-overlap,-8px);box-shadow:0 0 0 2px var(--uid-color-surface)}.uid-avatar-group>:first-child{margin-left:0}.uid-avatar-group__overflow{background:var(--uid-color-surface-raised);color:var(--uid-color-text-secondary);border:2px solid var(--uid-color-border);font-size:12px}.uid-tag{align-items:center;gap:var(--uid-space-xs);border-radius:var(--uid-tag-radius,var(--uid-radius-full,9999px));white-space:nowrap;font-weight:500;display:inline-flex}.uid-tag--sm{padding:1px var(--uid-space-sm);font-size:var(--uid-font-size-xs,11px)}.uid-tag--md{padding:2px var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-tag--default{background:var(--uid-tag-bg-default,var(--uid-color-surface-raised));color:var(--uid-tag-color-default,var(--uid-color-text-secondary));border:1px solid var(--uid-color-border)}.uid-tag--info{background:var(--uid-tag-bg-info,var(--uid-color-info-subtle));color:var(--uid-tag-color-info,var(--uid-color-info))}.uid-tag--success{background:var(--uid-tag-bg-success,var(--uid-color-success-subtle));color:var(--uid-tag-color-success,var(--uid-color-success))}.uid-tag--warning{background:var(--uid-tag-bg-warning,var(--uid-color-warning-subtle));color:var(--uid-tag-color-warning,var(--uid-color-warning-dark,var(--uid-color-warning)))}.uid-tag--danger{background:var(--uid-tag-bg-danger,var(--uid-color-danger-subtle));color:var(--uid-tag-color-danger,var(--uid-color-danger))}.uid-tag__dismiss{width:14px;height:14px;color:inherit;opacity:.6;cursor:pointer;transition:opacity var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.uid-tag__dismiss:hover{opacity:1}.uid-tag__dismiss:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px}.uid-divider{color:var(--uid-divider-color,var(--uid-color-text-disabled));font-size:var(--uid-font-size-sm);align-items:center;display:flex}.uid-divider--horizontal{flex-direction:row;width:100%}.uid-divider--horizontal:before,.uid-divider--horizontal:after{content:"";background:var(--uid-divider-line,var(--uid-color-border));flex:1;height:1px}.uid-divider--horizontal .uid-divider__label{white-space:nowrap;-webkit-user-select:none;user-select:none;padding:0 12px}.uid-divider--horizontal:not(:has(.uid-divider__label)):after{display:none}.uid-divider--vertical{background:var(--uid-divider-line,var(--uid-color-border));flex-direction:column;align-self:stretch;width:1px;height:auto}.uid-accordion{border:1px solid var(--uid-accordion-border,var(--uid-color-border));border-radius:var(--uid-accordion-radius,var(--uid-radius-md));flex-direction:column;display:flex;overflow:hidden}.uid-accordion-item+.uid-accordion-item{border-top:1px solid var(--uid-color-border)}.uid-accordion-item__trigger{width:100%;padding:var(--uid-space-md);background:var(--uid-accordion-trigger-bg,transparent);font-size:var(--uid-font-size-base);color:var(--uid-color-text-primary);text-align:left;cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out);border:none;align-items:center;gap:12px;font-weight:500;display:flex}.uid-accordion-item__trigger:hover:not([disabled]){background:var(--uid-color-surface-hover)}.uid-accordion-item__trigger:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-accordion-item__trigger[disabled]{opacity:.4;cursor:not-allowed}.uid-accordion-item__title{flex:1}.uid-accordion-item__chevron{color:var(--uid-color-text-secondary);transition:transform var(--uid-duration-base) var(--uid-ease-in-out);flex-shrink:0}.uid-accordion-item--open .uid-accordion-item__chevron{transform:rotate(180deg)}.uid-accordion-item__body{transition:grid-template-rows var(--uid-duration-base) var(--uid-ease-in-out);grid-template-rows:0fr;display:grid}.uid-accordion-item__body:not([hidden]){grid-template-rows:1fr}.uid-accordion-item__body[hidden]{visibility:hidden;display:grid}.uid-accordion-item__body-inner{padding:0 var(--uid-space-md) var(--uid-space-md);color:var(--uid-color-text-secondary);overflow:hidden}.uid-table-wrap{background:var(--uid-table-bg,var(--uid-color-surface));border-radius:var(--uid-table-radius,var(--uid-radius-md))}.uid-table-wrap--bordered{border:1px solid var(--uid-color-border);overflow:hidden}.uid-table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.uid-table{border-collapse:collapse;width:100%;font-size:var(--uid-font-size-sm)}.uid-table__head{background:var(--uid-table-head-bg,var(--uid-color-surface-raised))}.uid-table__th{padding:12px var(--uid-space-md);font-size:var(--uid-font-size-xs,11px);text-transform:uppercase;letter-spacing:.04em;color:var(--uid-table-th-color,var(--uid-color-text-secondary));border-bottom:1px solid var(--uid-color-border);white-space:nowrap;font-weight:600}.uid-table__th--left{text-align:left}.uid-table__th--center{text-align:center}.uid-table__th--right{text-align:right}.uid-table__th--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.uid-table__th--sortable:hover{background:var(--uid-color-surface-hover);color:var(--uid-color-text-primary)}.uid-table__th--active{color:var(--uid-color-primary)}.uid-table__th-content{align-items:center;gap:var(--uid-space-xs);display:inline-flex}.uid-table__sort-icon{opacity:.5;flex-shrink:0}.uid-table__th--active .uid-table__sort-icon{opacity:1}.uid-table__row{--_uid-table-row-bg:transparent;background:var(--_uid-table-row-bg);transition:background var(--uid-duration-fast) var(--uid-ease-out)}.uid-table__row:hover{--_uid-table-row-bg:var(--uid-table-row-bg-hover,var(--uid-color-surface-hover))}.uid-table__row+.uid-table__row{border-top:1px solid var(--uid-color-border)}.uid-table--striped .uid-table__row:nth-child(2n){--_uid-table-row-bg:var(--uid-table-row-bg-stripe,var(--uid-color-surface-raised))}.uid-table--striped .uid-table__row:nth-child(2n):hover{--_uid-table-row-bg:var(--uid-table-row-bg-hover,var(--uid-color-surface-hover))}.uid-table__td{padding:12px var(--uid-space-md);color:var(--uid-color-text-primary);vertical-align:middle}.uid-table__td--left{text-align:left}.uid-table__td--center{text-align:center}.uid-table__td--right{text-align:right}.uid-table__td--center,.uid-table__td--empty{text-align:center;padding:var(--uid-space-xl) var(--uid-space-md);color:var(--uid-color-text-secondary)}.uid-table__th--select,.uid-table__td--select{width:40px;padding-left:var(--uid-space-md);text-align:left;padding-right:0}.uid-table__row.uid-table__row--selected,.uid-table--striped .uid-table__row.uid-table__row--selected{--_uid-table-row-bg:var(--uid-table-row-bg-selected,var(--uid-color-surface-hover))}.uid-table__row.uid-table__row--selected:hover,.uid-table--striped .uid-table__row.uid-table__row--selected:hover{--_uid-table-row-bg:var(--uid-table-row-bg-selected-hover,var(--uid-table-row-bg-selected,var(--uid-color-surface-hover)))}.uid-table--has-fixed{width:max-content;min-width:100%}.uid-table__cell--fixed{z-index:1;position:sticky}.uid-table__td.uid-table__cell--fixed{background-color:var(--uid-table-fixed-bg,var(--uid-table-bg,var(--uid-color-surface)));background-image:linear-gradient(var(--_uid-table-row-bg), var(--_uid-table-row-bg))}.uid-table__th.uid-table__cell--fixed{z-index:2;background-color:var(--uid-table-head-bg,var(--uid-color-surface-raised))}.uid-table__th--sortable.uid-table__cell--fixed:hover{background-color:var(--uid-color-surface-hover)}.uid-table__cell--fixed-left-last:after,.uid-table__cell--fixed-right-first:after{content:"";pointer-events:none;width:12px;transition:box-shadow var(--uid-duration-fast) var(--uid-ease-out);position:absolute;top:0;bottom:-1px}.uid-table__cell--fixed-left-last:after{right:-12px}.uid-table__cell--fixed-right-first:after{left:-12px}.uid-table-scroll--ping-left .uid-table__cell--fixed-left-last:after{box-shadow:inset 10px 0 8px -8px var(--uid-table-fixed-shadow,var(--_uid-table-fixed-shadow))}.uid-table-scroll--ping-right .uid-table__cell--fixed-right-first:after{box-shadow:inset -10px 0 8px -8px var(--uid-table-fixed-shadow,var(--_uid-table-fixed-shadow))}.uid-table{--_uid-table-fixed-shadow:#00000026}:root[data-theme=dark] .uid-table{--_uid-table-fixed-shadow:#00000080}.uid-select{width:100%;position:relative}.uid-select__trigger{align-items:center;gap:var(--uid-space-sm);width:100%;padding:var(--uid-space-2xs) 12px;border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);background:var(--uid-color-bg);cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color var(--uid-duration-fast), box-shadow var(--uid-duration-fast);min-height:var(--uid-size-md);outline:none;display:flex}.uid-select__trigger:hover{border-color:var(--uid-color-border-hover,var(--uid-color-text-secondary))}.uid-select--open .uid-select__trigger,.uid-select__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:var(--uid-focus-ring,0 0 0 3px var(--uid-color-primary-subtle))}.uid-select--disabled .uid-select__trigger{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-select__value{font-size:var(--uid-font-size-base,16px);color:var(--uid-color-text);text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.uid-select__tags{gap:var(--uid-space-xs);flex-wrap:wrap;flex:1;min-width:0;display:flex}.uid-select--multiple .uid-select__trigger{padding-top:var(--uid-space-xs);padding-bottom:var(--uid-space-xs)}.uid-select__tag{align-items:center;gap:var(--uid-space-2xs);max-width:100%;padding:2px var(--uid-space-xs);background:var(--uid-select-tag-bg,var(--uid-color-primary-subtle));color:var(--uid-select-tag-color,var(--uid-color-primary));border-radius:var(--uid-radius-sm,4px);font-size:var(--uid-font-size-sm,14px);line-height:1.4;display:inline-flex}.uid-select__tag-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uid-select__tag--more{background:var(--uid-color-bg-subtle);color:var(--uid-color-text-secondary)}.uid-select__tag-remove{width:14px;height:14px;color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.uid-select__tag-remove:hover{opacity:1}.uid-select__value--placeholder{color:var(--uid-color-text-tertiary)}.uid-select__suffix{align-items:center;gap:var(--uid-space-xs);flex-shrink:0;display:flex}.uid-select__clear{border-radius:var(--uid-radius-sm,4px);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);transition:color var(--uid-duration-fast), background var(--uid-duration-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.uid-select__clear:hover{color:var(--uid-color-text);background:var(--uid-color-bg-subtle)}.uid-select__chevron{color:var(--uid-color-text-secondary);transition:transform var(--uid-duration-base);flex-shrink:0}.uid-select__chevron--open{transform:rotate(180deg)}.uid-select__dropdown{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);flex-direction:column;max-height:280px;display:flex;overflow:hidden}.uid-select__search{padding:var(--uid-space-sm);border-bottom:1px solid var(--uid-color-border);flex-shrink:0}.uid-select__search-input{width:100%;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);background:0 0;border:none;outline:none;padding:2px 0}.uid-select__search-input::placeholder{color:var(--uid-color-text-tertiary)}.uid-select__list{padding:var(--uid-space-xs);flex:1;overflow-y:auto}.uid-select__group-label{padding:var(--uid-space-sm) 12px var(--uid-space-xs);font-size:var(--uid-font-size-xs,12px);text-transform:uppercase;letter-spacing:.05em;color:var(--uid-color-text-tertiary);font-weight:600}.uid-select__option{width:100%;padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-sm,4px);cursor:pointer;text-align:left;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);transition:background var(--uid-duration-fast);background:0 0;border:none;justify-content:space-between;align-items:center;display:flex}.uid-select__option--active{background:var(--uid-color-bg-subtle)}.uid-select__option--selected{color:var(--uid-color-primary);font-weight:500}.uid-select__option--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-select__check{color:var(--uid-color-primary);flex-shrink:0}.uid-select__empty{padding:var(--uid-space-md) 12px;text-align:center;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text-secondary)}.uid-select--sm .uid-select__trigger{padding:0 var(--uid-space-sm);min-height:var(--uid-size-sm)}.uid-select--lg .uid-select__trigger{padding:var(--uid-space-2xs) var(--uid-space-md);min-height:var(--uid-size-lg)}.uid-select-dropdown-enter-active,.uid-select-dropdown-leave-active{transition:opacity var(--uid-duration-fast), transform var(--uid-duration-fast)}.uid-select-dropdown-enter-from,.uid-select-dropdown-leave-to{opacity:0;transform:translateY(-4px)}.uid-select--sm .uid-select__value{font-size:var(--uid-font-size-sm)}.uid-select--md .uid-select__value{font-size:var(--uid-font-size-md)}.uid-select--lg .uid-select__value{font-size:var(--uid-font-size-lg)}.uid-datepicker{width:100%;position:relative}.uid-datepicker__trigger{align-items:center;gap:var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);background:var(--uid-color-bg);cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;transition:border-color var(--uid-duration-fast), box-shadow var(--uid-duration-fast);min-height:var(--uid-size-md);outline:none;padding:0 12px;display:flex}.uid-datepicker__trigger:hover{border-color:var(--uid-color-border-hover,var(--uid-color-text-secondary))}.uid-datepicker--open .uid-datepicker__trigger,.uid-datepicker__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:var(--uid-focus-ring,0 0 0 3px var(--uid-color-primary-subtle))}.uid-datepicker--disabled .uid-datepicker__trigger{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-datepicker__value{font-size:var(--uid-font-size-base,16px);color:var(--uid-color-text);flex:1}.uid-datepicker__value--placeholder{color:var(--uid-color-text-tertiary)}.uid-datepicker__suffix{align-items:center;gap:var(--uid-space-xs);flex-shrink:0;display:flex}.uid-datepicker__clear{border-radius:var(--uid-radius-sm,4px);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);transition:color var(--uid-duration-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.uid-datepicker__clear:hover{color:var(--uid-color-text)}.uid-datepicker__chevron{color:var(--uid-color-text-secondary);transition:transform var(--uid-duration-base)}.uid-datepicker__chevron--open{transform:rotate(180deg)}.uid-datepicker__panel{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);width:var(--uid-datepicker-width,280px);-webkit-user-select:none;user-select:none;padding:12px}.uid-datepicker__nav{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.uid-datepicker__nav-btn{border-radius:var(--uid-radius-sm,4px);cursor:pointer;width:28px;height:28px;color:var(--uid-color-text-secondary);transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.uid-datepicker__nav-btn:hover{background:var(--uid-color-bg-subtle);color:var(--uid-color-text)}.uid-datepicker__month-label{font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);font-weight:600}.uid-datepicker__grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.uid-datepicker__weekday{height:32px;font-size:var(--uid-font-size-xs,12px);color:var(--uid-color-text-tertiary);justify-content:center;align-items:center;font-weight:600;display:flex}.uid-datepicker__day{border-radius:var(--uid-radius-sm,4px);cursor:pointer;height:32px;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.uid-datepicker__day:hover:not(:disabled){background:var(--uid-color-bg-subtle)}.uid-datepicker__day--other{color:var(--uid-color-text-tertiary)}.uid-datepicker__day--today{color:var(--uid-color-primary);font-weight:700}.uid-datepicker__day--selected{font-weight:600;background:var(--uid-color-primary)!important;color:var(--uid-color-text-on-primary)!important}.uid-datepicker__day--disabled{opacity:.35;cursor:not-allowed}.uid-datepicker-panel-enter-active,.uid-datepicker-panel-leave-active{transition:opacity var(--uid-duration-fast), transform var(--uid-duration-fast)}.uid-datepicker-panel-enter-from,.uid-datepicker-panel-leave-to{opacity:0;transform:translateY(-4px)}.uid-datepicker--sm .uid-datepicker__trigger{min-height:var(--uid-size-sm);padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-datepicker--lg .uid-datepicker__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-datepicker--sm .uid-datepicker__value{font-size:var(--uid-font-size-sm)}.uid-datepicker--md .uid-datepicker__value{font-size:var(--uid-font-size-md)}.uid-datepicker--lg .uid-datepicker__value{font-size:var(--uid-font-size-lg)}.uid-virtual-list{will-change:scroll-position;position:relative;overflow-y:auto}.uid-virtual-list__spacer{position:relative}.uid-virtual-list__content{will-change:transform;position:absolute;top:0;left:0;right:0}.uid-virtual-list__item{box-sizing:border-box;overflow:hidden}.uid-slider{gap:var(--uid-space-sm);flex-direction:column;width:100%;display:flex}.uid-slider__header{justify-content:space-between;align-items:center;display:flex}.uid-slider__label{font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);font-weight:500}.uid-slider__value{font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-primary);text-align:right;min-width:2ch;font-weight:600}.uid-slider__input{appearance:none;width:100%;height:var(--uid-slider-track-height,4px);border-radius:var(--uid-radius-full,9999px);cursor:pointer;background:linear-gradient(to right, var(--uid-slider-fill-color,var(--uid-color-primary)) 0%, var(--uid-slider-fill-color,var(--uid-color-primary)) var(--_fill,0%), var(--uid-slider-track-bg,var(--uid-color-border)) var(--_fill,0%), var(--uid-slider-track-bg,var(--uid-color-border)) 100%);transition:opacity var(--uid-duration-fast);outline:none}.uid-slider__input::-webkit-slider-thumb{-webkit-appearance:none;width:var(--uid-slider-thumb-size,18px);height:var(--uid-slider-thumb-size,18px);background:var(--uid-slider-thumb-bg,var(--uid-color-primary));border:2px solid var(--uid-color-bg);box-shadow:var(--uid-shadow-sm);cursor:pointer;transition:transform var(--uid-duration-fast);border-radius:50%}.uid-slider__input::-moz-range-thumb{width:var(--uid-slider-thumb-size,18px);height:var(--uid-slider-thumb-size,18px);background:var(--uid-slider-thumb-bg,var(--uid-color-primary));border:2px solid var(--uid-color-bg);box-shadow:var(--uid-shadow-sm);cursor:pointer;transition:transform var(--uid-duration-fast);border-radius:50%}.uid-slider__input:hover::-webkit-slider-thumb{transform:scale(1.2)}.uid-slider__input:hover::-moz-range-thumb{transform:scale(1.2)}.uid-slider__input:focus-visible::-webkit-slider-thumb{box-shadow:var(--uid-focus-ring,0 0 0 3px var(--uid-color-primary-subtle))}.uid-slider__input:focus-visible::-moz-range-thumb{box-shadow:var(--uid-focus-ring,0 0 0 3px var(--uid-color-primary-subtle))}.uid-slider--disabled .uid-slider__input{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-slider__marks{--_thumb:var(--uid-slider-thumb-size,18px);height:calc(var(--uid-font-size-xs,12px) * 1.5 + 8px);margin-top:calc(var(--uid-space-sm) * -1 + 2px);position:relative}.uid-slider__mark{top:0;left:calc(var(--_thumb) / 2 + (100% - var(--_thumb)) * var(--_pos,0));font:inherit;font-size:var(--uid-font-size-xs,12px);color:var(--uid-slider-mark-color,var(--uid-text-secondary,var(--uid-color-text)));white-space:nowrap;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:2px;padding:0 2px;line-height:1.5;display:flex;position:absolute;transform:translate(-50%)}.uid-slider__mark-tick{background:var(--uid-slider-track-bg,var(--uid-color-border));border-radius:1px;width:2px;height:6px}.uid-slider__mark--active .uid-slider__mark-tick{background:var(--uid-slider-fill-color,var(--uid-color-primary))}.uid-slider__mark--active{color:var(--uid-slider-mark-active-color,var(--uid-text-primary,var(--uid-color-text)))}.uid-slider__mark:hover:not([disabled]){color:var(--uid-slider-fill-color,var(--uid-color-primary))}.uid-slider__mark[disabled]{cursor:not-allowed}.uid-colorpicker{display:inline-flex;position:relative}.uid-colorpicker__trigger{align-items:center;gap:var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);background:var(--uid-color-bg);cursor:pointer;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);transition:border-color var(--uid-duration-fast), box-shadow var(--uid-duration-fast);min-width:140px;min-height:var(--uid-size-md);outline:none;padding:0 12px;font-family:inherit;display:flex}.uid-colorpicker__trigger:hover{border-color:var(--uid-color-border-hover,var(--uid-color-text-secondary))}.uid-colorpicker--open .uid-colorpicker__trigger,.uid-colorpicker__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:var(--uid-focus-ring,0 0 0 3px var(--uid-color-primary-subtle))}.uid-colorpicker--disabled .uid-colorpicker__trigger{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-colorpicker__swatch{border-radius:var(--uid-radius-sm,4px);border:1px solid var(--uid-color-border);background-image:linear-gradient(45deg, var(--uid-color-border) 25%, transparent 25%), linear-gradient(-45deg, var(--uid-color-border) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--uid-color-border) 75%), linear-gradient(-45deg, transparent 75%, var(--uid-color-border) 75%);background-position:0 0,0 4px,4px -4px,-4px 0;background-size:8px 8px;flex-shrink:0;width:20px;height:20px}.uid-colorpicker__trigger-label{font-family:var(--uid-font-family-mono,monospace);font-size:var(--uid-font-size-sm,14px)}.uid-colorpicker__trigger-label--empty{color:var(--uid-color-text-tertiary);font-family:inherit}.uid-colorpicker__panel{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);flex-direction:column;gap:12px;width:240px;padding:12px;display:flex}.uid-colorpicker__gradient{border-radius:var(--uid-radius-sm,4px);cursor:crosshair;touch-action:none;background:linear-gradient(to bottom, transparent 0%, #000 100%), linear-gradient(to right, #fff 0%, var(--_hue,red) 100%);flex-shrink:0;width:100%;height:160px;position:relative}.uid-colorpicker__gradient-thumb{pointer-events:none;border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #0000004d,0 1px 3px #0000004d}.uid-colorpicker__controls{align-items:center;gap:var(--uid-space-sm);display:flex}.uid-colorpicker__sliders{gap:var(--uid-space-sm);flex-direction:column;flex:1;display:flex}.uid-colorpicker__preview{border-radius:var(--uid-radius-sm,4px);border:1px solid var(--uid-color-border);flex-shrink:0;width:32px;height:32px}.uid-colorpicker__hue-track{border-radius:var(--uid-radius-full,9999px);cursor:pointer;touch-action:none;background:linear-gradient(90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);height:12px;position:relative}.uid-colorpicker__alpha-track{border-radius:var(--uid-radius-full,9999px);cursor:pointer;touch-action:none;background-image:linear-gradient(to right, transparent, var(--_color,red)), linear-gradient(45deg, #ccc 25%, transparent 25%), linear-gradient(-45deg, #ccc 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #ccc 75%), linear-gradient(-45deg, transparent 75%, #ccc 75%);background-position:0 0,0 0,0 4px,4px -4px,-4px 0;background-size:100% 100%,8px 8px,8px 8px,8px 8px,8px 8px;height:12px;position:relative}.uid-colorpicker__track-thumb{pointer-events:none;background:#fff;border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #0000004d,0 1px 3px #0000004d}.uid-colorpicker__inputs{align-items:center;gap:var(--uid-space-sm);display:flex}.uid-colorpicker__input-label{font-size:var(--uid-font-size-xs,12px);color:var(--uid-color-text-secondary);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;font-weight:600}.uid-colorpicker__hex-input{padding:var(--uid-space-xs) var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm,4px);background:var(--uid-color-bg-subtle);font-family:var(--uid-font-family-mono,monospace);font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);width:0;transition:border-color var(--uid-duration-fast);outline:none;flex:1}.uid-colorpicker__hex-input:focus{border-color:var(--uid-color-primary)}.uid-colorpicker__presets{gap:var(--uid-space-xs);flex-wrap:wrap;display:flex}.uid-colorpicker__preset{border-radius:var(--uid-radius-sm,4px);border:1px solid var(--uid-color-border);cursor:pointer;width:20px;height:20px;transition:transform var(--uid-duration-fast), box-shadow var(--uid-duration-fast);padding:0}.uid-colorpicker__preset:hover{transform:scale(1.15)}.uid-colorpicker__preset--active{box-shadow:0 0 0 2px var(--uid-color-bg), 0 0 0 4px var(--uid-color-primary)}.uid-colorpicker-panel-enter-active,.uid-colorpicker-panel-leave-active{transition:opacity var(--uid-duration-fast), transform var(--uid-duration-fast)}.uid-colorpicker-panel-enter-from,.uid-colorpicker-panel-leave-to{opacity:0;transform:translateY(-4px)}.uid-colorpicker--sm .uid-colorpicker__trigger{min-height:var(--uid-size-sm);padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-colorpicker--lg .uid-colorpicker__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-colorpicker--sm .uid-colorpicker__trigger-label{font-size:var(--uid-font-size-sm)}.uid-colorpicker--md .uid-colorpicker__trigger-label{font-size:var(--uid-font-size-md)}.uid-colorpicker--lg .uid-colorpicker__trigger-label{font-size:var(--uid-font-size-lg)}.uid-command-overlay{background:var(--uid-color-overlay,#00000080);z-index:var(--uid-z-modal,500);justify-content:center;align-items:flex-start;padding-top:min(15vh,120px);display:flex;position:fixed;inset:0}.uid-command{width:100%;max-width:var(--uid-command-width,560px);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-lg,12px);box-shadow:var(--uid-shadow-xl);flex-direction:column;max-height:480px;display:flex;overflow:hidden}.uid-command__search{padding:12px var(--uid-space-md);border-bottom:1px solid var(--uid-color-border);flex-shrink:0;align-items:center;gap:12px;display:flex}.uid-command__search-icon{color:var(--uid-color-text-secondary);flex-shrink:0}.uid-command__input{font-size:var(--uid-font-size-base,16px);color:var(--uid-color-text);background:0 0;border:none;outline:none;flex:1;line-height:1.5}.uid-command__input::placeholder{color:var(--uid-color-text-tertiary)}.uid-command__list{padding:var(--uid-space-xs);flex:1;overflow-y:auto}.uid-command__group-label{padding:var(--uid-space-sm) 12px var(--uid-space-xs);font-size:var(--uid-font-size-xs,12px);text-transform:uppercase;letter-spacing:.05em;color:var(--uid-color-text-tertiary);font-weight:600}.uid-command__item{width:100%;padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-md,8px);cursor:pointer;text-align:left;color:var(--uid-color-text);transition:background var(--uid-duration-fast);background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;display:flex}.uid-command__item--active{background:var(--uid-color-bg-subtle)}.uid-command__item-text{flex-direction:column;gap:1px;min-width:0;display:flex}.uid-command__item-label{font-size:var(--uid-font-size-sm,14px);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.uid-command__item-desc{font-size:var(--uid-font-size-xs,12px);color:var(--uid-color-text-secondary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.uid-command__item-shortcut{gap:var(--uid-space-xs);flex-shrink:0;display:flex}.uid-command__kbd{min-width:20px;font-size:var(--uid-font-size-xs,12px);font-family:var(--uid-font-family-mono,monospace);background:var(--uid-color-bg-subtle);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm,4px);color:var(--uid-color-text-secondary);justify-content:center;align-items:center;padding:2px 5px;display:inline-flex}.uid-command__empty{padding:var(--uid-space-xl) var(--uid-space-md);text-align:center;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text-secondary)}.uid-command-enter-active,.uid-command-leave-active{transition:opacity var(--uid-duration-base)}.uid-command-enter-active .uid-command,.uid-command-leave-active .uid-command{transition:transform var(--uid-duration-base), opacity var(--uid-duration-base)}.uid-command-enter-from,.uid-command-leave-to{opacity:0}.uid-command-enter-from .uid-command,.uid-command-leave-to .uid-command{opacity:0;transform:scale(.96)translateY(-8px)}.uid-number-input{--uid-number-input-height:var(--uid-size-md);--uid-number-input-padding-x:var(--uid-space-sm);--uid-number-input-font-size:var(--uid-font-size-md);--uid-number-input-bg:var(--uid-surface-raised);--uid-number-input-border:var(--uid-border-default);--uid-number-input-color:var(--uid-text-primary);--uid-number-input-radius:var(--uid-radius-md);gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-number-input__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-number-input__required{color:var(--uid-danger)}.uid-number-input__control{min-height:var(--uid-number-input-height);background:var(--uid-number-input-bg);border:1px solid var(--uid-number-input-border);border-radius:var(--uid-number-input-radius);transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);align-items:stretch;display:flex;overflow:hidden;container:uid-number-input/inline-size}.uid-number-input__control:focus-within{border-color:var(--uid-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent)}.uid-number-input__input{min-width:0;padding:0 var(--uid-number-input-padding-x);color:var(--uid-number-input-color);font:inherit;font-size:var(--uid-number-input-font-size);text-align:var(--uid-number-input-text-align,left);-moz-appearance:textfield;background:0 0;border:none;outline:none;flex:1}.uid-number-input__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.uid-number-input__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.uid-number-input__btn{background:var(--uid-surface-base);border:none;border-left:1px solid var(--uid-number-input-border);width:28px;color:var(--uid-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.uid-number-input__btn--prefix{border-left:none;border-right:1px solid var(--uid-number-input-border)}.uid-number-input__btn:hover:not(:disabled){background:var(--uid-surface-overlay);color:var(--uid-text-primary)}.uid-number-input__btn:disabled{opacity:.4;cursor:not-allowed}.uid-number-input__btn:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-number-input__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-number-input__hint--error{color:var(--uid-danger)}.uid-number-input--error .uid-number-input__control{border-color:var(--uid-danger)}.uid-number-input--error .uid-number-input__control:focus-within{box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-danger) 15%, transparent)}.uid-number-input--disabled .uid-number-input__control{opacity:.5;cursor:not-allowed;background:var(--uid-surface-base)}.uid-number-input--disabled .uid-number-input__input,.uid-number-input--disabled .uid-number-input__btn{pointer-events:none}.uid-number-input--readonly .uid-number-input__control{background:var(--uid-surface-base);border-style:dashed}.uid-number-input--sm{--uid-number-input-height:var(--uid-size-sm);--uid-number-input-font-size:var(--uid-font-size-sm);--uid-number-input-padding-x:var(--uid-space-xs)}.uid-number-input--sm .uid-number-input__btn{width:24px}.uid-number-input--lg{--uid-number-input-height:var(--uid-size-lg);--uid-number-input-font-size:var(--uid-font-size-lg);--uid-number-input-padding-x:var(--uid-space-md)}.uid-number-input--lg .uid-number-input__btn{width:36px}.uid-number-input--centered{--uid-number-input-text-align:center}@container uid-number-input (width<=8.5rem){.uid-number-input__btn{display:none}}.uid-timepicker{width:100%;position:relative}.uid-timepicker__trigger{align-items:center;gap:var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg);cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;transition:border-color var(--uid-duration-fast), box-shadow var(--uid-duration-fast);min-height:var(--uid-size-md);outline:none;padding:0 12px;display:flex}.uid-timepicker__trigger:hover{border-color:var(--uid-color-border-hover,var(--uid-color-text-secondary))}.uid-timepicker--open .uid-timepicker__trigger,.uid-timepicker__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-timepicker--disabled .uid-timepicker__trigger{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-timepicker__icon{color:var(--uid-color-text-secondary);flex-shrink:0}.uid-timepicker__value{font-size:var(--uid-font-size-md);color:var(--uid-color-text);font-variant-numeric:tabular-nums;flex:1}.uid-timepicker__value--placeholder{color:var(--uid-color-text-tertiary)}.uid-timepicker__clear{border-radius:var(--uid-radius-sm);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.uid-timepicker__clear:hover{color:var(--uid-color-text)}.uid-timepicker__panel{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);-webkit-user-select:none;user-select:none;flex-direction:column;display:flex}.uid-timepicker__columns{padding:var(--uid-space-xs);align-items:stretch;display:flex}.uid-timepicker__column{scroll-snap-type:y mandatory;scrollbar-width:thin;flex-direction:column;width:56px;height:192px;display:flex;overflow-y:auto}.uid-timepicker__column+.uid-timepicker__column{border-left:1px solid var(--uid-color-border)}.uid-timepicker__cell{cursor:pointer;height:32px;font-size:var(--uid-font-size-sm);font-variant-numeric:tabular-nums;color:var(--uid-color-text);border-radius:var(--uid-radius-sm);scroll-snap-align:center;transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin:1px 4px;display:flex}.uid-timepicker__cell:hover:not(:disabled){background:var(--uid-color-bg-subtle)}.uid-timepicker__cell--selected{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);font-weight:600}.uid-timepicker__cell:disabled{opacity:.4;cursor:not-allowed}.uid-timepicker__footer{justify-content:space-between;gap:var(--uid-space-sm);padding:var(--uid-space-sm);border-top:1px solid var(--uid-color-border);display:flex}.uid-timepicker__btn{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-bg);color:var(--uid-color-text);font-size:var(--uid-font-size-sm);cursor:pointer;transition:background var(--uid-duration-fast);flex:1;padding:6px 12px}.uid-timepicker__btn:hover{background:var(--uid-color-bg-subtle)}.uid-timepicker__btn--primary{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);border-color:var(--uid-color-primary)}.uid-timepicker__btn--primary:hover{background:var(--uid-color-primary-hover);border-color:var(--uid-color-primary-hover)}.uid-timepicker-panel-enter-active,.uid-timepicker-panel-leave-active{transition:opacity var(--uid-duration-fast), transform var(--uid-duration-fast)}.uid-timepicker-panel-enter-from,.uid-timepicker-panel-leave-to{opacity:0;transform:translateY(-4px)}.uid-timepicker--sm .uid-timepicker__trigger{min-height:var(--uid-size-sm);padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-timepicker--lg .uid-timepicker__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-timepicker--sm .uid-timepicker__value{font-size:var(--uid-font-size-sm)}.uid-timepicker--md .uid-timepicker__value{font-size:var(--uid-font-size-md)}.uid-timepicker--lg .uid-timepicker__value{font-size:var(--uid-font-size-lg)}.uid-daterange{width:100%;position:relative}.uid-daterange__trigger{align-items:center;gap:var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg);cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;transition:border-color var(--uid-duration-fast), box-shadow var(--uid-duration-fast);min-height:var(--uid-size-md);outline:none;padding:0 12px;display:flex}.uid-daterange__trigger:hover{border-color:var(--uid-color-border-hover,var(--uid-color-text-secondary))}.uid-daterange--open .uid-daterange__trigger,.uid-daterange__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-daterange--disabled .uid-daterange__trigger{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-daterange__icon{color:var(--uid-color-text-secondary);flex-shrink:0}.uid-daterange__value{font-size:var(--uid-font-size-md);color:var(--uid-color-text);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.uid-daterange__value--placeholder{color:var(--uid-color-text-tertiary)}.uid-daterange__separator{color:var(--uid-color-text-tertiary);margin:0 var(--uid-space-xs)}.uid-daterange__clear{border-radius:var(--uid-radius-sm);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.uid-daterange__clear:hover{color:var(--uid-color-text)}.uid-daterange__panel{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);-webkit-user-select:none;user-select:none;flex-direction:column;display:flex}.uid-daterange__months{gap:var(--uid-space-md);padding:12px;display:flex}.uid-daterange__month{width:248px}.uid-daterange__nav{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.uid-daterange__month+.uid-daterange__month .uid-daterange__nav-btn--prev,.uid-daterange__month:not(:last-child) .uid-daterange__nav-btn--next{visibility:hidden}.uid-daterange__nav-btn{border-radius:var(--uid-radius-sm);cursor:pointer;width:28px;height:28px;color:var(--uid-color-text-secondary);transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.uid-daterange__nav-btn:hover{background:var(--uid-color-bg-subtle);color:var(--uid-color-text)}.uid-daterange__month-label{font-size:var(--uid-font-size-sm);color:var(--uid-color-text);font-weight:600}.uid-daterange__grid{grid-template-columns:repeat(7,1fr);display:grid}.uid-daterange__weekday{height:32px;font-size:var(--uid-font-size-xs);color:var(--uid-color-text-tertiary);justify-content:center;align-items:center;font-weight:600;display:flex}.uid-daterange__day{cursor:pointer;height:32px;font-size:var(--uid-font-size-sm);color:var(--uid-color-text);z-index:1;background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:relative}.uid-daterange__day:hover:not(:disabled){background:var(--uid-color-bg-subtle);border-radius:var(--uid-radius-sm)}.uid-daterange__day--other{color:var(--uid-color-text-tertiary);pointer-events:none}.uid-daterange__day--today{color:var(--uid-color-primary);font-weight:700}.uid-daterange__day--start,.uid-daterange__day--end{border-radius:var(--uid-radius-sm);font-weight:600;background:var(--uid-color-primary)!important;color:var(--uid-color-text-on-primary)!important}.uid-daterange__day--in-range{background:var(--uid-color-primary-subtle);color:var(--uid-color-text);border-radius:0}.uid-daterange__day--disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.uid-daterange__footer{justify-content:space-between;gap:var(--uid-space-sm);padding:var(--uid-space-sm) 12px;border-top:1px solid var(--uid-color-border);flex-wrap:wrap;display:flex}.uid-daterange__btn{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-bg);color:var(--uid-color-text);font-size:var(--uid-font-size-sm);cursor:pointer;transition:background var(--uid-duration-fast);padding:6px 12px}.uid-daterange__btn:hover{background:var(--uid-color-bg-subtle)}.uid-daterange__btn:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-daterange__times{gap:var(--uid-space-md);padding:var(--uid-space-sm) 12px;border-top:1px solid var(--uid-color-border);flex-wrap:wrap;display:flex}.uid-daterange__time-field{gap:var(--uid-space-xs);flex-direction:column;flex:1;min-width:120px;display:flex}.uid-daterange__time-label{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary)}.uid-daterange__time{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg);color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-sm);padding:6px 8px}.uid-daterange__time:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-daterange__time:disabled{opacity:.5;cursor:not-allowed}@media (max-width:600px){.uid-daterange__months{flex-direction:column}.uid-daterange__month+.uid-daterange__month .uid-daterange__nav-btn--prev,.uid-daterange__month:not(:last-child) .uid-daterange__nav-btn--next{visibility:visible}}.uid-daterange-panel-enter-active,.uid-daterange-panel-leave-active{transition:opacity var(--uid-duration-fast), transform var(--uid-duration-fast)}.uid-daterange-panel-enter-from,.uid-daterange-panel-leave-to{opacity:0;transform:translateY(-4px)}.uid-daterange--sm .uid-daterange__trigger{min-height:var(--uid-size-sm);padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-daterange--lg .uid-daterange__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-daterange--sm .uid-daterange__value{font-size:var(--uid-font-size-sm)}.uid-daterange--md .uid-daterange__value{font-size:var(--uid-font-size-md)}.uid-daterange--lg .uid-daterange__value{font-size:var(--uid-font-size-lg)}.uid-tags-input{gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-tags-input__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-tags-input__required{color:var(--uid-danger)}.uid-tags-input__control{align-items:center;gap:var(--uid-space-xs);min-height:var(--uid-size-md);padding:var(--uid-space-2xs) var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);cursor:text;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);flex-wrap:wrap;display:flex}.uid-tags-input__control:focus-within{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle);outline:none}.uid-tags-input__chip{align-items:center;gap:var(--uid-space-2xs);padding:2px var(--uid-space-xs);background:var(--uid-color-primary-subtle);color:var(--uid-color-primary);border-radius:var(--uid-radius-sm);font-size:var(--uid-font-size-sm);line-height:1.4;display:inline-flex}.uid-tags-input__chip--invalid{background:color-mix(in srgb, var(--uid-color-danger) 12%, transparent);color:var(--uid-color-danger)}.uid-tags-input__chip-remove{width:14px;height:14px;color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;display:flex}.uid-tags-input__chip-remove:hover{opacity:1}.uid-tags-input__field{min-width:80px;color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-md);background:0 0;border:none;outline:none;flex:1;padding:4px 0}.uid-tags-input__field::placeholder{color:var(--uid-color-text-tertiary)}.uid-tags-input__hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0;line-height:1.4}.uid-tags-input__hint--error{color:var(--uid-danger)}.uid-tags-input--error .uid-tags-input__control{border-color:var(--uid-danger)}.uid-tags-input--disabled .uid-tags-input__control{opacity:.5;cursor:not-allowed;background:var(--uid-surface-base);pointer-events:none}.uid-tags-input--sm .uid-tags-input__control{min-height:var(--uid-size-sm);font-size:var(--uid-font-size-sm);padding-block:0}.uid-tags-input--sm .uid-tags-input__field{font-size:var(--uid-font-size-sm);padding-block:0}.uid-tags-input--lg .uid-tags-input__control{min-height:var(--uid-size-lg);font-size:var(--uid-font-size-lg)}.uid-tags-input--sm .uid-tags-input__field{font-size:var(--uid-font-size-sm)}.uid-tags-input--md .uid-tags-input__field{font-size:var(--uid-font-size-md)}.uid-tags-input--lg .uid-tags-input__field{font-size:var(--uid-font-size-lg)}.uid-combobox{gap:var(--uid-space-xs);flex-direction:column;display:flex;position:relative}.uid-combobox__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-combobox__required{color:var(--uid-danger)}.uid-combobox__control{min-height:var(--uid-size-md);padding:0 var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);cursor:text;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);align-items:center;display:flex}.uid-combobox--open .uid-combobox__control,.uid-combobox__control:focus-within{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-combobox__field{min-width:0;padding:var(--uid-space-xs) 0;color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-md);background:0 0;border:none;outline:none;flex:1}.uid-combobox__field::placeholder{color:var(--uid-color-text-tertiary)}.uid-combobox__suffix{align-items:center;gap:var(--uid-space-xs);color:var(--uid-color-text-secondary);flex-shrink:0;display:flex}.uid-combobox__clear{border-radius:var(--uid-radius-sm);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;display:flex}.uid-combobox__clear:hover{color:var(--uid-color-text)}.uid-combobox__chevron{transition:transform var(--uid-duration-base);cursor:pointer}.uid-combobox__chevron--open{transform:rotate(180deg)}.uid-combobox__hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0;line-height:1.4}.uid-combobox__hint--error{color:var(--uid-danger)}.uid-combobox__dropdown{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);max-height:280px;padding:var(--uid-space-2xs);overflow-y:auto}.uid-combobox__dropdown[data-position=trigger]{margin-top:0;top:auto}.uid-combobox__option{align-items:center;gap:var(--uid-space-sm);width:100%;padding:var(--uid-space-sm) var(--uid-space-sm);border-radius:var(--uid-radius-sm);text-align:left;cursor:pointer;font-size:var(--uid-font-size-md);color:var(--uid-color-text);background:0 0;border:none;display:flex}.uid-combobox__option--active{background:var(--uid-color-bg-subtle)}.uid-combobox__option--selected{color:var(--uid-color-primary);font-weight:600}.uid-combobox__option--disabled{opacity:.4;cursor:not-allowed}.uid-combobox__option-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.uid-combobox__option-hint{color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-sm);flex-shrink:0}.uid-combobox__check{color:var(--uid-color-primary);flex-shrink:0}.uid-combobox__create{color:var(--uid-color-primary)}.uid-combobox__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-sm)}.uid-combobox--error .uid-combobox__control{border-color:var(--uid-danger)}.uid-combobox--disabled .uid-combobox__control{opacity:.5;pointer-events:none;background:var(--uid-surface-base)}.uid-combobox--sm .uid-combobox__control{min-height:var(--uid-size-sm)}.uid-combobox--sm .uid-combobox__field{font-size:var(--uid-font-size-sm);padding-block:0}.uid-combobox--lg .uid-combobox__control{min-height:var(--uid-size-lg)}.uid-combobox--sm .uid-combobox__field{font-size:var(--uid-font-size-sm)}.uid-combobox--md .uid-combobox__field{font-size:var(--uid-font-size-md)}.uid-combobox--lg .uid-combobox__field{font-size:var(--uid-font-size-lg)}.uid-tree{font-size:var(--uid-font-size-md);color:var(--uid-color-text);-webkit-user-select:none;user-select:none;margin:0;padding:0;list-style:none}.uid-tree-item{list-style:none}.uid-tree__list{margin:0;padding:0;list-style:none}.uid-tree-item__row{align-items:center;gap:var(--uid-space-xs);padding:6px var(--uid-space-sm);padding-left:calc(var(--uid-space-sm) + var(--uid-tree-level,0) * 16px);border-radius:var(--uid-radius-sm);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out);outline:none;min-height:32px;display:flex}.uid-tree-item__row:hover{background:var(--uid-color-bg-subtle)}.uid-tree-item__row:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-tree-item--selected>.uid-tree-item__row{background:var(--uid-color-primary-subtle);color:var(--uid-color-primary);font-weight:500}.uid-tree-item--disabled>.uid-tree-item__row{opacity:.5;cursor:not-allowed}.uid-tree-item__chevron{width:16px;height:16px;color:var(--uid-color-text-secondary);border-radius:var(--uid-radius-sm);cursor:pointer;transition:transform var(--uid-duration-base);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.uid-tree-item__chevron--open{transform:rotate(90deg)}.uid-tree-item__chevron--placeholder{visibility:hidden;cursor:default}.uid-tree-item__check{border:1px solid var(--uid-color-border);background:var(--uid-color-bg);cursor:pointer;width:16px;height:16px;transition:background var(--uid-duration-fast), border-color var(--uid-duration-fast);color:var(--uid-color-text-on-primary);border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-tree-item__check--checked,.uid-tree-item__check--indeterminate{background:var(--uid-color-primary);border-color:var(--uid-color-primary)}.uid-tree-item__check--indeterminate:after{content:"";background:var(--uid-color-text-on-primary);border-radius:1px;width:8px;height:2px}.uid-tree-item__icon{color:var(--uid-color-text-secondary);flex-shrink:0;align-items:center;display:inline-flex}.uid-tree-item__icon--branch{color:var(--uid-color-primary)}.uid-tree-item__icon--leaf{color:var(--uid-color-text-tertiary,var(--uid-color-text-secondary))}.uid-tree-item__label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.uid-tree-item__children{margin:0;padding:0;list-style:none}.uid-tree--guides .uid-tree-item__children{position:relative}.uid-tree--guides .uid-tree-item__children:before{content:"";top:0;bottom:0;left:calc(var(--uid-space-sm) + var(--uid-tree-level,0) * 16px + 8px);background:var(--uid-color-border);width:1px;position:absolute}.uid-timeline{margin:0;padding:0;list-style:none;position:relative}.uid-timeline-item{gap:var(--uid-space-md);padding-bottom:var(--uid-space-lg);display:flex;position:relative}.uid-timeline-item:last-child{padding-bottom:0}.uid-timeline-item__rail{flex-direction:column;flex-shrink:0;align-items:center;width:24px;display:flex;position:relative}.uid-timeline-item__marker{background:var(--uid-color-bg);border:2px solid var(--uid-color-border);width:12px;height:12px;color:var(--uid-color-text-secondary);z-index:1;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:4px;display:flex}.uid-timeline-item--with-icon .uid-timeline-item__marker{width:28px;height:28px;margin-top:0}.uid-timeline-item__line{background:var(--uid-color-border);width:2px;margin-top:var(--uid-space-2xs);flex:1}.uid-timeline-item:last-child .uid-timeline-item__line{display:none}.uid-timeline-item__content{min-width:0;padding-bottom:var(--uid-space-sm);flex:1}.uid-timeline-item__time{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary);margin:0 0 var(--uid-space-2xs) 0}.uid-timeline-item__title{margin:0 0 var(--uid-space-2xs) 0;font-size:var(--uid-font-size-md);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);line-height:1.4}.uid-timeline-item__description{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0;line-height:1.5}.uid-timeline-item--success .uid-timeline-item__marker{background:var(--uid-color-success);border-color:var(--uid-color-success);color:var(--uid-color-text-on-primary)}.uid-timeline-item--warning .uid-timeline-item__marker{background:var(--uid-color-warning);border-color:var(--uid-color-warning);color:var(--uid-color-text-on-primary)}.uid-timeline-item--danger .uid-timeline-item__marker{background:var(--uid-color-danger);border-color:var(--uid-color-danger);color:var(--uid-color-text-on-primary)}.uid-timeline-item--primary .uid-timeline-item__marker{background:var(--uid-color-primary);border-color:var(--uid-color-primary);color:var(--uid-color-text-on-primary)}.uid-timeline-item--info .uid-timeline-item__marker{background:var(--uid-color-info);border-color:var(--uid-color-info);color:var(--uid-color-text-on-primary)}.uid-timeline--alternate .uid-timeline-item{width:50%}.uid-timeline--alternate .uid-timeline-item:nth-child(2n){flex-direction:row;margin-left:auto}.uid-timeline--alternate .uid-timeline-item:nth-child(odd){text-align:right;flex-direction:row-reverse}.uid-file-upload{gap:var(--uid-space-sm);flex-direction:column;display:flex}.uid-file-upload__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);display:flex}.uid-file-upload__required{color:var(--uid-danger)}.uid-file-upload__dropzone{justify-content:center;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-xl);border:2px dashed var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg-subtle);text-align:center;cursor:pointer;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), background var(--uid-duration-fast) var(--uid-ease-out);outline:none;flex-direction:column;display:flex}.uid-file-upload__dropzone:hover,.uid-file-upload__dropzone:focus-visible,.uid-file-upload__dropzone--active{border-color:var(--uid-color-primary);background:var(--uid-color-primary-subtle)}.uid-file-upload__icon{color:var(--uid-color-text-secondary)}.uid-file-upload__primary-text{font-size:var(--uid-font-size-md);color:var(--uid-color-text);font-weight:var(--uid-font-weight-medium)}.uid-file-upload__primary-text strong{color:var(--uid-color-primary)}.uid-file-upload__secondary-text{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary)}.uid-file-upload__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.uid-file-upload__list{gap:var(--uid-space-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.uid-file-upload__item{align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) 12px;border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg);display:flex}.uid-file-upload__item--error{border-color:var(--uid-color-danger);background:color-mix(in srgb, var(--uid-color-danger) 5%, var(--uid-color-bg))}.uid-file-upload__file-icon{color:var(--uid-color-text-secondary);flex-shrink:0}.uid-file-upload__file-info{flex:1;min-width:0}.uid-file-upload__file-name{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.uid-file-upload__file-meta{font-size:var(--uid-font-size-xs);color:var(--uid-color-text-tertiary);gap:var(--uid-space-sm);display:flex}.uid-file-upload__progress{background:var(--uid-color-bg-subtle);border-radius:2px;height:4px;margin-top:4px;overflow:hidden}.uid-file-upload__progress-bar{background:var(--uid-color-primary);height:100%;transition:width var(--uid-duration-base) var(--uid-ease-out)}.uid-file-upload__remove{border-radius:var(--uid-radius-sm);width:24px;height:24px;color:var(--uid-color-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-file-upload__remove:hover{background:var(--uid-color-bg-subtle);color:var(--uid-color-danger)}.uid-file-upload--disabled .uid-file-upload__dropzone{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-file-upload__hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0;line-height:1.4}.uid-file-upload__hint--error{color:var(--uid-danger)}.uid-code{--uid-code-bg:var(--uid-color-bg-subtle);--uid-code-color:var(--uid-color-text);--uid-code-border:var(--uid-color-border);--uid-code-radius:var(--uid-radius-md);--uid-code-padding-y:var(--uid-space-md);--uid-code-padding-x:var(--uid-space-md);--uid-code-font:var(--uid-font-family-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", "DejaVu Sans Mono", monospace);--uid-code-font-size:var(--uid-font-size-sm);background:var(--uid-code-bg);color:var(--uid-code-color);border:1px solid var(--uid-code-border);border-radius:var(--uid-code-radius);font-family:var(--uid-code-font);font-size:var(--uid-code-font-size);line-height:1.6;position:relative;overflow:hidden}.uid-code__header{padding:var(--uid-space-xs) var(--uid-space-sm);border-bottom:1px solid var(--uid-code-border);background:var(--uid-color-bg);justify-content:space-between;align-items:center;display:flex}.uid-code__lang{font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text-tertiary);text-transform:lowercase;letter-spacing:.05em}.uid-code__copy{align-items:center;gap:var(--uid-space-2xs);color:var(--uid-color-text-secondary);font-size:var(--uid-font-size-xs);border-radius:var(--uid-radius-sm);cursor:pointer;transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;padding:4px 8px;font-family:inherit;display:flex}.uid-code__copy:hover{background:var(--uid-color-bg-subtle);color:var(--uid-color-text)}.uid-code__copy--copied{color:var(--uid-color-success)}.uid-code__body{max-height:var(--uid-code-max-height,none);display:flex;overflow:auto}.uid-code__line-numbers{padding:var(--uid-code-padding-y) var(--uid-space-sm);text-align:right;-webkit-user-select:none;user-select:none;color:var(--uid-color-text-tertiary);background:var(--uid-color-bg);border-right:1px solid var(--uid-code-border);flex-direction:column;flex-shrink:0;display:flex}.uid-code__line-number{font-variant-numeric:tabular-nums;font-size:var(--uid-font-size-xs);line-height:calc(var(--uid-code-font-size) * 1.6)}.uid-code__pre{padding:var(--uid-code-padding-y) var(--uid-code-padding-x);font-family:inherit;font-size:inherit;line-height:inherit;white-space:pre;flex:1;min-width:0;margin:0;overflow:auto}.uid-code__pre code{font-family:inherit;font-size:inherit;background:0 0;border-radius:0;padding:0}.uid-code--inline{padding:2px var(--uid-space-xs);border-radius:var(--uid-radius-sm);background:var(--uid-color-bg-subtle);color:var(--uid-color-text);white-space:nowrap;border:none;font-size:.92em;display:inline}.uid-code--inline.uid-code--inline-strong{font-weight:var(--uid-font-weight-medium);color:var(--uid-color-primary)}.uid-code--minimal .uid-code__body{padding:0}.uid-code--wrap .uid-code__pre{white-space:pre-wrap;word-break:break-word}.uid-code{--uid-code-tok-comment:var(--uid-text-secondary);--uid-code-tok-string:var(--uid-success);--uid-code-tok-number:var(--uid-warning);--uid-code-tok-literal:var(--uid-warning);--uid-code-tok-keyword:var(--uid-accent-text);--uid-code-tok-function:var(--uid-info);--uid-code-tok-variable:var(--uid-danger);--uid-code-tok-tag:var(--uid-danger);--uid-code-tok-attr:var(--uid-warning);--uid-code-tok-property:var(--uid-info);--uid-code-tok-punctuation:var(--uid-text-secondary)}.uid-code__tok--comment{color:var(--uid-code-tok-comment);font-style:italic}.uid-code__tok--string{color:var(--uid-code-tok-string)}.uid-code__tok--number{color:var(--uid-code-tok-number)}.uid-code__tok--literal{color:var(--uid-code-tok-literal)}.uid-code__tok--keyword{color:var(--uid-code-tok-keyword);font-weight:var(--uid-font-weight-medium)}.uid-code__tok--function{color:var(--uid-code-tok-function)}.uid-code__tok--variable{color:var(--uid-code-tok-variable)}.uid-code__tok--tag{color:var(--uid-code-tok-tag)}.uid-code__tok--attr{color:var(--uid-code-tok-attr)}.uid-code__tok--property{color:var(--uid-code-tok-property)}.uid-code__tok--punctuation{color:var(--uid-code-tok-punctuation)}.uid-markdown{--uid-markdown-color:var(--uid-text-primary);--uid-markdown-muted:var(--uid-text-secondary);--uid-markdown-link:var(--uid-accent);--uid-markdown-border:var(--uid-border-subtle);--uid-markdown-sunken:color-mix(in srgb, var(--uid-text-primary) 6%, transparent);--uid-markdown-font-size:var(--uid-font-size-md);--uid-markdown-line-height:var(--uid-line-height-relaxed);--uid-markdown-toc-width:220px;gap:var(--uid-space-xl);min-width:0;color:var(--uid-markdown-color);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.uid-markdown--toc{grid-template-columns:minmax(0, 1fr) var(--uid-markdown-toc-width)}.uid-markdown__body{min-width:0;font-size:var(--uid-markdown-font-size);line-height:var(--uid-markdown-line-height);word-break:break-word}.uid-markdown__body>*+*{margin-top:var(--uid-space-md)}.uid-markdown__html>:first-child{margin-top:0}.uid-markdown__html>:last-child{margin-bottom:0}.uid-markdown__html p,.uid-markdown__html ul,.uid-markdown__html ol,.uid-markdown__html blockquote,.uid-markdown__html pre{margin:0 0 var(--uid-space-sm)}.uid-markdown__html h1,.uid-markdown__html h2,.uid-markdown__html h3,.uid-markdown__html h4,.uid-markdown__html h5,.uid-markdown__html h6{margin:var(--uid-space-lg) 0 var(--uid-space-xs);font-weight:var(--uid-font-weight-semibold);line-height:var(--uid-line-height-tight);scroll-margin-top:72px}.uid-markdown__html h1{font-size:var(--uid-font-size-2xl)}.uid-markdown__html h2{font-size:var(--uid-font-size-xl);padding-bottom:var(--uid-space-xs);border-bottom:1px solid var(--uid-markdown-border)}.uid-markdown__html h3{font-size:var(--uid-font-size-lg)}.uid-markdown__html h4{font-size:var(--uid-font-size-md)}.uid-markdown__html ul,.uid-markdown__html ol{padding-left:1.5em}.uid-markdown__html li+li{margin-top:var(--uid-space-2xs)}.uid-markdown__html a{color:var(--uid-markdown-link)}.uid-markdown__html blockquote{padding-left:var(--uid-space-md);border-left:3px solid var(--uid-markdown-border);color:var(--uid-markdown-muted)}.uid-markdown__html code{font-family:var(--uid-font-family-mono);border-radius:var(--uid-radius-sm);background:var(--uid-markdown-sunken);padding:0 .25em;font-size:.9em}.uid-markdown__html pre{padding:var(--uid-space-sm);border-radius:var(--uid-radius-md);background:var(--uid-markdown-sunken);overflow:auto}.uid-markdown__html pre code{background:0 0;padding:0}.uid-markdown__html img{max-width:100%}.uid-markdown__html hr{border:0;border-top:1px solid var(--uid-markdown-border);margin:var(--uid-space-lg) 0}.uid-markdown__table{margin:0 0 var(--uid-space-sm);overflow-x:auto}.uid-markdown__html table{border-collapse:collapse;width:100%;font-size:.95em}.uid-markdown__html th,.uid-markdown__html td{padding:var(--uid-space-xs) var(--uid-space-sm);border:1px solid var(--uid-markdown-border);text-align:left;vertical-align:top}.uid-markdown__html th{font-weight:var(--uid-font-weight-semibold);background:var(--uid-markdown-sunken)}.uid-markdown__html blockquote.uid-markdown__callout{padding:var(--uid-space-sm) var(--uid-space-md);border-radius:var(--uid-radius-sm);color:var(--uid-markdown-color);background:var(--uid-markdown-sunken);border-left-width:4px}.uid-markdown__html blockquote.uid-markdown__callout>:last-child{margin-bottom:0}.uid-markdown__html blockquote.uid-markdown__callout--note{border-left-color:var(--uid-info);background:var(--uid-info-subtle)}.uid-markdown__html blockquote.uid-markdown__callout--tip{border-left-color:var(--uid-success);background:var(--uid-success-subtle)}.uid-markdown__html blockquote.uid-markdown__callout--important{border-left-color:var(--uid-accent);background:var(--uid-accent-subtle)}.uid-markdown__html blockquote.uid-markdown__callout--warning{border-left-color:var(--uid-warning);background:var(--uid-warning-subtle)}.uid-markdown__html blockquote.uid-markdown__callout--caution{border-left-color:var(--uid-danger);background:var(--uid-danger-subtle)}.uid-markdown__html .uid-markdown__callout-title{font-weight:var(--uid-font-weight-semibold);margin-bottom:var(--uid-space-2xs)}.uid-markdown__code{width:100%}.uid-markdown__block{text-align:center;overflow-x:auto}.uid-markdown__block>svg{max-width:100%;height:auto}.uid-markdown__block--live{text-align:start;overflow:visible}.uid-markdown__block--pending{padding:var(--uid-space-lg);border:1px dashed var(--uid-markdown-border);border-radius:var(--uid-radius-md);color:var(--uid-markdown-muted);font-size:var(--uid-font-size-sm)}.uid-markdown__block-error-message{margin:0 0 var(--uid-space-xs);padding:var(--uid-space-xs) var(--uid-space-sm);border-left:3px solid var(--uid-danger);border-radius:var(--uid-radius-sm);background:var(--uid-danger-subtle);color:var(--uid-markdown-color);font-size:var(--uid-font-size-sm)}.uid-markdown__toc{top:var(--uid-space-lg);max-height:calc(100vh - 96px);font-size:var(--uid-font-size-sm);border-left:1px solid var(--uid-markdown-border);padding-left:var(--uid-space-md);position:sticky;overflow:auto}.uid-markdown__toc-title{font-weight:var(--uid-font-weight-semibold);margin-bottom:var(--uid-space-xs)}.uid-markdown__toc ul{margin:0;padding:0;list-style:none}.uid-markdown__toc-item{margin:2px 0}.uid-markdown__toc-item--l3{padding-left:var(--uid-space-md)}.uid-markdown__toc-item--l4,.uid-markdown__toc-item--l5,.uid-markdown__toc-item--l6{padding-left:var(--uid-space-xl)}.uid-markdown__toc a{color:var(--uid-markdown-muted);text-decoration:none}.uid-markdown__toc a:hover{color:var(--uid-markdown-link)}.uid-markdown__toc a:focus-visible{outline:2px solid var(--uid-focus-ring);outline-offset:2px;border-radius:var(--uid-radius-sm)}@media (max-width:1100px){.uid-markdown--toc{grid-template-columns:minmax(0,1fr)}.uid-markdown__toc{max-height:none;padding:var(--uid-space-sm) var(--uid-space-md);border-radius:var(--uid-radius-md);background:var(--uid-markdown-sunken);border-left:0;order:-1;position:static}}.uid-image{--uid-image-radius:var(--uid-radius-md);--uid-image-fit:cover;--uid-image-placeholder:var(--uid-surface-raised);--uid-image-fallback-fg:var(--uid-text-tertiary);border-radius:var(--uid-image-radius);background:var(--uid-image-placeholder);vertical-align:middle;max-width:100%;display:inline-block;position:relative;overflow:hidden}.uid-image[data-status=loaded]{background:0 0}.uid-image__img{object-fit:var(--uid-image-fit);width:100%;height:100%;transition:opacity var(--uid-duration-fast) var(--uid-ease-out);display:block}.uid-image[data-status=loading] .uid-image__img{opacity:0}.uid-image__placeholder{background:linear-gradient(90deg, var(--uid-surface-raised) 25%, color-mix(in srgb, var(--uid-text-tertiary) 18%, var(--uid-surface-raised)) 50%, var(--uid-surface-raised) 75%);background-size:200% 100%;justify-content:center;align-items:center;animation:1.6s ease-in-out infinite uid-image-shimmer;display:flex;position:absolute;inset:0}@keyframes uid-image-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.uid-image__placeholder{animation:none}}.uid-image__fallback{width:100%;min-width:48px;height:100%;min-height:48px;color:var(--uid-image-fallback-fg);background:var(--uid-image-placeholder);justify-content:center;align-items:center;display:flex}.uid-image__trigger{cursor:zoom-in;border-radius:inherit;background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.uid-image__trigger:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-image__preview{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.uid-image__preview-img{object-fit:contain;max-width:100%;max-height:80vh}.uid-media__button{width:var(--uid-media-button-size,40px);height:var(--uid-media-button-size,40px);border-radius:var(--uid-radius-md,8px);color:inherit;font:inherit;cursor:pointer;transition:background-color var(--uid-duration-fast,.12s), color var(--uid-duration-fast,.12s);background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.uid-media__button:hover{background:var(--uid-media-hover-bg,#ffffff29)}.uid-media__button:focus-visible,.uid-media-menu__item:focus-visible{outline:2px solid var(--uid-media-focus,var(--uid-color-focus-ring,currentColor));outline-offset:-2px}.uid-media__button--active{background:var(--uid-media-hover-bg,#ffffff29)}.uid-media__button--on:after{content:"";background:var(--uid-media-accent,var(--uid-accent));border-radius:1px;height:2px;position:absolute;bottom:6px;left:30%;right:30%}.uid-media__button:disabled{opacity:.4;cursor:default}.uid-media__badge{background:var(--uid-media-accent,var(--uid-accent));color:var(--uid-media-accent-contrast,#fff);pointer-events:none;border-radius:4px;padding:0 3px;font-size:9px;font-weight:700;line-height:13px;position:absolute;top:3px;right:0}.uid-media__fill{fill:currentColor}.uid-media__time{font-size:var(--uid-font-size-sm,14px);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}.uid-media__spin{animation:.9s linear infinite uid-media-spin}@keyframes uid-media-spin{to{transform:rotate(360deg)}}.uid-media__volume{flex:none;align-items:center;display:flex}.uid-media__volume-range{appearance:none;opacity:0;background:linear-gradient(to right, var(--uid-media-played,var(--uid-accent)) 0 var(--_fill,0%), var(--uid-media-rail,#ffffff4d) var(--_fill,0%) 100%);cursor:pointer;width:0;height:4px;transition:width var(--uid-duration-base,.2s) var(--uid-ease-out,ease-out), opacity var(--uid-duration-base,.2s), margin var(--uid-duration-base,.2s);border-radius:2px;margin:0}.uid-media__volume:hover .uid-media__volume-range,.uid-media__volume:focus-within .uid-media__volume-range,.uid-media__volume--open .uid-media__volume-range{width:var(--uid-media-volume-width,72px);opacity:1;margin:0 10px 0 4px}.uid-media__volume-range::-webkit-slider-thumb{-webkit-appearance:none;background:var(--uid-media-thumb,var(--uid-media-played,var(--uid-accent)));border:0;border-radius:50%;width:12px;height:12px}.uid-media__volume-range::-moz-range-thumb{background:var(--uid-media-thumb,var(--uid-media-played,var(--uid-accent)));border:0;border-radius:50%;width:12px;height:12px}.uid-media__volume-range:focus-visible{outline:2px solid var(--uid-media-focus,var(--uid-color-focus-ring,currentColor));outline-offset:4px}@media (hover:none) and (pointer:coarse){.uid-media__volume-range{display:none}.uid-media__button{width:var(--uid-media-button-size-touch,44px);height:var(--uid-media-button-size-touch,44px)}}.uid-media-scrubber{--_rail-h:var(--uid-media-rail-height,4px);height:var(--uid-media-scrubber-height,18px);cursor:pointer;touch-action:none;-webkit-tap-highlight-color:transparent;outline:none;align-items:center;display:flex;position:relative}.uid-media-scrubber--disabled{cursor:default}.uid-media-scrubber__rail{width:100%;height:var(--_rail-h);border-radius:var(--_rail-h);background:var(--uid-media-rail,#ffffff4d);transition:height var(--uid-duration-fast,.12s);position:relative;overflow:hidden}.uid-media-scrubber:hover .uid-media-scrubber__rail,.uid-media-scrubber:focus-visible .uid-media-scrubber__rail,.uid-media-scrubber--dragging .uid-media-scrubber__rail{height:calc(var(--_rail-h) + 2px)}.uid-media-scrubber__buffered{background:var(--uid-media-buffered,#ffffff73);position:absolute;top:0;bottom:0}.uid-media-scrubber__played{width:var(--_played,0%);background:var(--uid-media-played,var(--uid-accent));position:absolute;top:0;bottom:0;left:0}.uid-media-scrubber__handle{top:50%;left:var(--_played,0%);background:var(--uid-media-thumb,var(--uid-media-played,var(--uid-accent)));width:14px;height:14px;transition:transform var(--uid-duration-fast,.12s);pointer-events:none;border-radius:50%;margin:-7px 0 0 -7px;position:absolute;transform:scale(0);box-shadow:0 0 0 1px #00000026}.uid-media-scrubber:hover .uid-media-scrubber__handle,.uid-media-scrubber--dragging .uid-media-scrubber__handle,.uid-media-scrubber:focus-visible .uid-media-scrubber__handle{transform:scale(1)}.uid-media-scrubber:focus-visible .uid-media-scrubber__handle{box-shadow:0 0 0 3px var(--uid-media-focus,var(--uid-color-focus-ring,currentColor))}.uid-media-scrubber--disabled .uid-media-scrubber__handle{display:none}.uid-media-scrubber--wave{height:var(--uid-media-wave-height,40px)}.uid-media-scrubber__wave{width:100%;height:100%;position:relative}.uid-media-scrubber__wave svg{width:100%;height:100%;position:absolute;inset:0}.uid-media-scrubber__wave-base{fill:var(--uid-media-wave,var(--uid-border-default,#c4c4c8))}.uid-media-scrubber__wave-played{fill:var(--uid-media-played,var(--uid-accent));clip-path:inset(0 calc(100% - var(--_played,0%)) 0 0)}.uid-media-scrubber--wave:focus-visible{outline:2px solid var(--uid-media-focus,var(--uid-color-focus-ring,currentColor));outline-offset:2px}.uid-media-scrubber__placeholder{background:linear-gradient(90deg, transparent 0, #ffffff8c 50%, transparent 100%) no-repeat, repeating-linear-gradient(90deg, var(--uid-media-wave,#c4c4c8) 0 2px, transparent 2px 3px);opacity:.6;background-position:-40% 0,0 0;background-size:40% 100%,auto;border-radius:2px;width:100%;height:40%;animation:1.4s ease-in-out infinite uid-media-shimmer;position:relative}:root[data-theme=dark] .uid-media-scrubber__placeholder{background:linear-gradient(90deg, transparent 0, #ffffff2e 50%, transparent 100%) no-repeat, repeating-linear-gradient(90deg, var(--uid-media-wave,#52525b) 0 2px, transparent 2px 3px);background-position:-40% 0,0 0;background-size:40% 100%,auto}@keyframes uid-media-shimmer{to{background-position:140% 0,0 0}}.uid-media-scrubber__hover-line{background:var(--uid-media-hover-line,var(--uid-text-secondary,#888));pointer-events:none;width:1px;position:absolute;top:0;bottom:0}.uid-media-scrubber__preview{pointer-events:none;z-index:2;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;bottom:calc(100% + 6px);transform:translate(-50%)}.uid-media-scrubber__thumb{border-radius:var(--uid-radius-sm,4px);background-color:#000;background-repeat:no-repeat;border:2px solid #ffffffe6;box-shadow:0 4px 12px #0006}.uid-media-scrubber__chapter{text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:var(--uid-font-size-xs,12px);color:var(--uid-media-tooltip-color,#fff);text-shadow:0 1px 2px #0009;font-weight:600;overflow:hidden}.uid-media-scrubber__time{border-radius:var(--uid-radius-sm,4px);background:var(--uid-media-tooltip-bg,#000000bf);color:var(--uid-media-tooltip-color,#fff);font-size:var(--uid-font-size-xs,12px);font-variant-numeric:tabular-nums;white-space:nowrap;padding:2px 6px}.uid-media-menu{flex:none;display:inline-flex;position:relative}.uid-media-menu__panel{z-index:5;min-width:168px;max-height:var(--uid-media-menu-max-height,280px);border-radius:var(--uid-radius-lg,12px);background:var(--uid-media-menu-bg,#1c1c1ef0);color:var(--uid-media-menu-color,#fff);box-shadow:var(--uid-shadow-lg,0 8px 24px #0000004d);border:1px solid var(--uid-media-menu-border,transparent);font-size:var(--uid-font-size-sm,14px);animation:uid-media-menu-in var(--uid-duration-fast,.12s) var(--uid-ease-out,ease-out);padding:6px;position:absolute;bottom:calc(100% + 8px);overflow-y:auto}.uid-media-menu__panel--sheet{z-index:var(--uid-z-popover,1000);-webkit-backdrop-filter:blur(8px);flex-direction:column;gap:2px;padding:0 10px 8px;display:flex;position:fixed;bottom:auto;right:auto;overflow-y:auto}.uid-media-menu__panel--sheet .uid-media-menu__group{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:3px 4px;display:grid}.uid-media-menu__panel--sheet .uid-media-menu__group--compact{grid-template-columns:repeat(auto-fill,minmax(42px,1fr))}.uid-media-menu__panel--sheet .uid-media-menu__group--compact .uid-media-menu__item{font-size:var(--uid-font-size-xs,12px);padding:2px}.uid-media-menu__panel--sheet .uid-media-menu__group+.uid-media-menu__group{border-top:0;margin-top:0;padding-top:2px}.uid-media-menu__panel--sheet .uid-media-menu__heading{grid-column:1/-1;padding:0 2px;font-size:11px;line-height:16px}.uid-media-menu__panel--sheet .uid-media-menu__item{border:1px solid var(--uid-media-menu-divider,#ffffff24);text-align:center;justify-content:center;min-height:30px;padding:2px 6px}.uid-media-menu__panel--sheet .uid-media-menu__check{display:none}.uid-media-menu__panel--sheet .uid-media-menu__label{flex:none}.uid-media-menu__panel--sheet .uid-media-menu__item[aria-checked=true]{border-color:var(--uid-media-accent,var(--uid-accent));background:color-mix(in srgb, var(--uid-media-accent,var(--uid-accent)) 22%, transparent)}.uid-media-menu__sheet-head{justify-content:space-between;align-items:center;min-height:30px;font-weight:600;display:flex}.uid-media-menu__close{--uid-media-button-size:32px;--uid-media-button-size-touch:36px;margin-right:-6px}.uid-media-menu__panel--end{right:0}.uid-media-menu__panel--start{left:0}@keyframes uid-media-menu-in{0%{opacity:0;transform:translateY(4px)}}.uid-media-menu__group+.uid-media-menu__group{border-top:1px solid var(--uid-media-menu-divider,#ffffff24);margin-top:4px;padding-top:4px}.uid-media-menu__panel:not(.uid-media-menu__panel--sheet):has(.uid-media-menu__group+.uid-media-menu__group){grid-auto-columns:minmax(136px,auto);grid-auto-flow:column;display:grid}.uid-media-menu__panel:not(.uid-media-menu__panel--sheet) .uid-media-menu__group+.uid-media-menu__group{border-top:0;border-left:1px solid var(--uid-media-menu-divider,#ffffff24);margin:0 0 0 6px;padding:0 0 0 6px}.uid-media-menu__heading{font-size:var(--uid-font-size-xs,12px);text-transform:uppercase;letter-spacing:.04em;opacity:.65;padding:4px 10px 2px;font-weight:600}.uid-media-menu__item{border-radius:var(--uid-radius-md,8px);width:100%;min-height:34px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:4px 10px 4px 8px;display:flex}.uid-media-menu__item:hover,.uid-media-menu__item:focus-visible{background:var(--uid-media-hover-bg,#ffffff1f)}.uid-media-menu__check{opacity:.45;border:2px solid;border-radius:50%;flex:none;width:16px;height:16px}.uid-media-menu__item[aria-checked=true] .uid-media-menu__check{border-color:var(--uid-media-accent,var(--uid-accent));background:radial-gradient(circle, var(--uid-media-accent,var(--uid-accent)) 0 3.5px, transparent 4px);opacity:1}.uid-media-menu__item[aria-checked=true]{font-weight:600}.uid-media-menu__label{white-space:nowrap;flex:1}.uid-media-menu__hint{opacity:.65;font-weight:400}.uid-media-menu__item--action{padding-left:10px}@media (hover:none) and (pointer:coarse){.uid-media-menu__item{min-height:44px}}@media (prefers-reduced-motion:reduce){.uid-media__spin{animation-duration:2.4s}.uid-media-scrubber__placeholder{animation:none}.uid-media__volume-range,.uid-media-scrubber__rail,.uid-media-scrubber__handle,.uid-media-menu__panel{transition:none;animation:none}}.uid-video{--uid-media-accent:var(--uid-video-accent,var(--uid-accent));--uid-media-played:var(--uid-video-accent,var(--uid-accent));--uid-media-thumb:var(--uid-video-accent,var(--uid-accent));--uid-media-rail:#ffffff47;--uid-media-buffered:#ffffff80;--uid-media-focus:#fff;border-radius:var(--uid-video-radius,var(--uid-radius-lg,12px));background:var(--uid-video-bg,#000);width:100%;clip-path:inset(0 round var(--uid-video-radius,var(--uid-radius-lg,12px)));color:#fff;font-family:var(--uid-font-family-sans,system-ui, sans-serif);isolation:isolate;-webkit-user-select:none;user-select:none;outline:none;line-height:1.2;display:block;position:relative;overflow:hidden}.uid-video:focus-visible{box-shadow:inset 0 0 0 3px var(--uid-color-focus-ring,var(--uid-accent))}.uid-video--fullscreen{clip-path:none;border-radius:0}.uid-video__media{object-fit:contain;object-position:center;background:var(--uid-video-bg,#000);width:100%;height:100%;display:block}.uid-video__media::cue{opacity:0}.uid-video--bare .uid-video__media::cue{opacity:1}.uid-video__surface{z-index:1;cursor:pointer;-webkit-tap-highlight-color:transparent;position:absolute;inset:0}.uid-video--playing.uid-video--controls-hidden,.uid-video--playing.uid-video--controls-hidden .uid-video__surface{cursor:none}.uid-video__controls{z-index:3;transition:opacity var(--uid-duration-base,.2s), transform var(--uid-duration-base,.2s);background:linear-gradient(#0000,#00000061 45%,#000000b8);padding:32px 12px 6px;position:absolute;bottom:0;left:0;right:0}.uid-video--controls-hidden .uid-video__controls{opacity:0;pointer-events:none;transform:translateY(8px)}.uid-video__scrubber{margin:0 4px}.uid-video__bar{align-items:center;gap:2px;min-width:0;min-height:44px;display:flex}.uid-video__bar .uid-media__time{text-shadow:0 1px 2px #00000080;margin-left:6px}.uid-video__chapter{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--uid-font-size-sm,14px);opacity:.85;margin-left:6px;overflow:hidden}.uid-video__chapter:before{content:"·";margin-right:6px}.uid-video__spacer{flex:1}.uid-video__live{height:28px;color:inherit;font:inherit;font-size:var(--uid-font-size-xs,12px);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:#ffffff24;border:0;border-radius:999px;align-items:center;gap:6px;margin-left:6px;padding:0 10px;font-weight:700;display:inline-flex}.uid-video__live-dot{background:#fff9;border-radius:50%;width:8px;height:8px}.uid-video__live--edge .uid-video__live-dot{background:var(--uid-color-rose-500,#f43f5e)}.uid-video__live:focus-visible{outline-offset:2px;outline:2px solid #fff}.uid-video__big-play{z-index:2;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);width:68px;height:68px;transition:background-color var(--uid-duration-fast,.12s), transform var(--uid-duration-fast,.12s);background:#0000008c;border:0;border-radius:50%;justify-content:center;align-items:center;margin:-34px 0 0 -34px;padding:0 0 0 4px;display:flex;position:absolute;top:50%;left:50%}.uid-video__big-play:has(.uid-video__big-icon--pause){padding:0}.uid-video--controls-hidden .uid-video__big-play{opacity:0;pointer-events:none}.uid-video--paused .uid-video__big-play{opacity:1;pointer-events:auto}.uid-video__big-play:hover{background:#000000b8;transform:scale(1.06)}.uid-video__big-play:focus-visible{outline-offset:3px;outline:3px solid #fff}.uid-video--started .uid-video__big-play{width:60px;height:60px;margin:-30px 0 0 -30px}.uid-video__loading{z-index:2;color:#fff;filter:drop-shadow(0 1px 3px #00000080);pointer-events:none;margin:-22px 0 0 -22px;animation:.2s .35s both uid-video-fade-in;position:absolute;top:50%;left:50%}@keyframes uid-video-fade-in{0%{opacity:0}}.uid-video__flash{z-index:2;font-size:var(--uid-font-size-sm,14px);pointer-events:none;background:#0000008c;border-radius:999px;padding:8px 14px;font-weight:600;animation:.12s both uid-video-fade-in;position:absolute;top:50%;transform:translateY(-50%)}.uid-video__flash--left{left:12%}.uid-video__flash--right{right:12%}.uid-video__captions{z-index:2;text-align:center;pointer-events:none;transition:bottom var(--uid-duration-base,.2s);flex-direction:column;align-items:center;gap:2px;display:flex;position:absolute;bottom:18px;left:5%;right:5%}.uid-video:not(.uid-video--controls-hidden) .uid-video__captions{bottom:96px}.uid-video__caption-line{color:#fff;font-size:var(--uid-video-caption-size,clamp(14px, 2.6cqw, 28px));white-space:pre-wrap;background:#000000bf;border-radius:4px;padding:2px 8px;line-height:1.35}.uid-video{container-type:inline-size}.uid-video__error{z-index:4;text-align:center;background:#000000c7;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex;position:absolute;inset:0}.uid-video__error-text{max-width:420px;font-size:var(--uid-font-size-sm,14px);margin:0;line-height:1.45}.uid-video__retry{border-radius:var(--uid-radius-md,8px);height:34px;color:inherit;font:inherit;font-size:var(--uid-font-size-sm,14px);cursor:pointer;background:0 0;border:1px solid #fff6;padding:0 16px}.uid-video__retry:hover{background:#ffffff1f}.uid-video__retry:focus-visible{outline-offset:2px;outline:2px solid #fff}@container (width<=480px){.uid-video__chapter{display:none}.uid-video__controls{padding:24px 6px 2px}.uid-video:not(.uid-video--controls-hidden) .uid-video__captions{bottom:84px}}.uid-video__bar>.uid-media__button,.uid-video__bar>.uid-media-menu{flex:none}.uid-video__bar .uid-media__time{text-overflow:clip;flex:0 auto;min-width:0;overflow:hidden}.uid-video--folded .uid-video__bar{gap:0}@media (prefers-reduced-motion:reduce){.uid-video__controls,.uid-video__captions,.uid-video__big-play{transition:none}.uid-video--controls-hidden .uid-video__controls{transform:none}}.uid-video:has(.uid-media-scrubber__preview) .uid-video__captions{opacity:0}.uid-audio{--uid-media-accent:var(--uid-audio-accent,var(--uid-accent));--uid-media-played:var(--uid-audio-accent,var(--uid-accent));--uid-media-thumb:var(--uid-audio-accent,var(--uid-accent));--uid-media-rail:var(--uid-border-subtle,#e4e4e7);--uid-media-buffered:var(--uid-border-default,#d4d4d8);--uid-media-wave:var(--uid-audio-wave,var(--uid-border-hover,#a1a1aa));--uid-media-hover-bg:var(--uid-surface-base,#f4f4f5);--uid-media-focus:var(--uid-color-focus-ring,var(--uid-accent));--uid-media-menu-bg:var(--uid-surface-overlay,#fff);--uid-media-menu-color:var(--uid-text-primary,#18181b);--uid-media-menu-border:var(--uid-border-subtle,#e4e4e7);--uid-media-menu-divider:var(--uid-border-subtle,#e4e4e7);--uid-media-tooltip-bg:var(--uid-text-primary,#18181b);--uid-media-tooltip-color:var(--uid-surface-raised,#fff);--uid-media-button-size:36px;width:100%;padding:var(--uid-audio-padding,12px 14px);border:1px solid var(--uid-audio-border,var(--uid-border-subtle,#e4e4e7));border-radius:var(--uid-audio-radius,var(--uid-radius-lg,12px));background:var(--uid-audio-bg,var(--uid-surface-raised,#fff));color:var(--uid-text-primary,#18181b);font-family:var(--uid-font-family-sans,system-ui, sans-serif);box-sizing:border-box;line-height:1.3;display:block;container-type:inline-size}:root[data-theme=dark] .uid-audio{--uid-media-wave:var(--uid-audio-wave,var(--uid-border-default,#52525b))}:root[data-theme=dark] .uid-audio__play{color:var(--uid-audio-play-color,var(--uid-color-zinc-950,#09090b))}.uid-audio__media{display:none}.uid-audio__row{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"lead track side";align-items:center;gap:0 12px;min-width:0;display:grid}.uid-audio__row--meta{grid-template-areas:"lead meta side""lead track side"}.uid-audio__lead{grid-area:lead}.uid-audio__meta{grid-area:meta}.uid-audio__track{grid-area:track;min-width:0}.uid-audio__side{grid-area:side}.uid-audio__lead{flex:none;align-items:center;gap:2px;display:flex}.uid-audio__play{width:var(--uid-audio-play-size,44px);height:var(--uid-audio-play-size,44px);background:var(--uid-media-accent);color:var(--uid-audio-play-color,var(--uid-text-on-accent,#fff));cursor:pointer;transition:background-color var(--uid-duration-fast,.12s), transform var(--uid-duration-fast,.12s);border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.uid-audio__play:hover:not(:disabled){background:var(--uid-audio-accent-hover,var(--uid-accent-hover,var(--uid-media-accent)))}.uid-audio__play:active:not(:disabled){transform:scale(.95)}.uid-audio__play:focus-visible{outline:2px solid var(--uid-media-focus);outline-offset:2px}.uid-audio__play:disabled{opacity:.5;cursor:default}.uid-audio__play-icon{margin-left:2px}.uid-audio__play .uid-audio__play-icon{fill:currentColor}.uid-audio__skip{color:var(--uid-text-secondary,#71717a)}.uid-audio__skip:hover:not(:disabled){color:var(--uid-text-primary,#18181b)}.uid-audio__meta{min-width:0;font-size:var(--uid-font-size-sm,14px);align-items:baseline;gap:8px;display:flex}.uid-audio__title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.uid-audio__artist{text-overflow:ellipsis;white-space:nowrap;max-width:40%;color:var(--uid-text-secondary,#71717a);flex:none;overflow:hidden}.uid-audio__artist:before{content:"—";margin-right:8px}.uid-audio--wave .uid-audio__scrubber{--uid-media-scrubber-height:var(--uid-audio-wave-height,40px)}.uid-audio__error{min-height:18px;color:var(--uid-danger,#e11d48);font-size:var(--uid-font-size-sm,14px);align-items:center;gap:6px;margin:0;display:flex}.uid-audio__side{color:var(--uid-text-secondary,#71717a);flex:none;align-items:center;gap:2px;display:flex}.uid-audio__time{min-width:4.5em;font-size:var(--uid-font-size-xs,12px);text-align:right;margin-right:4px}.uid-audio__rate{width:auto;min-width:40px;padding:0 6px}.uid-audio__rate-text{font-size:var(--uid-font-size-xs,12px);font-variant-numeric:tabular-nums;font-weight:600}.uid-audio .uid-media-menu__panel{min-width:140px;top:calc(100% + 6px);bottom:auto}@container (width>=560px){.uid-audio__volume .uid-media__volume-range{width:var(--uid-media-volume-width,72px);opacity:1;margin:0 8px 0 2px}}@container (width<=480px){.uid-audio:not(.uid-audio--mini) .uid-audio__volume{display:none}.uid-audio:not(.uid-audio--mini) .uid-audio__side{display:contents}.uid-audio:not(.uid-audio--mini) .uid-audio__side .uid-media-menu{grid-area:rate}.uid-audio:not(.uid-audio--mini) .uid-audio__time{text-align:left;grid-area:time;min-width:0;margin:2px 0 0}.uid-audio:not(.uid-audio--mini) .uid-audio__row{grid-template-areas:"lead track rate""lead time time";gap:0 8px}.uid-audio:not(.uid-audio--mini) .uid-audio__row--meta{grid-template-areas:"lead meta rate""track track track""time time time"}.uid-audio__row--meta .uid-audio__track{margin-top:6px}.uid-audio__meta{flex-direction:column;align-items:stretch;gap:0}.uid-audio__title,.uid-audio__artist{max-width:100%}.uid-audio__artist{font-size:var(--uid-font-size-xs,12px)}.uid-audio__artist:before{display:none}}.uid-audio__list{max-height:var(--uid-audio-list-max-height,280px);border-top:1px solid var(--uid-border-subtle,#e4e4e7);flex-direction:column;gap:2px;margin:12px -6px -4px;padding:8px 0 0;list-style:none;display:flex;overflow-y:auto}.uid-audio__item{border-radius:var(--uid-radius-md,8px);width:100%;min-height:44px;color:inherit;font:inherit;font-size:var(--uid-font-size-sm,14px);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;padding:6px 10px;display:flex}.uid-audio__item:hover{background:var(--uid-surface-base,#f4f4f5)}.uid-audio__item:focus-visible{outline:2px solid var(--uid-media-focus);outline-offset:-2px}.uid-audio__item--active{background:var(--uid-accent-subtle,#f0fdfa);color:var(--uid-accent-text,var(--uid-media-accent))}.uid-audio__item--active:hover{background:var(--uid-accent-subtle,#f0fdfa)}.uid-audio__item-index{width:20px;color:var(--uid-text-secondary,#71717a);font-size:var(--uid-font-size-xs,12px);font-variant-numeric:tabular-nums;flex:none;justify-content:center;align-items:center;display:inline-flex}.uid-audio__item--active .uid-audio__item-index{color:inherit}.uid-audio__item-text{flex-direction:column;flex:1;min-width:0;display:flex}.uid-audio__item-title,.uid-audio__item-artist{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uid-audio__item--active .uid-audio__item-title{font-weight:600}.uid-audio__item-artist{color:var(--uid-text-secondary,#71717a);font-size:var(--uid-font-size-xs,12px)}.uid-audio__item-time{color:var(--uid-text-secondary,#71717a);font-size:var(--uid-font-size-xs,12px);font-variant-numeric:tabular-nums;flex:none}.uid-audio__eq{align-items:flex-end;gap:2px;height:12px;display:inline-flex}.uid-audio__eq i{transform-origin:bottom;background:currentColor;border-radius:1px;width:3px;height:100%;animation:.9s ease-in-out infinite uid-audio-eq}.uid-audio__eq i:nth-child(2){animation-delay:-.3s}.uid-audio__eq i:nth-child(3){animation-delay:-.6s}@keyframes uid-audio-eq{0%,to{transform:scaleY(.3)}50%{transform:scaleY(1)}}.uid-audio--mini{--uid-media-scrubber-height:24px;--uid-audio-play-size:28px;--uid-audio-wave-height:24px;width:var(--uid-audio-mini-width,240px);vertical-align:middle;background:0 0;border:0;max-width:100%;padding:0;display:inline-block}.uid-audio--mini .uid-audio__row{gap:8px}.uid-audio--mini .uid-audio__time{min-width:2.8em;margin:0}.uid-audio--mini .uid-audio__error{font-size:var(--uid-font-size-xs,12px)}.uid-audio--mini .uid-audio__error span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (hover:none) and (pointer:coarse){.uid-audio--mini{--uid-audio-play-size:36px}}@media (prefers-reduced-motion:reduce){.uid-audio__eq i{animation:none;transform:scaleY(.7)}.uid-audio__play{transition:none}}.uid-rating{--uid-rating-color:var(--uid-color-warning,#f59e0b);--uid-rating-color-empty:var(--uid-color-border);--uid-rating-size:24px;--uid-rating-gap:var(--uid-space-2xs);align-items:center;gap:var(--uid-rating-gap);font-size:var(--uid-rating-size);-webkit-user-select:none;user-select:none;line-height:1;display:inline-flex}.uid-rating--readonly{cursor:default}.uid-rating--disabled{opacity:.5;pointer-events:none}.uid-rating__star{cursor:pointer;width:1em;height:1em;color:var(--uid-rating-color-empty);transition:transform var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.uid-rating__star:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px;border-radius:4px}.uid-rating__star:hover{transform:scale(1.15)}.uid-rating--readonly .uid-rating__star,.uid-rating--readonly .uid-rating__star:hover{cursor:default;transform:none}.uid-rating__icon{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.uid-rating__icon--filled{color:var(--uid-rating-color);clip-path:inset(0)}.uid-rating__icon--filled[data-half=true]{clip-path:inset(0 50% 0 0)}.uid-rating__label{margin-left:var(--uid-space-xs);font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);font-variant-numeric:tabular-nums}.uid-rating--sm{--uid-rating-size:16px}.uid-rating--lg{--uid-rating-size:32px}.uid-rating--primary{--uid-rating-color:var(--uid-color-primary)}.uid-rating--success{--uid-rating-color:var(--uid-color-success)}.uid-rating--danger{--uid-rating-color:var(--uid-color-danger)}.uid-splitter{width:100%;height:100%;display:flex;position:relative;overflow:hidden}.uid-splitter--horizontal{flex-direction:row}.uid-splitter--vertical{flex-direction:column}.uid-splitter__pane{flex-grow:0;flex-shrink:0;min-width:0;min-height:0;position:relative;overflow:auto}.uid-splitter__pane--end{flex:1}.uid-splitter__handle{background:var(--uid-color-border);-webkit-user-select:none;user-select:none;transition:background var(--uid-duration-fast) var(--uid-ease-out);outline:none;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.uid-splitter__handle:hover,.uid-splitter__handle:focus-visible,.uid-splitter--dragging .uid-splitter__handle{background:var(--uid-color-primary)}.uid-splitter--horizontal .uid-splitter__handle{cursor:col-resize;width:4px;margin:0}.uid-splitter--vertical .uid-splitter__handle{cursor:row-resize;height:4px}.uid-splitter__handle:before{content:"";position:absolute;inset:-4px}.uid-splitter__grip{pointer-events:none;color:var(--uid-color-text-tertiary);gap:2px;display:flex}.uid-splitter__grip-dot{background:currentColor;border-radius:50%;width:2px;height:2px}.uid-splitter--horizontal .uid-splitter__grip{flex-direction:column}.uid-splitter--dragging{cursor:col-resize}.uid-splitter--dragging.uid-splitter--vertical{cursor:row-resize}.uid-splitter--disabled .uid-splitter__handle{cursor:not-allowed;opacity:.4;pointer-events:none}.uid-stat{--uid-stat-padding:var(--uid-space-md);--uid-stat-radius:var(--uid-radius-md);--uid-stat-bg:var(--uid-color-bg);--uid-stat-border:var(--uid-color-border);gap:var(--uid-space-md);padding:var(--uid-stat-padding);background:var(--uid-stat-bg);border:1px solid var(--uid-stat-border);border-radius:var(--uid-stat-radius);align-items:flex-start;min-width:0;display:flex}.uid-stat--bordered-none{border:none}.uid-stat--ghost{background:0 0;border:none;padding:0}.uid-stat__icon{border-radius:var(--uid-radius-md);background:var(--uid-color-primary-subtle);width:40px;height:40px;color:var(--uid-color-primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-stat--success .uid-stat__icon{background:var(--uid-color-success-subtle);color:var(--uid-color-success)}.uid-stat--warning .uid-stat__icon{background:var(--uid-color-warning-subtle);color:var(--uid-color-warning)}.uid-stat--danger .uid-stat__icon{background:var(--uid-color-danger-subtle);color:var(--uid-color-danger)}.uid-stat--info .uid-stat__icon{background:var(--uid-color-info-subtle);color:var(--uid-color-info)}.uid-stat__body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.uid-stat__title{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text-secondary);text-overflow:ellipsis;white-space:nowrap;margin:0;line-height:1.4;overflow:hidden}.uid-stat__value-row{align-items:baseline;gap:var(--uid-space-sm);flex-wrap:wrap;display:flex}.uid-stat__value{font-size:var(--uid-font-size-2xl,28px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);font-variant-numeric:tabular-nums;align-items:baseline;gap:2px;line-height:1.2;display:inline-flex}.uid-stat__prefix,.uid-stat__suffix{font-size:.65em;font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text-tertiary)}.uid-stat__trend{border-radius:var(--uid-radius-sm);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);background:var(--uid-color-bg-subtle);color:var(--uid-color-text-secondary);align-items:center;gap:2px;padding:2px 6px;display:inline-flex}.uid-stat__trend--up{background:var(--uid-color-success-subtle);color:var(--uid-color-success)}.uid-stat__trend--down{background:var(--uid-color-danger-subtle);color:var(--uid-color-danger)}.uid-stat__footer{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary);margin:0;line-height:1.4}.uid-stat--loading .uid-stat__title,.uid-stat--loading .uid-stat__value,.uid-stat--loading .uid-stat__footer{background:var(--uid-color-bg-subtle);color:#0000;border-radius:var(--uid-radius-sm);background-image:linear-gradient(90deg, transparent 0%, var(--uid-color-border) 50%, transparent 100%);background-size:200% 100%;animation:1.4s linear infinite uid-stat-shimmer}@keyframes uid-stat-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.uid-stat--trend-below .uid-stat__value-row{flex-direction:column;align-items:flex-start;gap:4px}.uid-description-list{--uid-desc-cols:1;--uid-desc-label-color:var(--uid-color-text-secondary);--uid-desc-value-color:var(--uid-color-text);font-size:var(--uid-font-size-md)}.uid-description-list__title{margin:0 0 var(--uid-space-md) 0;font-size:var(--uid-font-size-lg,18px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text)}.uid-description-list__grid{grid-template-columns:repeat(var(--uid-desc-cols), 1fr);gap:0;display:grid}.uid-description-item{grid-column:span var(--uid-desc-span,1);min-width:0;display:flex}.uid-description-item__label{color:var(--uid-desc-label-color);font-weight:var(--uid-font-weight-medium);flex-shrink:0}.uid-description-item__value{color:var(--uid-desc-value-color);align-items:center;gap:var(--uid-space-xs);word-break:break-word;min-width:0;display:flex}.uid-description-item__copy{width:18px;height:18px;color:var(--uid-color-text-tertiary);cursor:pointer;border-radius:var(--uid-radius-sm);transition:color var(--uid-duration-fast), background var(--uid-duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.uid-description-item__copy:hover{background:var(--uid-color-bg-subtle);color:var(--uid-color-text)}.uid-description-item__copy--copied{color:var(--uid-color-success)}.uid-description-list--horizontal .uid-description-item{padding:var(--uid-space-sm) 0;align-items:baseline;gap:var(--uid-space-md)}.uid-description-list--horizontal .uid-description-item__label{width:var(--uid-desc-label-width,33%);min-width:120px}.uid-description-list--horizontal .uid-description-item__value{flex:1}.uid-description-list--vertical .uid-description-item{gap:var(--uid-space-2xs);padding:var(--uid-space-sm) 0;flex-direction:column}.uid-description-list--vertical .uid-description-item__label{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary)}.uid-description-list--bordered .uid-description-list__grid{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);overflow:hidden}.uid-description-list--bordered .uid-description-item{padding:var(--uid-space-sm) var(--uid-space-md);border-right:1px solid var(--uid-color-border);border-bottom:1px solid var(--uid-color-border)}.uid-description-list--bordered.uid-description-list--horizontal .uid-description-item__label{background:var(--uid-color-bg-subtle);margin:calc(-1 * var(--uid-space-sm)) 0 calc(-1 * var(--uid-space-sm)) calc(-1 * var(--uid-space-md));padding:var(--uid-space-sm) var(--uid-space-md);align-self:stretch;align-items:center;display:flex}.uid-description-list--sm{font-size:var(--uid-font-size-sm)}.uid-description-list--lg{font-size:var(--uid-font-size-lg,16px)}.uid-pattern-result{text-align:center;padding:var(--uid-space-2xl) var(--uid-space-md);align-items:center;gap:var(--uid-space-md);flex-direction:column;max-width:560px;margin:0 auto;display:flex}.uid-pattern-result__icon{background:var(--uid-color-bg-subtle);width:72px;height:72px;color:var(--uid-color-text-secondary);border-radius:50%;justify-content:center;align-items:center;display:flex}.uid-pattern-result--success .uid-pattern-result__icon{background:var(--uid-color-success-subtle);color:var(--uid-color-success)}.uid-pattern-result--info .uid-pattern-result__icon{background:var(--uid-color-info-subtle);color:var(--uid-color-info)}.uid-pattern-result--warning .uid-pattern-result__icon{background:var(--uid-color-warning-subtle);color:var(--uid-color-warning)}.uid-pattern-result--error .uid-pattern-result__icon{background:var(--uid-color-danger-subtle);color:var(--uid-color-danger)}.uid-pattern-result__title{font-size:var(--uid-font-size-xl,22px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);margin:0;line-height:1.3}.uid-pattern-result__description{font-size:var(--uid-font-size-md);color:var(--uid-color-text-secondary);max-width:480px;margin:0;line-height:1.5}.uid-pattern-result__content{width:100%;margin-top:var(--uid-space-md);padding:var(--uid-space-md);background:var(--uid-color-bg-subtle);border-radius:var(--uid-radius-md);font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);text-align:left}.uid-pattern-result__actions{gap:var(--uid-space-sm);margin-top:var(--uid-space-sm);flex-wrap:wrap;justify-content:center;display:flex}.uid-pattern-result--compact{padding:var(--uid-space-md);gap:var(--uid-space-sm)}.uid-pattern-result--compact .uid-pattern-result__icon{width:48px;height:48px}.uid-pattern-result--compact .uid-pattern-result__title{font-size:var(--uid-font-size-lg,18px)}.uid-back-top{right:var(--uid-back-top-right,32px);bottom:var(--uid-back-top-bottom,32px);z-index:var(--uid-z-fixed,1000);border:1px solid var(--uid-color-border);background:var(--uid-color-bg);width:44px;height:44px;color:var(--uid-color-text-secondary);cursor:pointer;box-shadow:var(--uid-shadow-md);transition:color var(--uid-duration-fast) var(--uid-ease-out), background var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out);border-radius:50%;outline:none;justify-content:center;align-items:center;padding:0;display:flex;position:fixed}.uid-back-top:hover{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);border-color:var(--uid-color-primary)}.uid-back-top:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-back-top:active{transform:translateY(1px)}.uid-back-top-enter-active,.uid-back-top-leave-active{transition:opacity var(--uid-duration-base) var(--uid-ease-out), transform var(--uid-duration-base) var(--uid-ease-out)}.uid-back-top-enter-from,.uid-back-top-leave-to{opacity:0;transform:translateY(8px)}.uid-affix{position:relative}.uid-affix__sentinel{visibility:hidden;pointer-events:none;width:100%;height:1px}.uid-affix__content{z-index:var(--uid-z-affix,90);transition:box-shadow var(--uid-duration-base) var(--uid-ease-out);position:sticky}.uid-affix--top .uid-affix__content{top:var(--uid-affix-offset,0px)}.uid-affix--bottom .uid-affix__content{bottom:var(--uid-affix-offset,0px)}.uid-affix--affixed .uid-affix__content{box-shadow:var(--uid-shadow-sm)}.uid-watermark{isolation:isolate;position:relative}.uid-watermark__overlay{pointer-events:none;z-index:var(--uid-watermark-z,9);background-position:0 0;background-repeat:repeat;background-size:var(--uid-watermark-size,auto);background-image:var(--uid-watermark-image,none);position:absolute;inset:0}.uid-watermark__content{z-index:1;position:relative}.uid-anchor{border-left:2px solid var(--uid-color-border);font-size:var(--uid-font-size-sm);flex-direction:column;padding-left:0;display:flex}.uid-anchor__list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.uid-anchor__item{flex-direction:column;display:flex;position:relative}.uid-anchor__link{padding:var(--uid-space-xs) var(--uid-space-md);color:var(--uid-color-text-secondary);transition:color var(--uid-duration-fast) var(--uid-ease-out);border-left:2px solid #0000;border-radius:0;margin-left:-2px;text-decoration:none;display:block}.uid-anchor__link:hover{color:var(--uid-color-text)}.uid-anchor__link--active{color:var(--uid-color-primary);border-left-color:var(--uid-color-primary);font-weight:var(--uid-font-weight-medium)}.uid-anchor__sublist{padding:0 0 0 var(--uid-space-md);margin:0;list-style:none}.uid-anchor__sublist .uid-anchor__link{font-size:.92em}.uid-tour{z-index:var(--uid-z-modal,1500);pointer-events:none;position:fixed;inset:0}.uid-tour__mask{pointer-events:auto;background:#00000073;position:fixed;inset:0}.uid-tour__spotlight{border-radius:var(--uid-radius-md);pointer-events:none;outline:2px solid var(--uid-color-primary);outline-offset:2px;transition:top var(--uid-duration-base) var(--uid-ease-out), left var(--uid-duration-base) var(--uid-ease-out), width var(--uid-duration-base) var(--uid-ease-out), height var(--uid-duration-base) var(--uid-ease-out);position:absolute;box-shadow:0 0 0 9999px #00000073}.uid-tour__popover{background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);width:320px;box-shadow:var(--uid-shadow-lg);padding:var(--uid-space-md);pointer-events:auto;z-index:1;transition:top var(--uid-duration-base) var(--uid-ease-out), left var(--uid-duration-base) var(--uid-ease-out);position:absolute}.uid-tour__popover--center{transition:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.uid-tour__title{margin:0 0 var(--uid-space-xs) 0;font-size:var(--uid-font-size-lg,18px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text)}.uid-tour__description{margin:0 0 var(--uid-space-md) 0;font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);line-height:1.5}.uid-tour__footer{justify-content:space-between;align-items:center;gap:var(--uid-space-sm);display:flex}.uid-tour__progress{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary);font-variant-numeric:tabular-nums}.uid-tour__actions{gap:var(--uid-space-xs);display:flex}.uid-tour__btn{border:1px solid var(--uid-color-border);background:var(--uid-color-bg);color:var(--uid-color-text);font-size:var(--uid-font-size-sm);border-radius:var(--uid-radius-sm);cursor:pointer;transition:background var(--uid-duration-fast);padding:6px 12px}.uid-tour__btn:hover{background:var(--uid-color-bg-subtle)}.uid-tour__btn--primary{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);border-color:var(--uid-color-primary)}.uid-tour__btn--primary:hover{background:var(--uid-color-primary-hover);border-color:var(--uid-color-primary-hover)}.uid-tour__btn--ghost{color:var(--uid-color-text-secondary);border-color:#0000}.uid-tour__btn--ghost:hover{background:var(--uid-color-bg-subtle)}.uid-mention{gap:var(--uid-space-xs);flex-direction:column;display:flex;position:relative}.uid-mention__label{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary)}.uid-mention__field{width:100%;padding:var(--uid-space-sm) 12px;border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-md);resize:vertical;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);line-height:1.5;display:block}.uid-mention__field:focus{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle);outline:none}.uid-mention__field::placeholder{color:var(--uid-color-text-tertiary)}.uid-mention--disabled .uid-mention__field{opacity:.5;cursor:not-allowed;background:var(--uid-surface-base)}.uid-mention__dropdown{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);width:240px;max-height:240px;padding:var(--uid-space-2xs);overflow-y:auto}.uid-mention__option{align-items:center;gap:var(--uid-space-sm);width:100%;padding:var(--uid-space-sm);border-radius:var(--uid-radius-sm);text-align:left;cursor:pointer;font-size:var(--uid-font-size-md);color:var(--uid-color-text);background:0 0;border:none;display:flex}.uid-mention__option:hover,.uid-mention__option--active{background:var(--uid-color-bg-subtle)}.uid-mention__option-label{font-weight:var(--uid-font-weight-medium)}.uid-mention__option-hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary);margin-left:auto}.uid-mention__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-sm)}.uid-tree-select{gap:var(--uid-space-xs);flex-direction:column;display:flex;position:relative}.uid-tree-select__label{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary)}.uid-tree-select__required{color:var(--uid-danger)}.uid-tree-select__trigger{align-items:center;gap:var(--uid-space-sm);min-height:var(--uid-size-md);padding:0 var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);outline:none;display:flex}.uid-tree-select--open .uid-tree-select__trigger,.uid-tree-select__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-tree-select--disabled .uid-tree-select__trigger{opacity:.5;cursor:not-allowed;pointer-events:none;background:var(--uid-surface-base)}.uid-tree-select__value{align-items:center;gap:var(--uid-space-xs);padding:var(--uid-space-2xs) 0;font-size:var(--uid-font-size-md);color:var(--uid-color-text);flex-wrap:wrap;flex:1;min-width:0;display:flex}.uid-tree-select__placeholder{color:var(--uid-color-text-tertiary)}.uid-tree-select__chip{align-items:center;gap:var(--uid-space-2xs);padding:2px var(--uid-space-xs);background:var(--uid-color-primary-subtle);color:var(--uid-color-primary);border-radius:var(--uid-radius-sm);font-size:var(--uid-font-size-sm);display:inline-flex}.uid-tree-select__chip-remove{width:14px;height:14px;color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;display:flex}.uid-tree-select__chip-remove:hover{opacity:1}.uid-tree-select__suffix{align-items:center;gap:var(--uid-space-xs);color:var(--uid-color-text-secondary);flex-shrink:0;display:flex}.uid-tree-select__clear{border-radius:var(--uid-radius-sm);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.uid-tree-select__clear:hover{color:var(--uid-color-text)}.uid-tree-select__chevron{transition:transform var(--uid-duration-base)}.uid-tree-select__chevron--open{transform:rotate(180deg)}.uid-tree-select__hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0}.uid-tree-select__hint--error{color:var(--uid-danger)}.uid-tree-select--error .uid-tree-select__trigger{border-color:var(--uid-danger)}.uid-tree-select__dropdown{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);max-height:320px;padding:var(--uid-space-xs) 0;left:0;overflow-y:auto}.uid-tree-select--sm .uid-tree-select__trigger{min-height:var(--uid-size-sm);padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-tree-select--lg .uid-tree-select__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-tree-select--sm .uid-tree-select__value{font-size:var(--uid-font-size-sm)}.uid-tree-select--md .uid-tree-select__value{font-size:var(--uid-font-size-md)}.uid-tree-select--lg .uid-tree-select__value{font-size:var(--uid-font-size-lg)}.uid-notification-badge{--uid-notif-badge-size:18px;--uid-notif-badge-color:var(--uid-color-text-on-primary);--uid-notif-badge-bg:var(--uid-color-danger);--uid-notif-badge-offset-x:0px;--uid-notif-badge-offset-y:0px;display:inline-flex;position:relative}.uid-notification-badge__dot,.uid-notification-badge__count{background:var(--uid-notif-badge-bg);color:var(--uid-notif-badge-color);box-shadow:0 0 0 2px var(--uid-color-bg);pointer-events:none;font-variant-numeric:tabular-nums;border-radius:999px;justify-content:center;align-items:center;display:inline-flex;position:absolute}.uid-notification-badge__dot{width:8px;height:8px}.uid-notification-badge__count{min-width:var(--uid-notif-badge-size);height:var(--uid-notif-badge-size);font-size:11px;font-weight:var(--uid-font-weight-semibold);padding:0 6px;line-height:1}.uid-notification-badge--top-right .uid-notification-badge__dot,.uid-notification-badge--top-right .uid-notification-badge__count{top:var(--uid-notif-badge-offset-y);right:var(--uid-notif-badge-offset-x);transform:translate(50%,-50%)}.uid-notification-badge--top-left .uid-notification-badge__dot,.uid-notification-badge--top-left .uid-notification-badge__count{top:var(--uid-notif-badge-offset-y);left:var(--uid-notif-badge-offset-x);transform:translate(-50%,-50%)}.uid-notification-badge--bottom-right .uid-notification-badge__dot,.uid-notification-badge--bottom-right .uid-notification-badge__count{bottom:var(--uid-notif-badge-offset-y);right:var(--uid-notif-badge-offset-x);transform:translate(50%,50%)}.uid-notification-badge--bottom-left .uid-notification-badge__dot,.uid-notification-badge--bottom-left .uid-notification-badge__count{bottom:var(--uid-notif-badge-offset-y);left:var(--uid-notif-badge-offset-x);transform:translate(-50%,50%)}.uid-notification-badge--primary .uid-notification-badge__dot,.uid-notification-badge--primary .uid-notification-badge__count{background:var(--uid-color-primary)}.uid-notification-badge--success .uid-notification-badge__dot,.uid-notification-badge--success .uid-notification-badge__count{background:var(--uid-color-success)}.uid-notification-badge--warning .uid-notification-badge__dot,.uid-notification-badge--warning .uid-notification-badge__count{background:var(--uid-color-warning)}.uid-notification-badge--info .uid-notification-badge__dot,.uid-notification-badge--info .uid-notification-badge__count{background:var(--uid-color-info)}.uid-carousel{border-radius:var(--uid-radius-md);position:relative;overflow:hidden}.uid-carousel__track{transition:transform var(--uid-duration-slow,.4s) var(--uid-ease-in-out);will-change:transform;display:flex}.uid-carousel--no-transition .uid-carousel__track{transition:none}.uid-carousel__slide{flex:0 0 100%;min-width:0}.uid-carousel__arrow{color:#fff;cursor:pointer;z-index:2;width:36px;height:36px;transition:background var(--uid-duration-fast) var(--uid-ease-out);background:#0006;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.uid-carousel__arrow:hover{background:#0009}.uid-carousel__arrow:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-carousel__arrow:disabled{opacity:.4;cursor:not-allowed}.uid-carousel__arrow--prev{left:var(--uid-space-sm)}.uid-carousel__arrow--next{right:var(--uid-space-sm)}.uid-carousel__indicators{bottom:var(--uid-space-sm);justify-content:center;gap:var(--uid-space-xs);z-index:2;display:flex;position:absolute;left:0;right:0}.uid-carousel__indicator{cursor:pointer;width:8px;height:8px;transition:background var(--uid-duration-fast) var(--uid-ease-out), width var(--uid-duration-fast) var(--uid-ease-out);background:#ffffff80;border:none;border-radius:50%;padding:0}.uid-carousel__indicator--active{background:#fff;border-radius:4px;width:24px}.uid-carousel__indicator:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-carousel--vertical .uid-carousel__track{flex-direction:column}.uid-carousel--vertical .uid-carousel__slide{flex:0 0 100%;height:100%}.uid-carousel--vertical .uid-carousel__arrow--prev{top:var(--uid-space-sm);left:50%;transform:translate(-50%)}.uid-carousel--vertical .uid-carousel__arrow--next{top:auto;bottom:var(--uid-space-sm);left:50%;right:auto;transform:translate(-50%)}.uid-carousel--vertical .uid-carousel__indicators{top:50%;bottom:auto;right:var(--uid-space-sm);flex-direction:column;left:auto;transform:translateY(-50%)}.uid-board{gap:var(--uid-space-md);flex-direction:column;display:flex;overflow-x:auto}.uid-board--busy{opacity:.7;pointer-events:none}.uid-board__lane-title{font-weight:600;font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);padding:var(--uid-space-xs) 0}.uid-board__columns{gap:var(--uid-space-sm);grid-auto-columns:minmax(220px,1fr);grid-auto-flow:column;display:grid}.uid-board__column{background:var(--uid-board-column-bg,var(--uid-color-surface-sunken,var(--uid-color-surface-raised)));border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);flex-direction:column;min-height:120px;transition:border-color .12s,background .12s;display:flex}.uid-board__column--target{border-color:var(--uid-color-primary);background:var(--uid-color-primary-subtle,var(--uid-color-surface-raised))}.uid-board__column--blocked{opacity:.55}.uid-board__header{justify-content:space-between;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);font-size:var(--uid-font-size-sm);text-transform:uppercase;letter-spacing:.02em;color:var(--uid-color-text-secondary);font-weight:600;display:flex}.uid-board__count{font-variant-numeric:tabular-nums;font-weight:500}.uid-board__column--over .uid-board__count{color:var(--uid-color-danger);font-weight:700}.uid-board__cards{padding:0 var(--uid-space-sm) var(--uid-space-sm);gap:var(--uid-space-xs);flex-direction:column;flex:1;margin:0;list-style:none;display:flex}.uid-board__card{padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-color-surface);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm,6px);cursor:grab;outline:none}.uid-board__card:focus-visible{box-shadow:0 0 0 2px var(--uid-color-primary)}.uid-board__card--dragging{opacity:.4}.uid-board__card--drop-before{box-shadow:0 -2px 0 0 var(--uid-color-primary)}.uid-board__card-title{font-size:var(--uid-font-size-sm);color:var(--uid-color-text);overflow-wrap:anywhere}.uid-board__card-subtitle{font-size:var(--uid-font-size-xs,11px);color:var(--uid-color-text-secondary);margin-top:2px}.uid-board__card-tags{margin-top:var(--uid-space-xs);flex-wrap:wrap;gap:4px;display:flex}.uid-board__tag{font-size:var(--uid-font-size-xs,11px);border:1px solid var(--uid-color-border);color:var(--uid-color-text-secondary);border-radius:9999px;padding:0 6px}.uid-board__tag--info{color:var(--uid-color-info);border-color:currentColor}.uid-board__tag--success{color:var(--uid-color-success);border-color:currentColor}.uid-board__tag--warning{color:var(--uid-color-warning);border-color:currentColor}.uid-board__tag--danger{color:var(--uid-color-danger);border-color:currentColor}.uid-board__empty{padding:var(--uid-space-md);text-align:center;font-size:var(--uid-font-size-xs,11px);color:var(--uid-color-text-tertiary,var(--uid-color-text-secondary))}.uid-board--readonly .uid-board__card{cursor:pointer}.uid-transfer{gap:var(--uid-space-md);grid-template-columns:1fr auto 1fr;align-items:stretch;display:grid}.uid-transfer__panel{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg);flex-direction:column;min-height:280px;display:flex;overflow:hidden}.uid-transfer__header{padding:var(--uid-space-sm) 12px;border-bottom:1px solid var(--uid-color-border);background:var(--uid-color-bg-subtle);font-size:var(--uid-font-size-sm);justify-content:space-between;align-items:center;gap:var(--uid-space-sm);min-height:40px;display:flex}.uid-transfer__title{font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text);gap:var(--uid-space-xs);align-items:center;display:flex}.uid-transfer__count{color:var(--uid-color-text-tertiary);font-variant-numeric:tabular-nums}.uid-transfer__select-all{cursor:pointer;align-items:center;gap:4px;font-size:12px;display:inline-flex}.uid-transfer__search{padding:var(--uid-space-xs) 12px;border-bottom:1px solid var(--uid-color-border)}.uid-transfer__search-input{width:100%;color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-sm);background:0 0;border:none;outline:none}.uid-transfer__search-input::placeholder{color:var(--uid-color-text-tertiary)}.uid-transfer__list{flex:1;margin:0;padding:0;list-style:none;overflow-y:auto}.uid-transfer__item{align-items:center;gap:var(--uid-space-sm);cursor:pointer;font-size:var(--uid-font-size-sm);color:var(--uid-color-text);transition:background var(--uid-duration-fast) var(--uid-ease-out);padding:8px 12px;display:flex}.uid-transfer__item:hover:not(.uid-transfer__item--disabled){background:var(--uid-color-bg-subtle)}.uid-transfer__item--disabled{opacity:.5;cursor:not-allowed}.uid-transfer__check{border:1px solid var(--uid-color-border);background:var(--uid-color-bg);width:14px;height:14px;color:var(--uid-color-text-on-primary);border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-transfer__check--checked{background:var(--uid-color-primary);border-color:var(--uid-color-primary)}.uid-transfer__label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.uid-transfer__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-sm)}.uid-transfer__ops{justify-content:center;gap:var(--uid-space-sm);flex-direction:column;display:flex}.uid-transfer__op{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-bg);width:32px;height:32px;color:var(--uid-color-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast), color var(--uid-duration-fast);justify-content:center;align-items:center;display:flex}.uid-transfer__op:hover:not(:disabled){background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);border-color:var(--uid-color-primary)}.uid-transfer__op:disabled{opacity:.4;cursor:not-allowed}.uid-transfer--disabled .uid-transfer__panel,.uid-transfer--disabled .uid-transfer__op{opacity:.6;pointer-events:none}.uid-cascader{gap:var(--uid-space-xs);flex-direction:column;display:flex;position:relative}.uid-cascader__label{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary)}.uid-cascader__trigger{align-items:center;gap:var(--uid-space-sm);min-height:var(--uid-size-md);padding:var(--uid-space-xs) 12px;border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);outline:none;display:flex}.uid-cascader--open .uid-cascader__trigger,.uid-cascader__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-cascader--disabled .uid-cascader__trigger{opacity:.5;pointer-events:none;background:var(--uid-surface-base)}.uid-cascader__value{min-width:0;font-size:var(--uid-font-size-md);flex-wrap:wrap;flex:1;align-items:center;gap:4px;display:flex}.uid-cascader__placeholder{color:var(--uid-color-text-tertiary)}.uid-cascader__separator{color:var(--uid-color-text-tertiary);margin:0 2px}.uid-cascader__suffix{align-items:center;gap:var(--uid-space-xs);color:var(--uid-color-text-secondary);flex-shrink:0;display:flex}.uid-cascader__clear{cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);border-radius:var(--uid-radius-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.uid-cascader__clear:hover{color:var(--uid-color-text)}.uid-cascader__chevron{transition:transform var(--uid-duration-base)}.uid-cascader__chevron--open{transform:rotate(180deg)}.uid-cascader__dropdown{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);flex-direction:column;max-height:360px;display:flex;overflow:hidden}.uid-cascader__columns{min-height:0;display:flex}.uid-cascader__search{padding:var(--uid-space-2xs);border-bottom:1px solid var(--uid-color-border)}.uid-cascader__search-input{width:100%;min-height:var(--uid-size-sm);padding:0 var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-surface-raised);color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-sm);outline:none}.uid-cascader__search-input:focus-visible{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-cascader__results{padding:var(--uid-space-2xs);min-width:240px;max-height:300px;margin:0;list-style:none;overflow-y:auto}.uid-cascader__result{padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-sm);cursor:pointer;font-size:var(--uid-font-size-md);color:var(--uid-color-text);flex-wrap:wrap;align-items:center;gap:2px;display:flex}.uid-cascader__result--active{background:var(--uid-color-bg-subtle)}.uid-cascader__highlight{color:var(--uid-color-primary);font-weight:var(--uid-font-weight-medium);background:0 0}.uid-cascader__empty{padding:var(--uid-space-sm) 12px;font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary)}.uid-cascader__column{min-width:160px;max-height:320px;padding:var(--uid-space-2xs);flex-direction:column;display:flex;overflow-y:auto}.uid-cascader__column+.uid-cascader__column{border-left:1px solid var(--uid-color-border)}.uid-cascader__option{align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-sm);text-align:left;cursor:pointer;font-size:var(--uid-font-size-md);color:var(--uid-color-text);white-space:nowrap;background:0 0;border:none;width:100%;display:flex}.uid-cascader__option:hover{background:var(--uid-color-bg-subtle)}.uid-cascader__option--active{background:var(--uid-color-primary-subtle);color:var(--uid-color-primary)}.uid-cascader__option--selected{font-weight:var(--uid-font-weight-medium)}.uid-cascader__option:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-cascader__option--disabled{opacity:.4;cursor:not-allowed}.uid-cascader__option-label{text-overflow:ellipsis;flex:1;overflow:hidden}.uid-cascader__option-arrow{color:var(--uid-color-text-tertiary)}.uid-cascader__hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0}.uid-cascader--sm .uid-cascader__trigger{min-height:var(--uid-size-sm);padding-block:0;padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-cascader--lg .uid-cascader__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-cascader--sm .uid-cascader__value{font-size:var(--uid-font-size-sm)}.uid-cascader--md .uid-cascader__value{font-size:var(--uid-font-size-md)}.uid-cascader--lg .uid-cascader__value{font-size:var(--uid-font-size-lg)}.uid-calendar{--uid-cal-cell-min-h:88px;background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);flex-direction:column;width:100%;display:flex;overflow:hidden}.uid-calendar__header{padding:var(--uid-space-sm) var(--uid-space-md);border-bottom:1px solid var(--uid-color-border);background:var(--uid-color-bg-subtle);justify-content:space-between;align-items:center;display:flex}.uid-calendar__title{font-size:var(--uid-font-size-lg,16px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text)}.uid-calendar__nav{gap:var(--uid-space-xs);display:flex}.uid-calendar__header{gap:var(--uid-space-sm);flex-wrap:wrap}.uid-calendar__tools{align-items:center;gap:var(--uid-space-sm);flex-wrap:wrap;display:flex}.uid-calendar__views{display:flex}.uid-calendar__view{border-radius:0;margin-left:-1px}.uid-calendar__view:first-child{border-radius:var(--uid-radius-sm) 0 0 var(--uid-radius-sm);margin-left:0}.uid-calendar__view:last-child{border-radius:0 var(--uid-radius-sm) var(--uid-radius-sm) 0}.uid-calendar__view--active,.uid-calendar__view--active:hover{background:var(--uid-color-primary-subtle);border-color:var(--uid-color-primary);color:var(--uid-color-primary);position:relative}.uid-calendar__btn:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px;position:relative}.uid-calendar__btn{height:28px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-bg);color:var(--uid-color-text);font-size:var(--uid-font-size-sm);cursor:pointer;transition:background var(--uid-duration-fast);justify-content:center;align-items:center;display:flex}.uid-calendar__btn:hover{background:var(--uid-color-bg-subtle)}.uid-calendar__btn--icon{width:28px;padding:0}.uid-calendar__weekdays{background:var(--uid-color-bg-subtle);border-bottom:1px solid var(--uid-color-border);grid-template-columns:repeat(7,1fr);display:grid}.uid-calendar__weekday{padding:var(--uid-space-sm);font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text-tertiary);text-align:center;text-transform:uppercase;letter-spacing:.06em}.uid-calendar__grid{grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(var(--uid-cal-cell-min-h), 1fr);display:grid}.uid-calendar__day{border-right:1px solid var(--uid-color-border);border-bottom:1px solid var(--uid-color-border);cursor:pointer;background:var(--uid-color-bg);transition:background var(--uid-duration-fast) var(--uid-ease-out);flex-direction:column;gap:4px;padding:4px 6px;display:flex;position:relative;overflow:hidden}.uid-calendar__day:hover{background:var(--uid-color-bg-subtle)}.uid-calendar__day:nth-child(7n){border-right:none}.uid-calendar__grid>.uid-calendar__day:nth-last-child(-n+7){border-bottom:none}.uid-calendar__day--other{background:var(--uid-color-bg-subtle)}.uid-calendar__day--other .uid-calendar__date{color:var(--uid-color-text-tertiary)}.uid-calendar__day--today .uid-calendar__date{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary)}.uid-calendar__day--selected{background:var(--uid-color-primary-subtle)}.uid-calendar__day--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.uid-calendar__day:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-calendar__date{min-width:22px;height:22px;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);font-variant-numeric:tabular-nums;color:var(--uid-color-text);border-radius:11px;justify-content:center;align-self:flex-end;align-items:center;padding:0 4px;display:inline-flex}.uid-calendar__events{flex-direction:column;gap:2px;display:flex;overflow:hidden}.uid-calendar__event{background:var(--uid-event-color,var(--uid-color-primary));color:var(--uid-color-text-on-primary);border-radius:var(--uid-radius-sm);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;text-align:left;border:none;align-items:center;gap:4px;width:100%;padding:2px 6px;font-size:11px;display:flex;overflow:hidden}.uid-calendar__event:hover{filter:brightness(.9)}.uid-calendar__more{color:var(--uid-color-text-secondary);text-align:left;cursor:pointer;background:0 0;border:none;padding:0 6px;font-size:11px}.uid-calendar__more:hover{color:var(--uid-color-text);text-decoration:underline}.uid-calendar__event-label{text-overflow:ellipsis;overflow:hidden}.uid-calendar__event-time{font-variant-numeric:tabular-nums;opacity:.85;flex:none}.uid-calendar__event--timed{color:var(--uid-color-text);background:0 0}.uid-calendar__event--timed:before{content:"";background:var(--uid-event-color,var(--uid-color-primary));border-radius:50%;flex:none;width:6px;height:6px}.uid-calendar__event--timed:hover{filter:none;background:var(--uid-color-bg-subtle)}.uid-calendar__event--from-prev{border-top-left-radius:0;border-bottom-left-radius:0;width:calc(100% + 7px);margin-left:-7px}.uid-calendar__event--to-next{border-top-right-radius:0;border-bottom-right-radius:0;width:calc(100% + 7px);margin-right:-7px}.uid-calendar__event--from-prev.uid-calendar__event--to-next{width:calc(100% + 14px)}:is(.uid-calendar__day:has(.uid-calendar__event--to-next),.uid-calendar__allday-cell:has(.uid-calendar__event--to-next)){overflow:visible}.uid-calendar__event--draggable{touch-action:none}.uid-calendar__event--dragging,.uid-calendar__block--dragging{opacity:.75;z-index:3;box-shadow:0 4px 12px #0000002e}.uid-calendar__event:focus-visible,.uid-calendar__block:focus-visible,.uid-calendar__agenda-item:focus-visible,.uid-calendar__mini-day:focus-visible,.uid-calendar__mini-title:focus-visible,.uid-calendar__tg-day:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px}.uid-calendar__tg{--uid-cal-gutter-w:52px;flex-direction:column;min-height:0;display:flex}.uid-calendar__tg-head,.uid-calendar__allday,.uid-calendar__tg-inner{grid-template-columns:var(--uid-cal-gutter-w) repeat(var(--uid-cal-days,7), minmax(0, 1fr));display:grid}.uid-calendar--day .uid-calendar__tg{--uid-cal-days:1}.uid-calendar__tg-head{background:var(--uid-color-bg-subtle);border-bottom:1px solid var(--uid-color-border)}.uid-calendar__tg-day{border:none;border-left:1px solid var(--uid-color-border);color:var(--uid-color-text);cursor:pointer;background:0 0;flex-direction:column;align-items:center;gap:2px;padding:6px 0;display:flex}.uid-calendar__tg-weekday{font-size:var(--uid-font-size-xs);color:var(--uid-color-text-tertiary);text-transform:uppercase;letter-spacing:.06em}.uid-calendar__tg-date{min-width:28px;height:28px;font-size:var(--uid-font-size-lg,16px);font-weight:var(--uid-font-weight-medium);font-variant-numeric:tabular-nums;border-radius:14px;justify-content:center;align-items:center;display:inline-flex}.uid-calendar__tg-day--today .uid-calendar__tg-date{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary)}.uid-calendar__allday{border-bottom:1px solid var(--uid-color-border);min-height:28px}.uid-calendar__gutter-label{color:var(--uid-color-text-tertiary);justify-content:flex-end;align-items:center;padding-right:6px;font-size:10px;display:flex}.uid-calendar__allday-cell{border-left:1px solid var(--uid-color-border);flex-direction:column;gap:2px;min-width:0;padding:3px 6px;display:flex}.uid-calendar__tg-body{max-height:var(--uid-cal-grid-h,560px);overflow-y:auto}.uid-calendar__tg-inner{height:calc(24 * var(--uid-cal-hour-h,48px));margin-top:8px;position:relative}.uid-calendar__hours{position:relative}.uid-calendar__hour{height:var(--uid-cal-hour-h,48px);font-variant-numeric:tabular-nums;text-align:right;color:var(--uid-color-text-tertiary);padding-right:6px;font-size:10px;display:block;transform:translateY(-6px)}.uid-calendar__col{border-left:1px solid var(--uid-color-border);background-image:linear-gradient(to bottom, var(--uid-color-border) 1px, transparent 1px);background-size:100% var(--uid-cal-hour-h,48px);position:relative}.uid-calendar--editable .uid-calendar__col{cursor:cell}.uid-calendar__col--today{background-color:color-mix(in srgb, var(--uid-color-primary) 4%, transparent)}.uid-calendar__now{z-index:2;background:var(--uid-color-danger,#dc2626);pointer-events:none;height:2px;position:absolute;left:0;right:0}.uid-calendar__now:before{content:"";background:inherit;border-radius:50%;width:8px;height:8px;position:absolute;top:-3px;left:-4px}.uid-calendar__block{z-index:1;border-radius:var(--uid-radius-sm);border-left:3px solid var(--uid-event-color,var(--uid-color-primary));background:color-mix(in srgb, var(--uid-event-color,var(--uid-color-primary)) 18%, var(--uid-color-bg));color:var(--uid-color-text);cursor:pointer;box-sizing:border-box;flex-direction:column;gap:1px;padding:2px 6px;font-size:11px;line-height:1.3;display:flex;position:absolute;overflow:hidden}.uid-calendar--editable .uid-calendar__block{touch-action:none}.uid-calendar__block-time{font-variant-numeric:tabular-nums;color:var(--uid-color-text-secondary)}.uid-calendar__block-title{font-weight:var(--uid-font-weight-medium);text-overflow:ellipsis;overflow:hidden}.uid-calendar__block--short{white-space:nowrap;flex-direction:row;align-items:center;gap:4px}.uid-calendar__resize{cursor:ns-resize;height:6px;position:absolute;bottom:0;left:0;right:0}.uid-calendar__year{gap:var(--uid-space-md);padding:var(--uid-space-md);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.uid-calendar__mini-title{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);cursor:pointer;border-radius:var(--uid-radius-sm);background:0 0;border:none;margin-bottom:4px;padding:2px 4px;display:block}.uid-calendar__mini-title:hover{background:var(--uid-color-bg-subtle)}.uid-calendar__mini-grid{grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.uid-calendar__mini-wd{text-align:center;color:var(--uid-color-text-tertiary);font-size:10px}.uid-calendar__mini-day{font-variant-numeric:tabular-nums;width:24px;height:24px;color:var(--uid-color-text);cursor:pointer;background:0 0;border:none;border-radius:12px;justify-self:center;padding:0;font-size:11px;position:relative}.uid-calendar__mini-day:hover:not(:disabled){background:var(--uid-color-bg-subtle)}.uid-calendar__mini-day--other{visibility:hidden}.uid-calendar__mini-day--busy{font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-primary)}.uid-calendar__mini-day--busy:after{content:"";background:var(--uid-color-primary);border-radius:50%;width:4px;height:4px;margin-left:-2px;position:absolute;bottom:2px;left:50%}.uid-calendar__mini-day--today{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary)}.uid-calendar__mini-day--today.uid-calendar__mini-day--busy:after{background:var(--uid-color-text-on-primary)}.uid-calendar__agenda{padding:var(--uid-space-sm) 0;flex-direction:column;display:flex}.uid-calendar__empty{padding:var(--uid-space-lg) var(--uid-space-md);text-align:center;color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-sm);margin:0}.uid-calendar__agenda-day{padding:var(--uid-space-xs) var(--uid-space-md);flex-direction:column;display:flex}.uid-calendar__agenda-day+.uid-calendar__agenda-day{border-top:1px solid var(--uid-color-border)}.uid-calendar__agenda-date{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);margin:4px 0}.uid-calendar__agenda-day--today .uid-calendar__agenda-date{color:var(--uid-color-primary)}.uid-calendar__agenda-item{align-items:center;gap:var(--uid-space-sm);border-radius:var(--uid-radius-sm);color:var(--uid-color-text);font-size:var(--uid-font-size-sm);text-align:left;cursor:pointer;background:0 0;border:none;grid-template-columns:96px 10px 1fr;padding:6px 4px;display:grid}.uid-calendar__agenda-item:hover{background:var(--uid-color-bg-subtle)}.uid-calendar__agenda-time{font-variant-numeric:tabular-nums;color:var(--uid-color-text-secondary)}.uid-calendar__agenda-dot{background:var(--uid-event-color,var(--uid-color-primary));border-radius:50%;width:8px;height:8px}.uid-calendar--compact{--uid-cal-cell-min-h:40px}.uid-calendar--compact .uid-calendar__day{padding:4px}.uid-calendar--compact .uid-calendar__events{flex-flow:wrap;gap:2px;display:flex}.uid-calendar--compact .uid-calendar__event{border-radius:50%;width:6px;height:6px;padding:0;overflow:visible}.uid-calendar--compact .uid-calendar__event-label,.uid-calendar--compact .uid-calendar__more{display:none}.uid-sparkline{--uid-sparkline-color:var(--uid-color-primary);--uid-sparkline-area-opacity:.15;vertical-align:middle;line-height:0;display:inline-block}.uid-sparkline__svg{display:block;overflow:visible}.uid-sparkline__line{fill:none;stroke:var(--uid-sparkline-color);stroke-width:var(--uid-sparkline-stroke,1.5);stroke-linejoin:round;stroke-linecap:round}.uid-sparkline__area{fill:var(--uid-sparkline-color);fill-opacity:var(--uid-sparkline-area-opacity);stroke:none}.uid-sparkline__bar{fill:var(--uid-sparkline-color);rx:1}.uid-sparkline__bar--negative{fill:var(--uid-color-danger)}.uid-sparkline__dot{fill:var(--uid-color-bg);stroke:var(--uid-sparkline-color);stroke-width:2px}.uid-sparkline__dot--last{fill:var(--uid-sparkline-color)}.uid-sparkline__zero{stroke:var(--uid-color-border);stroke-width:1px;stroke-dasharray:2 2}.uid-progress-ring{--uid-ring-color:var(--uid-color-primary);--uid-ring-track:var(--uid-color-bg-subtle);justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}.uid-progress-ring__svg{display:block;transform:rotate(-90deg)}.uid-progress-ring__track{fill:none;stroke:var(--uid-ring-track)}.uid-progress-ring__progress{fill:none;stroke:var(--uid-ring-color);stroke-linecap:round;transition:stroke-dashoffset var(--uid-duration-base) var(--uid-ease-in-out)}.uid-progress-ring__indeterminate .uid-progress-ring__progress{animation:1s linear infinite uid-ring-spin}@keyframes uid-ring-spin{to{stroke-dashoffset:-1000px}}.uid-progress-ring__label{font-size:var(--uid-ring-label-size,14px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);font-variant-numeric:tabular-nums;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.uid-progress-ring--success{--uid-ring-color:var(--uid-color-success)}.uid-progress-ring--warning{--uid-ring-color:var(--uid-color-warning)}.uid-progress-ring--danger{--uid-ring-color:var(--uid-color-danger)}.uid-progress-ring--info{--uid-ring-color:var(--uid-color-info)}.uid-gauge{--uid-gauge-color:var(--uid-color-primary);--uid-gauge-track:var(--uid-color-bg-subtle);flex-direction:column;align-items:center;line-height:1;display:inline-flex;position:relative}.uid-gauge__svg{display:block;overflow:visible}.uid-gauge__track{fill:none;stroke:var(--uid-gauge-track);stroke-linecap:round}.uid-gauge__progress{fill:none;stroke:var(--uid-gauge-color);stroke-linecap:round;transition:stroke-dashoffset var(--uid-duration-base) var(--uid-ease-in-out)}.uid-gauge__range{fill:none;stroke-linecap:butt}.uid-gauge--ranged .uid-gauge__track{stroke-linecap:butt}.uid-gauge__needle{stroke:var(--uid-color-text);stroke-width:2px;stroke-linecap:round;transition:transform var(--uid-duration-base) var(--uid-ease-in-out)}.uid-gauge__needle-pivot{fill:var(--uid-color-text)}.uid-gauge__content{text-align:center;pointer-events:none;position:absolute;bottom:8%;left:0;right:0}.uid-gauge__value{font-size:var(--uid-gauge-value-size,22px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);font-variant-numeric:tabular-nums;align-items:baseline;gap:2px;display:inline-flex}.uid-gauge__suffix{font-size:.6em;font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text-tertiary)}.uid-gauge__label{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary);margin-top:2px}.uid-gauge__limits{width:100%;font-size:var(--uid-font-size-xs);color:var(--uid-color-text-tertiary);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:2px;display:flex}.uid-gauge--success{--uid-gauge-color:var(--uid-color-success)}.uid-gauge--warning{--uid-gauge-color:var(--uid-color-warning)}.uid-gauge--danger{--uid-gauge-color:var(--uid-color-danger)}.uid-gauge--info{--uid-gauge-color:var(--uid-color-info)}.uid-heatmap{--uid-heatmap-color:var(--uid-color-primary);--uid-heatmap-empty:var(--uid-color-bg-subtle);--uid-heatmap-cell:12px;--uid-heatmap-gap:3px;gap:var(--uid-space-xs);font-size:var(--uid-font-size-xs);color:var(--uid-color-text-tertiary);flex-direction:column;display:flex}.uid-heatmap__chart{gap:var(--uid-space-xs);align-items:flex-start;display:flex}.uid-heatmap__weekdays{grid-template-rows:repeat(7, var(--uid-heatmap-cell));gap:var(--uid-heatmap-gap);flex-shrink:0;margin-top:16px;font-size:10px;display:grid}.uid-heatmap__weekday{height:var(--uid-heatmap-cell);visibility:hidden;align-items:center;display:flex}.uid-heatmap__weekday--visible{visibility:visible}.uid-heatmap__grid-wrapper{flex-direction:column;gap:2px;display:flex}.uid-heatmap__months{height:14px;font-size:10px;display:flex;position:relative}.uid-heatmap__month{white-space:nowrap;position:absolute}.uid-heatmap__svg{display:block}.uid-heatmap__cell{fill:var(--uid-heatmap-empty);rx:2;ry:2;cursor:default;transition:fill var(--uid-duration-fast) var(--uid-ease-out)}.uid-heatmap__cell:hover{stroke:var(--uid-color-text);stroke-width:1px}.uid-heatmap__legend{align-items:center;gap:4px;margin-left:auto;font-size:10px;display:flex}.uid-heatmap__legend-cell{width:var(--uid-heatmap-cell);height:var(--uid-heatmap-cell);background:var(--uid-heatmap-empty);border-radius:2px}.uid-heatmap-matrix{--uid-heatmap-matrix-color:var(--uid-color-primary);--uid-heatmap-matrix-empty-border:var(--uid-color-border);--uid-heatmap-matrix-cols:1;--uid-heatmap-matrix-cell-height:20px;--uid-heatmap-matrix-min-cell:10px;--uid-heatmap-matrix-gap:2px;--uid-heatmap-matrix-header-height:19px;--uid-heatmap-matrix-radius:2px;gap:var(--uid-space-sm);min-width:0;color:var(--uid-color-text-secondary);flex-direction:column;font-size:11px;display:flex;position:relative}.uid-heatmap-matrix__scroll{min-width:0;padding:2px;overflow-x:auto}.uid-heatmap-matrix__grid{grid-template-columns:max-content repeat(var(--uid-heatmap-matrix-cols), minmax(var(--uid-heatmap-matrix-min-cell), 1fr));gap:var(--uid-heatmap-matrix-gap);align-items:center;display:grid}.uid-heatmap-matrix__row{display:contents}.uid-heatmap-matrix__corner,.uid-heatmap-matrix__col-header{height:var(--uid-heatmap-matrix-header-height);position:relative}.uid-heatmap-matrix__col-label{white-space:nowrap;text-overflow:ellipsis;max-width:96px;color:var(--uid-color-text-secondary);line-height:14px;position:absolute;bottom:2px;left:50%;overflow:hidden;transform:translate(-50%)}.uid-heatmap-matrix--labels-rotated .uid-heatmap-matrix__col-label{transform-origin:0 100%;bottom:2px;transform:rotate(-45deg)}.uid-heatmap-matrix__col-label--hidden{visibility:hidden}.uid-heatmap-matrix__row-header{white-space:nowrap;text-align:end;text-overflow:ellipsis;max-width:12em;padding-inline-end:var(--uid-space-xs);line-height:14px;overflow:hidden}.uid-heatmap-matrix__cell{height:var(--uid-heatmap-matrix-cell-height);border-radius:var(--uid-heatmap-matrix-radius);cursor:default;transition:box-shadow var(--uid-duration-fast) var(--uid-ease-out);outline:none}.uid-heatmap-matrix__cell--empty{box-shadow:inset 0 0 0 1px var(--uid-heatmap-matrix-empty-border);background:0 0}.uid-heatmap-matrix__cell--active{box-shadow:0 0 0 1.5px var(--uid-color-text)}.uid-heatmap-matrix__cell:focus-visible{box-shadow:0 0 0 2px var(--uid-color-focus-ring)}.uid-heatmap-matrix__tooltip{z-index:var(--uid-z-tooltip);max-width:var(--uid-tooltip-max-width,240px);padding:var(--uid-space-xs) var(--uid-space-sm);background:var(--uid-tooltip-bg,var(--uid-color-zinc-900));color:var(--uid-tooltip-color,var(--uid-color-zinc-50));font-size:var(--uid-font-size-xs);white-space:nowrap;border-radius:var(--uid-tooltip-radius,var(--uid-radius-sm));box-shadow:var(--uid-shadow-md);pointer-events:none;flex-direction:column;gap:2px;line-height:1.35;display:flex;position:absolute;transform:translate(-50%,calc(-100% - 6px))}.uid-heatmap-matrix__tooltip-label{opacity:.8}.uid-heatmap-matrix__tooltip-value{font-weight:var(--uid-font-weight-semibold,600);font-variant-numeric:tabular-nums}.uid-heatmap-matrix__legend{justify-content:flex-end;align-items:center;gap:var(--uid-space-xs) var(--uid-space-sm);color:var(--uid-color-text-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.uid-heatmap-matrix__legend-bar{border-radius:4px;width:120px;max-width:40%;height:8px}.uid-heatmap-matrix__legend-empty{align-items:center;gap:var(--uid-space-xs);margin-inline-start:var(--uid-space-xs);display:inline-flex}.uid-heatmap-matrix__legend-swatch{border-radius:var(--uid-heatmap-matrix-radius);width:10px;height:10px;box-shadow:inset 0 0 0 1px var(--uid-heatmap-matrix-empty-border)}.uid-stepper{align-items:flex-start;margin:0;padding:0;list-style:none;display:flex}.uid-stepper__step{flex-direction:column;flex:1;align-items:center;display:flex;position:relative}.uid-stepper:not(.uid-stepper--vertical) .uid-stepper__step:not(:last-child):after{content:"";top:calc(var(--uid-stepper-indicator-size,32px) / 2);left:calc(50% + var(--uid-stepper-indicator-size,32px) / 2);width:calc(100% - var(--uid-stepper-indicator-size,32px));background:var(--uid-stepper-connector,var(--uid-color-border));height:2px;transition:background var(--uid-duration-base);position:absolute}.uid-stepper:not(.uid-stepper--vertical) .uid-stepper__step--completed:not(:last-child):after{background:var(--uid-stepper-connector-completed,var(--uid-color-primary))}.uid-stepper__indicator{width:var(--uid-stepper-indicator-size,32px);height:var(--uid-stepper-indicator-size,32px);z-index:1;background:var(--uid-stepper-indicator-bg,var(--uid-color-bg-subtle));border:2px solid var(--uid-stepper-indicator-border,var(--uid-color-border));color:var(--uid-stepper-indicator-color,var(--uid-color-text-secondary));transition:background var(--uid-duration-base), border-color var(--uid-duration-base), color var(--uid-duration-base);border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex}.uid-stepper__step--current .uid-stepper__indicator{background:var(--uid-stepper-indicator-bg-current,var(--uid-color-primary));border-color:var(--uid-stepper-indicator-border-current,var(--uid-color-primary));color:var(--uid-stepper-indicator-color-current,var(--uid-color-text-on-primary))}.uid-stepper__step--completed .uid-stepper__indicator{background:var(--uid-stepper-indicator-bg-completed,var(--uid-color-primary));border-color:var(--uid-stepper-indicator-border-completed,var(--uid-color-primary));color:var(--uid-stepper-indicator-color-completed,var(--uid-color-text-on-primary))}.uid-stepper__content{margin-top:var(--uid-space-sm);text-align:center;flex-direction:column;gap:2px;display:flex}.uid-stepper__label{font-size:var(--uid-font-size-sm,14px);color:var(--uid-stepper-label-color,var(--uid-color-text));transition:color var(--uid-duration-base);font-weight:500}.uid-stepper__step--pending .uid-stepper__label{color:var(--uid-stepper-label-color-pending,var(--uid-color-text-secondary))}.uid-stepper__description{font-size:var(--uid-font-size-xs,12px);color:var(--uid-stepper-desc-color,var(--uid-color-text-tertiary))}.uid-stepper--vertical{flex-direction:column}.uid-stepper--vertical .uid-stepper__step{padding-bottom:var(--uid-space-lg);flex-direction:row;flex:none;align-items:flex-start;gap:12px}.uid-stepper--vertical .uid-stepper__step:last-child{padding-bottom:0}.uid-stepper--vertical .uid-stepper__step:not(:last-child):after{content:"";top:var(--uid-stepper-indicator-size,32px);left:calc(var(--uid-stepper-indicator-size,32px) / 2 - 1px);width:2px;height:calc(100% - var(--uid-stepper-indicator-size,32px));background:var(--uid-stepper-connector,var(--uid-color-border));transition:background var(--uid-duration-base);position:absolute}.uid-stepper--vertical .uid-stepper__step--completed:not(:last-child):after{background:var(--uid-stepper-connector-completed,var(--uid-color-primary))}.uid-stepper--vertical .uid-stepper__content{text-align:left;margin-top:4px}.uid-stepper__target{display:contents}.uid-stepper__target--selectable{flex-direction:inherit;align-items:inherit;gap:inherit;font:inherit;color:inherit;text-align:inherit;cursor:pointer;border-radius:var(--uid-radius-md);background:0 0;border:0;padding:0;display:flex}.uid-stepper__target--selectable:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-stack{display:flex}.uid-stack--inline{display:inline-flex}.uid-grid{display:grid}.uid-container{width:100%;margin-inline:auto}.uid-container--sm{max-width:var(--uid-container-sm,640px)}.uid-container--md{max-width:var(--uid-container-md,768px)}.uid-container--lg{max-width:var(--uid-container-lg,1024px)}.uid-container--xl{max-width:var(--uid-container-xl,1280px)}.uid-container--2xl{max-width:var(--uid-container-2xl,1536px)}.uid-container--full{max-width:100%}.uid-container--padded{padding-inline:var(--uid-container-padding-x,var(--uid-space-md))}.uid-wizard{gap:var(--uid-wizard-gap,var(--uid-space-lg));flex-direction:column;display:flex}.uid-wizard-step{flex:1}.uid-pattern-header{--uid-header-height:64px;--uid-header-bg:var(--uid-color-surface);--uid-header-border:var(--uid-color-border);--uid-header-z:var(--uid-z-sticky);background:var(--uid-header-bg);height:var(--uid-header-height);z-index:var(--uid-header-z)}.uid-pattern-header--sticky{position:sticky;top:0}.uid-pattern-header--bordered{border-bottom:1px solid var(--uid-header-border)}.uid-pattern-header--transparent{background:0 0}.uid-pattern-header__inner{height:100%;padding:0 var(--uid-space-lg);align-items:center;gap:var(--uid-space-lg);max-width:var(--uid-container-xl,1280px);margin-inline:auto;display:flex}.uid-pattern-header__logo{flex-shrink:0;align-items:center;display:flex}.uid-pattern-header__nav{align-items:center;gap:var(--uid-space-xs);flex:1;display:flex}.uid-pattern-header__actions{align-items:center;gap:var(--uid-space-sm);flex-shrink:0;display:flex}.uid-pattern-header__mobile{display:none}@media (max-width:768px){.uid-pattern-header__nav{display:none}.uid-pattern-header__mobile{align-items:center;margin-left:auto;display:flex}}.uid-pattern-footer{background:var(--uid-footer-bg,var(--uid-color-surface));border-top:1px solid var(--uid-color-border);color:var(--uid-color-text-secondary);font-size:var(--uid-font-size-sm)}.uid-pattern-footer__inner{max-width:var(--uid-container-xl,1280px);padding:var(--uid-space-lg);margin-inline:auto}.uid-pattern-footer--minimal .uid-pattern-footer__content{justify-content:center;align-items:center;gap:var(--uid-space-md);flex-wrap:wrap;display:flex}.uid-pattern-footer--columns .uid-pattern-footer__columns{gap:var(--uid-space-xl);padding-bottom:var(--uid-space-lg);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.uid-pattern-footer__bottom{padding-top:var(--uid-space-md);border-top:1px solid var(--uid-color-border);color:var(--uid-color-text-disabled);font-size:var(--uid-font-size-xs,12px);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.uid-pattern-sidebar{--uid-sidebar-width:240px;--uid-sidebar-collapsed-width:56px;width:var(--uid-sidebar-width);background:var(--uid-sidebar-bg,var(--uid-color-bg-subtle));border-color:var(--uid-color-border);transition:width var(--uid-duration-base) var(--uid-ease-in-out);border-style:solid;border-width:0;flex-direction:column;display:flex;overflow:hidden}.uid-pattern-sidebar--left{border-right-width:1px}.uid-pattern-sidebar--right{border-left-width:1px}.uid-pattern-sidebar--collapsed{width:var(--uid-sidebar-collapsed-width)}.uid-pattern-sidebar--collapsed .uid-sidebar-item__label,.uid-pattern-sidebar--collapsed .uid-sidebar-item__badge,.uid-pattern-sidebar--collapsed .uid-sidebar-group__title{display:none}.uid-pattern-sidebar__header{padding:var(--uid-space-md);border-bottom:1px solid var(--uid-color-border);flex-shrink:0}.uid-pattern-sidebar__nav{padding:var(--uid-space-sm) 0;flex:1;overflow-y:auto}.uid-pattern-sidebar__footer{padding:12px var(--uid-space-sm);border-top:1px solid var(--uid-color-border);flex-shrink:0}.uid-sidebar-item{padding:var(--uid-space-sm) 12px;margin:1px var(--uid-space-sm);border-radius:var(--uid-radius-sm);color:var(--uid-sidebar-item-color,var(--uid-color-text-secondary));font-size:var(--uid-font-size-sm);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);align-items:center;gap:12px;font-weight:500;text-decoration:none;display:flex}.uid-sidebar-item:hover:not(.uid-sidebar-item--disabled){background:var(--uid-color-surface-hover);color:var(--uid-color-text-primary)}.uid-sidebar-item--active{background:var(--uid-sidebar-item-bg-active,var(--uid-color-primary-subtle,color-mix(in srgb, var(--uid-color-primary) 10%, transparent)));color:var(--uid-sidebar-item-color-active,var(--uid-color-primary))}.uid-sidebar-item--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.uid-sidebar-item:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-sidebar-item__icon{flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.uid-sidebar-item__label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.uid-sidebar-item__badge{min-width:18px;height:18px;padding:0 var(--uid-space-xs);background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex}.uid-sidebar-group{padding:var(--uid-space-xs) 0}.uid-sidebar-group__title{padding:var(--uid-space-sm) 20px;text-transform:uppercase;letter-spacing:.06em;color:var(--uid-color-text-disabled);margin:0;font-size:11px;font-weight:600}.uid-sidebar-divider{height:1px;margin:var(--uid-space-sm) 12px;background:var(--uid-color-border)}.uid-pattern-page-header{padding:var(--uid-space-lg) 0 0}.uid-pattern-page-header__breadcrumb{margin-bottom:12px}.uid-pattern-page-header__row{justify-content:space-between;align-items:flex-start;gap:var(--uid-space-md);flex-wrap:wrap;display:flex}.uid-pattern-page-header__heading{align-items:flex-start;gap:12px;display:flex}.uid-pattern-page-header__back{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);width:36px;height:36px;color:var(--uid-color-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);background:0 0;flex-shrink:0;justify-content:center;align-items:center;margin-top:2px;display:flex}.uid-pattern-page-header__back:hover{background:var(--uid-color-surface-hover);color:var(--uid-color-text-primary)}.uid-pattern-page-header__back:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-pattern-page-header__title{font-size:var(--uid-font-size-2xl,24px);color:var(--uid-color-text-primary);margin:0;font-weight:700;line-height:1.2}.uid-pattern-page-header__description{margin:var(--uid-space-xs) 0 0;font-size:var(--uid-font-size-base);color:var(--uid-color-text-secondary);line-height:1.5}.uid-pattern-page-header__actions{align-items:center;gap:var(--uid-space-sm);flex-shrink:0;display:flex}.uid-pattern-page-header__tabs{margin-top:var(--uid-space-md)}.uid-pattern-empty-state{justify-content:center;align-items:center;gap:var(--uid-space-md);padding:var(--uid-space-2xl) var(--uid-space-lg);text-align:center;flex-direction:column;display:flex}.uid-pattern-empty-state__illustration{color:var(--uid-color-text-disabled);justify-content:center;align-items:center;display:flex}.uid-pattern-empty-state__content{gap:var(--uid-space-sm);flex-direction:column;max-width:360px;display:flex}.uid-pattern-empty-state__title{font-size:var(--uid-font-size-lg);color:var(--uid-color-text-primary);margin:0;font-weight:600}.uid-pattern-empty-state__description{font-size:var(--uid-font-size-base);color:var(--uid-color-text-secondary);margin:0;line-height:1.5}.uid-pattern-empty-state__actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.uid-pattern-error-state{justify-content:center;align-items:center;gap:var(--uid-space-md);padding:var(--uid-space-2xl) var(--uid-space-lg);text-align:center;flex-direction:column;display:flex}.uid-pattern-error-state__illustration{color:var(--uid-color-danger);opacity:.8;justify-content:center;align-items:center;display:flex}.uid-pattern-error-state__code{color:var(--uid-color-text-disabled);letter-spacing:-2px;font-variant-numeric:tabular-nums;font-size:64px;font-weight:800;line-height:1}.uid-pattern-error-state__content{gap:var(--uid-space-sm);flex-direction:column;max-width:400px;display:flex}.uid-pattern-error-state__title{font-size:var(--uid-font-size-xl,20px);color:var(--uid-color-text-primary);margin:0;font-weight:700}.uid-pattern-error-state__description{font-size:var(--uid-font-size-base);color:var(--uid-color-text-secondary);margin:0;line-height:1.5}.uid-pattern-error-state__actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.uid-layout-simple{min-height:var(--uid-layout-simple-min-height,100vh);flex-direction:column;display:flex}.uid-layout-simple--full{height:100vh;overflow:hidden}.uid-layout-simple__header{flex-shrink:0}.uid-layout-simple__content{flex:1;width:100%}.uid-layout-simple--full .uid-layout-simple__content{overflow-y:auto}.uid-layout-simple__footer{flex-shrink:0}.uid-layout-sidebar{min-height:var(--uid-layout-sidebar-min-height,100vh);display:flex;position:relative}.uid-layout-sidebar__sidebar{width:var(--uid-layout-sidebar-width,240px);transition:width var(--uid-duration-base) var(--uid-ease-in-out);flex-shrink:0;overflow:hidden}.uid-layout-sidebar--collapsed .uid-layout-sidebar__sidebar{width:var(--uid-layout-sidebar-collapsed-width,56px)}.uid-layout-sidebar__main{flex-direction:column;flex:1;min-width:0;display:flex}.uid-layout-sidebar__main-header{flex-shrink:0}.uid-layout-sidebar__main-content{flex:1;min-width:0}.uid-layout-sidebar__main-footer{flex-shrink:0}.uid-layout-sidebar__backdrop{display:none}@media (max-width:768px){.uid-layout-sidebar__sidebar{z-index:var(--uid-z-drawer,400);transition:transform var(--uid-duration-base) var(--uid-ease-in-out);background:var(--uid-color-bg);position:fixed;inset:0 auto 0 0;transform:translate(-100%);width:var(--uid-layout-sidebar-width,240px)!important}.uid-layout-sidebar:not(.uid-layout-sidebar--collapsed) .uid-layout-sidebar__sidebar{box-shadow:var(--uid-shadow-lg);transform:translate(0)}.uid-layout-sidebar__backdrop{background:var(--uid-color-overlay,#00000080);z-index:calc(var(--uid-z-drawer,400) - 1);cursor:pointer;display:none;position:fixed;inset:0}.uid-layout-sidebar:not(.uid-layout-sidebar--collapsed) .uid-layout-sidebar__backdrop{display:block}}.uid-layout-auth{min-height:var(--uid-layout-auth-min-height,100vh);display:flex}.uid-layout-auth--centered{padding:var(--uid-space-lg);background:var(--uid-layout-auth-bg,var(--uid-color-bg-subtle));justify-content:center;align-items:center}.uid-layout-auth--centered .uid-layout-auth__main{align-items:center;gap:var(--uid-space-md);flex-direction:column;width:100%;display:flex}.uid-layout-auth__card{width:100%;max-width:var(--uid-layout-auth-card-width,400px)}.uid-layout-auth__footer{font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text-secondary);text-align:center}.uid-layout-auth--split{align-items:stretch}.uid-layout-auth__brand{padding:var(--uid-space-2xl);background:var(--uid-layout-auth-brand-bg,var(--uid-color-primary));color:var(--uid-layout-auth-brand-color,var(--uid-color-text-on-primary));flex:1;justify-content:center;align-items:center;display:flex}.uid-layout-auth--split .uid-layout-auth__main{padding:var(--uid-space-2xl);justify-content:center;align-items:center;gap:var(--uid-space-md);background:var(--uid-color-bg);flex-direction:column;flex:1;display:flex}@media (max-width:768px){.uid-layout-auth--split{flex-direction:column}.uid-layout-auth__brand{padding:var(--uid-space-xl) var(--uid-space-lg);flex:none}.uid-layout-auth--split .uid-layout-auth__main{padding:var(--uid-space-xl) var(--uid-space-lg);flex:1}}.uid-layout-wizard{min-height:var(--uid-layout-wizard-min-height,0);background:var(--uid-color-bg);flex-direction:column;width:100%;display:flex}.uid-layout-wizard__header{padding:var(--uid-space-lg) var(--uid-space-xl) var(--uid-space-md);border-bottom:1px solid var(--uid-color-border);flex-shrink:0}.uid-layout-wizard__stepper{padding:var(--uid-space-lg) var(--uid-space-xl);border-bottom:1px solid var(--uid-color-border);flex-shrink:0}.uid-layout-wizard__content{padding:var(--uid-layout-wizard-content-padding,var(--uid-space-xl));flex:1;min-width:0}.uid-layout-wizard__nav{padding:var(--uid-space-md) var(--uid-space-xl);border-top:1px solid var(--uid-color-border);background:var(--uid-color-bg);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}@media (max-width:640px){.uid-layout-wizard__header,.uid-layout-wizard__stepper,.uid-layout-wizard__content,.uid-layout-wizard__nav{padding-left:var(--uid-space-md);padding-right:var(--uid-space-md)}}`,openapi:`:where(main,section,header,footer,nav,article,aside):is([class^=oa-],[class*=\\ oa-]){float:none;width:auto;max-width:none;box-shadow:none;background:0 0;border:0;margin:0;padding:0}.oa-reference,.oa-editor{color:var(--uid-text-primary);font-size:14px;line-height:1.5}.oa-reference{--oa-header-h:56px;flex-direction:column;min-height:100%;display:flex;position:relative;container:oa-reference/inline-size}.oa-reference>.uid-alert{margin:16px 0}.oa-switcher{max-width:var(--oa-nav-width,272px);margin-top:12px}.oa-loading{justify-content:center;padding:48px 0;display:flex}.oa-header{top:var(--oa-sticky-top,0px);z-index:30;height:var(--oa-header-h);border-bottom:1px solid var(--uid-border-subtle);background:color-mix(in srgb, var(--uid-surface-base,var(--uid-color-bg)) 88%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);backdrop-filter:saturate(1.4)blur(10px);align-items:center;gap:12px;padding:0 4px;display:flex;position:sticky}.oa-header__title{flex:0 auto;align-items:baseline;gap:8px;min-width:0;display:flex}.oa-header__title .oa-chip-static{flex:none}.oa-header__name{white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:2.5em;font-size:15px;font-weight:650;overflow:hidden}.oa-header__summary{min-width:0;max-width:34ch;color:var(--uid-text-tertiary);white-space:nowrap;text-overflow:ellipsis;flex:0 1000 auto;font-size:13px;overflow:hidden}.oa-header__find{display:contents}.oa-header__specs{flex:0 1000 200px;min-width:120px}.oa-header__search{flex:1 10000 160px;min-width:96px;max-width:520px;margin-left:auto}.oa-header__actions{flex:none;align-items:center;gap:6px;display:flex}.oa-header__icon{width:34px;height:34px;color:var(--uid-text-secondary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;flex:none;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.oa-header__icon:hover{background:var(--uid-color-bg-subtle);color:var(--uid-text-primary)}.oa-header__icon:focus-visible,.oa-header__settings:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:1px}.oa-header__menu{display:none}.oa-header__settings{border:1px solid var(--uid-border-default);background:var(--uid-surface-raised);max-width:280px;height:34px;color:var(--uid-text-secondary);font:inherit;cursor:pointer;border-radius:17px;flex:none;align-items:center;gap:8px;padding:0 12px;font-size:13px;transition:border-color .15s,color .15s,box-shadow .15s;display:inline-flex}.oa-header__settings:hover{border-color:var(--uid-border-hover);color:var(--uid-text-primary);box-shadow:var(--uid-shadow-sm)}.oa-header__host{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;overflow:hidden}.oa-header__key{color:var(--uid-text-tertiary);flex:none}.oa-header__key.is-on{color:var(--uid-success)}.oa-header__downloads{border:1px solid var(--uid-border-subtle);border-radius:9px;padding:2px;display:inline-flex}.oa-header__download{height:28px;color:var(--uid-text-secondary);font:500 11px/1 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:4px;padding:0 8px;transition:background .15s,color .15s;display:inline-flex}.oa-header__download:hover{background:var(--uid-color-bg-subtle);color:var(--uid-text-primary)}.oa-header__download:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:-2px}.oa-settings__row{gap:8px;display:flex}.oa-settings__downloads{display:none}.oa-menu{flex-direction:column;min-width:200px;padding:4px;display:flex}.oa-menu__item{color:var(--uid-text-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:7px 10px;font-size:13px}.oa-menu__item:hover,.oa-menu__item:focus-visible{background:var(--uid-accent-subtle);outline:none}.oa-body{grid-template-columns:var(--oa-nav-width,272px) minmax(0, 1fr);flex:1;align-items:start;gap:28px;display:grid}.oa-footer{border-top:1px solid var(--uid-border-subtle);color:var(--uid-text-tertiary);flex-wrap:wrap;gap:6px 18px;margin-top:40px;padding:18px 4px 24px;font-size:12px;display:flex}.oa-settings{flex-direction:column;gap:24px;display:flex}.oa-settings__section{flex-direction:column;gap:10px;display:flex}.oa-settings__title{letter-spacing:.05em;text-transform:uppercase;color:var(--uid-text-tertiary);margin:0;font-size:11px;font-weight:600}.oa-servers{flex-direction:column;gap:10px;display:flex}.oa-servers__vars{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;display:grid}.oa-servers__url{background:var(--uid-color-bg-subtle);font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-secondary);overflow-wrap:anywhere;border-radius:6px;padding:6px 10px}.oa-auth--embedded .oa-auth__body{padding:0}.oa-nav{top:calc(var(--oa-sticky-top,0px) + var(--oa-header-h));height:calc(var(--oa-viewport-h,100vh) - var(--oa-sticky-top,0px) - var(--oa-header-h));flex-direction:column;padding:16px 0 24px;display:flex;position:sticky}.oa-nav__scroll{overscroll-behavior:contain;scrollbar-width:thin;padding:2px 6px 2px 2px;overflow-y:auto}.oa-nav__overlay{display:none}.oa-nav__group{margin-bottom:12px}.oa-nav__tag{letter-spacing:.04em;text-transform:uppercase;color:var(--uid-text-tertiary);padding:6px 8px 4px;font-size:11px;font-weight:600}.oa-nav__op{color:var(--uid-text-secondary);border-radius:7px;align-items:center;gap:8px;padding:6px 8px;font-size:13px;text-decoration:none;transition:background .15s,color .15s,box-shadow .15s;display:flex}.oa-nav__op:hover{background:var(--uid-color-bg-subtle);color:var(--uid-text-primary)}.oa-nav__op:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:-2px}.oa-nav__op.is-active{background:var(--uid-accent-subtle);color:var(--uid-text-primary);box-shadow:inset 2px 0 0 var(--uid-accent)}.oa-nav__op.is-deprecated .oa-nav__label{text-decoration:line-through}.oa-nav__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.oa-nav__empty{color:var(--uid-text-tertiary);padding:8px}.oa-method{min-width:52px;font:600 12px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--oa-other,var(--uid-text-secondary));background:var(--oa-other-bg,var(--uid-color-bg-subtle));border-radius:4px;justify-content:center;padding:2px 6px;display:inline-flex}.oa-method--small{min-width:40px;padding:1px 4px;font-size:10px}.oa-method--get{color:var(--oa-get,var(--uid-info));background:var(--oa-get-bg,var(--uid-info-subtle))}.oa-method--post{color:var(--oa-post,var(--uid-success));background:var(--oa-post-bg,var(--uid-success-subtle))}.oa-method--put{color:var(--oa-put,var(--uid-warning));background:var(--oa-put-bg,var(--uid-warning-subtle))}.oa-method--patch{color:var(--oa-patch,var(--uid-warning));background:var(--oa-patch-bg,var(--uid-warning-subtle))}.oa-method--delete{color:var(--oa-delete,var(--uid-danger));background:var(--oa-delete-bg,var(--uid-danger-subtle))}.oa-status{font:600 12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);background:var(--uid-color-bg-subtle);color:var(--uid-text-secondary);border-radius:10px;padding:1px 8px;display:inline-block}.oa-status--success{background:var(--uid-success-subtle);color:var(--uid-success)}.oa-status--info{background:var(--uid-info-subtle);color:var(--uid-info)}.oa-status--danger{background:var(--uid-danger-subtle);color:var(--uid-danger)}.oa-main{min-width:0}.oa-intro{padding:28px 0 8px}.oa-chip-static{background:var(--uid-accent-subtle);color:var(--uid-text-primary);white-space:nowrap;border-radius:10px;padding:1px 8px;font-size:12px;font-weight:500}.oa-chip-static--muted{background:var(--uid-color-bg-subtle);color:var(--uid-text-secondary);font-weight:400}.oa-intro__title{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.oa-intro__title h1{letter-spacing:-.01em;margin:0;font-size:30px;line-height:1.2}.oa-intro__version,.oa-intro__spec{background:var(--uid-color-bg-subtle);color:var(--uid-text-secondary);border-radius:10px;padding:1px 8px;font-size:12px}.oa-intro__download{align-self:center;gap:2px;margin-left:auto;display:inline-flex}.oa-intro__summary{color:var(--uid-text-secondary);margin:8px 0 0}.oa-intro__meta{flex-wrap:wrap;gap:14px;font-size:13px;display:flex}.oa-intro__meta a{color:var(--uid-accent-text,var(--uid-accent))}.oa-servers__var{flex-direction:column;gap:4px;font-size:13px;display:flex}.oa-panel{border:1px solid var(--uid-border-default);border-radius:var(--oa-radius,8px);background:var(--uid-surface-raised);overflow:hidden}.oa-panel__head{border:0;border-bottom:1px solid var(--uid-border-subtle);background:var(--uid-color-bg-subtle);width:100%;color:inherit;font:inherit;text-align:left;align-items:center;gap:10px;padding:8px 12px;display:flex}.oa-panel__head--button{cursor:pointer;border-bottom-color:#0000}.oa-panel__head--button[aria-expanded=true]{border-bottom-color:var(--uid-border-subtle)}.oa-panel__title{flex:1;font-size:13px;font-weight:600}.oa-servers__body,.oa-auth__body{flex-direction:column;gap:10px;padding:12px;display:flex}.oa-auth__names{color:var(--uid-text-tertiary);font-size:12px}.oa-auth__scheme{border-bottom:1px dashed var(--uid-border-subtle);flex-direction:column;gap:6px;padding-bottom:10px;display:flex}.oa-auth__scheme:last-child{border-bottom:0;padding-bottom:0}.oa-auth__row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;display:grid}.oa-auth__oauth{flex-direction:column;gap:8px;display:flex}.oa-auth__flows{flex-wrap:wrap;align-self:flex-start}.oa-auth__scopes{flex-wrap:wrap;align-items:flex-start;gap:6px 16px;display:flex}.oa-auth__label{color:var(--uid-text-secondary);flex-basis:100%;font-size:12px}.oa-auth__status{color:var(--uid-text-tertiary);align-items:center;gap:8px;font-size:12px;display:flex}.oa-auth__persist{color:var(--uid-text-tertiary);justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.oa-tag{padding-top:12px}.oa-tag__title{letter-spacing:-.01em;scroll-margin-top:calc(var(--oa-sticky-top,0px) + var(--oa-header-h) + 12px);margin:36px 0 6px;font-size:22px}.oa-op{border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);box-shadow:var(--uid-shadow-sm);scroll-margin-top:calc(var(--oa-sticky-top,0px) + var(--oa-header-h) + 12px);border-radius:14px;margin:18px 0;padding:22px 24px;transition:opacity .35s,transform .35s,box-shadow .2s,border-color .2s}.oa-op:hover{box-shadow:var(--uid-shadow-md);border-color:var(--uid-border-default)}.oa-op--pending{opacity:.4;min-height:420px;transform:translateY(8px)}.oa-reference--large .oa-op{content-visibility:auto;contain-intrinsic-size:auto 600px}.oa-op__head{border-bottom:1px solid var(--uid-border-subtle);padding-bottom:14px}.oa-side-tabs{border:1px solid var(--uid-border-default);background:var(--uid-color-bg-subtle);border-radius:10px;padding:3px;display:flex}.oa-side-tabs__tab{color:var(--uid-text-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;flex:1;padding:6px 10px;font-size:13px;font-weight:500;transition:background .15s,color .15s,box-shadow .15s}.oa-side-tabs__tab.is-active{background:var(--uid-surface-raised);color:var(--uid-text-primary);box-shadow:var(--uid-shadow-sm)}.oa-side-tabs__tab:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:-2px}.oa-op--deprecated .oa-op__title{color:var(--uid-text-secondary);text-decoration:line-through}.oa-op__title{margin:0 0 6px;font-size:17px}.oa-op__titlebar{align-items:flex-start;gap:4px;display:flex}.oa-op__titlebar .oa-op__title{min-width:0}.oa-op__copy{opacity:0;flex:none;margin-top:-3px;transition:opacity .12s}.oa-op__head:hover .oa-op__copy,.oa-op__head:focus-within .oa-op__copy,.oa-op__copy.is-copied{opacity:1}@media (hover:none){.oa-op__copy{opacity:1}}.oa-op__copied{color:var(--uid-success);align-self:center;margin-top:-6px;font-size:12px}.oa-op__line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.oa-op__path{font:13px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);word-break:break-all}.oa-op__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;margin-top:16px;display:grid}.oa-op__side{flex-direction:column;gap:12px;min-width:0;display:flex}.oa-op__ext{font-size:13px}.oa-block{margin-top:18px}.oa-block__title{border-bottom:1px solid var(--uid-border-subtle);text-transform:uppercase;letter-spacing:.03em;color:var(--uid-text-secondary);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 8px;padding-bottom:6px;font-size:13px;display:flex}.oa-block__media{text-transform:none;letter-spacing:0;flex-wrap:wrap;gap:4px;margin-left:auto;display:inline-flex}.oa-chip{border:1px solid var(--uid-border-default);color:var(--uid-text-secondary);font:11px/1.6 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);cursor:pointer;background:0 0;border-radius:10px;padding:1px 8px}.oa-chip.is-active{border-color:var(--uid-accent);color:var(--uid-text-primary);background:var(--uid-accent-subtle)}.oa-params__loc{text-transform:uppercase;color:var(--uid-text-tertiary);margin:10px 0 2px;font-size:11px}.oa-param{border-bottom:1px dashed var(--uid-border-subtle);padding:8px 0}.oa-param:last-child{border-bottom:0}.oa-response{border:1px solid var(--uid-border-subtle);border-radius:6px;margin-bottom:6px}.oa-response__head{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:7px 10px;display:flex}.oa-response__desc{color:var(--uid-text-secondary);flex:1}.oa-response__head--plain{cursor:default}.oa-response__body{flex-direction:column;gap:8px;padding:4px 10px 10px;display:flex}.oa-response__example{margin-top:4px}.oa-callback{margin:6px 0}.oa-callback__item{flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;font-size:12px;display:flex}.oa-schema__row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.oa-schema__toggle,.oa-schema__toggle-space{flex:none;width:16px;height:16px}.oa-schema__toggle{color:var(--uid-text-tertiary);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.oa-schema__chevron{color:var(--uid-text-tertiary);font-size:14px;line-height:1;transition:transform .15s;display:inline-block}.oa-schema__chevron.is-open{transform:rotate(90deg)}.oa-schema__name{font:600 13px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-primary)}.oa-schema__type{font:12px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-tertiary)}.oa-schema__flag{background:var(--uid-color-bg-subtle);color:var(--uid-text-secondary);border-radius:8px;padding:0 6px;font-size:11px}.oa-schema__flag--required{color:var(--uid-danger);background:var(--uid-danger-subtle)}.oa-schema__flag--deprecated{color:var(--uid-warning);background:var(--uid-warning-subtle)}.oa-schema__meta{padding-left:22px}.oa-schema__constraints,.oa-schema__enum{color:var(--uid-text-secondary);flex-wrap:wrap;align-items:center;gap:6px;margin-top:3px;font-size:12px;display:flex}.oa-schema__constraints span,.oa-schema__enum code{background:var(--uid-color-bg-subtle);font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);border-radius:4px;padding:0 5px}.oa-schema__label{color:var(--uid-text-tertiary)}.oa-schema>.oa-schema__row{padding-top:7px}.oa-schema__children--nested{border-left:1px solid var(--uid-border-subtle);margin:4px 0 4px 7px;padding-left:14px}.oa-schema__variants{flex-wrap:wrap;align-items:center;gap:4px;margin:6px 0;display:flex}.oa-schema__variant{border:1px solid var(--uid-border-default);color:var(--uid-text-secondary);cursor:pointer;background:0 0;border-radius:10px;padding:1px 8px;font-size:12px}.oa-schema__variant.is-active{border-color:var(--uid-accent);background:var(--uid-accent-subtle);color:var(--uid-text-primary)}.oa-schema__scalar{flex-direction:column;gap:4px;display:flex}.oa-model{border-bottom:1px solid var(--uid-border-subtle);scroll-margin-top:var(--oa-sticky-top,0px);padding:14px 0}.oa-model__title{font:600 15px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);margin:0 0 4px}.oa-samples__select{width:190px}.oa-samples__code{border:0;border-radius:0}.oa-tryit__body{flex-direction:column;gap:16px;min-width:0;padding:12px;display:flex}.oa-tryit__group{flex-direction:column;gap:8px;min-width:0;display:flex}.oa-tryit__group-title{flex-wrap:wrap;align-items:center;gap:6px 8px;min-height:24px;display:flex}.oa-tryit__media{text-transform:none;flex:160px;min-width:0;max-width:260px}.oa-tryit__media-one{min-width:0;font:11px var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-secondary);overflow-wrap:anywhere}.oa-tryit__textarea{box-sizing:border-box;border:1px solid var(--uid-input-border,var(--uid-border-default));border-radius:var(--uid-input-radius,6px);background:var(--uid-input-bg,var(--uid-surface-base));width:100%;color:var(--uid-text-primary);font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);resize:none;overflow-wrap:anywhere;padding:8px 10px}.oa-tryit__textarea:focus{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:-1px}.oa-tryit__warn{color:var(--uid-warning);font-size:12px}.oa-tryit__actions{flex-wrap:wrap;gap:8px;display:flex}.oa-tryit__response{border-top:1px solid var(--uid-border-subtle);flex-direction:column;gap:8px;min-width:0;padding-top:12px;display:flex}.oa-tryit__status{align-items:center;gap:6px 12px;font-size:12px;display:flex}.oa-tryit__time,.oa-tryit__size{color:var(--uid-text-tertiary)}.oa-tryit__view{gap:4px;margin-left:auto;display:inline-flex}.oa-tryit__status{flex-wrap:wrap}.oa-tryit .oa-tryit__file .uid-file-upload__dropzone{gap:2px;padding:10px 12px}.oa-tryit .oa-tryit__file .uid-file-upload__icon{width:20px;height:20px}.oa-tryit .oa-tryit__file .uid-file-upload__primary-text{margin:0;font-size:13px}.oa-tryit .oa-tryit__file .uid-file-upload__secondary-text{display:none}.oa-tryit__image{border:1px solid var(--uid-border-subtle);background:repeating-conic-gradient(var(--uid-color-bg-subtle) 0 25%, transparent 0 50%) 0 0 / 16px 16px;border-radius:6px;align-self:flex-start;max-width:100%;max-height:360px;display:block}.oa-tryit__download{align-self:flex-start;font-size:13px}.oa-link{color:var(--uid-accent-text,var(--uid-accent));font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.oa-table{border-collapse:collapse;width:100%;font-size:12px}.oa-table th{text-align:left;color:var(--uid-text-tertiary);font-weight:600}.oa-table td,.oa-table th{border-bottom:1px solid var(--uid-border-subtle);vertical-align:top;padding:4px 6px}.oa-table--compact td:first-child{white-space:nowrap}.oa-md{--uid-markdown-font-size:14px}.oa-md--small{--uid-markdown-font-size:13px;--uid-markdown-color:var(--uid-text-secondary);margin-top:2px}.oa-md--small p{margin:0}@container oa-reference (width<=1180px){.oa-op__grid{grid-template-columns:minmax(0,1fr)}.oa-header__summary{display:none}}@container oa-reference (width<=860px){.oa-body{grid-template-columns:minmax(0,1fr)}.oa-header__menu{display:inline-flex}.oa-header__downloads{display:none}.oa-settings__downloads{display:flex}.oa-nav{z-index:29;top:var(--oa-header-h);background:var(--uid-surface-raised);width:min(320px,86%);height:auto;box-shadow:var(--uid-shadow-xl);visibility:hidden;padding:12px 8px;transition:transform .22s,visibility 0s linear .22s;position:absolute;bottom:0;left:0;transform:translate(-105%)}.oa-nav.is-open{visibility:visible;transition:transform .22s;transform:none}.oa-nav__scroll{top:calc(var(--oa-sticky-top,0px) + var(--oa-header-h) + 12px);max-height:calc(var(--oa-viewport-h,100dvh) - var(--oa-sticky-top,0px) - var(--oa-header-h) - 24px);position:sticky}.oa-nav__overlay{z-index:28;inset:var(--oa-header-h) 0 0 0;background:#00000052;display:block;position:absolute}.oa-op{border-radius:12px;padding:18px 16px}}@container oa-reference (width<=600px){.oa-header{gap:6px}.oa-header__title .oa-chip-static,.oa-header__host{display:none}.oa-header__settings{padding:0 9px}.oa-header__search{flex-basis:0;min-width:72px}.oa-header__specs{min-width:96px}.oa-search{position:static}.oa-search__results{width:auto;left:4px;right:4px}.oa-intro__title h1{font-size:24px}}@container oa-reference (width<=560px){.oa-header--multi,.oa-header--multi~.oa-body{--oa-header-h:96px}.oa-header--multi{flex-wrap:wrap;align-content:center;row-gap:8px;padding:8px 4px}.oa-header--multi .oa-header__title{flex:1 1 0}.oa-header--multi .oa-header__find{flex:100%;order:1;gap:6px;min-width:0;display:flex}.oa-header--multi .oa-header__specs{flex:1 1 0;min-width:0}.oa-header--multi .oa-header__search{flex:1 1 0;min-width:0;max-width:none;margin-left:0}}@media (prefers-reduced-motion:reduce){.oa-op,.oa-nav,.oa-nav__op{transition:none}.oa-op--pending{transform:none}}.oa-locale-passthrough{display:contents}.oa-editor{flex-direction:column;gap:12px;display:flex;container:oa-editor/inline-size}.oa-editor__bar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.oa-segmented{border:1px solid var(--uid-border-default);background:var(--uid-color-bg-subtle);border-radius:8px;padding:2px;display:inline-flex}.oa-segmented__item{color:var(--uid-text-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:4px 12px;font-size:13px}.oa-segmented__item.is-active{background:var(--uid-surface-raised);color:var(--uid-text-primary);box-shadow:var(--uid-shadow-sm)}.oa-segmented__item:disabled{opacity:.5;cursor:default}.oa-editor__issues{border:1px solid var(--uid-border-default);background:var(--uid-success-subtle);color:var(--uid-success);font:inherit;cursor:pointer;border-radius:12px;margin-left:auto;padding:3px 10px;font-size:12px}.oa-editor__issues.has-errors{background:var(--uid-danger-subtle);color:var(--uid-danger)}.oa-editor__body{flex-direction:column;gap:12px;min-height:420px;display:flex}.oa-editor__empty{border:1px dashed var(--uid-border-default);border-radius:var(--oa-radius,8px);color:var(--uid-text-secondary);flex-direction:column;align-items:flex-start;gap:10px;padding:24px;display:flex}.oa-editor__visual{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:16px;display:grid}.oa-editor__tree{top:var(--oa-sticky-top,0px);max-height:calc(100vh - var(--oa-sticky-top,0px) - 24px);border:1px solid var(--uid-border-default);border-radius:var(--oa-radius,8px);background:var(--uid-surface-raised);flex-direction:column;gap:1px;padding:6px;display:flex;position:sticky;overflow-y:auto}.oa-tree__section{letter-spacing:.04em;text-transform:uppercase;color:var(--uid-text-tertiary);justify-content:space-between;align-items:center;margin-top:10px;padding:2px 8px;font-size:11px;font-weight:600;display:flex}.oa-tree__add{border:1px solid var(--uid-border-default);width:22px;height:22px;color:var(--uid-text-secondary);cursor:pointer;background:0 0;border-radius:6px;font:600 14px/1 inherit}.oa-tree__add:hover{background:var(--uid-accent-subtle);color:var(--uid-text-primary)}.oa-tree__item{color:var(--uid-text-secondary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;min-width:0;padding:5px 8px;font-size:13px;display:flex}.oa-tree__item:hover{background:var(--uid-color-bg-subtle);color:var(--uid-text-primary)}.oa-tree__item.is-active{background:var(--uid-accent-subtle);color:var(--uid-text-primary)}.oa-tree__item--nested{padding-left:18px}.oa-tree__item--path code{font:12px var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.oa-tree__count{color:var(--uid-text-tertiary);margin-left:auto;font-size:11px}.oa-editor__form{border:1px solid var(--uid-border-default);border-radius:var(--oa-radius,8px);background:var(--uid-surface-raised);min-width:0;padding:16px}.oa-ef{flex-direction:column;gap:12px;display:flex}.oa-ef__title{align-items:center;gap:8px;display:flex}.oa-ef__section{flex-direction:column;gap:8px;margin-top:8px;display:flex}.oa-ef__hint{flex-wrap:wrap;gap:6px;display:flex}.oa-ef__grow{flex:1;min-width:160px}.oa-ef__in{width:120px}.oa-ef__code{width:90px}.oa-ef__footer{border-top:1px solid var(--uid-border-subtle);justify-content:flex-end;margin-top:16px;padding-top:12px;display:flex}.oa-es{flex-direction:column;gap:8px;display:flex}.oa-es__row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.oa-es__row>.uid-input-field,.oa-es__row>.uid-select{flex:none}.oa-es__kind{width:130px}.oa-es__ref{width:200px}.oa-es__format{width:140px}.oa-es__grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.oa-es__nested{border-left:1px solid var(--uid-border-subtle);flex-direction:column;gap:8px;margin-left:7px;padding-left:14px;display:flex}.oa-es__nested-title{text-transform:uppercase;color:var(--uid-text-tertiary);font-size:11px;font-weight:600}.oa-es__prop{border-bottom:1px dashed var(--uid-border-subtle);flex-direction:column;gap:6px;padding:6px 0;display:flex}.oa-es__prop-name{width:180px}.oa-ec{flex-direction:column;gap:8px;display:flex}.oa-ec__types{align-items:center;margin-left:0}.oa-ec__new{width:200px}.oa-source{--uid-code-tok-comment:var(--uid-text-secondary);--uid-code-tok-string:var(--uid-success);--uid-code-tok-number:var(--uid-warning);--uid-code-tok-literal:var(--uid-warning);--uid-code-tok-keyword:var(--uid-accent-text,var(--uid-accent));--uid-code-tok-function:var(--uid-info);--uid-code-tok-variable:var(--uid-danger);--uid-code-tok-tag:var(--uid-danger);--uid-code-tok-attr:var(--uid-warning);--uid-code-tok-property:var(--uid-info);--uid-code-tok-punctuation:var(--uid-text-secondary);flex-direction:column;gap:8px;display:flex}.oa-source__frame{height:var(--oa-source-height,560px);border:1px solid var(--uid-border-default);border-radius:var(--oa-radius,8px);background:var(--uid-surface-raised);font:12.5px/1.6 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);grid-template-columns:auto minmax(0,1fr);display:grid;overflow:hidden}.oa-source__gutter{text-align:right;min-width:44px;color:var(--uid-text-tertiary);background:var(--uid-color-bg-subtle);border-right:1px solid var(--uid-border-subtle);-webkit-user-select:none;user-select:none;padding:10px 0;position:relative;overflow:hidden}.oa-source__gutter-inner{position:relative}.oa-source__numbers{font:inherit;margin:0;padding:0 8px}.oa-source__mark{background:var(--uid-danger-subtle);border-left:3px solid var(--uid-danger);height:1.6em;position:absolute;left:0;right:0}.oa-source--plain .oa-source__textarea{color:var(--uid-text-primary)}.oa-source__stack{min-width:0;position:relative}.oa-source__highlight,.oa-source__textarea{font:inherit;white-space:pre;tab-size:2;border:0;margin:0;padding:10px 12px;position:absolute;inset:0;overflow:auto}.oa-source__highlight{color:var(--uid-text-primary);pointer-events:none;scrollbar-width:none}.oa-source__highlight::-webkit-scrollbar{display:none}.oa-source__textarea{color:#0000;caret-color:var(--uid-text-primary);resize:none;background:0 0;outline:none}.oa-source__textarea::selection{background:color-mix(in srgb, var(--uid-accent) 30%, transparent);color:#0000}.oa-source__issues{flex-direction:column;gap:2px;max-height:180px;display:flex;overflow-y:auto}.oa-source__issues-title{color:var(--uid-text-tertiary);padding:2px 0;font-size:12px}.oa-source__issue{color:var(--uid-text-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;gap:10px;padding:4px 8px;font-size:12px;display:flex}.oa-source__issue:hover{background:var(--uid-color-bg-subtle)}.oa-source__issue.is-error{color:var(--uid-danger)}.oa-source__issue.is-warning{color:var(--uid-warning)}.oa-source__where{min-width:64px;font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-tertiary);flex:none}@container oa-editor (width<=860px){.oa-editor__visual{grid-template-columns:minmax(0,1fr)}.oa-editor__tree{max-height:40vh;position:static}}.oa-ef>.uid-button,.oa-ef__section>.uid-button,.oa-es>.uid-button,.oa-es__nested>.uid-button{align-self:flex-start}.oa-share{flex-direction:column;gap:6px;display:flex}.oa-share__row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.oa-share__done{color:var(--uid-success,var(--uid-text-secondary));font-size:12px}.oa-share__creds{margin-left:auto;font-size:12px}.oa-page{background:var(--uid-surface-base);min-height:100vh;color:var(--uid-text-primary)}.oa-page__bar{z-index:20;padding:8px var(--oa-page-padding,24px);border-bottom:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex;position:sticky;top:0}.oa-page__title{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:15px;font-weight:600;overflow:hidden}.oa-page__actions{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.oa-page__actions .oa-segmented__item{padding:4px 10px}.oa-page__actions .oa-segmented__item.oa-page__icon{align-items:center;padding:5px 8px;display:inline-flex}.oa-page__actions .oa-segmented__item:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px}.oa-page__body{max-width:var(--oa-page-width,1440px);padding:16px var(--oa-page-padding,24px);margin:0 auto}@media (max-width:640px){.oa-page{--oa-page-padding:16px}}.oa-examples{flex-direction:column;gap:6px;margin:6px 0;display:flex}.oa-examples__names{flex-wrap:wrap;gap:4px;display:flex}.oa-examples__external{margin:0;font-size:13px}.oa-param__examples .oa-chip{cursor:pointer}.oa-tryit__example{color:var(--uid-text-secondary);flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:12px;display:flex}.oa-search{position:relative}.oa-search__results{z-index:20;border:1px solid var(--uid-border-default);border-radius:var(--oa-radius,8px);background:var(--uid-surface-overlay,var(--uid-color-bg));width:min(440px,100cqw - 16px);max-height:min(60vh,520px);padding:4px;position:absolute;top:calc(100% + 4px);left:0;overflow-y:auto;box-shadow:0 8px 24px #00000029}.oa-search__hit{cursor:pointer;border-radius:6px;flex-direction:column;gap:2px;padding:6px 8px;display:flex}.oa-search__hit.is-cursor{background:var(--uid-accent-subtle)}.oa-search__line{align-items:center;gap:8px;min-width:0;display:flex}.oa-search__kind{text-transform:uppercase;letter-spacing:.04em;min-width:40px;color:var(--uid-text-tertiary);flex:none;font-size:10px}.oa-search__title{text-overflow:ellipsis;white-space:nowrap;color:var(--uid-text-primary);font-size:13px;overflow:hidden}.oa-search__path{text-overflow:ellipsis;white-space:nowrap;font:11px var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-secondary);overflow:hidden}.oa-search__snippet{color:var(--uid-text-secondary);overflow-wrap:anywhere;font-size:12px;line-height:1.4}.oa-search__hit mark{background:var(--uid-warning-subtle,#facc1559);color:inherit;border-radius:2px}.oa-code{position:relative}.oa-code .uid-code__pre{overflow-x:hidden}.oa-code--folded .uid-code__body{max-height:calc(var(--oa-code-fold-lines,18) * 1.6em + 24px);overflow:hidden;-webkit-mask-image:linear-gradient(#000 70%,#0000);mask-image:linear-gradient(#000 70%,#0000)}.oa-code__toggle{border:0;border-top:1px solid var(--uid-border-subtle);background:var(--uid-color-bg-subtle);width:100%;color:var(--uid-accent-text,var(--uid-accent));font:inherit;cursor:pointer;padding:6px;font-size:12px;display:block}.oa-side-tabs~.oa-tryit>.oa-panel__head{display:none}.oa-side-tabs~.oa-samples .oa-panel__title{visibility:hidden}.oa-tryit{min-width:0;container-type:inline-size}.oa-tryit,.oa-tryit *{box-sizing:border-box}.oa-tryit__body>*{min-width:0;max-width:100%}.oa-tryit__heading{letter-spacing:.05em;text-transform:uppercase;color:var(--uid-text-tertiary);font-size:11px;font-weight:600}.oa-tryit__add{margin-left:auto;font-size:12px}.oa-tryit__view-toggle{margin-left:auto}.oa-tryit__view-toggle .oa-segmented__item{padding:2px 10px;font-size:12px}.oa-tryit__form{flex-direction:column;gap:12px;min-width:0;display:flex}.oa-tryit__send{min-width:120px}.oa-tryit__headers{margin:0}.oa-tryit__result{min-width:0}.oa-tryit .uid-code__pre,.oa-tryit .uid-code__pre code{white-space:pre-wrap;overflow-wrap:anywhere}@container (width<=420px){.oa-tryit__send{flex:100%}.oa-tryit__actions>.uid-button:not(.oa-tryit__send){flex:1 1 0}}.oa-field{flex-direction:column;gap:4px;min-width:0;display:flex}.oa-field__head{flex-wrap:wrap;align-items:center;gap:2px 6px;min-width:0;display:flex}.oa-field__name{min-width:0;font:600 12px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-primary);overflow-wrap:anywhere}.oa-field.is-deprecated>.oa-field__head>.oa-field__name{color:var(--uid-text-secondary);text-decoration:line-through}.oa-field__required{color:var(--uid-danger);margin-left:-4px;font-weight:600}.oa-field__type{font:11px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-tertiary);overflow-wrap:anywhere}.oa-field__actions{flex-wrap:wrap;align-items:center;gap:4px;margin-left:auto;display:inline-flex}.oa-field__control{align-items:flex-start;gap:6px;min-width:0;display:flex}.oa-field__control>:not(.oa-icon-button){flex:auto;min-width:0}.oa-field__control>.oa-field__bool{flex:none}.oa-field__bool .oa-segmented__item{font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);padding:2px 12px}.oa-field__hint{-webkit-line-clamp:2;line-clamp:2;color:var(--uid-text-tertiary);overflow-wrap:anywhere;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.oa-field__json{border:1px solid var(--uid-input-border,var(--uid-border-default));border-radius:var(--uid-input-radius,6px);background:var(--uid-input-bg,var(--uid-surface-base));width:100%;min-height:32px;color:var(--uid-text-primary);font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);overflow-wrap:anywhere;padding:5px 8px}.oa-field__json:focus{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:-1px}.oa-tryit .uid-input-field,.oa-tryit .uid-number-input,.oa-tryit .uid-tags-input,.oa-tryit .uid-select{min-width:0;max-width:100%}.oa-tryit .uid-tags-input__control{flex-wrap:wrap;min-width:0}.oa-tryit .uid-tags-input__chip{overflow-wrap:anywhere;max-width:100%}.oa-tryit .uid-tags-input__field{flex:60px;min-width:60px}.oa-tryit .uid-select__value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.oa-tryit .uid-input-field__input,.oa-tryit .uid-number-input__input{min-width:0}.oa-icon-button{width:28px;height:28px;color:var(--uid-text-tertiary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:inline-flex}.oa-icon-button:hover{border-color:var(--uid-border-default);color:var(--uid-danger)}.oa-icon-button:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:1px}.oa-kv{flex-direction:column;gap:6px;display:flex}.oa-kv__row{grid-template-columns:minmax(0,2fr) minmax(0,3fr) auto;align-items:center;gap:6px;display:grid}.oa-kv__key input{font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px}.oa-sf{min-width:0}.oa-sf--group{flex-direction:column;gap:6px;display:flex}.oa-sf__head{flex-wrap:wrap;align-items:center;gap:2px 6px;min-width:0;min-height:28px;display:flex}.oa-sf__toggle{cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:18px;height:18px;margin-left:-2px;padding:0;display:inline-flex}.oa-sf__body{border-left:1px solid var(--uid-border-subtle);flex-direction:column;gap:12px;min-width:0;margin-left:7px;padding-left:12px;display:flex}.oa-sf--root>.oa-sf__body{border-left:0;margin-left:0;padding-left:0}.oa-sf--group.is-absent>.oa-sf__head>.oa-field__name,.oa-sf--group.is-null>.oa-sf__head>.oa-field__name{color:var(--uid-text-secondary)}.oa-sf__variant{width:160px;max-width:100%}.oa-sf__variant-label{color:var(--uid-text-secondary);font-size:12px}.oa-sf__add{font-size:12px}.oa-sf__more{align-self:flex-start}.oa-sf__entry{flex-direction:column;gap:6px;min-width:0;display:flex}.oa-sf__entry--leaf{grid-template-columns:minmax(0,2fr) minmax(0,3fr);align-items:start;display:grid}.oa-sf__key input{font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px}.oa-sf__null{font-size:11px}.oa-preview{border:1px solid var(--uid-border-subtle);border-radius:6px;min-width:0}.oa-preview__summary{width:100%;min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex}.oa-preview__title{letter-spacing:.05em;text-transform:uppercase;color:var(--uid-text-tertiary);flex:none;font-size:11px;font-weight:600}.oa-preview__line{min-width:0;font:11px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-secondary);gap:6px;display:flex}.oa-preview__method{color:var(--uid-text-primary);flex:none;font-weight:600}.oa-preview__url-short{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.oa-preview__count{flex:none}.oa-preview__body{flex-direction:column;gap:8px;padding:0 10px 10px;display:flex}.oa-preview__url-row{flex-wrap:wrap;align-items:flex-start;gap:4px 8px;display:flex}.oa-preview__url{background:var(--uid-color-bg-subtle);min-width:0;font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);overflow-wrap:anywhere;white-space:pre-wrap;border-radius:6px;flex:200px;padding:6px 8px}.oa-preview__copy{font-size:12px}.oa-preview__headers{font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);grid-template-columns:minmax(0,max-content) minmax(0,1fr);gap:4px 12px;margin:0;display:grid}.oa-preview__headers dt{max-width:18ch;color:var(--uid-text-secondary);overflow-wrap:anywhere}.oa-preview__headers dd{min-width:0;color:var(--uid-text-primary);overflow-wrap:anywhere;margin:0}@container (width<=380px){.oa-preview__summary{flex-wrap:wrap}.oa-preview__line{flex:100%}.oa-kv__row{grid-template-columns:minmax(0,1fr) auto}.oa-kv__value{grid-column:1}.oa-sf__entry--leaf{grid-template-columns:minmax(0,1fr)}}.oa-tryit__add{border:1px dashed var(--uid-border-default);color:var(--uid-text-secondary);font:inherit;cursor:pointer;background:0 0;border-radius:8px;align-self:flex-start;align-items:center;gap:6px;margin-left:0;padding:5px 10px;font-size:12px;transition:border-color .15s,color .15s,background .15s;display:inline-flex}.oa-tryit__add:hover{border-color:var(--uid-accent);color:var(--uid-text-primary);background:var(--uid-accent-subtle)}.oa-tryit__add:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:1px}.oa-preview__add{margin-top:8px}.oa-types__names{border-bottom:1px solid var(--uid-border-subtle);flex-wrap:wrap;align-items:center;gap:4px;padding:8px 12px;display:flex}.oa-types__name{overflow-wrap:anywhere;text-align:left;max-width:100%}.oa-types__copied{color:var(--uid-text-tertiary);font-size:11px}.oa-types__code{border:0;border-radius:0}.oa-side-tabs~.oa-types>.oa-panel__head{display:none}.oa-reference.oa-embed{min-height:0;margin:16px 0;display:block;container-type:inline-size}.oa-embed__card{border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);box-shadow:var(--uid-shadow-sm);border-radius:12px;padding:18px 20px}.oa-embed__head{border-bottom:1px solid var(--uid-border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 16px;padding-bottom:12px;display:flex}.oa-embed__heading{flex:240px;min-width:0}.oa-embed__title{margin:6px 0 0;font-size:16px}.oa-embed__card.oa-op--deprecated .oa-embed__title{color:var(--uid-text-secondary);text-decoration:line-through}.oa-embed__tools{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.oa-embed__settings{max-width:220px;height:30px}.oa-embed__ref{color:var(--uid-accent);align-items:center;gap:4px;font-size:13px;text-decoration:none;display:inline-flex}.oa-embed__ref:hover{text-decoration:underline}.oa-op.oa-op--compact{box-shadow:none;content-visibility:visible;background:0 0;border:0;border-radius:0;margin:0;padding:0;container-type:inline-size}.oa-op.oa-op--compact .oa-op__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}@container (width<=899px){.oa-op.oa-op--compact .oa-op__grid{grid-template-columns:minmax(0,1fr)}}@container (width<=480px){.oa-embed__card{padding:14px 12px}.oa-embed__settings .oa-header__host{display:none}}.oa-op__pdf{opacity:0;flex:none;margin-top:-3px;transition:opacity .12s}.oa-op__head:hover .oa-op__pdf,.oa-op__head:focus-within .oa-op__pdf{opacity:1}@media (hover:none){.oa-op__pdf{opacity:1}}.oa-settings__print{display:flex}.oa-bk{color:var(--uid-text-primary);margin:16px 0;font-size:14px;line-height:1.5;container-type:inline-size}.oa-bk--editable{border:1px solid var(--uid-border-subtle);background:var(--uid-color-bg-subtle);border-radius:12px;padding:2px 14px 14px}.oa-bk__tabs .uid-tabs__list{align-items:center}.oa-bk__tabs .uid-tab-panel{padding-bottom:0}.oa-bk__format{flex:none;margin-left:auto}.oa-bk__format .oa-segmented__item{padding:2px 8px;font-size:11px}.oa-bk__dot{background:var(--uid-danger);border-radius:50%;width:6px;height:6px;margin-left:6px;display:inline-block}.oa-bk__preview{flex-direction:column;gap:12px;display:flex}.oa-bk__preview .oa-reference.oa-embed{margin:0}.oa-bk__heading{flex-direction:column;gap:4px;display:flex}.oa-bk__title{margin:0;font-size:17px;font-weight:600}.oa-bk__empty{color:var(--uid-text-secondary);margin:0}.oa-bk__where{font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-secondary);font-size:12px}.oa-bk__form{flex-direction:column;gap:4px;display:flex}.oa-bk__section{border-top:1px solid var(--uid-border-subtle);flex-direction:column;gap:8px;padding:12px 0;display:flex}.oa-bk__form>.oa-bk__section:first-child{border-top:0;padding-top:0}.oa-bk__section-title{letter-spacing:.04em;text-transform:uppercase;color:var(--uid-text-tertiary);margin:0;font-size:11px;font-weight:600}.oa-bk__section>.uid-button,.oa-bk__footer>.uid-button,.oa-bk__mode{align-self:flex-start}.oa-bk__grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;display:grid}.oa-bk__line{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.oa-bk__line--top{align-items:flex-start}.oa-bk__method{flex:none;width:116px}.oa-bk__url{flex:260px;min-width:0}.oa-bk__url input,.oa-bk__param-name input,.oa-bk__status input,.oa-bk__mono textarea{font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12.5px}.oa-bk__grow{flex:160px;min-width:0}.oa-bk__requests{flex-wrap:wrap;align-items:center;gap:6px;padding-bottom:12px;display:flex}.oa-bk__request{border:1px solid var(--uid-border-default);background:var(--uid-surface-raised);min-width:0;max-width:100%;color:var(--uid-text-primary);font:inherit;cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:4px 8px;display:inline-flex}.oa-bk__request:hover{border-color:var(--uid-text-tertiary)}.oa-bk__request.is-active{border-color:var(--uid-accent);box-shadow:0 0 0 1px var(--uid-accent)}.oa-bk__request:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:1px}.oa-bk__request-path{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;overflow:hidden}.oa-bk__params{flex-direction:column;gap:6px;display:flex}.oa-bk__param{border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.oa-bk__param-main{grid-template-columns:104px minmax(0,1fr) minmax(120px,180px) auto auto;grid-template-areas:"in name type req end";align-items:center;gap:6px;display:grid}.oa-bk__param-in{grid-area:in}.oa-bk__param-name{grid-area:name;min-width:0}.oa-bk__param-type{grid-area:type;min-width:0}.oa-bk__param-req{white-space:nowrap;grid-area:req}.oa-bk__param-main>.oa-icon-button,.oa-bk__param-tag{grid-area:end;justify-self:end}.oa-bk__param-tag{color:var(--uid-text-tertiary);white-space:nowrap;font-size:11px}.oa-bk__param-more{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;display:grid}.oa-bk .uid-select__value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.oa-bk__auth{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));align-items:start;gap:8px;display:grid}.oa-bk__wide{grid-column:1/-1}.oa-bk__media{flex:0 300px;min-width:0}.oa-bk__body-req{padding-bottom:6px}.oa-bk__body-remove{margin-left:auto}.oa-bk__error{color:var(--uid-danger);margin:0;font-size:12px}.oa-bk__response{flex-direction:column;gap:6px;display:flex}.oa-bk__response-main{align-items:center;gap:6px;display:flex}.oa-bk__status{flex:none;width:84px}.oa-bk__footer{justify-content:flex-end;padding-top:4px;display:flex}.oa-bk__format--panel{display:none}.oa-bk__form .uid-checkbox__text{font-size:13px}.oa-bk__example-toggle{color:var(--uid-text-tertiary)}.oa-bk__example-toggle.is-on{color:var(--uid-accent)}@container (width<=520px){.oa-bk__format--bar{display:none}.oa-bk__format--panel{width:max-content;margin:0 0 10px auto;display:flex}}@container (width<=560px){.oa-bk__param-main{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"name name end""in type req"}.oa-bk__param-more{grid-template-columns:minmax(0,1fr)}.oa-bk__method{width:100%}}@media (max-width:480px){.oa-bk--editable{padding:2px 10px 10px}}.oa-action{text-transform:uppercase}.oa-action--send{color:var(--oa-send,var(--uid-success));background:var(--oa-send-bg,var(--uid-success-subtle))}.oa-action--receive{color:var(--oa-receive,var(--uid-info));background:var(--oa-receive-bg,var(--uid-info-subtle))}.oa-async__param{color:var(--uid-primary);font-weight:600}.oa-async__address{word-break:break-all;font-size:13px}.oa-async__summary{color:var(--uid-text-muted);margin:0 0 8px}.oa-async__meta{color:var(--uid-text-muted);font-size:12px}.oa-async__part{margin-top:10px}.oa-async-message{border:1px solid var(--uid-border);border-radius:8px;margin-top:12px;padding:12px 14px}.oa-async-message__head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.oa-async-message__head .oa-block__title{margin:0}.oa-async-op__body{flex-direction:column;gap:4px;display:flex}.oa-async-reply{border-left:3px solid var(--uid-border);padding-left:12px}.oa-async-server{margin-bottom:8px}`,flow:`.fl-view,.fl-editor{--fl-bg:var(--uid-surface-base,#fafafa);--fl-grid:color-mix(in srgb, var(--uid-text-tertiary,#a1a1aa) 45%, transparent);--fl-node-bg:var(--uid-surface-raised,#fff);--fl-node-border:var(--uid-border-default,#d4d4d8);--fl-node-text:var(--uid-text-primary,#18181b);--fl-node-muted:var(--uid-text-secondary,#71717a);--fl-edge:color-mix(in srgb, var(--uid-text-tertiary,#a1a1aa) 85%, var(--uid-text-secondary,#71717a));--fl-accent:var(--uid-accent,#14b8a6);--fl-accent-subtle:var(--uid-accent-subtle,#f0fdfa);--fl-success:var(--uid-success,#059669);--fl-success-subtle:var(--uid-success-subtle,#ecfdf5);--fl-danger:var(--uid-danger,#e11d48);--fl-danger-subtle:var(--uid-danger-subtle,#fff1f2);--fl-warning:var(--uid-warning,#d97706);--fl-warning-subtle:var(--uid-warning-subtle,#fffbeb);--fl-info:var(--uid-info,#2563eb);--fl-info-subtle:var(--uid-info-subtle,#eff6ff);--fl-shadow:color-mix(in srgb, var(--uid-text-primary,#18181b) 9%, transparent);--fl-font:var(--uid-font-family-sans,system-ui, sans-serif);--fl-radius:var(--uid-radius-lg,12px);height:100%;min-height:360px;font-family:var(--fl-font);color:var(--fl-node-text);display:flex;position:relative}.fl-canvas{min-width:0;min-height:inherit;background:var(--fl-bg);border-radius:inherit;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;outline:none;flex:auto;position:relative;overflow:hidden}.fl-canvas.is-panning,.fl-canvas.is-space,.fl-canvas.is-space *{cursor:grabbing}.fl-canvas.is-editable{cursor:default}.fl-canvas.is-connecting,.fl-canvas.is-connecting *{cursor:crosshair}.fl-svg{width:100%;height:100%;font-family:var(--fl-font);display:block;position:absolute;inset:0}.fl-canvas.is-animating .fl-viewport{transition:transform .24s var(--uid-ease-out,ease-out)}.fl-grid-dot{fill:var(--fl-grid)}.fl-group rect{fill:color-mix(in srgb, var(--fl-node-muted) 6%, transparent);stroke:color-mix(in srgb, var(--fl-node-muted) 35%, transparent);stroke-dasharray:5 4;stroke-width:1px}.fl-group--region rect{fill:none;stroke:color-mix(in srgb, var(--fl-info) 45%, transparent);stroke-dasharray:8 5;stroke-width:1.25px}.fl-group--region .fl-group__label{fill:var(--fl-info);letter-spacing:.02em}.fl-group__label{letter-spacing:.04em;text-transform:uppercase;fill:var(--fl-node-muted);font-size:11px;font-weight:600}.fl-edge__hit{fill:none;stroke:#0000;stroke-width:16px;pointer-events:stroke;cursor:pointer}.fl-edge__line{fill:none;stroke:var(--fl-edge);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;transition:stroke .12s}.fl-edge.is-hovered .fl-edge__line{stroke:var(--fl-node-muted);stroke-width:2px}.fl-edge.is-association .fl-edge__line{stroke-dasharray:3 4;stroke-width:1.2px}.fl-edge.is-traversed .fl-edge__line{stroke:color-mix(in srgb, var(--fl-success) 75%, var(--fl-edge));stroke-width:2px}.fl-edge.is-path .fl-edge__line{stroke:var(--fl-accent);stroke-width:2.6px}.fl-edge__flow{fill:none;stroke:color-mix(in srgb, var(--fl-node-bg) 80%, transparent);stroke-width:1.4px;stroke-dasharray:2 12;stroke-linecap:round;pointer-events:none;animation:1.1s linear infinite fl-flow}.fl-edge.is-disabled .fl-edge__line{stroke-dasharray:5 5;opacity:.45}.fl-edge.is-selected .fl-edge__line,.fl-edge.is-focused .fl-edge__line{stroke:var(--fl-accent);stroke-width:2.6px}.fl-edge.has-error .fl-edge__line{stroke:var(--fl-danger)}.fl-edge.has-warning .fl-edge__line{stroke:var(--fl-warning)}.fl-arrow path{fill:var(--fl-edge)}.fl-arrow--accent path{fill:var(--fl-accent)}.fl-arrow--success path{fill:color-mix(in srgb, var(--fl-success) 75%, var(--fl-edge))}.fl-arrow--muted path{fill:var(--fl-edge);opacity:.45}.fl-arrow--danger path{fill:var(--fl-danger)}.fl-edge-label{cursor:pointer;outline:none}.fl-edge-label__bg{fill:var(--fl-bg);stroke:var(--uid-border-subtle,#e4e4e7);stroke-width:1px}.fl-edge-label__text{fill:var(--fl-node-muted);font-size:12px;font-weight:500}.fl-edge-label__trigger{color:var(--fl-warning)}.fl-edge-label.is-path .fl-edge-label__bg{stroke:color-mix(in srgb, var(--fl-accent) 55%, transparent);fill:var(--fl-accent-subtle)}.fl-edge-label.is-path .fl-edge-label__text{fill:var(--uid-accent-text,var(--fl-accent))}.fl-edge-label.is-selected .fl-edge-label__bg,.fl-edge-label.is-focused .fl-edge-label__bg{stroke:var(--fl-accent);stroke-width:1.5px}.fl-edge-label.is-disabled{opacity:.5}.fl-edge-label.is-disabled .fl-edge-label__text{text-decoration:line-through}.fl-edge-label:not(:has(rect)){pointer-events:none}.fl-node-wrap{cursor:pointer;outline:none}.fl-canvas.is-editable .fl-node-wrap{cursor:grab}.fl-canvas.is-dragging .fl-node-wrap{cursor:grabbing}.fl-node__body{fill:var(--fl-node-bg);stroke:var(--fl-node-border);stroke-width:1px;transition:stroke .12s,fill .12s}.fl-node__shadow{fill:var(--fl-shadow)}.fl-node-wrap.is-hovered .fl-node__body{stroke:var(--uid-border-hover,#a1a1aa)}.fl-node__label{fill:var(--fl-node-text);pointer-events:none;font-size:14px;font-weight:500}.fl-node__label--outside{fill:var(--fl-node-muted);font-size:13px}.fl-node__desc{fill:var(--fl-node-muted);font-size:12px;font-weight:400}.fl-node__tile rect{fill:var(--fl-accent-subtle)}.fl-node__tile svg{color:var(--uid-accent-text,var(--fl-accent))}.fl-node--rect.fl-node .fl-node__tile rect{fill:var(--fl-info-subtle)}.fl-node--rect.fl-node .fl-node__tile svg{color:var(--fl-info)}.fl-node__body--start{fill:var(--fl-success-subtle);stroke:var(--fl-success);stroke-width:1.5px}.fl-node--circle .fl-node__glyph{color:var(--fl-success);fill:var(--fl-success)}.fl-node__body--end{fill:var(--fl-node-bg);stroke:var(--fl-node-text);stroke-width:3px}.fl-node__end-core{fill:var(--fl-node-text)}.fl-node__body--event{fill:var(--fl-node-bg);stroke:var(--fl-warning);stroke-width:1.5px}.fl-node__event-inner{fill:none;stroke:var(--fl-warning);stroke-width:1.2px}.fl-node--event .fl-node__glyph{color:var(--fl-warning)}.fl-node__body--any{fill:var(--fl-node-bg);stroke:var(--fl-node-muted);stroke-width:1.5px;stroke-dasharray:3 3}.fl-node--any .fl-node__glyph{color:var(--fl-node-muted)}.fl-node__regions-rule,.fl-node__region-divider{stroke:var(--fl-node-border);stroke-width:1px}.fl-node__region-divider{stroke-dasharray:4 3}.fl-node__region-label{fill:var(--fl-node-muted);font-size:11px;font-weight:500}.fl-node__join rect{fill:var(--fl-info-subtle);stroke:color-mix(in srgb, var(--fl-info) 55%, transparent);stroke-width:1px}.fl-node__join text{fill:var(--fl-info);font-size:10.5px;font-weight:600}.fl-node--note .fl-node__body{fill:var(--fl-warning-subtle);stroke:color-mix(in srgb, var(--fl-warning) 45%, transparent)}.fl-node--note .fl-node__shadow{display:none}.fl-node--note .fl-node__label{fill:var(--fl-node-muted);font-size:13px;font-weight:400}.fl-node--diamond .fl-node__body{fill:var(--fl-node-bg)}.fl-node.fl-tone--accent .fl-node__body{stroke:var(--fl-accent);stroke-width:2px}.fl-node.fl-tone--success .fl-node__body{stroke:color-mix(in srgb, var(--fl-success) 70%, var(--fl-node-border));stroke-width:1.5px}.fl-node.fl-tone--danger .fl-node__body{stroke:var(--fl-danger);stroke-width:2px;fill:color-mix(in srgb, var(--fl-danger-subtle) 60%, var(--fl-node-bg))}.fl-node.fl-tone--warning .fl-node__body{stroke:var(--fl-warning);stroke-width:1.5px;stroke-dasharray:6 3}.fl-node.fl-tone--neutral .fl-node__body{stroke-dasharray:3 3}.fl-node.fl-tone--neutral .fl-node__label{fill:var(--fl-node-muted)}.fl-node.is-on-path:not(.has-status) .fl-node__body{stroke:color-mix(in srgb, var(--fl-accent) 60%, var(--fl-node-border))}.fl-node__halo{fill:none;stroke:var(--fl-accent);stroke-width:6px;opacity:.22;transform-box:fill-box;transform-origin:50%;pointer-events:none;animation:1.8s ease-in-out infinite fl-pulse}.fl-node.is-current .fl-node__halo{opacity:.32}.fl-node__ring{fill:none;stroke:var(--fl-accent);stroke-width:2px;pointer-events:none}.fl-node.is-focused:not(.is-selected) .fl-node__ring{stroke-dasharray:4 3}.fl-node__chip>circle,.fl-node__chip>rect{fill:var(--fl-node-muted);stroke:var(--fl-bg);stroke-width:2px}.fl-node__chip svg{color:#fff}.fl-node__chip text{fill:#fff;font-variant-numeric:tabular-nums;font-size:11px;font-weight:700}.fl-tone--success .fl-node__chip>circle,.fl-tone--success .fl-node__chip>rect{fill:var(--fl-success)}.fl-tone--danger .fl-node__chip>circle,.fl-tone--danger .fl-node__chip>rect{fill:var(--fl-danger)}.fl-tone--warning .fl-node__chip>circle,.fl-tone--warning .fl-node__chip>rect{fill:var(--fl-warning)}.fl-tone--warning .fl-node__chip svg{color:#422006}.fl-tone--warning .fl-node__chip text{fill:#422006}.fl-tone--accent .fl-node__chip>circle,.fl-tone--accent .fl-node__chip>rect{fill:var(--fl-accent)}.fl-tone--info .fl-node__chip>circle,.fl-tone--info .fl-node__chip>rect{fill:var(--fl-info)}.fl-node__chip--pulse .fl-node__pulse{opacity:.35;stroke:none;transform-box:fill-box;transform-origin:50%;animation:1.6s ease-out infinite fl-ping}.fl-node__count rect,.fl-edge-count rect{fill:var(--uid-surface-raised,#fff);stroke:var(--uid-border-default,#d4d4d8);stroke-width:1px}.fl-node__count text,.fl-edge-count text{fill:var(--uid-text-secondary,#71717a);font-variant-numeric:tabular-nums;font-size:11px;font-weight:600}.fl-node__count--accent rect,.fl-edge-label.is-path .fl-edge-count rect{fill:var(--fl-accent-subtle);stroke:color-mix(in srgb, var(--fl-accent) 70%, transparent)}.fl-node__count--accent text,.fl-edge-label.is-path .fl-edge-count text{fill:var(--uid-accent-text,var(--fl-accent))}.fl-node__count--danger rect{fill:var(--fl-danger-subtle);stroke:color-mix(in srgb, var(--fl-danger) 70%, transparent)}.fl-node__count--danger text{fill:var(--fl-danger)}.fl-node__enter{cursor:pointer}.fl-node__enter rect{fill:var(--fl-node-bg);stroke:var(--fl-node-border)}.fl-node__enter svg{color:var(--fl-node-muted)}.fl-node__enter:hover rect{stroke:var(--fl-accent);fill:var(--fl-accent-subtle)}.fl-node__enter:hover svg{color:var(--uid-accent-text,var(--fl-accent))}.fl-node__issue circle{stroke:var(--fl-bg);stroke-width:2px}.fl-node.has-error .fl-node__issue circle{fill:var(--fl-danger)}.fl-node.has-warning .fl-node__issue circle{fill:var(--fl-warning)}.fl-node__issue text{fill:#fff;font-size:11px;font-weight:800}.fl-node.has-error .fl-node__body{stroke:var(--fl-danger)}.fl-node.is-disabled{opacity:.5}.fl-node.is-disabled .fl-node__body{stroke-dasharray:4 3}.fl-node.is-disabled .fl-node__label tspan:not(.fl-node__desc){text-decoration:line-through}.fl-node-wrap.is-drop-target .fl-node__body{stroke:var(--fl-accent);stroke-width:2px}.fl-handle{cursor:crosshair}.fl-handle__hit{fill:#0000}.fl-handle__dot{fill:var(--fl-node-bg);stroke:var(--fl-accent);stroke-width:1.6px;transition:r .1s}.fl-handle:hover .fl-handle__dot,.fl-handle.is-snapped .fl-handle__dot{fill:var(--fl-accent);r:6.5}.fl-edge-end{fill:var(--fl-node-bg);stroke:var(--fl-accent);stroke-width:2px;cursor:move}.fl-edge-end:hover{fill:var(--fl-accent)}.fl-connect-preview{fill:none;stroke:var(--fl-accent);stroke-width:2px;stroke-dasharray:6 4;pointer-events:none}.fl-connect-preview.is-snapped{stroke-dasharray:none}.fl-band{fill:color-mix(in srgb, var(--fl-accent) 10%, transparent);stroke:var(--fl-accent);stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke;pointer-events:none}.fl-controls{background:var(--fl-node-bg);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);cursor:default;z-index:2;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;bottom:12px;left:12px}.fl-controls__zoom{font-variant-numeric:tabular-nums;min-width:52px}.fl-controls__sep{background:var(--uid-border-subtle,#e4e4e7);align-self:stretch;width:1px;margin:4px 2px}.fl-minimap{background:color-mix(in srgb, var(--fl-node-bg) 92%, transparent);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);cursor:pointer;z-index:2;position:absolute;bottom:12px;right:12px;overflow:hidden}.fl-minimap svg{touch-action:none;display:block}.fl-minimap__node{fill:color-mix(in srgb, var(--fl-node-muted) 45%, transparent)}.fl-minimap__node.is-current{fill:var(--fl-accent)}.fl-minimap__node.is-selected{fill:var(--uid-accent-text,var(--fl-accent))}.fl-minimap__group{fill:color-mix(in srgb, var(--fl-node-muted) 10%, transparent)}.fl-minimap__view{fill:color-mix(in srgb, var(--fl-accent) 8%, transparent);stroke:var(--fl-accent)}.fl-hovebar{background:var(--fl-node-bg);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);cursor:default;z-index:3;white-space:nowrap;align-items:center;gap:6px;padding:4px 6px 4px 10px;display:flex;position:absolute;transform:translate(-50%,calc(-100% - 8px))}.fl-hovebar:after{content:"";height:10px;position:absolute;bottom:-10px;left:0;right:0}.fl-hovebar--edge{transform:translate(-50%,calc(-100% - 6px))}.fl-nav__join{flex:none;margin-left:4px}.fl-nav{background:var(--fl-node-bg);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--uid-radius-md,8px);max-width:min(640px,100% - 24px);box-shadow:var(--uid-shadow-sm);cursor:default;z-index:2;align-items:center;gap:4px;width:max-content;padding:3px 12px 3px 3px;display:flex;position:absolute;top:12px;left:12px;right:12px}.fl-nav__crumbs{flex:auto;min-width:0}.fl-status{background:color-mix(in srgb, var(--fl-node-bg) 94%, transparent);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--uid-radius-md,8px);max-width:calc(100% - 24px);box-shadow:var(--uid-shadow-sm);font-size:var(--uid-font-size-sm,13px);color:var(--fl-node-muted);cursor:default;z-index:2;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;padding:4px 6px 4px 12px;display:flex;position:absolute;top:12px;right:12px}.fl-view:has(.fl-nav) .fl-status{top:60px}.fl-status__text{font-variant-numeric:tabular-nums;white-space:nowrap}.fl-status__summary{flex-wrap:wrap;gap:4px;display:inline-flex}.fl-status__dot{background:var(--fl-node-muted);border-radius:50%;flex:none;width:8px;height:8px}.fl-status__dot.is-live{background:var(--fl-success);box-shadow:0 0 0 0 color-mix(in srgb, var(--fl-success) 60%, transparent);animation:2s ease-out infinite fl-live}.fl-status__dot.is-stale{background:var(--fl-warning)}.fl-status__dot.is-error{background:var(--fl-danger)}.fl-busy{background:color-mix(in srgb, var(--fl-bg) 60%, transparent);z-index:4;place-items:center;display:grid;position:absolute;inset:0}.fl-empty{text-align:center;cursor:default;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:24px;display:flex;position:absolute;inset:0}.fl-empty>*{pointer-events:auto}.fl-empty__title{font-size:var(--uid-font-size-lg,16px);color:var(--fl-node-text);margin:0;font-weight:600}.fl-empty__hint{max-width:360px;color:var(--fl-node-muted);font-size:var(--uid-font-size-sm,13px);margin:0;line-height:1.5}.fl-layout-error{color:var(--fl-danger);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.fl-details{flex-direction:column;gap:14px;display:flex}.fl-details__head{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fl-details__desc{color:var(--uid-text-secondary);margin:0;line-height:1.5}.fl-details__enter{align-self:flex-start}.fl-details__section{font-size:var(--uid-font-size-xs,12px);letter-spacing:.04em;text-transform:uppercase;color:var(--uid-text-secondary);margin:4px 0 0;font-weight:600}.fl-details code{font-family:var(--uid-font-family-mono,monospace);font-size:.92em}@keyframes fl-pulse{0%,to{opacity:.12;stroke-width:4px}50%{opacity:.34;stroke-width:9px}}@keyframes fl-ping{0%{opacity:.5;transform:scale(.8)}to{opacity:0;transform:scale(1.9)}}@keyframes fl-flow{to{stroke-dashoffset:-14px}}@keyframes fl-live{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--fl-success) 55%, transparent)}70%,to{box-shadow:0 0 0 6px #0000}}@media (prefers-reduced-motion:reduce){.fl-node__halo,.fl-node__chip--pulse .fl-node__pulse,.fl-edge__flow,.fl-status__dot.is-live{animation:none}.fl-canvas.is-animating .fl-viewport{transition:none}}@media (max-width:640px){.fl-minimap,.fl-status__summary,.fl-controls__zoom{display:none}}.fl-editor{background:var(--fl-node-bg);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--fl-radius);flex-direction:column;overflow:hidden}.fl-toolbar{border-bottom:1px solid var(--uid-border-subtle,#e4e4e7);background:var(--fl-node-bg);box-sizing:border-box;flex:none;align-items:center;gap:2px;min-height:44px;padding:6px 8px;display:flex}.fl-toolbar__sep{background:var(--uid-border-subtle,#e4e4e7);width:1px;height:20px;margin:0 6px}.fl-toolbar__spacer{flex:auto}.fl-toolbar__text{white-space:nowrap}.fl-editor__body{flex:auto;min-height:0;display:flex}.fl-editor__palette{border-right:1px solid var(--uid-border-subtle,#e4e4e7);box-sizing:border-box;flex:none;width:196px;padding:12px;overflow-y:auto}.fl-editor__canvas{flex:auto;min-width:0;display:flex;position:relative}.fl-editor__canvas .fl-canvas{border-radius:0}.fl-editor__side{border-left:1px solid var(--uid-border-subtle,#e4e4e7);box-sizing:border-box;flex:none;width:312px;padding:4px 14px 16px;overflow-y:auto}.fl-panel-title{font-size:var(--uid-font-size-xs,12px);letter-spacing:.04em;text-transform:uppercase;color:var(--fl-node-muted);margin:2px 2px 10px;font-weight:600}.fl-palette{flex-direction:column;gap:6px;display:flex}.fl-palette__item-wrap{display:flex}.fl-palette__item.uid-button{cursor:grab;touch-action:none;flex:auto;justify-content:flex-start}.fl-palette__hint{font-size:var(--uid-font-size-xs,12px);color:var(--fl-node-muted);margin:8px 2px 0;line-height:1.45}.fl-palette-ghost{z-index:1000;background:var(--uid-surface-raised,#fff);border:1.5px solid var(--uid-accent,#14b8a6);box-shadow:var(--uid-shadow-lg);color:var(--uid-text-primary);font:500 13px var(--uid-font-family-sans,system-ui, sans-serif);pointer-events:none;opacity:.92;border-radius:10px;padding:8px 14px;position:fixed;transform:translate(-50%,-50%)}.fl-props{flex-direction:column;gap:14px;padding-top:14px;display:flex}.fl-props__muted{color:var(--fl-node-muted);font-size:var(--uid-font-size-sm,13px);margin:0;line-height:1.5}.fl-props__route{color:var(--fl-node-text);font-weight:500}.fl-props__count{margin:0;font-weight:600}.fl-props__tools{flex-wrap:wrap;gap:4px;display:flex}.fl-props__section{border-top:1px solid var(--uid-border-subtle,#e4e4e7);flex-direction:column;gap:8px;padding-top:12px;display:flex}.fl-props__section h4{font-size:var(--uid-font-size-xs,12px);letter-spacing:.04em;text-transform:uppercase;color:var(--fl-node-muted);margin:0;font-weight:600}.fl-props__row{gap:6px;display:flex}.fl-props__kv{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) auto;align-items:center;gap:4px;display:grid}.fl-props__add,.fl-props__delete{align-self:flex-start}.fl-props__condition input{font-family:var(--uid-font-family-mono,monospace)}.fl-issues__summary{font-size:var(--uid-font-size-sm,13px);color:var(--fl-node-muted);margin:14px 0 8px}.fl-issues__none{color:var(--fl-success);font-size:var(--uid-font-size-sm,13px);align-items:center;gap:8px;margin:8px 0;display:flex}.fl-issues__list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.fl-issue.uid-button{text-align:left;white-space:normal;justify-content:flex-start;align-items:flex-start;width:100%;height:auto;min-height:32px;padding-top:6px;padding-bottom:6px}.fl-issue__text{font-weight:400;line-height:1.4}.fl-issue--error .uid-icon{color:var(--fl-danger)}.fl-issue--warning .uid-icon{color:var(--fl-warning)}.fl-tab-issues__count{margin-left:6px}.fl-hint{background:color-mix(in srgb, var(--fl-node-bg) 85%, transparent);color:var(--fl-node-muted);font-size:var(--uid-font-size-xs,12px);pointer-events:none;white-space:nowrap;border-radius:999px;margin:0;padding:4px 10px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.fl-editor-empty{flex-direction:column;align-items:center;gap:8px;max-width:400px;display:flex}.fl-editor-empty__actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px;display:flex}.fl-menu-label{flex:auto}.fl-menu-shortcut{font:inherit;font-size:var(--uid-font-size-xs,12px);color:var(--uid-text-tertiary,#a1a1aa);margin-left:16px}.fl-import{flex-direction:column;gap:12px;display:flex}.fl-import__source textarea{font-family:var(--uid-font-family-mono,monospace);font-size:13px}.fl-editor.is-narrow .fl-hint{display:none}.fl-toggle.uid-button.is-active{background:var(--fl-accent-subtle);color:var(--uid-accent-text,var(--fl-accent))}.fl-props__head{align-items:center;gap:8px;min-width:0;display:flex}.fl-props__head .uid-icon,.fl-props__head svg{color:var(--fl-node-muted);flex:none}.fl-props__kind{font-weight:600;font-size:var(--uid-font-size-sm,13px)}.fl-props__id{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--uid-font-family-mono,monospace);font-size:var(--uid-font-size-xs,12px);color:var(--fl-node-muted);margin-left:auto;overflow:hidden}.fl-props__transition.uid-button{justify-content:flex-start;width:100%}.fl-node__glyph-text{fill:var(--fl-node-text);pointer-events:none;font-size:20px;font-weight:600}.fl-node__number{fill:var(--fl-node-muted,var(--fl-node-text));pointer-events:none;font-size:11px;font-weight:600}.fl-node__body--plain{stroke:none}.fl-node__store-line{fill:none;stroke:var(--fl-node-border);stroke-width:1.5px}`,editor:`.dsk-wysiwyg-slash{z-index:1000;background:var(--dsk-wysiwyg-bg,#fff);border:1px solid var(--dsk-wysiwyg-border,#e5e7eb);border-radius:8px;flex-direction:column;gap:1px;min-width:220px;max-width:320px;max-height:280px;padding:4px;display:flex;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #00000014}.dsk-wysiwyg-slash__item{text-align:left;cursor:pointer;font:inherit;color:var(--dsk-wysiwyg-fg,#1f2937);background:0 0;border:0;border-radius:4px;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 10px;font-size:13px;display:flex}.dsk-wysiwyg-slash__item:hover,.dsk-wysiwyg-slash__item.is-active{background:var(--dsk-wysiwyg-btn-hover-bg,#0000000d)}.dsk-wysiwyg-slash__label{font-weight:500}.dsk-wysiwyg-slash__hint{color:var(--dsk-wysiwyg-fg-muted,#6b7280);font-size:11px}.dsk-wysiwyg{min-height:var(--dsk-wysiwyg-min-height,200px);max-height:var(--dsk-wysiwyg-max-height,none);--dsk-wysiwyg-bg:#fff;--dsk-wysiwyg-fg:#1f2937;--dsk-wysiwyg-fg-muted:#6b7280;--dsk-wysiwyg-border:#e5e7eb;--dsk-wysiwyg-border-focus:#2dd4bf;--dsk-wysiwyg-radius:8px;--dsk-wysiwyg-padding:12px 16px;--dsk-wysiwyg-toolbar-bg:#f9fafb;--dsk-wysiwyg-btn-active-bg:#2dd4bf29;--dsk-wysiwyg-btn-active-fg:#0d9488;--dsk-wysiwyg-btn-hover-bg:#0000000d;--dsk-wysiwyg-link-color:#2563eb;--dsk-wysiwyg-code-bg:#f3f4f6;--dsk-wysiwyg-code-fg:#b91c1c;--dsk-wysiwyg-blockquote-border:#d1d5db;--dsk-wysiwyg-error-bg:#fef2f2;--dsk-wysiwyg-error-fg:#b91c1c;--dsk-wysiwyg-tok-keyword:#7c3aed;--dsk-wysiwyg-tok-string:#16a34a;--dsk-wysiwyg-tok-comment:#6b7280;--dsk-wysiwyg-tok-number:#b45309;--dsk-wysiwyg-tok-tag:#2563eb;--dsk-wysiwyg-tok-attr:#b45309;--dsk-wysiwyg-tok-function:#0891b2;--dsk-wysiwyg-tok-punct:#6b7280;border:1px solid var(--dsk-wysiwyg-border);border-radius:var(--dsk-wysiwyg-radius);background:var(--dsk-wysiwyg-bg);color:var(--dsk-wysiwyg-fg);flex-direction:column;font-family:inherit;font-size:14px;line-height:1.55;transition:border-color .12s;display:flex;position:relative;overflow:hidden}.dsk-wysiwyg:focus-within{border-color:var(--dsk-wysiwyg-border-focus)}.dsk-wysiwyg--resizable{resize:vertical;overflow:hidden}.dsk-wysiwyg--readonly{background:var(--dsk-wysiwyg-toolbar-bg)}.dsk-wysiwyg--fullscreen{z-index:var(--dsk-wysiwyg-fullscreen-z,1000);background:var(--dsk-wysiwyg-bg);border-width:0;border-radius:0;min-height:0;max-height:none;position:fixed;inset:0;height:auto!important}.dsk-wysiwyg--fullscreen .dsk-wysiwyg__content{padding-inline:max(16px,50% - 480px)}html.dsk-wysiwyg-fullscreen-open,html.dsk-wysiwyg-fullscreen-open body{overflow:hidden}.dsk-wysiwyg-toolbar{background:var(--dsk-wysiwyg-toolbar-bg);border-bottom:1px solid var(--dsk-wysiwyg-border);flex-wrap:wrap;gap:2px;padding:6px 8px;display:flex}.dsk-wysiwyg-toolbar__btn{min-width:28px;height:28px;color:var(--dsk-wysiwyg-fg);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0 8px;font-size:13px;transition:background 80ms,color 80ms;display:inline-flex}.dsk-wysiwyg-toolbar__btn:hover:not(:disabled){background:var(--dsk-wysiwyg-btn-hover-bg)}.dsk-wysiwyg-toolbar__btn.is-active{background:var(--dsk-wysiwyg-btn-active-bg);color:var(--dsk-wysiwyg-btn-active-fg)}.dsk-wysiwyg-toolbar__btn:disabled{opacity:.4;cursor:not-allowed}.dsk-wysiwyg-toolbar__divider{background:var(--dsk-wysiwyg-border);width:1px;margin:4px}.dsk-wysiwyg__content{padding:var(--dsk-wysiwyg-padding);word-wrap:break-word;white-space:pre-wrap;cursor:text;outline:none;flex:auto;min-height:0;overflow-y:auto}.dsk-wysiwyg__source-wrap{background:var(--dsk-wysiwyg-code-bg);flex:auto;min-height:0;position:relative}.dsk-wysiwyg__source,.dsk-wysiwyg__source-highlight{box-sizing:border-box;width:100%;height:100%;padding:var(--dsk-wysiwyg-padding);tab-size:2;letter-spacing:0;white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word;margin:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.5;display:block}.dsk-wysiwyg__source-highlight{color:var(--dsk-wysiwyg-fg);pointer-events:none;background:0 0;border:0;position:absolute;inset:0;overflow:hidden}.dsk-wysiwyg__source{z-index:1;resize:none;color:#0000;caret-color:var(--dsk-wysiwyg-fg);background:0 0;border:0;outline:none;position:relative;overflow:auto}.dsk-wysiwyg__source::selection{color:#0000;background:#2dd4bf4d}.dsk-wysiwyg__source::placeholder{color:var(--dsk-wysiwyg-fg-muted);opacity:.6}.dsk-wysiwyg__content p:not([data-dsk-preview-live] *){margin:0 0 .75em}.dsk-wysiwyg__content p:last-child:not([data-dsk-preview-live] *){margin-bottom:0}.dsk-wysiwyg__content h1:not([data-dsk-preview-live] *),.dsk-wysiwyg__content h2:not([data-dsk-preview-live] *),.dsk-wysiwyg__content h3:not([data-dsk-preview-live] *){margin:1em 0 .5em;font-weight:600;line-height:1.25}.dsk-wysiwyg__content h1:not([data-dsk-preview-live] *){font-size:1.6em}.dsk-wysiwyg__content h2:not([data-dsk-preview-live] *){font-size:1.35em}.dsk-wysiwyg__content h3:not([data-dsk-preview-live] *){font-size:1.15em}.dsk-wysiwyg__content ul:not([data-dsk-preview-live] *),.dsk-wysiwyg__content ol:not([data-dsk-preview-live] *){margin:.5em 0;padding-left:1.5em}.dsk-wysiwyg__content li:not([data-dsk-preview-live] *){margin:.2em 0}.dsk-wysiwyg__content blockquote:not([data-dsk-preview-live] *){border-left:3px solid var(--dsk-wysiwyg-blockquote-border);color:var(--dsk-wysiwyg-fg-muted);margin:.5em 0;padding-left:1em}.dsk-wysiwyg__content code:not([data-dsk-preview-live] *){background:var(--dsk-wysiwyg-code-bg);color:var(--dsk-wysiwyg-code-fg);border-radius:3px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.92em}.dsk-wysiwyg__content pre:not([data-dsk-preview-live] *){color:#f4f4f5;background:#18181b;border-radius:6px;margin:.5em 0;padding:12px 14px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.9em;overflow-x:auto}.dsk-wysiwyg__content pre code:not([data-dsk-preview-live] *){color:inherit;background:0 0;padding:0}.dsk-wysiwyg__content pre[data-dsk-preview-state=view]{display:none}.dsk-wysiwyg__content pre[data-dsk-preview-state=edit],.dsk-wysiwyg__content pre[data-dsk-preview-state=error]{border-bottom-right-radius:0;border-bottom-left-radius:0;margin-bottom:0}.dsk-wysiwyg__preview{cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:6px;margin:.5em 0;padding:8px;overflow-x:auto}.dsk-wysiwyg__preview:empty{display:none}.dsk-wysiwyg__preview>svg{max-width:100%;height:auto;margin:0 auto;display:block}.dsk-wysiwyg__preview:hover{border-color:var(--dsk-wysiwyg-border)}.dsk-wysiwyg--readonly .dsk-wysiwyg__preview{cursor:default}.dsk-wysiwyg--readonly .dsk-wysiwyg__preview:hover{border-color:#0000}pre[data-dsk-preview-state=edit]+.dsk-wysiwyg__preview,pre[data-dsk-preview-state=error]+.dsk-wysiwyg__preview{border-color:var(--dsk-wysiwyg-border);cursor:default;border-top-left-radius:0;border-top-right-radius:0;margin-top:0}.dsk-wysiwyg__preview[data-error]{padding:0}.dsk-wysiwyg__preview[data-dsk-preview-live]{cursor:auto;-webkit-user-select:text;user-select:text;white-space:normal;word-wrap:normal;padding:0;overflow:visible}.dsk-wysiwyg__preview[data-dsk-preview-live]:hover{border-color:#0000}.dsk-wysiwyg__preview-error{background:var(--dsk-wysiwyg-error-bg);color:var(--dsk-wysiwyg-error-fg);white-space:pre-wrap;padding:8px 12px;font-size:.9em}.dsk-wysiwyg .dsk-tok-keyword{color:var(--dsk-wysiwyg-tok-keyword)}.dsk-wysiwyg .dsk-tok-string{color:var(--dsk-wysiwyg-tok-string)}.dsk-wysiwyg .dsk-tok-comment{color:var(--dsk-wysiwyg-tok-comment);font-style:italic}.dsk-wysiwyg .dsk-tok-number{color:var(--dsk-wysiwyg-tok-number)}.dsk-wysiwyg .dsk-tok-tag{color:var(--dsk-wysiwyg-tok-tag)}.dsk-wysiwyg .dsk-tok-attr{color:var(--dsk-wysiwyg-tok-attr)}.dsk-wysiwyg .dsk-tok-function{color:var(--dsk-wysiwyg-tok-function)}.dsk-wysiwyg .dsk-tok-punct{color:var(--dsk-wysiwyg-tok-punct)}.dsk-wysiwyg__content a:not([data-dsk-preview-live] *){color:var(--dsk-wysiwyg-link-color);text-decoration:underline}.dsk-wysiwyg__content img:not([data-dsk-preview-live] *){border-radius:4px;max-width:100%;height:auto}.dsk-wysiwyg__content hr:not([data-dsk-preview-live] *){border:0;border-top:1px solid var(--dsk-wysiwyg-border);margin:1em 0}.dsk-wysiwyg__content table:not([data-dsk-preview-live] *){border-collapse:collapse;width:100%;margin:.75em 0}.dsk-wysiwyg__content th:not([data-dsk-preview-live] *),.dsk-wysiwyg__content td:not([data-dsk-preview-live] *){border:1px solid var(--dsk-wysiwyg-border);vertical-align:top;min-width:40px;padding:6px 10px}.dsk-wysiwyg__content th:not([data-dsk-preview-live] *){background:var(--dsk-wysiwyg-toolbar-bg);text-align:left;font-weight:600}.dsk-wysiwyg--empty .dsk-wysiwyg__content:before{content:attr(data-placeholder);color:var(--dsk-wysiwyg-fg-muted);pointer-events:none;position:absolute}.dsk-wysiwyg--dark-theme,:where(:root[data-theme=dark],:root.dark,[data-theme=dark]) .dsk-wysiwyg{--dsk-wysiwyg-bg:#18181b;--dsk-wysiwyg-fg:#e5e7eb;--dsk-wysiwyg-fg-muted:#9ca3af;--dsk-wysiwyg-border:#3f3f46;--dsk-wysiwyg-toolbar-bg:#27272a;--dsk-wysiwyg-btn-hover-bg:#ffffff0f;--dsk-wysiwyg-code-bg:#27272a;--dsk-wysiwyg-code-fg:#f87171;--dsk-wysiwyg-blockquote-border:#52525b;--dsk-wysiwyg-tok-keyword:#c084fc;--dsk-wysiwyg-tok-string:#86efac;--dsk-wysiwyg-tok-comment:#71717a;--dsk-wysiwyg-tok-number:#fbbf24;--dsk-wysiwyg-tok-tag:#f87171;--dsk-wysiwyg-tok-attr:#60a5fa;--dsk-wysiwyg-tok-function:#38bdf8;--dsk-wysiwyg-tok-punct:#d4d4d8}@media (prefers-color-scheme:dark){:where(.dsk-wysiwyg){--dsk-wysiwyg-bg:#18181b;--dsk-wysiwyg-fg:#e5e7eb;--dsk-wysiwyg-fg-muted:#9ca3af;--dsk-wysiwyg-border:#3f3f46;--dsk-wysiwyg-toolbar-bg:#27272a;--dsk-wysiwyg-btn-hover-bg:#ffffff0f;--dsk-wysiwyg-code-bg:#27272a;--dsk-wysiwyg-code-fg:#f87171;--dsk-wysiwyg-blockquote-border:#52525b;--dsk-wysiwyg-tok-keyword:#c084fc;--dsk-wysiwyg-tok-string:#86efac;--dsk-wysiwyg-tok-comment:#71717a;--dsk-wysiwyg-tok-number:#fbbf24;--dsk-wysiwyg-tok-tag:#f87171;--dsk-wysiwyg-tok-attr:#60a5fa;--dsk-wysiwyg-tok-function:#38bdf8;--dsk-wysiwyg-tok-punct:#d4d4d8}}:where(:root[data-theme=light],:root.light,[data-theme=light]) .dsk-wysiwyg{--dsk-wysiwyg-bg:#fff;--dsk-wysiwyg-fg:#1f2937;--dsk-wysiwyg-fg-muted:#6b7280;--dsk-wysiwyg-border:#e5e7eb;--dsk-wysiwyg-toolbar-bg:#f9fafb;--dsk-wysiwyg-btn-hover-bg:#0000000d;--dsk-wysiwyg-code-bg:#f3f4f6;--dsk-wysiwyg-code-fg:#b91c1c;--dsk-wysiwyg-blockquote-border:#d1d5db;--dsk-wysiwyg-tok-keyword:#7c3aed;--dsk-wysiwyg-tok-string:#16a34a;--dsk-wysiwyg-tok-comment:#6b7280;--dsk-wysiwyg-tok-number:#b45309;--dsk-wysiwyg-tok-tag:#2563eb;--dsk-wysiwyg-tok-attr:#b45309;--dsk-wysiwyg-tok-function:#0891b2;--dsk-wysiwyg-tok-punct:#6b7280}`,board:`.bd-root{--bd-text:var(--uid-color-text,#1f2937);--bd-stroke:var(--uid-color-text,#1f2937);--bd-shape-fill:var(--uid-color-surface,#fff);--bd-surface:var(--uid-color-surface,#fff);--bd-frame-fill:var(--uid-color-surface-subtle,#f6f7f9);--bd-frame-stroke:var(--uid-color-border,#d5d9e0);--bd-frame-title:var(--uid-color-text-muted,#5b6472);--bd-connector:var(--uid-color-text-muted,#475569);--bd-accent:var(--uid-color-primary,#14b8a6);--bd-canvas:var(--uid-color-bg,#fbfbfc);--bd-dot:var(--uid-color-border,#d5d9e0);--bd-mini:var(--uid-color-text-subtle,#9aa3af);background:var(--bd-canvas);-webkit-user-select:none;user-select:none;touch-action:none;outline:none;width:100%;height:100%;min-height:320px;font-family:inherit;position:relative;overflow:hidden}.bd-canvas{cursor:default;width:100%;height:100%;display:block;position:absolute;inset:0}.bd-tool-hand .bd-canvas,.bd-panning .bd-canvas,.bd-root--readonly .bd-canvas{cursor:grab}.bd-tool-pen .bd-canvas,.bd-tool-marker .bd-canvas,.bd-tool-eraser .bd-canvas,.bd-tool-sticky .bd-canvas,.bd-tool-shape .bd-canvas,.bd-tool-text .bd-canvas,.bd-tool-frame .bd-canvas,.bd-tool-connector .bd-canvas,.bd-tool-emoji .bd-canvas{cursor:crosshair}.bd-dot{fill:var(--bd-dot)}.bd-text{white-space:pre;font-family:inherit}.bd-emoji{font-family:Apple Color Emoji,Segoe UI Emoji,Noto Color Emoji,sans-serif}.bd-editing .bd-text{visibility:hidden}.bd-overlay{pointer-events:none}.bd-group-outline{fill:none;stroke:var(--bd-accent);stroke-width:1px;stroke-dasharray:4 3}.bd-outline{fill:none;stroke:var(--bd-accent);stroke-width:1.5px}.bd-guide{stroke:#ec4899;stroke-width:1px;stroke-dasharray:4 3}.bd-marquee{fill:color-mix(in srgb, var(--bd-accent) 10%, transparent);stroke:var(--bd-accent);stroke-width:1px}.bd-create{fill:none;stroke:var(--bd-accent);stroke-width:1.5px;stroke-dasharray:5 4}.bd-connect-line{stroke:var(--bd-accent);stroke-width:2px;stroke-dasharray:6 4}.bd-drop{fill:none;stroke:var(--bd-accent);stroke-width:2px}.bd-handle{pointer-events:all;fill:var(--bd-surface);stroke:var(--bd-accent);stroke-width:1.5px}.bd-handle--n,.bd-handle--s{cursor:ns-resize}.bd-handle--e,.bd-handle--w{cursor:ew-resize}.bd-handle--nw,.bd-handle--se{cursor:nwse-resize}.bd-handle--ne,.bd-handle--sw{cursor:nesw-resize}.bd-handle--rotate{cursor:grab}.bd-handle--from,.bd-handle--to{cursor:move;fill:var(--bd-accent)}.bd-text-editor{z-index:5;outline:2px solid var(--bd-accent);outline-offset:2px;color:var(--bd-text);resize:none;transform-origin:50%;-webkit-user-select:text;user-select:text;background:0 0;border:none;margin:0;padding:0;font-family:inherit;position:absolute;overflow:hidden}.bd-panel{z-index:10;border:1px solid var(--uid-color-border,#e5e7eb);background:var(--bd-surface);border-radius:10px;align-items:center;gap:2px;padding:4px;display:flex;position:absolute;box-shadow:0 4px 16px #0f172a14}.bd-tools{flex-direction:column;top:50%;left:12px;transform:translateY(-50%)}.bd-sep{background:var(--uid-color-border,#e5e7eb);width:1px;height:20px;margin:0 4px}.bd-tools .bd-sep{width:20px;height:1px;margin:4px 0}.bd-flyout{flex-wrap:wrap;width:156px;top:50%;left:64px;transform:translateY(-50%)}.bd-flyout--emoji{width:240px}.bd-swatch-btn,.bd-emoji-btn{width:36px;height:32px;color:var(--bd-text);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:20px;display:inline-flex}.bd-emoji-btn{width:28px;height:28px;font-size:18px}.bd-swatch-btn:hover,.bd-emoji-btn:hover,.bd-swatch-btn.is-active,.bd-emoji-btn.is-active{background:color-mix(in srgb, var(--bd-accent) 14%, transparent)}.bd-bar{white-space:nowrap;flex-wrap:nowrap;transform:translate(-50%)}.bd-color{cursor:pointer;border:1px solid #0000001f;border-radius:50%;width:20px;height:20px;margin:0 2px;padding:0}.bd-color--sm{width:16px;height:16px}.bd-color--ring{background:0 0;border-width:3px}.bd-label{color:var(--uid-color-text-muted,#6b7280);margin:0 2px 0 6px;font-size:12px}.bd-select{border:1px solid var(--uid-color-border,#e5e7eb);background:var(--bd-surface);height:28px;color:var(--bd-text);font:inherit;border-radius:6px;margin:0 4px;font-size:13px}.bd-corner{z-index:10;pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:12px;right:12px}.bd-corner>*{pointer-events:auto}.bd-corner .bd-panel{position:static}.bd-minimap{cursor:pointer;padding:0;overflow:hidden}.bd-minimap svg{background:var(--bd-canvas);display:block}.bd-mini-view{fill:color-mix(in srgb, var(--bd-accent) 12%, transparent);stroke:var(--bd-accent);stroke-width:1.5px}.bd-zoom-pct{font-variant-numeric:tabular-nums;min-width:52px}.bd-export{flex-direction:column;align-items:stretch}.bd-export button{color:var(--bd-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 12px;font-size:13px}.bd-export button:hover{background:color-mix(in srgb, var(--bd-accent) 12%, transparent)}.bd-hint{color:var(--uid-color-text-muted,#6b7280);pointer-events:none;font-size:15px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.bd-delete{color:var(--uid-color-danger,#ef4444)}:is([data-theme=dark],[data-color-mode=dark]) .bd-root{--bd-shadow:#0006}.bd-status{gap:4px;padding:4px 8px;top:12px;right:12px}.bd-status-dot{background:#10b981;border-radius:50%;width:8px;height:8px}.bd-status--connecting .bd-status-dot{background:#f59e0b}.bd-status--offline .bd-status-dot{background:#ef4444}.bd-avatar{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:600;display:inline-flex}.bd-cursor{transition:transform .1s linear}.bd-cursor text{font-family:inherit}.bd-erasing{opacity:.25}.bd-flyout--ink{width:196px}.bd-flyout-break{flex-basis:100%;height:4px}.bd-color.is-active{outline:2px solid var(--bd-accent);outline-offset:2px}.bd-width-dot{border-radius:50%;display:block}.bd-live-stroke{pointer-events:none}.bd-avatar--me{box-shadow:0 0 0 2px var(--bd-surface), 0 0 0 3.5px currentColor;color:#fff}.bd-avatar-sep{background:var(--uid-color-border,#e5e7eb);width:1px;height:16px;margin:0 2px}.bd-locked{color:var(--bd-text);gap:8px;padding:6px 8px 6px 12px;font-size:13px;top:12px;left:50%;transform:translate(-50%)}.bd-flyout--templates{flex-flow:column;gap:2px;width:300px;top:72px;transform:none}.bd-template{color:var(--bd-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.bd-template:hover,.bd-template:focus-visible{background:color-mix(in srgb, var(--bd-accent) 10%, transparent);outline:none}.bd-template__title{font-size:13px;font-weight:600}.bd-template__desc{color:var(--bd-frame-title);font-size:12px}`,bpmn:`.bpmn-ed{--bpmn-ed-accent:var(--uid-color-primary,#2563eb);--bpmn-ed-danger:var(--uid-color-danger,#dc2626);--bpmn-ed-surface:var(--uid-color-surface,#fff);--bpmn-ed-canvas:var(--uid-color-bg,#fbfbfc);--bpmn-ed-border:var(--uid-color-border,#d5d9e0);--bpmn-ed-text:var(--uid-color-text,#1f2937);--bpmn-ed-muted:var(--uid-color-text-muted,#5b6472);--bpmn-ed-dot:var(--uid-color-border,#d5d9e0);--bpmn-stroke:var(--uid-color-text,#22242a);--bpmn-text:var(--uid-color-text,#22242a);--bpmn-fill:var(--uid-color-surface,#fff);--bpmn-pool-fill:var(--uid-color-surface,#fff);--bpmn-label-halo:var(--bpmn-ed-canvas);--bpmn-group-stroke:var(--uid-color-text-muted,#22242a);--bpmn-annotation-stroke:var(--uid-color-text-muted,#22242a);background:var(--bpmn-ed-canvas);width:100%;height:100%;min-height:360px;color:var(--bpmn-ed-text);-webkit-user-select:none;user-select:none;outline:none;display:flex;position:relative;overflow:hidden}.bpmn-ed--readonly{--bpmn-ed-canvas:transparent}.bpmn-ed-stage{flex:1;min-width:0;position:relative;overflow:hidden}.bpmn-ed-canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.bpmn-ed-dot{fill:var(--bpmn-ed-dot)}.bpmn-ed-overlay{pointer-events:none}.bpmn-ed-hover{fill:none;stroke:var(--bpmn-ed-accent);stroke-opacity:.5;stroke-dasharray:4 3}.bpmn-ed-selected{fill:none;stroke:var(--bpmn-ed-accent)}.bpmn-ed-selected.bpmn-ed-edge-outline,.bpmn-ed-highlight.bpmn-ed-edge-outline{stroke-opacity:.35;stroke-linecap:round;stroke-linejoin:round}.bpmn-ed-highlight{fill:none;stroke:var(--bpmn-ed-accent);stroke-opacity:.6}.bpmn-ed-ghost{fill:color-mix(in srgb, var(--bpmn-ed-accent) 8%, transparent);stroke:var(--bpmn-ed-accent);stroke-dasharray:5 4}.bpmn-ed-marquee{fill:color-mix(in srgb, var(--bpmn-ed-accent) 10%, transparent);stroke:var(--bpmn-ed-accent)}.bpmn-ed-drop{fill:none;stroke:#16a34a}.bpmn-ed-drop-bad{fill:none;stroke:var(--bpmn-ed-danger)}.bpmn-ed-connect{stroke:var(--bpmn-ed-muted);stroke-dasharray:6 4}.bpmn-ed-connect--ok{stroke:#16a34a}.bpmn-ed-handle{pointer-events:all;fill:var(--bpmn-ed-surface);stroke:var(--bpmn-ed-accent)}.bpmn-ed-handle--nw,.bpmn-ed-handle--se{cursor:nwse-resize}.bpmn-ed-handle--ne,.bpmn-ed-handle--sw{cursor:nesw-resize}.bpmn-ed-panel{z-index:3;background:var(--bpmn-ed-surface);border:1px solid var(--bpmn-ed-border);border-radius:8px;gap:2px;padding:4px;display:flex;position:absolute;box-shadow:0 2px 8px #0f172a14}.bpmn-ed-palette{flex-direction:column;top:12px;left:12px}.bpmn-ed-pad{flex-wrap:wrap;width:112px}.bpmn-ed-controls{align-items:center;bottom:12px;right:12px}.bpmn-ed-sep{background:var(--bpmn-ed-border);align-self:stretch;width:1px;margin:2px 4px}.bpmn-ed-zoom{min-width:48px;color:var(--bpmn-ed-muted);font:inherit;cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:12px}.bpmn-ed-danger{color:var(--bpmn-ed-danger)}.bpmn-ed-icon{display:block}.bpmn-ed-menu{flex-direction:column;min-width:180px;max-height:60%;overflow:auto}.bpmn-ed-menu--download{bottom:56px;right:12px}.bpmn-ed-menu-item{color:var(--bpmn-ed-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 10px;font-size:13px}.bpmn-ed-menu-item:hover{background:color-mix(in srgb, var(--bpmn-ed-accent) 10%, transparent)}.bpmn-ed-menu-item--current{font-weight:600}.bpmn-ed-swatches{gap:6px;padding:2px;display:flex}.bpmn-ed-swatch{cursor:pointer;border:2px solid;border-radius:50%;width:22px;height:22px;padding:0}.bpmn-ed-text{z-index:4;box-sizing:border-box;outline:2px solid var(--bpmn-ed-accent);background:var(--bpmn-ed-surface);color:var(--bpmn-ed-text);text-align:center;resize:none;-webkit-user-select:text;user-select:text;border:none;border-radius:4px;margin:0;padding:2px 4px;font-family:Arial,Helvetica Neue,Helvetica,sans-serif;line-height:1.2;position:absolute;overflow:hidden}.bpmn-ed-text--inside{align-items:center;padding-top:.6em;display:flex}.bpmn-ed-message{z-index:5;background:var(--bpmn-ed-text);color:var(--bpmn-ed-surface);pointer-events:none;border-radius:6px;padding:6px 12px;font-size:13px;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.bpmn-ed-properties{border-left:1px solid var(--bpmn-ed-border);background:var(--bpmn-ed-surface);flex:none;width:280px;overflow:auto}.bpmn-props{-webkit-user-select:text;user-select:text;flex-direction:column;gap:12px;padding:12px;display:flex}.bpmn-props__head{align-items:center;gap:8px;display:flex}.bpmn-props__kind{font-size:14px;font-weight:600}.bpmn-props__hint{color:var(--bpmn-ed-muted);margin:0;font-size:13px}.dmn-ed-logic-view{background:var(--bpmn-ed-surface);padding:12px 16px 24px;position:absolute;inset:0;overflow:auto}.dmn-ed-crumbs{align-items:center;gap:2px;margin-bottom:8px;display:flex}.dmn-ed-logic{-webkit-user-select:text;user-select:text;flex-direction:column;gap:12px;display:flex}.dmn-ed-logic__head{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.dmn-ed-logic__name{margin:0 auto 6px 0;font-size:18px;font-weight:600}.dmn-ed-logic__head .uid-form-field{min-width:180px}.dmn-ed-table-wrap{flex-direction:column;align-items:flex-start;gap:8px;display:flex;position:relative}.dmn-ed-table{border-collapse:collapse;font-size:13px}.dmn-ed-table th,.dmn-ed-table td{border:1px solid var(--bpmn-ed-border);vertical-align:top;text-align:left;padding:0}.dmn-ed-table thead th{background:color-mix(in srgb, var(--bpmn-ed-border) 30%, var(--bpmn-ed-surface));padding:6px 8px;font-weight:600}.dmn-ed-hit{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-align:center!important}.dmn-ed-col{cursor:pointer;min-width:120px}.dmn-ed-col:hover{background:color-mix(in srgb, var(--bpmn-ed-accent) 12%, var(--bpmn-ed-surface))!important}.dmn-ed-col__sub{color:var(--bpmn-ed-muted);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;font-weight:400}.dmn-ed-col__type{color:var(--bpmn-ed-muted);font-size:11px;font-weight:400}.dmn-ed-first-output,.dmn-ed-first-annotation{border-left:3px double var(--bpmn-ed-border)!important}.dmn-ed-index{color:var(--bpmn-ed-muted);text-align:right!important;padding:6px 8px!important}.dmn-ed-cell textarea{box-sizing:border-box;width:100%;min-width:120px;min-height:30px;color:var(--bpmn-ed-text);resize:vertical;background:0 0;border:none;outline:none;margin:0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;display:block}.dmn-ed-cell--note textarea{font-family:inherit;font-size:13px}.dmn-ed-cell textarea:focus{box-shadow:inset 0 0 0 2px var(--bpmn-ed-accent)}.dmn-ed-actions{white-space:nowrap;background:0 0!important;border:none!important;padding:0 2px!important}.dmn-ed-empty{color:var(--bpmn-ed-muted);text-align:center!important;padding:10px!important}.dmn-ed-table-tools{gap:8px;display:flex}.dmn-ed-column-form{z-index:4;background:var(--bpmn-ed-surface);border:1px solid var(--bpmn-ed-border);border-radius:8px;flex-direction:column;gap:10px;width:260px;padding:12px;display:flex;position:absolute;top:0;right:0;box-shadow:0 4px 16px #0f172a1f}.dmn-ed-column-form__head,.dmn-ed-column-form__actions{justify-content:space-between;align-items:center;gap:8px;display:flex}.dmn-ed-literal{flex-direction:column;gap:12px;max-width:720px;display:flex}.dmn-ed-literal textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.dmn-ed-hint{color:var(--bpmn-ed-muted);margin:0}`},I=class extends Error{constructor(e,t=0,n=0,r){super(t>0?`${e} (line ${t}${n>0?`, column ${n}`:``})`:e),this.line=t,this.column=n,this.hint=r,this.name=`DiagramError`}};function Te(e,t,n){return new I(`The diagram has ${t} ${e}; the limit is ${n}.`,0,0,`Split it into several diagrams.`)}var Ee=`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`,L={size:14,family:Ee},De={"--dg-font-family":Ee,"--dg-text":`#1f2937`,"--dg-text-muted":`#6b7280`,"--dg-background":`transparent`,"--dg-line":`#64748b`,"--dg-node-fill":`#eef2ff`,"--dg-node-stroke":`#6366f1`,"--dg-node-text":`#1e1b4b`,"--dg-row-fill":`#ffffff`,"--dg-row-alt-fill":`#f5f7ff`,"--dg-cluster-fill":`#f8fafc`,"--dg-cluster-stroke":`#cbd5e1`,"--dg-cluster-text":`#334155`,"--dg-edge-label-fill":`#ffffff`,"--dg-note-fill":`#fef9c3`,"--dg-note-stroke":`#ca8a04`,"--dg-note-text":`#422006`,"--dg-actor-fill":`#eef2ff`,"--dg-actor-stroke":`#6366f1`,"--dg-activation-fill":`#e0e7ff`,"--dg-block-stroke":`#94a3b8`,"--dg-block-label-fill":`#e2e8f0`,"--dg-grid":`#e5e7eb`,"--dg-task-fill":`#818cf8`,"--dg-task-stroke":`#4f46e5`,"--dg-task-done-fill":`#cbd5e1`,"--dg-task-done-stroke":`#64748b`,"--dg-task-active-fill":`#c7d2fe`,"--dg-task-crit-fill":`#f87171`,"--dg-task-crit-stroke":`#b91c1c`,"--dg-task-text":`#ffffff`,"--dg-task-text-dark":`#1f2937`,"--dg-exclude-fill":`rgba(148, 163, 184, 0.18)`,"--dg-today":`#ef4444`,"--dg-section-fill-0":`rgba(99, 102, 241, 0.06)`,"--dg-section-fill-1":`rgba(100, 116, 139, 0.06)`,"--dg-state-start":`#1f2937`,"--dg-lifeline":`#94a3b8`,"--dg-number-text":`#ffffff`,"--dg-rect-fill":`rgba(148, 163, 184, 0.12)`,"--dg-pie-stroke":`#ffffff`,"--dg-journey-face":`#fde68a`,"--dg-journey-face-sad":`#fecaca`,"--dg-journey-face-happy":`#bbf7d0`,"--dg-quadrant-1":`rgba(99, 102, 241, 0.12)`,"--dg-quadrant-2":`rgba(14, 165, 233, 0.10)`,"--dg-quadrant-3":`rgba(148, 163, 184, 0.12)`,"--dg-quadrant-4":`rgba(16, 185, 129, 0.10)`,"--dg-pie-text":`#ffffff`,"--dg-c4-person-fill":`#08427b`,"--dg-c4-person-stroke":`#052e56`,"--dg-c4-person-text":`#ffffff`,"--dg-c4-system-fill":`#1168bd`,"--dg-c4-system-stroke":`#0b4884`,"--dg-c4-system-text":`#ffffff`,"--dg-c4-container-fill":`#438dd5`,"--dg-c4-container-stroke":`#2e6295`,"--dg-c4-container-text":`#ffffff`,"--dg-c4-component-fill":`#85bbf0`,"--dg-c4-component-stroke":`#5d82a8`,"--dg-c4-component-text":`#0b2540`,"--dg-c4-external-fill":`#7b7b7b`,"--dg-c4-external-stroke":`#5c5c5c`,"--dg-c4-external-text":`#ffffff`,"--dg-c4-boundary-stroke":`#6b7280`,"--dg-c4-boundary-text":`#1f2937`,"--dg-c4-node-fill":`rgba(148, 163, 184, 0.08)`,"--dg-c4-node-stroke":`#6b7280`,"--dg-c4-node-text":`#1f2937`},Oe=[`#6366f1`,`#f59e0b`,`#10b981`,`#ef4444`,`#06b6d4`,`#8b5cf6`,`#84cc16`,`#ec4899`,`#f97316`,`#14b8a6`,`#64748b`,`#a855f7`];function ke(e){let t=e%Oe.length;return`var(--dg-pie-${t+1}, ${Oe[t]})`}function R(e){let t=De[e];return t===void 0?`var(${e})`:`var(${e}, ${t})`}function Ae(e,t=``){let n=`#${e}`;return[`${n}{font-family:${R(`--dg-font-family`)};font-size:${L.size}px;color:${R(`--dg-text`)}}`,`${n} text{fill:${R(`--dg-text`)}}`,`${n} .dg-label{fill:${R(`--dg-node-text`)}}`,`${n} .dg-node .dg-shape{fill:${R(`--dg-node-fill`)};stroke:${R(`--dg-node-stroke`)};stroke-width:1.5px}`,`${n} .dg-cluster-box{fill:${R(`--dg-cluster-fill`)};stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${n} .dg-cluster-label{fill:${R(`--dg-cluster-text`)};font-weight:600}`,`${n} .dg-edge{fill:none;stroke:${R(`--dg-line`)};stroke-width:1.5px}`,`${n} .dg-edge-thick{stroke-width:3.5px}`,`${n} .dg-edge-dotted{stroke-dasharray:3 3}`,`${n} .dg-marker{fill:${R(`--dg-line`)};stroke:${R(`--dg-line`)}}`,`${n} .dg-edge-label-box{fill:${R(`--dg-edge-label-fill`)};opacity:0.9}`,`${n} .dg-edge-label{fill:${R(`--dg-text`)}}`,`${n} .dg-muted{fill:${R(`--dg-text-muted`)}}`,`${n} a{cursor:pointer}`,t].filter(Boolean).join(``)}var je=/^[a-zA-Z][a-zA-Z0-9:_-]*$/;function z(e,t={},n=[]){if(!je.test(e))throw Error(`Invalid SVG tag name: ${e}`);return{tag:e,attrs:t,children:n.filter(e=>!!e)}}function Me(e){return{text:e}}function Ne(e){return e.replace(/[&<>]/g,e=>e===`&`?`&amp;`:e===`<`?`&lt;`:`&gt;`)}function Pe(e){return e.replace(/[&<>"']/g,e=>{switch(e){case`&`:return`&amp;`;case`<`:return`&lt;`;case`>`:return`&gt;`;case`"`:return`&quot;`;default:return`&#39;`}})}function B(e){if(!Number.isFinite(e))return`0`;let t=Math.round(e*100)/100;return Object.is(t,-0)?`0`:String(t)}function Fe(e){let t=``;for(let[n,r]of Object.entries(e))if(r!=null&&r!==!1){if(!je.test(n))throw Error(`Invalid SVG attribute name: ${n}`);t+=r===!0?` ${n}=""`:typeof r==`number`?` ${n}="${B(r)}"`:` ${n}="${Pe(r)}"`}return t}function Ie(e){if(`text`in e)return Ne(e.text);let t=Fe(e.attrs);return e.children.length===0?`<${e.tag}${t}/>`:`<${e.tag}${t}>${e.children.map(Ie).join(``)}</${e.tag}>`}var V=class{constructor(){this.parts=[]}moveTo(e,t){return this.parts.push(`M${B(e)},${B(t)}`),this}lineTo(e,t){return this.parts.push(`L${B(e)},${B(t)}`),this}curveTo(e,t,n,r,i,a){return this.parts.push(`C${B(e)},${B(t)} ${B(n)},${B(r)} ${B(i)},${B(a)}`),this}quadTo(e,t,n,r){return this.parts.push(`Q${B(e)},${B(t)} ${B(n)},${B(r)}`),this}arcTo(e,t,n,r,i,a,o){return this.parts.push(`A${B(e)},${B(t)} ${B(n)} ${+!!r},${+!!i} ${B(a)},${B(o)}`),this}close(){return this.parts.push(`Z`),this}toString(){return this.parts.join(` `)}};function Le(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return`dg-${(t>>>0).toString(36)}`}function Re(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`-`);return/^[a-zA-Z]/.test(t)?t:`dg-${t}`}function H(e){let t=Math.ceil(e.width+16),n=Math.ceil(e.height+16),r=`${e.id}-title`;return{svg:Ie(z(`svg`,{xmlns:`http://www.w3.org/2000/svg`,id:e.id,class:`dg dg-${e.type}`,width:t,height:n,viewBox:`0 0 ${t} ${n}`,role:`img`,"aria-labelledby":r,style:`max-width:100%;height:auto`},[z(`title`,{id:r},[Me(e.title)]),e.description?z(`desc`,{},[Me(e.description)]):null,z(`style`,{},[Me(Ae(e.id,e.css))]),e.defs&&e.defs.length>0?z(`defs`,{},e.defs):null,z(`g`,{transform:`translate(8,8)`},e.body)])),width:t,height:n,type:e.type}}var ze=/^(#[0-9a-fA-F]{3,4}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}|(rgb|rgba|hsl|hsla)\(\s*[0-9.]+%?\s*,\s*[0-9.]+%?\s*,\s*[0-9.]+%?\s*(,\s*[0-9.]+%?\s*)?\)|[a-zA-Z]{3,20})$/,Be=/^[0-9]+(\.[0-9]+)?(px|em)?$/,Ve=/^[0-9.]+([\s,]+[0-9.]+)*$/,He=/^(0(\.[0-9]+)?|1(\.0+)?)$/,Ue={fill:ze,stroke:ze,"stroke-width":Be,"stroke-dasharray":Ve,opacity:He,"fill-opacity":He,"stroke-opacity":He},We={color:ze,"font-weight":/^(normal|bold|[1-9]00)$/,"font-style":/^(normal|italic)$/,"font-size":Be};function U(e,t=0,n=0){let r={shape:{},text:{}};for(let i of Ge(e)){let e=i.trim();if(e===``)continue;let a=e.indexOf(`:`);if(a<0)throw new I(`"${e}" is not a style declaration`,t,n,`Write property:value.`);let o=e.slice(0,a).trim().toLowerCase(),s=e.slice(a+1).trim().replace(/\s*!important$/,``),c=Ue[o],l=We[o];if(!c&&!l)throw new I(`The style property "${o}" is not supported`,t,n,`Supported: ${[...Object.keys(Ue),...Object.keys(We)].join(`, `)}.`);if(!(c??l).test(s))throw new I(`"${s}" is not a valid value for ${o}`,t,n);c?r.shape[o]=s:r.text[o===`color`?`fill`:o]=s}return r}function Ge(e){let t=[],n=0,r=0;for(let i=0;i<e.length;i++){let a=e[i];a===`(`?n++:a===`)`?n=Math.max(0,n-1):(a===`,`||a===`;`)&&n===0&&(t.push(e.slice(r,i)),r=i+1)}return t.push(e.slice(r)),t}function Ke(...e){let t={shape:{},text:{}};for(let n of e)n&&(Object.assign(t.shape,n.shape),Object.assign(t.text,n.text));return t}function W(e){let t=Object.entries(e);if(t.length!==0)return t.map(([e,t])=>`${e}:${t}`).join(`;`)}function qe(e){let t=e.trim();return/^(https?:|mailto:)/i.test(t)?t:/^[a-z][a-z0-9+.-]*:/i.test(t)||t.startsWith(`//`)?null:t}var Je={c4:`C4Context`,c4_context:`C4Context`,c4_container:`C4Container`,c4_component:`C4Component`,c4_dynamic:`C4Dynamic`,c4_deployment:`C4Deployment`,c4_sequence:`C4Dynamic`};function Ye(e){let t=/^!include(?:url)?\s+.*?\b(C4(?:_\w+)?)(?:\.puml)?\s*>?\s*$/i.exec(e);return t?Je[t[1].toLowerCase()]??null:null}var Xe={startuml:`uml`,startmindmap:`mindmap`,startgantt:`gantt`,startsalt:`salt`,startwbs:`wbs`,startjson:`json`,startyaml:`yaml`};function Ze(e){let t=e.replace(/^\uFEFF/,``).split(/\r\n?|\n/).find(e=>e.trim()!==``);return t!==void 0&&/^\s*@start[a-z]+\b/i.test(t)}function Qe(e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];if(r===`"`&&(t=!t),!t&&r===`'`&&(n===0||/\s/.test(e[n-1]))&&e.slice(0,n).trim()===``)return``}return e}var $e=/^!(include|includeurl|includesub|import|define|definelong|procedure|function|unquoted|if|ifdef|ifndef|while|foreach|local|global|\$)/i,et=/^(skinparam\b|!theme\b|!pragma\b|scale\b|(hide|remove|restore)\s+(empty\s+)?(members|methods|fields|attributes|circle|stereotype|unlinked|@unlinked|description|private|protected|package|public|\$\w+|<<[^>]*>>)|show\s|allowmixing\b|allow_mixing\b|set\s+namespaceSeparator|autoactivate\b|skin\b|newpage\b|mainframe\b)/i;function tt(e){let t=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
6
+ `)}function D(e){let t=(e.getAttribute(`type`)??``).trim().toLowerCase();return t!==``&&t!==`module`&&!/javascript|ecmascript/.test(t)}function O(e){for(let t of Array.from(e.children))if(t.tagName===`SCRIPT`&&D(t))return E(t.textContent??``);for(let t of Array.from(e.children))if(t.tagName===`TEMPLATE`)return E(t.innerHTML);let t=``;for(let n of Array.from(e.childNodes))(n.nodeType===Node.TEXT_NODE||n.nodeType===Node.ELEMENT_NODE&&!T.has(n.tagName)&&!n.hasAttribute(`data-dsk-root`))&&(t+=n.textContent??``);return E(t)}function k(e){let t={};for(let n of Array.from(e.attributes)){let e=n.name.startsWith(`data-`)?n.name.slice(5):n.name;(!(e in t)||n.name.startsWith(`data-`))&&(t[e]=n.value)}return t}function A(e){let t=[],n=[];for(let r of Array.from(e.children))r.tagName===`SOURCE`?t.push(k(r)):r.tagName===`TRACK`&&n.push(k(r));return{sources:t,tracks:n}}var j={"dsk-video":{plugin:`media`,methods:[`play`,`pause`,`toggle`,`seek`,`playChapter`],getters:[`state`,`media`,`chapters`],objects:[]},"dsk-audio":{plugin:`media`,methods:[`play`,`pause`,`toggle`,`seek`,`next`,`prev`],getters:[`state`,`media`],objects:[]},"dsk-diagram":{plugin:`diagram`,methods:[`enterFullscreen`,`exitFullscreen`],getters:[`svg`,`fullscreen`],objects:[]},"dsk-openapi":{plugin:`openapi`,methods:[`go`,`open`,`print`,`enterFullscreen`,`exitFullscreen`],getters:[`loaded`,`value`,`fullscreen`],objects:[`spec`,`send`,`labels`]},"dsk-flow":{plugin:`flow`,methods:[`fit`,`select`,`enter`,`back`,`refresh`,`undo`,`redo`,`enterFullscreen`,`exitFullscreen`],getters:[`stack`,`fullscreen`],objects:[`graph`,`loadSubgraph`,`persistToggle`,`labels`,`registry`]},"dsk-markdown":{plugin:`markdown`,methods:[],getters:[`value`],objects:[]},"dsk-board":{plugin:`board`,methods:[`fit`,`select`,`toPng`,`toSvg`,`undo`,`redo`,`enterFullscreen`,`exitFullscreen`],getters:[`value`,`fullscreen`],objects:[`board`,`provider`,`labels`]},"dsk-editor":{plugin:`editor`,methods:[`focus`],getters:[`controller`],objects:[]},"dsk-asyncapi":{plugin:`openapi`,methods:[`enterFullscreen`,`exitFullscreen`],getters:[`loaded`,`fullscreen`],objects:[`spec`,`labels`]},"dsk-bpmn":{plugin:`bpmn`,methods:[`fit`,`undo`,`redo`,`toSvg`,`enterFullscreen`,`exitFullscreen`],getters:[`value`,`fullscreen`],objects:[`labels`,`highlight`]},"dsk-dmn":{plugin:`bpmn`,methods:[`fit`,`undo`,`redo`,`toSvg`,`open`,`enterFullscreen`,`exitFullscreen`],getters:[`value`,`fullscreen`],objects:[`labels`,`highlight`]},"dsk-calendar":{plugin:`calendar`,methods:[],getters:[`value`],objects:[]},"dsk-kanban":{plugin:`kanban`,methods:[],getters:[`value`,`board`],objects:[]},"dsk-drawio":{plugin:`drawio`,methods:[`showPage`,`enterFullscreen`,`exitFullscreen`],getters:[`svg`,`pages`,`page`,`fullscreen`],objects:[]}},M=null,N={io:null};function P(e,t){typeof IntersectionObserver==`function`?(N.io??=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(N.io.unobserve(t.target),t.target._dskLazyStart?.())},{rootMargin:`200px`}),e._dskLazyStart=t,N.io.observe(e)):t()}function ee(e,t,n){let r=n.map(f);class i extends HTMLElement{static get observedAttributes(){return r}_overrides={};_source=null;_children={sources:[],tracks:[]};_instance=null;_container=null;_starting=!1;_waitingForParse=!1;_updateQueued=!1;_resolveReady;_ready;constructor(){super(),this._ready=new Promise(e=>this._resolveReady=e)}get ready(){return this._ready}get source(){return this._source===null&&this._capture(),this._source??``}set source(e){this._source=String(e??``),this._queueUpdate()}connectedCallback(){this.hasAttribute(`data-dsk`)||this.setAttribute(`data-dsk`,``),!(this._instance||this._starting)&&(document.readyState===`loading`?this._waitingForParse||(this._waitingForParse=!0,document.addEventListener(`DOMContentLoaded`,()=>{this._waitingForParse=!1,this.isConnected&&this.connectedCallback()},{once:!0})):this.getAttribute(`loading`)===`lazy`?P(this,()=>this._start()):this._start())}disconnectedCallback(){N.io?.unobserve(this),queueMicrotask(()=>{this.isConnected||this._destroy()})}attributeChangedCallback(e,t,n){t!==n&&(e===`loading`&&n!==`lazy`&&!this._instance&&!this._starting&&this.isConnected&&this._start(),this._queueUpdate())}refresh(){this._capture(!0),this._queueUpdate()}_capture(e=!1){(this._source===null||e)&&(this._source=O(this),this._children=A(this))}_props(){let{props:t,errors:r}=x(this,n);for(let t of r)console.warn(`[dsk-embed] <${e} ${t.attr}>: ${t.message}`);return{...t,...this._overrides}}_locale(){let e=this._overrides.locale??this.getAttribute(`locale`);return typeof e==`string`&&e!==``?s(e):M?.config().locale??`en`}_queueUpdate(){this._instance&&!this._updateQueued&&(this._updateQueued=!0,queueMicrotask(()=>{this._updateQueued=!1,this._instance?.update()}))}_start(){let n=M;if(!n||this._starting||this._instance)return;this._starting=!0,this._capture();for(let e of Array.from(this.childNodes))e.nodeType===Node.ELEMENT_NODE&&T.has(e.tagName)||e.nodeType===Node.ELEMENT_NODE&&e.hasAttribute(`data-dsk-root`)||e.remove();let r=document.createElement(`div`);r.setAttribute(`data-dsk-root`,``),r.className=`dsk-root`,this.appendChild(r),this._container=r,this.setAttribute(`data-dsk-state`,`loading`),n.load(t.plugin).then(i=>{if(!this.isConnected||this._container!==r)return;if(!i.mountElement)throw Error(`plugin ${t.plugin} has no elements`);let a={host:n,el:this,tag:e,container:r,props:()=>this._props(),source:()=>this.source,children:()=>this._children,emit:(e,t)=>n.emit(e,t,this),locale:()=>this._locale()};this._instance=i.mountElement(a),this.setAttribute(`data-dsk-state`,`ready`),this._resolveReady(),n.emit(`ready`,{tag:e},this)}).catch(t=>{let i=t instanceof Error?t.message:String(t);console.error(`[dsk-embed] <${e}> failed to load`,t),this.setAttribute(`data-dsk-state`,`error`),r.replaceChildren();let a=document.createElement(`div`);a.className=`dsk-error`,a.setAttribute(`role`,`alert`),a.textContent=i,r.appendChild(a),n.emit(`error`,{tag:e,message:i},this)}).finally(()=>{this._starting=!1})}_destroy(){if(this._instance)try{this._instance.destroy()}catch(t){console.error(`[dsk-embed] <${e}> destroy failed`,t)}this._instance=null,this._container?.remove(),this._container=null,this.removeAttribute(`data-dsk-state`),this._ready=new Promise(e=>this._resolveReady=e)}}let a=i.prototype;for(let e of n)e.prop in a||Object.defineProperty(a,e.prop,{configurable:!0,enumerable:!0,get(){let t=this._instance?.api;return t&&e.prop in t?t[e.prop]:e.prop in this._overrides?this._overrides[e.prop]:this._props()[e.prop]},set(t){t===void 0?delete this._overrides[e.prop]:this._overrides[e.prop]=t,this._queueUpdate()}});for(let e of t.objects)Object.defineProperty(a,e,{configurable:!0,enumerable:!0,get(){let t=this._instance?.api;return t&&e in t?t[e]:this._overrides[e]},set(t){t===void 0?delete this._overrides[e]:this._overrides[e]=t,this._queueUpdate()}});for(let n of t.methods)a[n]=function(...t){let r=()=>{let r=this._instance?.api?.[n];if(typeof r!=`function`)throw Error(`<${e}>.${n}() is not available`);return r(...t)};return this._instance?r():this.ready.then(r)};for(let e of t.getters)Object.defineProperty(a,e,{configurable:!0,enumerable:!0,get(){return this._instance?.api?.[e]}});return i}function te(e,t,n=customElements){M=e;for(let[e,r]of Object.entries(j))n.get(e)||t&&!t.has(r.plugin)||n.define(e,ee(e,r,w[e]??[]))}var ne=/^[a-z0-9][a-z0-9_+.-]*$/;function F(e){return String(e).trim().toLowerCase()}function re(e){if(typeof e==`function`)return e;if(e&&typeof e==`object`&&(typeof e.mount==`function`||typeof e.html==`string`)){let t=e;return()=>t}throw TypeError("a block renderer is a function, or an object with `html` or `mount`")}function ie(){let e=new Map,t=new Set,n=()=>{for(let e of[...t])e()},r={register(t,i){let a=F(t);if(!ne.test(a))throw TypeError(`invalid block language "${t}"`);let o=re(i);return e.set(a,o),n(),()=>{e.get(a)===o&&r.unregister(a)}},unregister(t){e.delete(F(t))&&n()},get:t=>e.get(F(t)),has:t=>e.has(F(t)),languages:()=>[...e.keys()],all:()=>Object.fromEntries(e),subscribe(e){return t.add(e),()=>t.delete(e)}};return r}var I=new WeakMap,ae=`[data-dsk-root], [contenteditable], .uid-markdown, dsk-markdown, dsk-editor`;function oe(e,t){for(let n of[t,e]){if(!n)continue;let e=n.getAttribute(`data-lang`)??n.getAttribute(`data-language`);if(e)return e.trim().toLowerCase();for(let e of Array.from(n.classList)){let t=/^(?:language|lang)-(.+)$/.exec(e);if(t)return t[1].toLowerCase()}}return null}function se(e,t,n={}){let r=n.languages?.map(e=>e.toLowerCase()),i=[],a=[];e instanceof HTMLElement&&e.tagName===`PRE`&&a.push(e),a.push(...Array.from(e.querySelectorAll(`pre`)));for(let e of a){if(e.hasAttribute(`data-dsk-failed`)||e.closest(ae))continue;let n=e.querySelector(`:scope > code`),a=oe(e,n);a&&t.has(a)&&(!r||r.includes(a))&&i.push({pre:e,code:(n??e).textContent??``,language:a})}return i}function ce(e){return e instanceof Error?e.message:String(e)}function le(e,t,n){t.setAttribute(`data-dsk-failed`,``),t.title=n,e.isConnected&&e.replaceWith(t),I.delete(e)}async function ue(e,t,n={}){let r=se(e,t,n),i=0,a=r.map(async({pre:e,code:n,language:r})=>{let a=t.get(r),o=document.createElement(`div`);o.className=`dsk-block dsk-block--${r}`,o.setAttribute(`data-dsk-block`,r),o.setAttribute(`data-dsk-state`,`loading`),e.replaceWith(o),I.set(o,{pre:e,handle:null});let s;try{s=await a(n,{language:r,index:i++})}catch(t){return le(o,e,ce(t)),0}if(!o.isConnected)return 0;if(!s||s.error!==void 0||s.html===void 0&&!s.mount)return le(o,e,s?.error??`nothing to render`),0;if(s.mount)try{let t=s.mount(o,{code:n,language:r,editable:!1,setCode:()=>{}});I.set(o,{pre:e,handle:typeof t==`function`?{destroy:t}:t??null})}catch(t){return le(o,e,ce(t)),0}else o.innerHTML=s.html;return o.setAttribute(`data-dsk-state`,`ready`),1});return(await Promise.all(a)).reduce((e,t)=>e+t,0)}function de(e){let t=0,n=[];e instanceof Element&&e.hasAttribute(`data-dsk-block`)&&n.push(e),n.push(...Array.from(e.querySelectorAll(`[data-dsk-block]`)));for(let e of n){let n=I.get(e);if(n){try{n.handle?.destroy?.()}catch(e){console.error(`[dsk-embed] block destroy failed`,e)}e.replaceWith(n.pre),I.delete(e),t++}}return t}var fe=[`media`,`diagram`,`openapi`,`flow`,`markdown`,`editor`,`board`,`bpmn`,`drawio`,`kanban`,`calendar`],pe={mermaid:`diagram`,plantuml:`diagram`,puml:`diagram`,dot:`diagram`,graphviz:`diagram`,d2:`diagram`,dbml:`diagram`,structurizr:`diagram`,wardley:`diagram`,openapi:`openapi`,asyncapi:`openapi`,bpmn:`bpmn`,dmn:`bpmn`,drawio:`drawio`,kanban:`kanban`,calendar:`calendar`,flow:`flow`,board:`board`,video:`media`,audio:`media`};function me(e){let t=u(e.config??{},document,e.versions),n=ie(),r=a(document),i=new Map,o=new Set(e.plugins??fe),s=new Map,c={version:e.version,config:()=>t.get(),onConfig:e=>t.subscribe(e),blocks:n,emit:(e,t,n)=>r.emit(e,t,n),load(n){let r=i.get(n);if(!r){let a=s.get(n);if(!a&&!o.has(n))return Promise.reject(Error(`the ${n} plugin is not on this page`));r=(a?a():e.loadPlugin(n,t.get())).then(e=>(e.setup?.(c),e)),r.catch(()=>i.delete(n)),i.set(n,r)}return r}},l=e=>{let t=new Set(e);for(let[e,r]of Object.entries(pe))t.has(r)&&!n.has(e)&&n.register(e,async(t,n)=>{let i=(await c.load(r)).renderers?.[e];return i?i(t,n):{error:`no ${e} renderer in the ${r} plugin`}})};l(o),t.subscribe(e=>{r.emit(`config`,{theme:e.theme,resolvedTheme:e.resolvedTheme,locale:e.locale})});let d={version:e.version,mode:e.mode,versions:Object.freeze({...e.versions}),importMap:e.importMap??null,get config(){return t.get()},configure:e=>t.configure(e),blocks:{register:(e,t)=>n.register(e,t),unregister:e=>n.unregister(e),has:e=>n.has(e),list:()=>n.languages()},on:r.on,once:r.once,off:r.off,emit:r.emit,renderBlocks:(e=document.body,t)=>ue(e,n,t),unrenderBlocks:(e=document.body)=>de(e),preload:async(...e)=>{await Promise.all(e.map(e=>c.load(e)))},plugins:()=>[...o],extend(e){let t=[];for(let[n,r]of Object.entries(e))r&&!o.has(n)&&(s.set(n,typeof r==`function`?r:()=>Promise.resolve(r)),o.add(n),t.push(n));return t.length>0&&(te(c,o),l(t)),t},host:c};return te(c,o),d}function he(e){let t={...globalThis.DskEmbedConfig??{}};if(e){let n=e.getAttribute(`data-theme`),r=e.getAttribute(`data-locale`),i=e.getAttribute(`data-cdn-base`);n&&(t.theme=n),r&&(t.locale=r),i&&(t.cdnBase=i)}return t}function ge(e,t){if(!t||!t.hasAttribute(`data-render-blocks`))return;let n=t.getAttribute(`data-render-blocks`)||`body`,r=()=>{for(let t of Array.from(document.querySelectorAll(n)))e.renderBlocks(t)};document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,r,{once:!0}):r()}function _e(e){return e.head.querySelector(`link[rel="stylesheet"]:not([data-dsk-embed]), style:not([data-dsk-embed])`)}function ve(e){let t=e.head.querySelectorAll(`link[data-dsk-embed], style[data-dsk-embed]`);return t.length>0?t[t.length-1]:null}function ye(e,t){let n=ve(e);if(n)n.after(t);else{let n=_e(e);n?n.before(t):e.head.appendChild(t)}}function be(e,t,n=document){if(n.querySelector(`style[data-dsk-embed="${e}"]`))return;let r=n.createElement(`style`);r.setAttribute(`data-dsk-embed`,e),r.textContent=t,ye(n,r)}function xe(e,t){let r=document.currentScript instanceof HTMLScriptElement?document.currentScript:null,i=window.DskEmbed;if(i&&typeof i.extend!=`function`){console.warn(`[dsk-embed] already loaded (${i.mode} ${i.version}), without extend(); this bundle is ignored`);return}for(let[e,n]of t)be(e,n);if(be(`base`,n),i){i.extend(e);return}let a=me({mode:`bundle`,version:`1.6.0`,versions:{vue:`3.5.44`,"@dskripchenko/ui":`1.20.0`,"@dskripchenko/wysiwyg":`0.5.3`,"@dskripchenko/diagrams":`1.3.3`,"@dskripchenko/openapi":`1.2.0`,"@dskripchenko/flow":`1.2.0`,"@dskripchenko/board":`0.3.0`,"@dskripchenko/bpmn":`0.4.1`,"@dskripchenko/drawio":`0.1.0`},config:he(r),plugins:Object.keys(e),loadPlugin:async t=>{let n=e[t];if(!n)throw Error(`the ${t} plugin is not in this bundle`);return n}});window.DskEmbed=a,ge(a,r),document.dispatchEvent(new CustomEvent(`dsk:embed-ready`,{detail:{version:`1.6.0`,mode:`bundle`}}))}var Se={diagram:[`tokens`,`themes`],media:[`tokens`,`themes`,`kit`],markdown:[`tokens`,`themes`,`kit`],openapi:[`tokens`,`themes`,`kit`,`openapi`],flow:[`tokens`,`themes`,`kit`,`flow`],editor:[`tokens`,`themes`,`kit`,`editor`],board:[`tokens`,`themes`,`kit`,`board`],bpmn:[`tokens`,`themes`,`kit`,`bpmn`],drawio:[`tokens`,`themes`],kanban:[`tokens`,`themes`,`kit`],calendar:[`tokens`,`themes`,`kit`]},Ce={tokens:`:root{--uid-color-zinc-50:#fafafa;--uid-color-zinc-100:#f4f4f5;--uid-color-zinc-200:#e4e4e7;--uid-color-zinc-300:#d4d4d8;--uid-color-zinc-400:#a1a1aa;--uid-color-zinc-500:#71717a;--uid-color-zinc-600:#52525b;--uid-color-zinc-700:#3f3f46;--uid-color-zinc-800:#27272a;--uid-color-zinc-900:#18181b;--uid-color-zinc-950:#09090b;--uid-color-teal-50:#f0fdfa;--uid-color-teal-100:#ccfbf1;--uid-color-teal-300:#5eead4;--uid-color-teal-400:#2dd4bf;--uid-color-teal-500:#14b8a6;--uid-color-teal-600:#0d9488;--uid-color-teal-700:#0f766e;--uid-color-teal-900:#134e4a;--uid-color-rose-50:#fff1f2;--uid-color-rose-400:#fb7185;--uid-color-rose-500:#f43f5e;--uid-color-rose-600:#e11d48;--uid-color-rose-700:#be123c;--uid-color-rose-950:#4c0519;--uid-color-emerald-50:#ecfdf5;--uid-color-emerald-400:#34d399;--uid-color-emerald-600:#059669;--uid-color-emerald-950:#022c22;--uid-color-amber-50:#fffbeb;--uid-color-amber-400:#fbbf24;--uid-color-amber-600:#d97706;--uid-color-amber-950:#451a03;--uid-color-blue-50:#eff6ff;--uid-color-blue-400:#60a5fa;--uid-color-blue-600:#2563eb;--uid-color-blue-950:#172554;--uid-color-white:#fff;--uid-font-family-sans:"Inter", system-ui, -apple-system, sans-serif;--uid-font-family-display:"Inter Display", var(--uid-font-family-sans);--uid-font-family-mono:"IBM Plex Mono", "Fira Code", "Cascadia Mono", "Roboto Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace;--uid-font-size-xs:12px;--uid-font-size-sm:14px;--uid-font-size-md:16px;--uid-font-size-base:var(--uid-font-size-md);--uid-font-size-lg:18px;--uid-font-size-xl:20px;--uid-font-size-2xl:24px;--uid-font-size-3xl:30px;--uid-font-size-4xl:36px;--uid-font-weight-regular:400;--uid-font-weight-medium:500;--uid-font-weight-semibold:600;--uid-font-weight-bold:700;--uid-line-height-tight:1.25;--uid-line-height-snug:1.375;--uid-line-height-normal:1.5;--uid-line-height-relaxed:1.625;--uid-space-0:0;--uid-space-2xs:2px;--uid-space-xs:4px;--uid-space-sm:8px;--uid-space-md:16px;--uid-space-lg:24px;--uid-space-xl:32px;--uid-space-2xl:48px;--uid-space-3xl:64px;--uid-size-sm:32px;--uid-size-md:40px;--uid-size-lg:48px;--uid-radius-none:0;--uid-radius-sm:3px;--uid-radius-md:6px;--uid-radius-lg:10px;--uid-radius-full:9999px;--uid-duration-fast:.1s;--uid-duration-base:.2s;--uid-duration-slow:.35s;--uid-ease-out:cubic-bezier(0, 0, .2, 1);--uid-ease-in:cubic-bezier(.4, 0, 1, 1);--uid-ease-in-out:cubic-bezier(.4, 0, .2, 1);--uid-z-base:0;--uid-z-raised:1;--uid-z-sticky:100;--uid-z-affix:100;--uid-z-fixed:150;--uid-z-dropdown:200;--uid-z-overlay:300;--uid-z-drawer:400;--uid-z-modal:400;--uid-z-popover:450;--uid-z-toast:500;--uid-z-tooltip:600;--uid-bp-sm:480px;--uid-bp-md:768px;--uid-bp-lg:1024px;--uid-bp-xl:1280px;--uid-bp-2xl:1536px}`,themes:`:root[data-theme=light]{--uid-surface-base:var(--uid-color-zinc-50);--uid-surface-raised:var(--uid-color-white);--uid-surface-overlay:var(--uid-color-white);--uid-text-primary:var(--uid-color-zinc-900);--uid-text-secondary:var(--uid-color-zinc-500);--uid-text-tertiary:var(--uid-color-zinc-400);--uid-text-on-accent:var(--uid-color-white);--uid-border-subtle:var(--uid-color-zinc-200);--uid-border-default:var(--uid-color-zinc-300);--uid-border-hover:var(--uid-color-zinc-400);--uid-accent:var(--uid-color-teal-500);--uid-accent-hover:var(--uid-color-teal-600);--uid-accent-subtle:var(--uid-color-teal-50);--uid-accent-text:var(--uid-color-teal-700);--uid-danger:var(--uid-color-rose-600);--uid-danger-hover:var(--uid-color-rose-700);--uid-danger-subtle:var(--uid-color-rose-50);--uid-success:var(--uid-color-emerald-600);--uid-success-subtle:var(--uid-color-emerald-50);--uid-warning:var(--uid-color-amber-600);--uid-warning-subtle:var(--uid-color-amber-50);--uid-info:var(--uid-color-blue-600);--uid-info-subtle:var(--uid-color-blue-50);--uid-shadow-sm:0 1px 2px #0000000d;--uid-shadow-md:0 4px 12px #00000014;--uid-shadow-lg:0 8px 24px #0000001f;--uid-shadow-xl:0 20px 60px #0000004d}:root[data-theme=dark]{--uid-surface-base:#1c1c1e;--uid-surface-raised:#2c2c2e;--uid-surface-overlay:#3a3a3c;--uid-text-primary:var(--uid-color-zinc-100);--uid-text-secondary:var(--uid-color-zinc-400);--uid-text-tertiary:var(--uid-color-zinc-600);--uid-text-on-accent:var(--uid-color-white);--uid-border-subtle:var(--uid-color-zinc-700);--uid-border-default:var(--uid-color-zinc-600);--uid-border-hover:var(--uid-color-zinc-400);--uid-accent:var(--uid-color-teal-400);--uid-accent-hover:var(--uid-color-teal-300);--uid-accent-subtle:var(--uid-color-teal-900);--uid-accent-text:var(--uid-color-teal-300);--uid-danger:var(--uid-color-rose-400);--uid-danger-hover:var(--uid-color-rose-500);--uid-danger-subtle:var(--uid-color-rose-950);--uid-success:var(--uid-color-emerald-400);--uid-success-subtle:var(--uid-color-emerald-950);--uid-warning:var(--uid-color-amber-400);--uid-warning-subtle:var(--uid-color-amber-950);--uid-info:var(--uid-color-blue-400);--uid-info-subtle:var(--uid-color-blue-950);--uid-shadow-sm:0 1px 2px #0003;--uid-shadow-md:0 4px 12px #0006;--uid-shadow-lg:0 8px 24px #0009;--uid-shadow-xl:0 20px 60px #0009}:root{--uid-color-bg:var(--uid-surface-raised);--uid-color-bg-subtle:var(--uid-surface-base);--uid-color-overlay:var(--uid-surface-overlay);--uid-color-surface:var(--uid-surface-raised);--uid-color-surface-raised:var(--uid-surface-raised);--uid-color-surface-hover:var(--uid-surface-base);--uid-color-text:var(--uid-text-primary);--uid-color-text-primary:var(--uid-text-primary);--uid-color-text-secondary:var(--uid-text-secondary);--uid-color-text-tertiary:var(--uid-text-tertiary);--uid-color-text-disabled:var(--uid-text-tertiary);--uid-color-text-on-primary:var(--uid-text-on-accent);--uid-color-border:var(--uid-border-default);--uid-color-border-hover:var(--uid-border-hover);--uid-color-primary:var(--uid-accent);--uid-color-primary-hover:var(--uid-accent-hover);--uid-color-primary-subtle:var(--uid-accent-subtle);--uid-focus-ring:0 0 0 3px var(--uid-color-primary-subtle);--uid-color-focus-ring:var(--uid-accent);--uid-color-danger:var(--uid-danger);--uid-color-danger-subtle:var(--uid-danger-subtle);--uid-color-success:var(--uid-success);--uid-color-success-subtle:var(--uid-success-subtle);--uid-color-warning:var(--uid-warning);--uid-color-warning-subtle:var(--uid-warning-subtle);--uid-color-warning-dark:var(--uid-warning);--uid-color-info:var(--uid-info);--uid-color-info-subtle:var(--uid-info-subtle)}`,kit:`.uid-button{--uid-button-bg:var(--uid-accent);--uid-button-bg-hover:var(--uid-accent-hover);--uid-button-color:var(--uid-text-on-accent);--uid-button-border:transparent;--uid-button-radius:var(--uid-radius-md);--uid-button-height:var(--uid-size-md);--uid-button-padding-x:var(--uid-space-md);--uid-button-padding-y:var(--uid-space-xs);justify-content:center;align-items:center;gap:var(--uid-space-xs);min-height:var(--uid-button-height);padding:var(--uid-button-padding-y) var(--uid-button-padding-x);border:1px solid var(--uid-button-border);border-radius:var(--uid-button-radius);background:var(--uid-button-bg);color:var(--uid-button-color);font:inherit;font-size:var(--uid-font-size-md);font-weight:var(--uid-font-weight-medium);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background var(--uid-duration-fast) var(--uid-ease-out), border-color var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out), opacity var(--uid-duration-fast) var(--uid-ease-out);line-height:1;text-decoration:none;display:inline-flex}.uid-button:hover:not([disabled]):not([data-loading=true]){background:var(--uid-button-bg-hover)}.uid-button:active:not([disabled]):not([data-loading=true]){transform:scale(.98)}.uid-button:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px;border-radius:inherit}.uid-button[disabled],.uid-button[aria-disabled=true]{opacity:.5;cursor:not-allowed}.uid-button[data-loading=true]{opacity:.7;cursor:wait;pointer-events:none}.uid-button--secondary{--uid-button-bg:var(--uid-surface-raised);--uid-button-bg-hover:var(--uid-border-subtle);--uid-button-color:var(--uid-text-primary);--uid-button-border:var(--uid-border-default)}.uid-button--ghost{--uid-button-bg:transparent;--uid-button-bg-hover:var(--uid-border-subtle);--uid-button-color:var(--uid-text-primary);--uid-button-border:transparent}.uid-button--danger{--uid-button-bg:var(--uid-danger);--uid-button-bg-hover:var(--uid-danger-hover);--uid-button-color:var(--uid-text-on-accent)}.uid-button--danger:focus-visible{outline-color:var(--uid-danger)}.uid-button--sm{--uid-button-height:var(--uid-size-sm);--uid-button-padding-x:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-button--lg{--uid-button-height:var(--uid-size-lg);--uid-button-padding-x:var(--uid-space-lg);font-size:var(--uid-font-size-lg)}.uid-button__prepend,.uid-button__append{flex-shrink:0;align-items:center;display:inline-flex}.uid-button__icon{flex-shrink:0}.uid-button--icon-only{width:var(--uid-button-height);min-width:var(--uid-button-height);padding:0}.uid-input-field{--uid-input-height:var(--uid-size-md);--uid-input-padding-x:var(--uid-space-sm);--uid-input-font-size:var(--uid-font-size-md);--uid-input-bg:var(--uid-surface-raised);--uid-input-border:var(--uid-border-default);--uid-input-border-focus:var(--uid-accent);--uid-input-color:var(--uid-text-primary);--uid-input-placeholder:var(--uid-text-tertiary);--uid-input-radius:var(--uid-radius-md);--uid-input-gap:var(--uid-space-xs);gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-input-field__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-input-field__required{color:var(--uid-danger)}.uid-input-field__control{min-height:var(--uid-input-height);padding:var(--uid-space-xs) var(--uid-input-padding-x);align-items:center;gap:var(--uid-input-gap);background:var(--uid-input-bg);border:1px solid var(--uid-input-border);border-radius:var(--uid-input-radius);transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);display:flex}.uid-input-field__control:focus-within{border-color:var(--uid-input-border-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent);outline:none}.uid-input-field__input{min-width:0;color:var(--uid-input-color);font:inherit;font-size:var(--uid-input-font-size);background:0 0;border:none;outline:none;flex:1;padding:0;line-height:1.5}.uid-input-field__input::placeholder{color:var(--uid-input-placeholder)}.uid-input-field__prepend,.uid-input-field__append{color:var(--uid-text-secondary);flex-shrink:0;align-items:center;display:inline-flex}.uid-input-field__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-input-field__hint--error{color:var(--uid-danger)}.uid-input-field--error .uid-input-field__control{border-color:var(--uid-danger)}.uid-input-field--error .uid-input-field__control:focus-within{border-color:var(--uid-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-danger) 15%, transparent)}.uid-input-field--disabled .uid-input-field__control{opacity:.5;cursor:not-allowed;background:var(--uid-surface-base)}.uid-input-field--disabled .uid-input-field__input{cursor:not-allowed;pointer-events:none}.uid-input-field--readonly .uid-input-field__control{background:var(--uid-surface-base);border-style:dashed}.uid-input-field--sm{--uid-input-height:var(--uid-size-sm);--uid-input-font-size:var(--uid-font-size-sm);--uid-input-padding-x:var(--uid-space-xs)}.uid-input-field--lg{--uid-input-height:var(--uid-size-lg);--uid-input-font-size:var(--uid-font-size-lg);--uid-input-padding-x:var(--uid-space-md)}.uid-textarea-field{--uid-textarea-padding-x:var(--uid-space-sm);--uid-textarea-padding-y:var(--uid-space-xs);--uid-textarea-font-size:var(--uid-font-size-md);--uid-textarea-bg:var(--uid-surface-raised);--uid-textarea-border:var(--uid-border-default);--uid-textarea-border-focus:var(--uid-accent);--uid-textarea-color:var(--uid-text-primary);--uid-textarea-placeholder:var(--uid-text-tertiary);--uid-textarea-radius:var(--uid-radius-md);gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-textarea-field__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-textarea-field__required{color:var(--uid-danger)}.uid-textarea-field__textarea{box-sizing:border-box;width:100%;padding:var(--uid-textarea-padding-y) var(--uid-textarea-padding-x);background:var(--uid-textarea-bg);border:1px solid var(--uid-textarea-border);border-radius:var(--uid-textarea-radius);color:var(--uid-textarea-color);font:inherit;font-size:var(--uid-textarea-font-size);transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);outline:none;line-height:1.5}.uid-textarea-field__textarea::placeholder{color:var(--uid-textarea-placeholder)}.uid-textarea-field__textarea:focus-visible{border-color:var(--uid-textarea-border-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent)}.uid-textarea-field__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-textarea-field__hint--error{color:var(--uid-danger)}.uid-textarea-field--error .uid-textarea-field__textarea{border-color:var(--uid-danger)}.uid-textarea-field--error .uid-textarea-field__textarea:focus-visible{border-color:var(--uid-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-danger) 15%, transparent)}.uid-textarea-field--disabled .uid-textarea-field__textarea{opacity:.5;cursor:not-allowed;background:var(--uid-surface-base)}.uid-textarea-field--readonly .uid-textarea-field__textarea{background:var(--uid-surface-base);cursor:default;border-style:dashed}.uid-textarea-field--sm{--uid-textarea-font-size:var(--uid-font-size-sm);--uid-textarea-padding-x:var(--uid-space-xs)}.uid-textarea-field--lg{--uid-textarea-font-size:var(--uid-font-size-lg);--uid-textarea-padding-x:var(--uid-space-md)}.uid-checkbox{--uid-checkbox-size:16px;--uid-checkbox-radius:var(--uid-radius-sm);--uid-checkbox-border:var(--uid-border-default);--uid-checkbox-bg:var(--uid-surface-raised);--uid-checkbox-checked-bg:var(--uid-accent);--uid-checkbox-checked-border:var(--uid-accent);--uid-checkbox-mark:var(--uid-text-on-accent);--uid-checkbox-gap:var(--uid-space-sm);gap:var(--uid-space-xs);flex-direction:column;display:inline-flex}.uid-checkbox__label{align-items:center;gap:var(--uid-checkbox-gap);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.uid-checkbox__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.uid-checkbox__box{width:var(--uid-checkbox-size);height:var(--uid-checkbox-size);border:1.5px solid var(--uid-checkbox-border);border-radius:var(--uid-checkbox-radius);background:var(--uid-checkbox-bg);transition:background var(--uid-duration-fast) var(--uid-ease-out), border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);flex-shrink:0;position:relative}.uid-checkbox__box:after{content:"";border:1.5px solid var(--uid-checkbox-mark);opacity:0;width:4px;height:8px;transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out);border-top:none;border-left:none;margin:auto;position:absolute;inset:0;transform:rotate(45deg)translateY(-1px)scale(0)}.uid-checkbox__box:before{content:"";background:var(--uid-checkbox-mark);opacity:0;width:8px;height:1.5px;transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out);border-radius:1px;margin:auto;position:absolute;inset:0;transform:scale(0)}.uid-checkbox__input:checked+.uid-checkbox__box{background:var(--uid-checkbox-checked-bg);border-color:var(--uid-checkbox-checked-border)}.uid-checkbox__input:checked+.uid-checkbox__box:after{opacity:1;transform:rotate(45deg)translateY(-1px)scale(1)}.uid-checkbox__input:indeterminate+.uid-checkbox__box{background:var(--uid-checkbox-checked-bg);border-color:var(--uid-checkbox-checked-border)}.uid-checkbox__input:indeterminate+.uid-checkbox__box:before{opacity:1;transform:scale(1)}.uid-checkbox__input:focus-visible+.uid-checkbox__box{box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent);border-color:var(--uid-accent);outline:none}.uid-checkbox__text{font-size:var(--uid-font-size-md);color:var(--uid-text-primary);line-height:1.4}.uid-checkbox__required{color:var(--uid-danger);margin-left:2px}.uid-checkbox__hint{padding-left:calc(var(--uid-checkbox-size) + var(--uid-checkbox-gap));font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-checkbox__hint--error{color:var(--uid-danger)}.uid-checkbox--error .uid-checkbox__box{border-color:var(--uid-danger)}.uid-checkbox--error .uid-checkbox__input:focus-visible+.uid-checkbox__box{box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-danger) 15%, transparent);border-color:var(--uid-danger)}.uid-checkbox--disabled .uid-checkbox__label{cursor:not-allowed;opacity:.5}.uid-checkbox-group{gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-checkbox-group__legend{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);align-items:center;gap:var(--uid-space-2xs);margin:0;line-height:1.4;display:flex}.uid-checkbox-group__required{color:var(--uid-danger)}.uid-checkbox-group__options{gap:var(--uid-space-sm);display:flex}.uid-checkbox-group--vertical .uid-checkbox-group__options{flex-direction:column}.uid-checkbox-group--horizontal .uid-checkbox-group__options{flex-flow:wrap}.uid-checkbox-group__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-checkbox-group__hint--error{color:var(--uid-danger)}.uid-checkbox-group--disabled{cursor:not-allowed;opacity:.5}.uid-radio{--uid-radio-size:16px;--uid-radio-border:var(--uid-border-default);--uid-radio-bg:var(--uid-surface-raised);--uid-radio-checked-border:var(--uid-accent);--uid-radio-dot:var(--uid-accent);--uid-radio-gap:var(--uid-space-sm);align-items:center;gap:var(--uid-radio-gap);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.uid-radio__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.uid-radio__circle{width:var(--uid-radio-size);height:var(--uid-radio-size);border:1.5px solid var(--uid-radio-border);background:var(--uid-radio-bg);transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-radio__circle:after{content:"";background:var(--uid-radio-dot);opacity:0;width:6px;height:6px;transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out);border-radius:50%;transform:scale(.5)}.uid-radio__input:checked+.uid-radio__circle{border-color:var(--uid-radio-checked-border)}.uid-radio__input:checked+.uid-radio__circle:after{opacity:1;transform:scale(1)}.uid-radio__input:focus-visible+.uid-radio__circle{box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent);border-color:var(--uid-accent);outline:none}.uid-radio__text{font-size:var(--uid-font-size-md);color:var(--uid-text-primary);line-height:1.4}.uid-radio--disabled{cursor:not-allowed;opacity:.5}.uid-radio-group{gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-radio-group__legend{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);align-items:center;gap:var(--uid-space-2xs);margin:0;line-height:1.4;display:flex}.uid-radio-group__required{color:var(--uid-danger)}.uid-radio-group__options{gap:var(--uid-space-sm);display:flex}.uid-radio-group--vertical .uid-radio-group__options{flex-direction:column}.uid-radio-group--horizontal .uid-radio-group__options{flex-flow:wrap}.uid-radio-group__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-radio-group__hint--error{color:var(--uid-danger)}.uid-radio-group--disabled{cursor:not-allowed;opacity:.5}.uid-switch{--uid-switch-track-width:36px;--uid-switch-track-height:20px;--uid-switch-thumb-size:14px;--uid-switch-thumb-offset:3px;--uid-switch-track-bg:var(--uid-border-default);--uid-switch-track-on-bg:var(--uid-accent);--uid-switch-thumb-bg:var(--uid-color-white);--uid-switch-gap:var(--uid-space-sm);gap:var(--uid-space-xs);flex-direction:column;display:inline-flex}.uid-switch__label{align-items:center;gap:var(--uid-switch-gap);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.uid-switch__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.uid-switch__track{width:var(--uid-switch-track-width);height:var(--uid-switch-track-height);background:var(--uid-switch-track-bg);border-radius:var(--uid-radius-full);transition:background var(--uid-duration-base) var(--uid-ease-in-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);flex-shrink:0;position:relative}.uid-switch__thumb{top:var(--uid-switch-thumb-offset);left:var(--uid-switch-thumb-offset);width:var(--uid-switch-thumb-size);height:var(--uid-switch-thumb-size);background:var(--uid-switch-thumb-bg);box-shadow:var(--uid-shadow-sm);transition:transform var(--uid-duration-base) var(--uid-ease-in-out);border-radius:50%;position:absolute;transform:translate(0)}.uid-switch__input:checked+.uid-switch__track{background:var(--uid-switch-track-on-bg)}.uid-switch__input:checked+.uid-switch__track .uid-switch__thumb{transform:translateX(calc(var(--uid-switch-track-width) - var(--uid-switch-thumb-size) - var(--uid-switch-thumb-offset) * 2))}.uid-switch__input:focus-visible+.uid-switch__track{box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent);outline:none}.uid-switch__text{font-size:var(--uid-font-size-md);color:var(--uid-text-primary);line-height:1.4}.uid-switch__required{color:var(--uid-danger);margin-left:2px}.uid-switch__hint{padding-left:calc(var(--uid-switch-track-width) + var(--uid-switch-gap));font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-switch__hint--error{color:var(--uid-danger)}.uid-switch--error .uid-switch__track{outline:1.5px solid var(--uid-danger);outline-offset:1px}.uid-switch--disabled .uid-switch__label{cursor:not-allowed;opacity:.5}.uid-switch--sm{--uid-switch-track-width:28px;--uid-switch-track-height:16px;--uid-switch-thumb-size:10px;--uid-switch-thumb-offset:3px}.uid-switch--lg{--uid-switch-track-width:44px;--uid-switch-track-height:24px;--uid-switch-thumb-size:18px;--uid-switch-thumb-offset:3px}.uid-label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:var(--uid-line-height-tight);cursor:default;display:inline-flex}.uid-label--disabled{opacity:.5;cursor:not-allowed}.uid-label__required{color:var(--uid-danger)}.uid-form-field{gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-form-field__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-form-field--disabled .uid-form-field__label{opacity:.5}.uid-form-field__required{color:var(--uid-danger)}.uid-form-field__content{flex-direction:column;display:flex}.uid-form-field__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-form-field__hint--error{color:var(--uid-danger)}.uid-spinner{--uid-spinner-size:20px;--uid-spinner-color:currentColor;--uid-spinner-width:2px;width:var(--uid-spinner-size);height:var(--uid-spinner-size);border:var(--uid-spinner-width) solid color-mix(in srgb, var(--uid-spinner-color) 20%, transparent);border-top-color:var(--uid-spinner-color);animation:uid-spin var(--uid-duration-slow) linear infinite;border-radius:50%;flex-shrink:0;display:inline-block}@keyframes uid-spin{to{transform:rotate(360deg)}}.uid-spinner--sm{--uid-spinner-size:16px}.uid-spinner--lg{--uid-spinner-size:28px;--uid-spinner-width:2.5px}.uid-skeleton{background:linear-gradient(90deg, var(--uid-surface-raised) 25%, color-mix(in srgb, var(--uid-text-tertiary) 18%, var(--uid-surface-raised)) 50%, var(--uid-surface-raised) 75%);border-radius:var(--uid-radius-sm);vertical-align:middle;background-size:200% 100%;animation:1.6s ease-in-out infinite uid-skeleton-shimmer;display:inline-block}.uid-skeleton--rounded{border-radius:var(--uid-radius-md)}.uid-skeleton--full{border-radius:var(--uid-radius-full)}.uid-skeleton-lines{gap:var(--uid-space-sm);flex-direction:column;width:100%;display:flex}.uid-skeleton-lines .uid-skeleton{display:block}@keyframes uid-skeleton-shimmer{0%{background-position:200%}to{background-position:-200%}}.uid-badge{--uid-badge-bg:color-mix(in srgb, var(--uid-text-primary) 10%, transparent);--uid-badge-color:var(--uid-text-primary);--uid-badge-radius:var(--uid-radius-full);padding:2px var(--uid-space-xs);background:var(--uid-badge-bg);color:var(--uid-badge-color);border-radius:var(--uid-badge-radius);font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-medium);white-space:nowrap;vertical-align:middle;justify-content:center;align-items:center;line-height:1.4;display:inline-flex}.uid-badge--dot{border-radius:50%;width:8px;height:8px;padding:0}.uid-badge--sm{padding:1px 5px;font-size:10px}.uid-badge--info{--uid-badge-bg:color-mix(in srgb, var(--uid-accent) 15%, transparent);--uid-badge-color:var(--uid-accent-text)}.uid-badge--success{--uid-badge-bg:var(--uid-success-subtle);--uid-badge-color:var(--uid-success)}.uid-badge--warning{--uid-badge-bg:var(--uid-warning-subtle);--uid-badge-color:var(--uid-warning)}.uid-badge--danger{--uid-badge-bg:var(--uid-danger-subtle);--uid-badge-color:var(--uid-danger)}.uid-badge--dot.uid-badge--default{background:var(--uid-text-tertiary)}.uid-badge--dot.uid-badge--info{background:var(--uid-accent)}.uid-badge--dot.uid-badge--success{background:var(--uid-success)}.uid-badge--dot.uid-badge--warning{background:var(--uid-warning)}.uid-badge--dot.uid-badge--danger{background:var(--uid-danger)}.uid-alert{--uid-alert-bg:var(--uid-accent-subtle);--uid-alert-color:var(--uid-accent-text);--uid-alert-border:var(--uid-accent);align-items:flex-start;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-alert-bg);border:1px solid color-mix(in srgb, var(--uid-alert-border) 30%, transparent);border-left:3px solid var(--uid-alert-border);border-radius:var(--uid-radius-md);color:var(--uid-alert-color);display:flex}.uid-alert__icon{flex-shrink:0;margin-top:1px;display:flex}.uid-alert__content{flex:1;min-width:0}.uid-alert__title{margin:0 0 var(--uid-space-xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-alert-color);line-height:1.4}.uid-alert__body{font-size:var(--uid-font-size-sm);color:var(--uid-text-primary);line-height:1.5}.uid-alert__close{padding:var(--uid-space-xs);margin:calc(-1 * var(--uid-space-xs)) calc(-1 * var(--uid-space-xs)) 0 0;color:var(--uid-alert-color);cursor:pointer;border-radius:var(--uid-radius-sm);opacity:.7;transition:opacity var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-alert__close:hover{opacity:1}.uid-alert__close:focus-visible{outline:2px solid var(--uid-alert-border);outline-offset:1px;opacity:1}.uid-alert--info{--uid-alert-bg:var(--uid-accent-subtle);--uid-alert-color:var(--uid-accent-text);--uid-alert-border:var(--uid-accent)}.uid-alert--success{--uid-alert-bg:var(--uid-success-subtle);--uid-alert-color:var(--uid-success);--uid-alert-border:var(--uid-success)}.uid-alert--warning{--uid-alert-bg:var(--uid-warning-subtle);--uid-alert-color:var(--uid-warning);--uid-alert-border:var(--uid-warning)}.uid-alert--danger{--uid-alert-bg:var(--uid-danger-subtle);--uid-alert-color:var(--uid-danger);--uid-alert-border:var(--uid-danger)}.uid-toast-list{bottom:var(--uid-space-lg);right:var(--uid-space-lg);z-index:var(--uid-z-toast);gap:var(--uid-space-sm);pointer-events:none;max-width:400px;width:calc(100vw - var(--uid-space-lg) * 2);flex-direction:column;align-items:flex-end;display:flex;position:fixed}.uid-toast{--uid-toast-bg:var(--uid-surface-overlay);--uid-toast-color:var(--uid-text-primary);--uid-toast-border:var(--uid-border-default);--uid-toast-accent:var(--uid-accent);align-items:flex-start;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-toast-bg);border:1px solid var(--uid-toast-border);border-left:3px solid var(--uid-toast-accent);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-lg);pointer-events:all;box-sizing:border-box;width:100%;display:flex}.uid-toast__icon{color:var(--uid-toast-accent);flex-shrink:0;margin-top:1px;display:flex}.uid-toast__content{flex:1;min-width:0}.uid-toast__title{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-toast-color);margin:0 0 2px;line-height:1.4}.uid-toast__message{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-toast__close{padding:var(--uid-space-xs);margin:calc(-1 * var(--uid-space-xs)) calc(-1 * var(--uid-space-xs)) 0 0;color:var(--uid-text-tertiary);cursor:pointer;border-radius:var(--uid-radius-sm);transition:color var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-toast__close:hover{color:var(--uid-text-primary)}.uid-toast__close:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px}.uid-toast--info{--uid-toast-accent:var(--uid-accent)}.uid-toast--success{--uid-toast-accent:var(--uid-success)}.uid-toast--warning{--uid-toast-accent:var(--uid-warning)}.uid-toast--danger{--uid-toast-accent:var(--uid-danger)}.uid-toast-enter-active,.uid-toast-leave-active{transition:opacity var(--uid-duration-base) var(--uid-ease-out), transform var(--uid-duration-base) var(--uid-ease-out)}.uid-toast-move{transition:transform var(--uid-duration-base) var(--uid-ease-out)}.uid-toast-enter-from,.uid-toast-leave-to{opacity:0;transform:translate(100%)}.uid-toast-leave-active{position:absolute}.uid-progress-wrapper{gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-progress-header{justify-content:space-between;align-items:center;gap:var(--uid-space-sm);display:flex}.uid-progress-label,.uid-progress-value{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);line-height:1.4}.uid-progress{--uid-progress-height:8px;--uid-progress-bg:var(--uid-border-subtle);--uid-progress-fill:var(--uid-accent);--uid-progress-radius:var(--uid-radius-full);width:100%;height:var(--uid-progress-height);background:var(--uid-progress-bg);border-radius:var(--uid-progress-radius);position:relative;overflow:hidden}.uid-progress__bar{background:var(--uid-progress-fill);border-radius:var(--uid-progress-radius);height:100%;transition:width var(--uid-duration-base) var(--uid-ease-out)}.uid-progress--indeterminate:after{content:"";background:linear-gradient(90deg, transparent 0%, var(--uid-progress-fill) 40%, var(--uid-progress-fill) 60%, transparent 100%) no-repeat center / 50% 100%;animation:1.5s linear infinite uid-progress-indeterminate;position:absolute;inset:0}@keyframes uid-progress-indeterminate{0%{background-position:-50%}to{background-position:150%}}.uid-progress--sm{--uid-progress-height:4px}.uid-progress--lg{--uid-progress-height:12px}.uid-progress--default,.uid-progress--info{--uid-progress-fill:var(--uid-accent)}.uid-progress--success{--uid-progress-fill:var(--uid-success)}.uid-progress--warning{--uid-progress-fill:var(--uid-warning)}.uid-progress--danger{--uid-progress-fill:var(--uid-danger)}.uid-modal-overlay{z-index:var(--uid-z-modal);padding:var(--uid-space-md);background:var(--uid-modal-overlay,#00000080);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.uid-modal{width:100%;max-height:calc(100vh - var(--uid-space-xl));background:var(--uid-modal-bg,var(--uid-color-surface));border:1px solid var(--uid-modal-border,var(--uid-color-border));border-radius:var(--uid-modal-radius,var(--uid-radius-lg));box-shadow:var(--uid-modal-shadow,var(--uid-shadow-xl,0 20px 60px #0000004d));outline:none;flex-direction:column;display:flex;position:relative;overflow:hidden}.uid-modal--sm{max-width:400px}.uid-modal--md{max-width:560px}.uid-modal--lg{max-width:768px}.uid-modal--xl{max-width:1024px}.uid-modal--full{max-width:none;height:calc(100vh - var(--uid-space-xl))}.uid-modal--full .uid-modal__body{flex:1;overflow:auto}.uid-modal__header{padding:var(--uid-space-md) 20px;border-bottom:1px solid var(--uid-color-border);flex-shrink:0;align-items:flex-start;gap:12px;display:flex}.uid-modal__title{font-size:var(--uid-font-size-lg);color:var(--uid-color-text-primary);flex:1;margin:0;font-weight:600;line-height:1.3}.uid-modal__close{border-radius:var(--uid-radius-sm);width:28px;height:28px;color:var(--uid-color-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.uid-modal__close:hover{background:var(--uid-color-surface-hover);color:var(--uid-color-text-primary)}.uid-modal__close:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-modal__body{flex:1;padding:20px;overflow-y:auto}.uid-modal__footer{justify-content:flex-end;align-items:center;gap:var(--uid-space-sm);border-top:1px solid var(--uid-color-border);flex-shrink:0;padding:12px 20px;display:flex}.uid-modal-enter-active,.uid-modal-leave-active{transition:opacity var(--uid-duration-base) var(--uid-ease-out)}.uid-modal-enter-active .uid-modal,.uid-modal-leave-active .uid-modal{transition:opacity var(--uid-duration-base) var(--uid-ease-out), transform var(--uid-duration-base) var(--uid-ease-out)}.uid-modal-enter-from,.uid-modal-leave-to{opacity:0}.uid-modal-enter-from .uid-modal,.uid-modal-leave-to .uid-modal{opacity:0;transform:scale(.95)translateY(-8px)}.uid-drawer-overlay{z-index:var(--uid-z-modal);background:var(--uid-drawer-overlay,#00000080);position:fixed;inset:0}.uid-drawer{background:var(--uid-drawer-bg,var(--uid-color-surface));border-color:var(--uid-drawer-border,var(--uid-color-border));box-shadow:var(--uid-drawer-shadow,var(--uid-shadow-xl,0 20px 60px #0000004d));border-style:solid;border-width:0;outline:none;flex-direction:column;display:flex;position:fixed;overflow:hidden}.uid-drawer--right{width:var(--uid-drawer-width,400px);border-width:0 0 0 1px;top:0;bottom:0;right:0}.uid-drawer--left{width:var(--uid-drawer-width,400px);border-width:0 1px 0 0;top:0;bottom:0;left:0}.uid-drawer--top{height:var(--uid-drawer-height,50vh);border-radius:0 0 var(--uid-radius-lg) var(--uid-radius-lg);border-width:0 0 1px;top:0;left:0;right:0}.uid-drawer--bottom{height:var(--uid-drawer-height,50vh);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border-width:1px 0 0;bottom:0;left:0;right:0}.uid-drawer__header{padding:var(--uid-space-md) 20px;border-bottom:1px solid var(--uid-color-border);flex-shrink:0;align-items:flex-start;gap:12px;display:flex}.uid-drawer__title{font-size:var(--uid-font-size-lg);color:var(--uid-color-text-primary);flex:1;margin:0;font-weight:600;line-height:1.3}.uid-drawer__close{border-radius:var(--uid-radius-sm);width:28px;height:28px;color:var(--uid-color-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.uid-drawer__close:hover{background:var(--uid-color-surface-hover);color:var(--uid-color-text-primary)}.uid-drawer__close:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-drawer__body{flex:1;padding:20px;overflow-y:auto}.uid-drawer__footer{justify-content:flex-end;align-items:center;gap:var(--uid-space-sm);border-top:1px solid var(--uid-color-border);flex-shrink:0;padding:12px 20px;display:flex}.uid-drawer-right-enter-active,.uid-drawer-right-leave-active,.uid-drawer-left-enter-active,.uid-drawer-left-leave-active,.uid-drawer-top-enter-active,.uid-drawer-top-leave-active,.uid-drawer-bottom-enter-active,.uid-drawer-bottom-leave-active{transition:opacity var(--uid-duration-base) var(--uid-ease-out)}.uid-drawer-right-enter-active .uid-drawer,.uid-drawer-right-leave-active .uid-drawer,.uid-drawer-left-enter-active .uid-drawer,.uid-drawer-left-leave-active .uid-drawer,.uid-drawer-bottom-enter-active .uid-drawer,.uid-drawer-bottom-leave-active .uid-drawer{transition:transform var(--uid-duration-base) var(--uid-ease-out)}.uid-drawer-right-enter-from,.uid-drawer-right-leave-to{opacity:0}.uid-drawer-right-enter-from .uid-drawer,.uid-drawer-right-leave-to .uid-drawer{transform:translate(100%)}.uid-drawer-left-enter-from,.uid-drawer-left-leave-to{opacity:0}.uid-drawer-left-enter-from .uid-drawer,.uid-drawer-left-leave-to .uid-drawer{transform:translate(-100%)}.uid-drawer-bottom-enter-from,.uid-drawer-bottom-leave-to{opacity:0}.uid-drawer-bottom-enter-from .uid-drawer,.uid-drawer-bottom-leave-to .uid-drawer{transform:translateY(100%)}.uid-drawer-top-enter-active .uid-drawer,.uid-drawer-top-leave-active .uid-drawer{transition:transform var(--uid-duration-base) var(--uid-ease-out)}.uid-drawer-top-enter-from,.uid-drawer-top-leave-to{opacity:0}.uid-drawer-top-enter-from .uid-drawer,.uid-drawer-top-leave-to .uid-drawer{transform:translateY(-100%)}.uid-tooltip-anchor{display:contents}.uid-tooltip{z-index:var(--uid-z-tooltip);max-width:var(--uid-tooltip-max-width,240px);padding:var(--uid-tooltip-padding-y,var(--uid-space-xs)) var(--uid-tooltip-padding-x,var(--uid-space-sm));background:var(--uid-tooltip-bg,var(--uid-color-zinc-900));color:var(--uid-tooltip-color,var(--uid-color-zinc-50));font-size:var(--uid-tooltip-font-size,var(--uid-font-size-sm));border-radius:var(--uid-tooltip-radius,var(--uid-radius-sm));pointer-events:none;white-space:normal;word-break:break-word;line-height:1.4}.uid-tooltip-enter-active,.uid-tooltip-leave-active{transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out)}.uid-tooltip-enter-from,.uid-tooltip-leave-to{opacity:0;transform:scale(.95)}.uid-popover-trigger{display:contents}.uid-popover{z-index:var(--uid-z-popover,450);min-width:var(--uid-popover-min-width,200px);padding:var(--uid-popover-padding,12px);background:var(--uid-popover-bg,var(--uid-color-surface));border:1px solid var(--uid-popover-border,var(--uid-color-border));border-radius:var(--uid-popover-radius,var(--uid-radius-md));box-shadow:var(--uid-popover-shadow,var(--uid-shadow-lg,0 8px 24px #00000026))}.uid-popover-enter-active,.uid-popover-leave-active{transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out)}.uid-popover-enter-from,.uid-popover-leave-to{opacity:0;transform:scale(.96)translateY(-4px)}.uid-menu-trigger{display:contents}.uid-menu{z-index:var(--uid-z-popover,450);min-width:var(--uid-menu-min-width,180px);padding:var(--uid-menu-padding-y,var(--uid-space-xs)) 0;background:var(--uid-menu-bg,var(--uid-color-surface));border:1px solid var(--uid-menu-border,var(--uid-color-border));border-radius:var(--uid-menu-radius,var(--uid-radius-md));box-shadow:var(--uid-menu-shadow,var(--uid-shadow-lg,0 8px 24px #00000026));outline:none}.uid-menu-item{align-items:center;gap:var(--uid-space-sm);width:100%;padding:var(--uid-space-sm) 12px;font-size:var(--uid-font-size-sm);color:var(--uid-menu-item-color,var(--uid-color-text-primary));text-align:left;cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;border-radius:0;display:flex}.uid-menu-item:hover:not([disabled]),.uid-menu-item:focus-visible:not([disabled]),.uid-menu-item:focus-visible{background:var(--uid-menu-item-bg-hover,var(--uid-color-surface-hover));outline:none}.uid-menu-item__icon{color:var(--uid-menu-item-icon-color,currentColor);flex-shrink:0}.uid-menu-item--danger{color:var(--uid-menu-item-color-danger,var(--uid-color-danger))}.uid-menu-item--disabled,.uid-menu-item[disabled]{opacity:.4;cursor:not-allowed;pointer-events:none}.uid-menu-separator{height:1px;margin:var(--uid-space-xs) 0;background:var(--uid-color-border)}.uid-submenu{display:block}.uid-submenu__label{flex:auto;min-width:0}.uid-submenu__chevron{color:var(--uid-menu-submenu-chevron-color,var(--uid-color-text-secondary,currentColor));flex-shrink:0;margin-left:auto}.uid-submenu__trigger--open:not([disabled]){background:var(--uid-menu-item-bg-hover,var(--uid-color-surface-hover))}.uid-submenu__panel{max-height:calc(100vh - 16px);overflow-y:auto}.uid-submenu-enter-active,.uid-submenu-leave-active{transition:opacity var(--uid-duration-fast) var(--uid-ease-out)}.uid-submenu-enter-from,.uid-submenu-leave-to{opacity:0}.uid-menu-enter-active,.uid-menu-leave-active{transition:opacity var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out)}.uid-menu-enter-from,.uid-menu-leave-to{opacity:0;transform:scale(.96)translateY(-4px)}.uid-tabs{flex-direction:column;display:flex}.uid-tabs--vertical{gap:var(--uid-space-md);flex-direction:row}.uid-tabs__list{gap:var(--uid-space-xs);border-bottom:1px solid var(--uid-color-border);scrollbar-width:thin;scroll-snap-type:x proximity;flex-shrink:0;display:flex;overflow:auto hidden}.uid-tabs__list>.uid-tab{scroll-snap-align:start;flex:none}.uid-tabs--vertical .uid-tabs__list{border-bottom:none;border-right:1px solid var(--uid-color-border);gap:var(--uid-space-2xs);scroll-snap-type:none;flex-direction:column;padding-right:0;overflow-x:visible}.uid-tabs__panels{flex:1}.uid-tab{align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-sm) var(--uid-radius-sm) 0 0;font-size:var(--uid-font-size-sm);color:var(--uid-tab-color,var(--uid-color-text-secondary));cursor:pointer;white-space:nowrap;transition:color var(--uid-duration-fast) var(--uid-ease-out), background var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;font-weight:500;display:inline-flex;position:relative}.uid-tab:after{content:"";height:2px;transition:background var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border-radius:1px;position:absolute;bottom:-1px;left:0;right:0}.uid-tab:hover:not([disabled]){color:var(--uid-tab-color-hover,var(--uid-color-text-primary));background:var(--uid-color-surface-hover)}.uid-tab--active{color:var(--uid-tab-color-active,var(--uid-color-primary))}.uid-tab--active:after{background:var(--uid-color-primary)}.uid-tab[disabled]{opacity:.4;cursor:not-allowed;pointer-events:none}.uid-tab:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px;border-radius:var(--uid-radius-sm)}.uid-tabs--vertical .uid-tab{border-radius:var(--uid-radius-sm) 0 0 var(--uid-radius-sm);padding:var(--uid-space-sm) 12px;justify-content:flex-start}.uid-tabs--vertical .uid-tab:after{width:2px;height:auto;inset:0 -1px 0 auto}.uid-tab-panel{padding:var(--uid-space-md) 0;outline:none}.uid-tab-panel:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px;border-radius:var(--uid-radius-sm)}.uid-breadcrumb__list{font-size:var(--uid-breadcrumb-font-size,var(--uid-font-size-sm));flex-wrap:wrap;align-items:center;gap:0;margin:0;padding:0;list-style:none;display:flex}.uid-breadcrumb__item{align-items:center;display:flex}.uid-breadcrumb__separator:before{content:var(--uid-breadcrumb-sep,"/");padding:0 var(--uid-space-sm);color:var(--uid-breadcrumb-sep-color,var(--uid-color-text-disabled));-webkit-user-select:none;user-select:none}.uid-breadcrumb__item:first-child>.uid-breadcrumb__separator{display:none}.uid-breadcrumb__link{color:var(--uid-breadcrumb-link-color,var(--uid-color-text-secondary));transition:color var(--uid-duration-fast) var(--uid-ease-out);text-decoration:none}.uid-breadcrumb__link:hover{color:var(--uid-breadcrumb-link-color-hover,var(--uid-color-text-primary));text-decoration:underline}.uid-breadcrumb__link:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px;border-radius:var(--uid-radius-sm)}.uid-breadcrumb__link--button{font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.uid-breadcrumb__text{color:var(--uid-breadcrumb-text-color,var(--uid-color-text-secondary))}.uid-breadcrumb__current{color:var(--uid-breadcrumb-current-color,var(--uid-color-text-primary));font-weight:500}.uid-breadcrumb--nowrap{min-width:0}.uid-breadcrumb--nowrap .uid-breadcrumb__list{white-space:nowrap;flex-wrap:nowrap;overflow:hidden}.uid-breadcrumb--nowrap .uid-breadcrumb__item{min-width:var(--uid-breadcrumb-item-min-width,3em);max-width:var(--uid-breadcrumb-item-max-width,none);flex:0 8 auto}.uid-breadcrumb--nowrap .uid-breadcrumb__item:last-child{flex-shrink:1}.uid-breadcrumb--nowrap .uid-breadcrumb__separator{flex-shrink:0}.uid-breadcrumb--nowrap .uid-breadcrumb__item>:not(.uid-breadcrumb__separator){text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.uid-breadcrumb--measuring .uid-breadcrumb__list>.uid-breadcrumb__item{flex-shrink:0}.uid-breadcrumb__item--collapsed{display:none}.uid-breadcrumb--collapse .uid-breadcrumb__item--ellipsis{flex-shrink:0}.uid-breadcrumb__item--ellipsis>:not(.uid-breadcrumb__separator):not(.uid-breadcrumb__ellipsis){display:none}.uid-breadcrumb__ellipsis{color:var(--uid-breadcrumb-link-color,var(--uid-color-text-secondary))}.uid-breadcrumb__ellipsis--button{padding:0 var(--uid-space-xs,4px);border-radius:var(--uid-radius-sm);font:inherit;line-height:inherit;cursor:pointer;background:0 0;border:none}.uid-breadcrumb__ellipsis--button:hover,.uid-breadcrumb__ellipsis--button[aria-expanded=true]{color:var(--uid-breadcrumb-link-color-hover,var(--uid-color-text-primary));background:var(--uid-color-bg-subtle)}.uid-breadcrumb__ellipsis--button:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-breadcrumb__probe{visibility:hidden;pointer-events:none;white-space:nowrap;font-size:var(--uid-breadcrumb-font-size,var(--uid-font-size-sm));position:absolute}.uid-breadcrumb__menu{z-index:var(--uid-z-popover,450);min-width:160px;max-width:min(320px,100vw - 16px);max-height:280px;padding:var(--uid-space-xs,4px);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);flex-direction:column;display:flex;overflow-y:auto}.uid-breadcrumb__menu-item{width:100%;padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-sm,4px);color:var(--uid-color-text);font:inherit;font-size:var(--uid-breadcrumb-font-size,var(--uid-font-size-sm));text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;display:block;overflow:hidden}.uid-breadcrumb__menu-item:hover,.uid-breadcrumb__menu-item:focus-visible{background:var(--uid-color-bg-subtle);outline:none}.uid-breadcrumb__menu-item[aria-disabled=true]{color:var(--uid-color-text-secondary);cursor:default}.uid-link{color:var(--uid-link-color,var(--uid-color-primary));-webkit-text-decoration:var(--uid-link-decoration,underline);-webkit-text-decoration:var(--uid-link-decoration,underline);text-decoration:var(--uid-link-decoration,underline);text-underline-offset:2px;cursor:pointer;transition:color var(--uid-duration-fast) var(--uid-ease-out), opacity var(--uid-duration-fast) var(--uid-ease-out)}.uid-link:hover:not(.uid-link--disabled){color:var(--uid-link-color-hover,var(--uid-color-primary-hover))}.uid-link:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px;border-radius:var(--uid-radius-sm)}.uid-link--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.uid-pagination{align-items:center;gap:var(--uid-space-xs);display:inline-flex}.uid-pagination__btn{min-width:32px;height:32px;padding:0 var(--uid-space-xs);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-pagination-btn-bg,var(--uid-color-surface));font-size:var(--uid-font-size-sm);color:var(--uid-pagination-btn-color,var(--uid-color-text-primary));cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), border-color var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);justify-content:center;align-items:center;font-weight:500;display:inline-flex}.uid-pagination__btn--labeled{gap:var(--uid-space-xs);padding:0 12px}.uid-pagination__btn:hover:not([disabled]):not(.uid-pagination__btn--active){background:var(--uid-pagination-btn-bg-hover,var(--uid-color-surface-hover));border-color:var(--uid-color-border-hover)}.uid-pagination__btn--active{background:var(--uid-pagination-btn-bg-active,var(--uid-color-primary));border-color:var(--uid-color-primary);color:var(--uid-pagination-btn-color-active,var(--uid-color-text-on-primary));cursor:default}.uid-pagination__btn[disabled]{opacity:.4;cursor:not-allowed}.uid-pagination__btn:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-pagination__ellipsis{min-width:32px;height:32px;font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;display:inline-flex}.uid-load-more{padding:var(--uid-space-md) 0;justify-content:center;display:flex}.uid-load-more__btn{align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) 20px;border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-surface);font-size:var(--uid-font-size-sm);color:var(--uid-color-text-primary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), border-color var(--uid-duration-fast) var(--uid-ease-out);font-weight:500;display:inline-flex}.uid-load-more__btn:hover:not([disabled]){background:var(--uid-color-surface-hover);border-color:var(--uid-color-border-hover)}.uid-load-more__btn[disabled]{opacity:.4;cursor:not-allowed}.uid-load-more__btn:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-infinite-scroll__loader{padding:var(--uid-space-md) 0;justify-content:center;display:flex}.uid-infinite-scroll__sentinel{height:1px}.uid-page-size{align-items:center;gap:var(--uid-space-sm);font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);display:inline-flex}.uid-page-size__select{padding:var(--uid-space-xs) var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-surface);font-size:var(--uid-font-size-sm);color:var(--uid-color-text-primary);cursor:pointer}.uid-page-size__select:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-card{background:var(--uid-card-bg,var(--uid-color-surface));border:1px solid var(--uid-card-border,var(--uid-color-border));border-radius:var(--uid-card-radius,var(--uid-radius-lg));flex-direction:column;display:flex;overflow:hidden}.uid-card--clickable{cursor:pointer;transition:box-shadow var(--uid-duration-fast) var(--uid-ease-out), border-color var(--uid-duration-fast) var(--uid-ease-out)}.uid-card--clickable:hover{border-color:var(--uid-color-border-hover);box-shadow:var(--uid-shadow-md,0 4px 12px #0000001a)}.uid-card--clickable:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-card__media{flex-shrink:0}.uid-card__media img{width:100%;display:block}.uid-card__header{padding:var(--uid-space-md) var(--uid-space-md) 0;font-size:var(--uid-font-size-lg);color:var(--uid-color-text-primary);font-weight:600}.uid-card__body{flex:1}.uid-card__footer{align-items:center;gap:var(--uid-space-sm);padding:12px var(--uid-space-md);border-top:1px solid var(--uid-color-border);display:flex}.uid-card--pad-none .uid-card__body{padding:0}.uid-card--pad-sm .uid-card__body{padding:12px}.uid-card--pad-md .uid-card__body{padding:var(--uid-space-md)}.uid-card--pad-lg .uid-card__body{padding:var(--uid-space-lg)}.uid-card--pad-sm .uid-card__header{padding:12px 12px 0}.uid-card--pad-lg .uid-card__header{padding:var(--uid-space-lg) var(--uid-space-lg) 0}.uid-card--pad-sm .uid-card__footer{padding:var(--uid-space-sm) 12px}.uid-card--pad-lg .uid-card__footer{padding:var(--uid-space-md) var(--uid-space-lg)}.uid-avatar{color:#fff;background:var(--uid-avatar-bg,var(--uid-color-primary));-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:inline-flex;overflow:hidden}.uid-avatar--xs{width:24px;height:24px;font-size:10px}.uid-avatar--sm{width:32px;height:32px;font-size:12px}.uid-avatar--md{width:40px;height:40px;font-size:14px}.uid-avatar--lg{width:56px;height:56px;font-size:18px}.uid-avatar--xl{width:72px;height:72px;font-size:22px}.uid-avatar--circle{border-radius:50%}.uid-avatar--square{border-radius:var(--uid-radius-md)}.uid-avatar__img{object-fit:cover;width:100%;height:100%;display:block}.uid-avatar__initials{color:#fff;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.uid-avatar-group{align-items:center;display:inline-flex}.uid-avatar-group>*{margin-left:var(--uid-avatar-group-overlap,-8px);box-shadow:0 0 0 2px var(--uid-color-surface)}.uid-avatar-group>:first-child{margin-left:0}.uid-avatar-group__overflow{background:var(--uid-color-surface-raised);color:var(--uid-color-text-secondary);border:2px solid var(--uid-color-border);font-size:12px}.uid-tag{align-items:center;gap:var(--uid-space-xs);border-radius:var(--uid-tag-radius,var(--uid-radius-full,9999px));white-space:nowrap;font-weight:500;display:inline-flex}.uid-tag--sm{padding:1px var(--uid-space-sm);font-size:var(--uid-font-size-xs,11px)}.uid-tag--md{padding:2px var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-tag--default{background:var(--uid-tag-bg-default,var(--uid-color-surface-raised));color:var(--uid-tag-color-default,var(--uid-color-text-secondary));border:1px solid var(--uid-color-border)}.uid-tag--info{background:var(--uid-tag-bg-info,var(--uid-color-info-subtle));color:var(--uid-tag-color-info,var(--uid-color-info))}.uid-tag--success{background:var(--uid-tag-bg-success,var(--uid-color-success-subtle));color:var(--uid-tag-color-success,var(--uid-color-success))}.uid-tag--warning{background:var(--uid-tag-bg-warning,var(--uid-color-warning-subtle));color:var(--uid-tag-color-warning,var(--uid-color-warning-dark,var(--uid-color-warning)))}.uid-tag--danger{background:var(--uid-tag-bg-danger,var(--uid-color-danger-subtle));color:var(--uid-tag-color-danger,var(--uid-color-danger))}.uid-tag__dismiss{width:14px;height:14px;color:inherit;opacity:.6;cursor:pointer;transition:opacity var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.uid-tag__dismiss:hover{opacity:1}.uid-tag__dismiss:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px}.uid-divider{color:var(--uid-divider-color,var(--uid-color-text-disabled));font-size:var(--uid-font-size-sm);align-items:center;display:flex}.uid-divider--horizontal{flex-direction:row;width:100%}.uid-divider--horizontal:before,.uid-divider--horizontal:after{content:"";background:var(--uid-divider-line,var(--uid-color-border));flex:1;height:1px}.uid-divider--horizontal .uid-divider__label{white-space:nowrap;-webkit-user-select:none;user-select:none;padding:0 12px}.uid-divider--horizontal:not(:has(.uid-divider__label)):after{display:none}.uid-divider--vertical{background:var(--uid-divider-line,var(--uid-color-border));flex-direction:column;align-self:stretch;width:1px;height:auto}.uid-accordion{border:1px solid var(--uid-accordion-border,var(--uid-color-border));border-radius:var(--uid-accordion-radius,var(--uid-radius-md));flex-direction:column;display:flex;overflow:hidden}.uid-accordion-item+.uid-accordion-item{border-top:1px solid var(--uid-color-border)}.uid-accordion-item__trigger{width:100%;padding:var(--uid-space-md);background:var(--uid-accordion-trigger-bg,transparent);font-size:var(--uid-font-size-base);color:var(--uid-color-text-primary);text-align:left;cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out);border:none;align-items:center;gap:12px;font-weight:500;display:flex}.uid-accordion-item__trigger:hover:not([disabled]){background:var(--uid-color-surface-hover)}.uid-accordion-item__trigger:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-accordion-item__trigger[disabled]{opacity:.4;cursor:not-allowed}.uid-accordion-item__title{flex:1}.uid-accordion-item__chevron{color:var(--uid-color-text-secondary);transition:transform var(--uid-duration-base) var(--uid-ease-in-out);flex-shrink:0}.uid-accordion-item--open .uid-accordion-item__chevron{transform:rotate(180deg)}.uid-accordion-item__body{transition:grid-template-rows var(--uid-duration-base) var(--uid-ease-in-out);grid-template-rows:0fr;display:grid}.uid-accordion-item__body:not([hidden]){grid-template-rows:1fr}.uid-accordion-item__body[hidden]{visibility:hidden;display:grid}.uid-accordion-item__body-inner{padding:0 var(--uid-space-md) var(--uid-space-md);color:var(--uid-color-text-secondary);overflow:hidden}.uid-table-wrap{background:var(--uid-table-bg,var(--uid-color-surface));border-radius:var(--uid-table-radius,var(--uid-radius-md))}.uid-table-wrap--bordered{border:1px solid var(--uid-color-border);overflow:hidden}.uid-table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.uid-table{border-collapse:collapse;width:100%;font-size:var(--uid-font-size-sm)}.uid-table__head{background:var(--uid-table-head-bg,var(--uid-color-surface-raised))}.uid-table__th{padding:12px var(--uid-space-md);font-size:var(--uid-font-size-xs,11px);text-transform:uppercase;letter-spacing:.04em;color:var(--uid-table-th-color,var(--uid-color-text-secondary));border-bottom:1px solid var(--uid-color-border);white-space:nowrap;font-weight:600}.uid-table__th--left{text-align:left}.uid-table__th--center{text-align:center}.uid-table__th--right{text-align:right}.uid-table__th--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.uid-table__th--sortable:hover{background:var(--uid-color-surface-hover);color:var(--uid-color-text-primary)}.uid-table__th--active{color:var(--uid-color-primary)}.uid-table__th-content{align-items:center;gap:var(--uid-space-xs);display:inline-flex}.uid-table__sort-icon{opacity:.5;flex-shrink:0}.uid-table__th--active .uid-table__sort-icon{opacity:1}.uid-table__row{--_uid-table-row-bg:transparent;background:var(--_uid-table-row-bg);transition:background var(--uid-duration-fast) var(--uid-ease-out)}.uid-table__row:hover{--_uid-table-row-bg:var(--uid-table-row-bg-hover,var(--uid-color-surface-hover))}.uid-table__row+.uid-table__row{border-top:1px solid var(--uid-color-border)}.uid-table--striped .uid-table__row:nth-child(2n){--_uid-table-row-bg:var(--uid-table-row-bg-stripe,var(--uid-color-surface-raised))}.uid-table--striped .uid-table__row:nth-child(2n):hover{--_uid-table-row-bg:var(--uid-table-row-bg-hover,var(--uid-color-surface-hover))}.uid-table__td{padding:12px var(--uid-space-md);color:var(--uid-color-text-primary);vertical-align:middle}.uid-table__td--left{text-align:left}.uid-table__td--center{text-align:center}.uid-table__td--right{text-align:right}.uid-table__td--center,.uid-table__td--empty{text-align:center;padding:var(--uid-space-xl) var(--uid-space-md);color:var(--uid-color-text-secondary)}.uid-table__th--select,.uid-table__td--select{width:40px;padding-left:var(--uid-space-md);text-align:left;padding-right:0}.uid-table__row.uid-table__row--selected,.uid-table--striped .uid-table__row.uid-table__row--selected{--_uid-table-row-bg:var(--uid-table-row-bg-selected,var(--uid-color-surface-hover))}.uid-table__row.uid-table__row--selected:hover,.uid-table--striped .uid-table__row.uid-table__row--selected:hover{--_uid-table-row-bg:var(--uid-table-row-bg-selected-hover,var(--uid-table-row-bg-selected,var(--uid-color-surface-hover)))}.uid-table--has-fixed{width:max-content;min-width:100%}.uid-table__cell--fixed{z-index:1;position:sticky}.uid-table__td.uid-table__cell--fixed{background-color:var(--uid-table-fixed-bg,var(--uid-table-bg,var(--uid-color-surface)));background-image:linear-gradient(var(--_uid-table-row-bg), var(--_uid-table-row-bg))}.uid-table__th.uid-table__cell--fixed{z-index:2;background-color:var(--uid-table-head-bg,var(--uid-color-surface-raised))}.uid-table__th--sortable.uid-table__cell--fixed:hover{background-color:var(--uid-color-surface-hover)}.uid-table__cell--fixed-left-last:after,.uid-table__cell--fixed-right-first:after{content:"";pointer-events:none;width:12px;transition:box-shadow var(--uid-duration-fast) var(--uid-ease-out);position:absolute;top:0;bottom:-1px}.uid-table__cell--fixed-left-last:after{right:-12px}.uid-table__cell--fixed-right-first:after{left:-12px}.uid-table-scroll--ping-left .uid-table__cell--fixed-left-last:after{box-shadow:inset 10px 0 8px -8px var(--uid-table-fixed-shadow,var(--_uid-table-fixed-shadow))}.uid-table-scroll--ping-right .uid-table__cell--fixed-right-first:after{box-shadow:inset -10px 0 8px -8px var(--uid-table-fixed-shadow,var(--_uid-table-fixed-shadow))}.uid-table{--_uid-table-fixed-shadow:#00000026}:root[data-theme=dark] .uid-table{--_uid-table-fixed-shadow:#00000080}.uid-select{width:100%;position:relative}.uid-select__trigger{align-items:center;gap:var(--uid-space-sm);width:100%;padding:var(--uid-space-2xs) 12px;border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);background:var(--uid-color-bg);cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color var(--uid-duration-fast), box-shadow var(--uid-duration-fast);min-height:var(--uid-size-md);outline:none;display:flex}.uid-select__trigger:hover{border-color:var(--uid-color-border-hover,var(--uid-color-text-secondary))}.uid-select--open .uid-select__trigger,.uid-select__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:var(--uid-focus-ring,0 0 0 3px var(--uid-color-primary-subtle))}.uid-select--disabled .uid-select__trigger{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-select__value{font-size:var(--uid-font-size-base,16px);color:var(--uid-color-text);text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.uid-select__tags{gap:var(--uid-space-xs);flex-wrap:wrap;flex:1;min-width:0;display:flex}.uid-select--multiple .uid-select__trigger{padding-top:var(--uid-space-xs);padding-bottom:var(--uid-space-xs)}.uid-select__tag{align-items:center;gap:var(--uid-space-2xs);max-width:100%;padding:2px var(--uid-space-xs);background:var(--uid-select-tag-bg,var(--uid-color-primary-subtle));color:var(--uid-select-tag-color,var(--uid-color-primary));border-radius:var(--uid-radius-sm,4px);font-size:var(--uid-font-size-sm,14px);line-height:1.4;display:inline-flex}.uid-select__tag-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uid-select__tag--more{background:var(--uid-color-bg-subtle);color:var(--uid-color-text-secondary)}.uid-select__tag-remove{width:14px;height:14px;color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.uid-select__tag-remove:hover{opacity:1}.uid-select__value--placeholder{color:var(--uid-color-text-tertiary)}.uid-select__suffix{align-items:center;gap:var(--uid-space-xs);flex-shrink:0;display:flex}.uid-select__clear{border-radius:var(--uid-radius-sm,4px);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);transition:color var(--uid-duration-fast), background var(--uid-duration-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.uid-select__clear:hover{color:var(--uid-color-text);background:var(--uid-color-bg-subtle)}.uid-select__chevron{color:var(--uid-color-text-secondary);transition:transform var(--uid-duration-base);flex-shrink:0}.uid-select__chevron--open{transform:rotate(180deg)}.uid-select__dropdown{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);flex-direction:column;max-height:280px;display:flex;overflow:hidden}.uid-select__search{padding:var(--uid-space-sm);border-bottom:1px solid var(--uid-color-border);flex-shrink:0}.uid-select__search-input{width:100%;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);background:0 0;border:none;outline:none;padding:2px 0}.uid-select__search-input::placeholder{color:var(--uid-color-text-tertiary)}.uid-select__list{padding:var(--uid-space-xs);flex:1;overflow-y:auto}.uid-select__group-label{padding:var(--uid-space-sm) 12px var(--uid-space-xs);font-size:var(--uid-font-size-xs,12px);text-transform:uppercase;letter-spacing:.05em;color:var(--uid-color-text-tertiary);font-weight:600}.uid-select__option{width:100%;padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-sm,4px);cursor:pointer;text-align:left;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);transition:background var(--uid-duration-fast);background:0 0;border:none;justify-content:space-between;align-items:center;display:flex}.uid-select__option--active{background:var(--uid-color-bg-subtle)}.uid-select__option--selected{color:var(--uid-color-primary);font-weight:500}.uid-select__option--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-select__check{color:var(--uid-color-primary);flex-shrink:0}.uid-select__empty{padding:var(--uid-space-md) 12px;text-align:center;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text-secondary)}.uid-select--sm .uid-select__trigger{padding:0 var(--uid-space-sm);min-height:var(--uid-size-sm)}.uid-select--lg .uid-select__trigger{padding:var(--uid-space-2xs) var(--uid-space-md);min-height:var(--uid-size-lg)}.uid-select-dropdown-enter-active,.uid-select-dropdown-leave-active{transition:opacity var(--uid-duration-fast), transform var(--uid-duration-fast)}.uid-select-dropdown-enter-from,.uid-select-dropdown-leave-to{opacity:0;transform:translateY(-4px)}.uid-select--sm .uid-select__value{font-size:var(--uid-font-size-sm)}.uid-select--md .uid-select__value{font-size:var(--uid-font-size-md)}.uid-select--lg .uid-select__value{font-size:var(--uid-font-size-lg)}.uid-datepicker{width:100%;position:relative}.uid-datepicker__trigger{align-items:center;gap:var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);background:var(--uid-color-bg);cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;transition:border-color var(--uid-duration-fast), box-shadow var(--uid-duration-fast);min-height:var(--uid-size-md);outline:none;padding:0 12px;display:flex}.uid-datepicker__trigger:hover{border-color:var(--uid-color-border-hover,var(--uid-color-text-secondary))}.uid-datepicker--open .uid-datepicker__trigger,.uid-datepicker__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:var(--uid-focus-ring,0 0 0 3px var(--uid-color-primary-subtle))}.uid-datepicker--disabled .uid-datepicker__trigger{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-datepicker__value{font-size:var(--uid-font-size-base,16px);color:var(--uid-color-text);flex:1}.uid-datepicker__value--placeholder{color:var(--uid-color-text-tertiary)}.uid-datepicker__suffix{align-items:center;gap:var(--uid-space-xs);flex-shrink:0;display:flex}.uid-datepicker__clear{border-radius:var(--uid-radius-sm,4px);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);transition:color var(--uid-duration-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.uid-datepicker__clear:hover{color:var(--uid-color-text)}.uid-datepicker__chevron{color:var(--uid-color-text-secondary);transition:transform var(--uid-duration-base)}.uid-datepicker__chevron--open{transform:rotate(180deg)}.uid-datepicker__panel{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);width:var(--uid-datepicker-width,280px);-webkit-user-select:none;user-select:none;padding:12px}.uid-datepicker__nav{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.uid-datepicker__nav-btn{border-radius:var(--uid-radius-sm,4px);cursor:pointer;width:28px;height:28px;color:var(--uid-color-text-secondary);transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.uid-datepicker__nav-btn:hover{background:var(--uid-color-bg-subtle);color:var(--uid-color-text)}.uid-datepicker__month-label{font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);font-weight:600}.uid-datepicker__grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.uid-datepicker__weekday{height:32px;font-size:var(--uid-font-size-xs,12px);color:var(--uid-color-text-tertiary);justify-content:center;align-items:center;font-weight:600;display:flex}.uid-datepicker__day{border-radius:var(--uid-radius-sm,4px);cursor:pointer;height:32px;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.uid-datepicker__day:hover:not(:disabled){background:var(--uid-color-bg-subtle)}.uid-datepicker__day--other{color:var(--uid-color-text-tertiary)}.uid-datepicker__day--today{color:var(--uid-color-primary);font-weight:700}.uid-datepicker__day--selected{font-weight:600;background:var(--uid-color-primary)!important;color:var(--uid-color-text-on-primary)!important}.uid-datepicker__day--disabled{opacity:.35;cursor:not-allowed}.uid-datepicker-panel-enter-active,.uid-datepicker-panel-leave-active{transition:opacity var(--uid-duration-fast), transform var(--uid-duration-fast)}.uid-datepicker-panel-enter-from,.uid-datepicker-panel-leave-to{opacity:0;transform:translateY(-4px)}.uid-datepicker--sm .uid-datepicker__trigger{min-height:var(--uid-size-sm);padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-datepicker--lg .uid-datepicker__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-datepicker--sm .uid-datepicker__value{font-size:var(--uid-font-size-sm)}.uid-datepicker--md .uid-datepicker__value{font-size:var(--uid-font-size-md)}.uid-datepicker--lg .uid-datepicker__value{font-size:var(--uid-font-size-lg)}.uid-virtual-list{will-change:scroll-position;position:relative;overflow-y:auto}.uid-virtual-list__spacer{position:relative}.uid-virtual-list__content{will-change:transform;position:absolute;top:0;left:0;right:0}.uid-virtual-list__item{box-sizing:border-box;overflow:hidden}.uid-slider{gap:var(--uid-space-sm);flex-direction:column;width:100%;display:flex}.uid-slider__header{justify-content:space-between;align-items:center;display:flex}.uid-slider__label{font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);font-weight:500}.uid-slider__value{font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-primary);text-align:right;min-width:2ch;font-weight:600}.uid-slider__input{appearance:none;width:100%;height:var(--uid-slider-track-height,4px);border-radius:var(--uid-radius-full,9999px);cursor:pointer;background:linear-gradient(to right, var(--uid-slider-fill-color,var(--uid-color-primary)) 0%, var(--uid-slider-fill-color,var(--uid-color-primary)) var(--_fill,0%), var(--uid-slider-track-bg,var(--uid-color-border)) var(--_fill,0%), var(--uid-slider-track-bg,var(--uid-color-border)) 100%);transition:opacity var(--uid-duration-fast);outline:none}.uid-slider__input::-webkit-slider-thumb{-webkit-appearance:none;width:var(--uid-slider-thumb-size,18px);height:var(--uid-slider-thumb-size,18px);background:var(--uid-slider-thumb-bg,var(--uid-color-primary));border:2px solid var(--uid-color-bg);box-shadow:var(--uid-shadow-sm);cursor:pointer;transition:transform var(--uid-duration-fast);border-radius:50%}.uid-slider__input::-moz-range-thumb{width:var(--uid-slider-thumb-size,18px);height:var(--uid-slider-thumb-size,18px);background:var(--uid-slider-thumb-bg,var(--uid-color-primary));border:2px solid var(--uid-color-bg);box-shadow:var(--uid-shadow-sm);cursor:pointer;transition:transform var(--uid-duration-fast);border-radius:50%}.uid-slider__input:hover::-webkit-slider-thumb{transform:scale(1.2)}.uid-slider__input:hover::-moz-range-thumb{transform:scale(1.2)}.uid-slider__input:focus-visible::-webkit-slider-thumb{box-shadow:var(--uid-focus-ring,0 0 0 3px var(--uid-color-primary-subtle))}.uid-slider__input:focus-visible::-moz-range-thumb{box-shadow:var(--uid-focus-ring,0 0 0 3px var(--uid-color-primary-subtle))}.uid-slider--disabled .uid-slider__input{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-slider__marks{--_thumb:var(--uid-slider-thumb-size,18px);height:calc(var(--uid-font-size-xs,12px) * 1.5 + 8px);margin-top:calc(var(--uid-space-sm) * -1 + 2px);position:relative}.uid-slider__mark{top:0;left:calc(var(--_thumb) / 2 + (100% - var(--_thumb)) * var(--_pos,0));font:inherit;font-size:var(--uid-font-size-xs,12px);color:var(--uid-slider-mark-color,var(--uid-text-secondary,var(--uid-color-text)));white-space:nowrap;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:2px;padding:0 2px;line-height:1.5;display:flex;position:absolute;transform:translate(-50%)}.uid-slider__mark-tick{background:var(--uid-slider-track-bg,var(--uid-color-border));border-radius:1px;width:2px;height:6px}.uid-slider__mark--active .uid-slider__mark-tick{background:var(--uid-slider-fill-color,var(--uid-color-primary))}.uid-slider__mark--active{color:var(--uid-slider-mark-active-color,var(--uid-text-primary,var(--uid-color-text)))}.uid-slider__mark:hover:not([disabled]){color:var(--uid-slider-fill-color,var(--uid-color-primary))}.uid-slider__mark[disabled]{cursor:not-allowed}.uid-colorpicker{display:inline-flex;position:relative}.uid-colorpicker__trigger{align-items:center;gap:var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);background:var(--uid-color-bg);cursor:pointer;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);transition:border-color var(--uid-duration-fast), box-shadow var(--uid-duration-fast);min-width:140px;min-height:var(--uid-size-md);outline:none;padding:0 12px;font-family:inherit;display:flex}.uid-colorpicker__trigger:hover{border-color:var(--uid-color-border-hover,var(--uid-color-text-secondary))}.uid-colorpicker--open .uid-colorpicker__trigger,.uid-colorpicker__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:var(--uid-focus-ring,0 0 0 3px var(--uid-color-primary-subtle))}.uid-colorpicker--disabled .uid-colorpicker__trigger{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-colorpicker__swatch{border-radius:var(--uid-radius-sm,4px);border:1px solid var(--uid-color-border);background-image:linear-gradient(45deg, var(--uid-color-border) 25%, transparent 25%), linear-gradient(-45deg, var(--uid-color-border) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--uid-color-border) 75%), linear-gradient(-45deg, transparent 75%, var(--uid-color-border) 75%);background-position:0 0,0 4px,4px -4px,-4px 0;background-size:8px 8px;flex-shrink:0;width:20px;height:20px}.uid-colorpicker__trigger-label{font-family:var(--uid-font-family-mono,monospace);font-size:var(--uid-font-size-sm,14px)}.uid-colorpicker__trigger-label--empty{color:var(--uid-color-text-tertiary);font-family:inherit}.uid-colorpicker__panel{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);flex-direction:column;gap:12px;width:240px;padding:12px;display:flex}.uid-colorpicker__gradient{border-radius:var(--uid-radius-sm,4px);cursor:crosshair;touch-action:none;background:linear-gradient(to bottom, transparent 0%, #000 100%), linear-gradient(to right, #fff 0%, var(--_hue,red) 100%);flex-shrink:0;width:100%;height:160px;position:relative}.uid-colorpicker__gradient-thumb{pointer-events:none;border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #0000004d,0 1px 3px #0000004d}.uid-colorpicker__controls{align-items:center;gap:var(--uid-space-sm);display:flex}.uid-colorpicker__sliders{gap:var(--uid-space-sm);flex-direction:column;flex:1;display:flex}.uid-colorpicker__preview{border-radius:var(--uid-radius-sm,4px);border:1px solid var(--uid-color-border);flex-shrink:0;width:32px;height:32px}.uid-colorpicker__hue-track{border-radius:var(--uid-radius-full,9999px);cursor:pointer;touch-action:none;background:linear-gradient(90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);height:12px;position:relative}.uid-colorpicker__alpha-track{border-radius:var(--uid-radius-full,9999px);cursor:pointer;touch-action:none;background-image:linear-gradient(to right, transparent, var(--_color,red)), linear-gradient(45deg, #ccc 25%, transparent 25%), linear-gradient(-45deg, #ccc 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #ccc 75%), linear-gradient(-45deg, transparent 75%, #ccc 75%);background-position:0 0,0 0,0 4px,4px -4px,-4px 0;background-size:100% 100%,8px 8px,8px 8px,8px 8px,8px 8px;height:12px;position:relative}.uid-colorpicker__track-thumb{pointer-events:none;background:#fff;border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #0000004d,0 1px 3px #0000004d}.uid-colorpicker__inputs{align-items:center;gap:var(--uid-space-sm);display:flex}.uid-colorpicker__input-label{font-size:var(--uid-font-size-xs,12px);color:var(--uid-color-text-secondary);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;font-weight:600}.uid-colorpicker__hex-input{padding:var(--uid-space-xs) var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm,4px);background:var(--uid-color-bg-subtle);font-family:var(--uid-font-family-mono,monospace);font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text);width:0;transition:border-color var(--uid-duration-fast);outline:none;flex:1}.uid-colorpicker__hex-input:focus{border-color:var(--uid-color-primary)}.uid-colorpicker__presets{gap:var(--uid-space-xs);flex-wrap:wrap;display:flex}.uid-colorpicker__preset{border-radius:var(--uid-radius-sm,4px);border:1px solid var(--uid-color-border);cursor:pointer;width:20px;height:20px;transition:transform var(--uid-duration-fast), box-shadow var(--uid-duration-fast);padding:0}.uid-colorpicker__preset:hover{transform:scale(1.15)}.uid-colorpicker__preset--active{box-shadow:0 0 0 2px var(--uid-color-bg), 0 0 0 4px var(--uid-color-primary)}.uid-colorpicker-panel-enter-active,.uid-colorpicker-panel-leave-active{transition:opacity var(--uid-duration-fast), transform var(--uid-duration-fast)}.uid-colorpicker-panel-enter-from,.uid-colorpicker-panel-leave-to{opacity:0;transform:translateY(-4px)}.uid-colorpicker--sm .uid-colorpicker__trigger{min-height:var(--uid-size-sm);padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-colorpicker--lg .uid-colorpicker__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-colorpicker--sm .uid-colorpicker__trigger-label{font-size:var(--uid-font-size-sm)}.uid-colorpicker--md .uid-colorpicker__trigger-label{font-size:var(--uid-font-size-md)}.uid-colorpicker--lg .uid-colorpicker__trigger-label{font-size:var(--uid-font-size-lg)}.uid-command-overlay{background:var(--uid-color-overlay,#00000080);z-index:var(--uid-z-modal,500);justify-content:center;align-items:flex-start;padding-top:min(15vh,120px);display:flex;position:fixed;inset:0}.uid-command{width:100%;max-width:var(--uid-command-width,560px);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-lg,12px);box-shadow:var(--uid-shadow-xl);flex-direction:column;max-height:480px;display:flex;overflow:hidden}.uid-command__search{padding:12px var(--uid-space-md);border-bottom:1px solid var(--uid-color-border);flex-shrink:0;align-items:center;gap:12px;display:flex}.uid-command__search-icon{color:var(--uid-color-text-secondary);flex-shrink:0}.uid-command__input{font-size:var(--uid-font-size-base,16px);color:var(--uid-color-text);background:0 0;border:none;outline:none;flex:1;line-height:1.5}.uid-command__input::placeholder{color:var(--uid-color-text-tertiary)}.uid-command__list{padding:var(--uid-space-xs);flex:1;overflow-y:auto}.uid-command__group-label{padding:var(--uid-space-sm) 12px var(--uid-space-xs);font-size:var(--uid-font-size-xs,12px);text-transform:uppercase;letter-spacing:.05em;color:var(--uid-color-text-tertiary);font-weight:600}.uid-command__item{width:100%;padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-md,8px);cursor:pointer;text-align:left;color:var(--uid-color-text);transition:background var(--uid-duration-fast);background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;display:flex}.uid-command__item--active{background:var(--uid-color-bg-subtle)}.uid-command__item-text{flex-direction:column;gap:1px;min-width:0;display:flex}.uid-command__item-label{font-size:var(--uid-font-size-sm,14px);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.uid-command__item-desc{font-size:var(--uid-font-size-xs,12px);color:var(--uid-color-text-secondary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.uid-command__item-shortcut{gap:var(--uid-space-xs);flex-shrink:0;display:flex}.uid-command__kbd{min-width:20px;font-size:var(--uid-font-size-xs,12px);font-family:var(--uid-font-family-mono,monospace);background:var(--uid-color-bg-subtle);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm,4px);color:var(--uid-color-text-secondary);justify-content:center;align-items:center;padding:2px 5px;display:inline-flex}.uid-command__empty{padding:var(--uid-space-xl) var(--uid-space-md);text-align:center;font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text-secondary)}.uid-command-enter-active,.uid-command-leave-active{transition:opacity var(--uid-duration-base)}.uid-command-enter-active .uid-command,.uid-command-leave-active .uid-command{transition:transform var(--uid-duration-base), opacity var(--uid-duration-base)}.uid-command-enter-from,.uid-command-leave-to{opacity:0}.uid-command-enter-from .uid-command,.uid-command-leave-to .uid-command{opacity:0;transform:scale(.96)translateY(-8px)}.uid-number-input{--uid-number-input-height:var(--uid-size-md);--uid-number-input-padding-x:var(--uid-space-sm);--uid-number-input-font-size:var(--uid-font-size-md);--uid-number-input-bg:var(--uid-surface-raised);--uid-number-input-border:var(--uid-border-default);--uid-number-input-color:var(--uid-text-primary);--uid-number-input-radius:var(--uid-radius-md);gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-number-input__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-number-input__required{color:var(--uid-danger)}.uid-number-input__control{min-height:var(--uid-number-input-height);background:var(--uid-number-input-bg);border:1px solid var(--uid-number-input-border);border-radius:var(--uid-number-input-radius);transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);align-items:stretch;display:flex;overflow:hidden;container:uid-number-input/inline-size}.uid-number-input__control:focus-within{border-color:var(--uid-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-accent) 15%, transparent)}.uid-number-input__input{min-width:0;padding:0 var(--uid-number-input-padding-x);color:var(--uid-number-input-color);font:inherit;font-size:var(--uid-number-input-font-size);text-align:var(--uid-number-input-text-align,left);-moz-appearance:textfield;background:0 0;border:none;outline:none;flex:1}.uid-number-input__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.uid-number-input__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.uid-number-input__btn{background:var(--uid-surface-base);border:none;border-left:1px solid var(--uid-number-input-border);width:28px;color:var(--uid-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.uid-number-input__btn--prefix{border-left:none;border-right:1px solid var(--uid-number-input-border)}.uid-number-input__btn:hover:not(:disabled){background:var(--uid-surface-overlay);color:var(--uid-text-primary)}.uid-number-input__btn:disabled{opacity:.4;cursor:not-allowed}.uid-number-input__btn:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-number-input__hint{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);margin:0;line-height:1.4}.uid-number-input__hint--error{color:var(--uid-danger)}.uid-number-input--error .uid-number-input__control{border-color:var(--uid-danger)}.uid-number-input--error .uid-number-input__control:focus-within{box-shadow:0 0 0 3px color-mix(in srgb, var(--uid-danger) 15%, transparent)}.uid-number-input--disabled .uid-number-input__control{opacity:.5;cursor:not-allowed;background:var(--uid-surface-base)}.uid-number-input--disabled .uid-number-input__input,.uid-number-input--disabled .uid-number-input__btn{pointer-events:none}.uid-number-input--readonly .uid-number-input__control{background:var(--uid-surface-base);border-style:dashed}.uid-number-input--sm{--uid-number-input-height:var(--uid-size-sm);--uid-number-input-font-size:var(--uid-font-size-sm);--uid-number-input-padding-x:var(--uid-space-xs)}.uid-number-input--sm .uid-number-input__btn{width:24px}.uid-number-input--lg{--uid-number-input-height:var(--uid-size-lg);--uid-number-input-font-size:var(--uid-font-size-lg);--uid-number-input-padding-x:var(--uid-space-md)}.uid-number-input--lg .uid-number-input__btn{width:36px}.uid-number-input--centered{--uid-number-input-text-align:center}@container uid-number-input (width<=8.5rem){.uid-number-input__btn{display:none}}.uid-timepicker{width:100%;position:relative}.uid-timepicker__trigger{align-items:center;gap:var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg);cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;transition:border-color var(--uid-duration-fast), box-shadow var(--uid-duration-fast);min-height:var(--uid-size-md);outline:none;padding:0 12px;display:flex}.uid-timepicker__trigger:hover{border-color:var(--uid-color-border-hover,var(--uid-color-text-secondary))}.uid-timepicker--open .uid-timepicker__trigger,.uid-timepicker__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-timepicker--disabled .uid-timepicker__trigger{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-timepicker__icon{color:var(--uid-color-text-secondary);flex-shrink:0}.uid-timepicker__value{font-size:var(--uid-font-size-md);color:var(--uid-color-text);font-variant-numeric:tabular-nums;flex:1}.uid-timepicker__value--placeholder{color:var(--uid-color-text-tertiary)}.uid-timepicker__clear{border-radius:var(--uid-radius-sm);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.uid-timepicker__clear:hover{color:var(--uid-color-text)}.uid-timepicker__panel{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);-webkit-user-select:none;user-select:none;flex-direction:column;display:flex}.uid-timepicker__columns{padding:var(--uid-space-xs);align-items:stretch;display:flex}.uid-timepicker__column{scroll-snap-type:y mandatory;scrollbar-width:thin;flex-direction:column;width:56px;height:192px;display:flex;overflow-y:auto}.uid-timepicker__column+.uid-timepicker__column{border-left:1px solid var(--uid-color-border)}.uid-timepicker__cell{cursor:pointer;height:32px;font-size:var(--uid-font-size-sm);font-variant-numeric:tabular-nums;color:var(--uid-color-text);border-radius:var(--uid-radius-sm);scroll-snap-align:center;transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin:1px 4px;display:flex}.uid-timepicker__cell:hover:not(:disabled){background:var(--uid-color-bg-subtle)}.uid-timepicker__cell--selected{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);font-weight:600}.uid-timepicker__cell:disabled{opacity:.4;cursor:not-allowed}.uid-timepicker__footer{justify-content:space-between;gap:var(--uid-space-sm);padding:var(--uid-space-sm);border-top:1px solid var(--uid-color-border);display:flex}.uid-timepicker__btn{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-bg);color:var(--uid-color-text);font-size:var(--uid-font-size-sm);cursor:pointer;transition:background var(--uid-duration-fast);flex:1;padding:6px 12px}.uid-timepicker__btn:hover{background:var(--uid-color-bg-subtle)}.uid-timepicker__btn--primary{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);border-color:var(--uid-color-primary)}.uid-timepicker__btn--primary:hover{background:var(--uid-color-primary-hover);border-color:var(--uid-color-primary-hover)}.uid-timepicker-panel-enter-active,.uid-timepicker-panel-leave-active{transition:opacity var(--uid-duration-fast), transform var(--uid-duration-fast)}.uid-timepicker-panel-enter-from,.uid-timepicker-panel-leave-to{opacity:0;transform:translateY(-4px)}.uid-timepicker--sm .uid-timepicker__trigger{min-height:var(--uid-size-sm);padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-timepicker--lg .uid-timepicker__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-timepicker--sm .uid-timepicker__value{font-size:var(--uid-font-size-sm)}.uid-timepicker--md .uid-timepicker__value{font-size:var(--uid-font-size-md)}.uid-timepicker--lg .uid-timepicker__value{font-size:var(--uid-font-size-lg)}.uid-daterange{width:100%;position:relative}.uid-daterange__trigger{align-items:center;gap:var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg);cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;transition:border-color var(--uid-duration-fast), box-shadow var(--uid-duration-fast);min-height:var(--uid-size-md);outline:none;padding:0 12px;display:flex}.uid-daterange__trigger:hover{border-color:var(--uid-color-border-hover,var(--uid-color-text-secondary))}.uid-daterange--open .uid-daterange__trigger,.uid-daterange__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-daterange--disabled .uid-daterange__trigger{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-daterange__icon{color:var(--uid-color-text-secondary);flex-shrink:0}.uid-daterange__value{font-size:var(--uid-font-size-md);color:var(--uid-color-text);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.uid-daterange__value--placeholder{color:var(--uid-color-text-tertiary)}.uid-daterange__separator{color:var(--uid-color-text-tertiary);margin:0 var(--uid-space-xs)}.uid-daterange__clear{border-radius:var(--uid-radius-sm);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:flex}.uid-daterange__clear:hover{color:var(--uid-color-text)}.uid-daterange__panel{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);-webkit-user-select:none;user-select:none;flex-direction:column;display:flex}.uid-daterange__months{gap:var(--uid-space-md);padding:12px;display:flex}.uid-daterange__month{width:248px}.uid-daterange__nav{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.uid-daterange__month+.uid-daterange__month .uid-daterange__nav-btn--prev,.uid-daterange__month:not(:last-child) .uid-daterange__nav-btn--next{visibility:hidden}.uid-daterange__nav-btn{border-radius:var(--uid-radius-sm);cursor:pointer;width:28px;height:28px;color:var(--uid-color-text-secondary);transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.uid-daterange__nav-btn:hover{background:var(--uid-color-bg-subtle);color:var(--uid-color-text)}.uid-daterange__month-label{font-size:var(--uid-font-size-sm);color:var(--uid-color-text);font-weight:600}.uid-daterange__grid{grid-template-columns:repeat(7,1fr);display:grid}.uid-daterange__weekday{height:32px;font-size:var(--uid-font-size-xs);color:var(--uid-color-text-tertiary);justify-content:center;align-items:center;font-weight:600;display:flex}.uid-daterange__day{cursor:pointer;height:32px;font-size:var(--uid-font-size-sm);color:var(--uid-color-text);z-index:1;background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:relative}.uid-daterange__day:hover:not(:disabled){background:var(--uid-color-bg-subtle);border-radius:var(--uid-radius-sm)}.uid-daterange__day--other{color:var(--uid-color-text-tertiary);pointer-events:none}.uid-daterange__day--today{color:var(--uid-color-primary);font-weight:700}.uid-daterange__day--start,.uid-daterange__day--end{border-radius:var(--uid-radius-sm);font-weight:600;background:var(--uid-color-primary)!important;color:var(--uid-color-text-on-primary)!important}.uid-daterange__day--in-range{background:var(--uid-color-primary-subtle);color:var(--uid-color-text);border-radius:0}.uid-daterange__day--disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.uid-daterange__footer{justify-content:space-between;gap:var(--uid-space-sm);padding:var(--uid-space-sm) 12px;border-top:1px solid var(--uid-color-border);flex-wrap:wrap;display:flex}.uid-daterange__btn{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-bg);color:var(--uid-color-text);font-size:var(--uid-font-size-sm);cursor:pointer;transition:background var(--uid-duration-fast);padding:6px 12px}.uid-daterange__btn:hover{background:var(--uid-color-bg-subtle)}.uid-daterange__btn:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-daterange__times{gap:var(--uid-space-md);padding:var(--uid-space-sm) 12px;border-top:1px solid var(--uid-color-border);flex-wrap:wrap;display:flex}.uid-daterange__time-field{gap:var(--uid-space-xs);flex-direction:column;flex:1;min-width:120px;display:flex}.uid-daterange__time-label{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary)}.uid-daterange__time{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg);color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-sm);padding:6px 8px}.uid-daterange__time:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-daterange__time:disabled{opacity:.5;cursor:not-allowed}@media (max-width:600px){.uid-daterange__months{flex-direction:column}.uid-daterange__month+.uid-daterange__month .uid-daterange__nav-btn--prev,.uid-daterange__month:not(:last-child) .uid-daterange__nav-btn--next{visibility:visible}}.uid-daterange-panel-enter-active,.uid-daterange-panel-leave-active{transition:opacity var(--uid-duration-fast), transform var(--uid-duration-fast)}.uid-daterange-panel-enter-from,.uid-daterange-panel-leave-to{opacity:0;transform:translateY(-4px)}.uid-daterange--sm .uid-daterange__trigger{min-height:var(--uid-size-sm);padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-daterange--lg .uid-daterange__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-daterange--sm .uid-daterange__value{font-size:var(--uid-font-size-sm)}.uid-daterange--md .uid-daterange__value{font-size:var(--uid-font-size-md)}.uid-daterange--lg .uid-daterange__value{font-size:var(--uid-font-size-lg)}.uid-tags-input{gap:var(--uid-space-xs);flex-direction:column;display:flex}.uid-tags-input__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-tags-input__required{color:var(--uid-danger)}.uid-tags-input__control{align-items:center;gap:var(--uid-space-xs);min-height:var(--uid-size-md);padding:var(--uid-space-2xs) var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);cursor:text;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);flex-wrap:wrap;display:flex}.uid-tags-input__control:focus-within{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle);outline:none}.uid-tags-input__chip{align-items:center;gap:var(--uid-space-2xs);padding:2px var(--uid-space-xs);background:var(--uid-color-primary-subtle);color:var(--uid-color-primary);border-radius:var(--uid-radius-sm);font-size:var(--uid-font-size-sm);line-height:1.4;display:inline-flex}.uid-tags-input__chip--invalid{background:color-mix(in srgb, var(--uid-color-danger) 12%, transparent);color:var(--uid-color-danger)}.uid-tags-input__chip-remove{width:14px;height:14px;color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;display:flex}.uid-tags-input__chip-remove:hover{opacity:1}.uid-tags-input__field{min-width:80px;color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-md);background:0 0;border:none;outline:none;flex:1;padding:4px 0}.uid-tags-input__field::placeholder{color:var(--uid-color-text-tertiary)}.uid-tags-input__hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0;line-height:1.4}.uid-tags-input__hint--error{color:var(--uid-danger)}.uid-tags-input--error .uid-tags-input__control{border-color:var(--uid-danger)}.uid-tags-input--disabled .uid-tags-input__control{opacity:.5;cursor:not-allowed;background:var(--uid-surface-base);pointer-events:none}.uid-tags-input--sm .uid-tags-input__control{min-height:var(--uid-size-sm);font-size:var(--uid-font-size-sm);padding-block:0}.uid-tags-input--sm .uid-tags-input__field{font-size:var(--uid-font-size-sm);padding-block:0}.uid-tags-input--lg .uid-tags-input__control{min-height:var(--uid-size-lg);font-size:var(--uid-font-size-lg)}.uid-tags-input--sm .uid-tags-input__field{font-size:var(--uid-font-size-sm)}.uid-tags-input--md .uid-tags-input__field{font-size:var(--uid-font-size-md)}.uid-tags-input--lg .uid-tags-input__field{font-size:var(--uid-font-size-lg)}.uid-combobox{gap:var(--uid-space-xs);flex-direction:column;display:flex;position:relative}.uid-combobox__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);line-height:1.4;display:flex}.uid-combobox__required{color:var(--uid-danger)}.uid-combobox__control{min-height:var(--uid-size-md);padding:0 var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);cursor:text;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);align-items:center;display:flex}.uid-combobox--open .uid-combobox__control,.uid-combobox__control:focus-within{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-combobox__field{min-width:0;padding:var(--uid-space-xs) 0;color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-md);background:0 0;border:none;outline:none;flex:1}.uid-combobox__field::placeholder{color:var(--uid-color-text-tertiary)}.uid-combobox__suffix{align-items:center;gap:var(--uid-space-xs);color:var(--uid-color-text-secondary);flex-shrink:0;display:flex}.uid-combobox__clear{border-radius:var(--uid-radius-sm);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;display:flex}.uid-combobox__clear:hover{color:var(--uid-color-text)}.uid-combobox__chevron{transition:transform var(--uid-duration-base);cursor:pointer}.uid-combobox__chevron--open{transform:rotate(180deg)}.uid-combobox__hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0;line-height:1.4}.uid-combobox__hint--error{color:var(--uid-danger)}.uid-combobox__dropdown{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);max-height:280px;padding:var(--uid-space-2xs);overflow-y:auto}.uid-combobox__dropdown[data-position=trigger]{margin-top:0;top:auto}.uid-combobox__option{align-items:center;gap:var(--uid-space-sm);width:100%;padding:var(--uid-space-sm) var(--uid-space-sm);border-radius:var(--uid-radius-sm);text-align:left;cursor:pointer;font-size:var(--uid-font-size-md);color:var(--uid-color-text);background:0 0;border:none;display:flex}.uid-combobox__option--active{background:var(--uid-color-bg-subtle)}.uid-combobox__option--selected{color:var(--uid-color-primary);font-weight:600}.uid-combobox__option--disabled{opacity:.4;cursor:not-allowed}.uid-combobox__option-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.uid-combobox__option-hint{color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-sm);flex-shrink:0}.uid-combobox__check{color:var(--uid-color-primary);flex-shrink:0}.uid-combobox__create{color:var(--uid-color-primary)}.uid-combobox__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-sm)}.uid-combobox--error .uid-combobox__control{border-color:var(--uid-danger)}.uid-combobox--disabled .uid-combobox__control{opacity:.5;pointer-events:none;background:var(--uid-surface-base)}.uid-combobox--sm .uid-combobox__control{min-height:var(--uid-size-sm)}.uid-combobox--sm .uid-combobox__field{font-size:var(--uid-font-size-sm);padding-block:0}.uid-combobox--lg .uid-combobox__control{min-height:var(--uid-size-lg)}.uid-combobox--sm .uid-combobox__field{font-size:var(--uid-font-size-sm)}.uid-combobox--md .uid-combobox__field{font-size:var(--uid-font-size-md)}.uid-combobox--lg .uid-combobox__field{font-size:var(--uid-font-size-lg)}.uid-tree{font-size:var(--uid-font-size-md);color:var(--uid-color-text);-webkit-user-select:none;user-select:none;margin:0;padding:0;list-style:none}.uid-tree-item{list-style:none}.uid-tree__list{margin:0;padding:0;list-style:none}.uid-tree-item__row{align-items:center;gap:var(--uid-space-xs);padding:6px var(--uid-space-sm);padding-left:calc(var(--uid-space-sm) + var(--uid-tree-level,0) * 16px);border-radius:var(--uid-radius-sm);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out);outline:none;min-height:32px;display:flex}.uid-tree-item__row:hover{background:var(--uid-color-bg-subtle)}.uid-tree-item__row:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-tree-item--selected>.uid-tree-item__row{background:var(--uid-color-primary-subtle);color:var(--uid-color-primary);font-weight:500}.uid-tree-item--disabled>.uid-tree-item__row{opacity:.5;cursor:not-allowed}.uid-tree-item__chevron{width:16px;height:16px;color:var(--uid-color-text-secondary);border-radius:var(--uid-radius-sm);cursor:pointer;transition:transform var(--uid-duration-base);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.uid-tree-item__chevron--open{transform:rotate(90deg)}.uid-tree-item__chevron--placeholder{visibility:hidden;cursor:default}.uid-tree-item__check{border:1px solid var(--uid-color-border);background:var(--uid-color-bg);cursor:pointer;width:16px;height:16px;transition:background var(--uid-duration-fast), border-color var(--uid-duration-fast);color:var(--uid-color-text-on-primary);border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-tree-item__check--checked,.uid-tree-item__check--indeterminate{background:var(--uid-color-primary);border-color:var(--uid-color-primary)}.uid-tree-item__check--indeterminate:after{content:"";background:var(--uid-color-text-on-primary);border-radius:1px;width:8px;height:2px}.uid-tree-item__icon{color:var(--uid-color-text-secondary);flex-shrink:0;align-items:center;display:inline-flex}.uid-tree-item__icon--branch{color:var(--uid-color-primary)}.uid-tree-item__icon--leaf{color:var(--uid-color-text-tertiary,var(--uid-color-text-secondary))}.uid-tree-item__label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.uid-tree-item__children{margin:0;padding:0;list-style:none}.uid-tree--guides .uid-tree-item__children{position:relative}.uid-tree--guides .uid-tree-item__children:before{content:"";top:0;bottom:0;left:calc(var(--uid-space-sm) + var(--uid-tree-level,0) * 16px + 8px);background:var(--uid-color-border);width:1px;position:absolute}.uid-timeline{margin:0;padding:0;list-style:none;position:relative}.uid-timeline-item{gap:var(--uid-space-md);padding-bottom:var(--uid-space-lg);display:flex;position:relative}.uid-timeline-item:last-child{padding-bottom:0}.uid-timeline-item__rail{flex-direction:column;flex-shrink:0;align-items:center;width:24px;display:flex;position:relative}.uid-timeline-item__marker{background:var(--uid-color-bg);border:2px solid var(--uid-color-border);width:12px;height:12px;color:var(--uid-color-text-secondary);z-index:1;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:4px;display:flex}.uid-timeline-item--with-icon .uid-timeline-item__marker{width:28px;height:28px;margin-top:0}.uid-timeline-item__line{background:var(--uid-color-border);width:2px;margin-top:var(--uid-space-2xs);flex:1}.uid-timeline-item:last-child .uid-timeline-item__line{display:none}.uid-timeline-item__content{min-width:0;padding-bottom:var(--uid-space-sm);flex:1}.uid-timeline-item__time{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary);margin:0 0 var(--uid-space-2xs) 0}.uid-timeline-item__title{margin:0 0 var(--uid-space-2xs) 0;font-size:var(--uid-font-size-md);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);line-height:1.4}.uid-timeline-item__description{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0;line-height:1.5}.uid-timeline-item--success .uid-timeline-item__marker{background:var(--uid-color-success);border-color:var(--uid-color-success);color:var(--uid-color-text-on-primary)}.uid-timeline-item--warning .uid-timeline-item__marker{background:var(--uid-color-warning);border-color:var(--uid-color-warning);color:var(--uid-color-text-on-primary)}.uid-timeline-item--danger .uid-timeline-item__marker{background:var(--uid-color-danger);border-color:var(--uid-color-danger);color:var(--uid-color-text-on-primary)}.uid-timeline-item--primary .uid-timeline-item__marker{background:var(--uid-color-primary);border-color:var(--uid-color-primary);color:var(--uid-color-text-on-primary)}.uid-timeline-item--info .uid-timeline-item__marker{background:var(--uid-color-info);border-color:var(--uid-color-info);color:var(--uid-color-text-on-primary)}.uid-timeline--alternate .uid-timeline-item{width:50%}.uid-timeline--alternate .uid-timeline-item:nth-child(2n){flex-direction:row;margin-left:auto}.uid-timeline--alternate .uid-timeline-item:nth-child(odd){text-align:right;flex-direction:row-reverse}.uid-file-upload{gap:var(--uid-space-sm);flex-direction:column;display:flex}.uid-file-upload__label{align-items:center;gap:var(--uid-space-2xs);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary);display:flex}.uid-file-upload__required{color:var(--uid-danger)}.uid-file-upload__dropzone{justify-content:center;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-xl);border:2px dashed var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg-subtle);text-align:center;cursor:pointer;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), background var(--uid-duration-fast) var(--uid-ease-out);outline:none;flex-direction:column;display:flex}.uid-file-upload__dropzone:hover,.uid-file-upload__dropzone:focus-visible,.uid-file-upload__dropzone--active{border-color:var(--uid-color-primary);background:var(--uid-color-primary-subtle)}.uid-file-upload__icon{color:var(--uid-color-text-secondary)}.uid-file-upload__primary-text{font-size:var(--uid-font-size-md);color:var(--uid-color-text);font-weight:var(--uid-font-weight-medium)}.uid-file-upload__primary-text strong{color:var(--uid-color-primary)}.uid-file-upload__secondary-text{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary)}.uid-file-upload__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.uid-file-upload__list{gap:var(--uid-space-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.uid-file-upload__item{align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) 12px;border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg);display:flex}.uid-file-upload__item--error{border-color:var(--uid-color-danger);background:color-mix(in srgb, var(--uid-color-danger) 5%, var(--uid-color-bg))}.uid-file-upload__file-icon{color:var(--uid-color-text-secondary);flex-shrink:0}.uid-file-upload__file-info{flex:1;min-width:0}.uid-file-upload__file-name{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.uid-file-upload__file-meta{font-size:var(--uid-font-size-xs);color:var(--uid-color-text-tertiary);gap:var(--uid-space-sm);display:flex}.uid-file-upload__progress{background:var(--uid-color-bg-subtle);border-radius:2px;height:4px;margin-top:4px;overflow:hidden}.uid-file-upload__progress-bar{background:var(--uid-color-primary);height:100%;transition:width var(--uid-duration-base) var(--uid-ease-out)}.uid-file-upload__remove{border-radius:var(--uid-radius-sm);width:24px;height:24px;color:var(--uid-color-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-file-upload__remove:hover{background:var(--uid-color-bg-subtle);color:var(--uid-color-danger)}.uid-file-upload--disabled .uid-file-upload__dropzone{opacity:.5;cursor:not-allowed;pointer-events:none}.uid-file-upload__hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0;line-height:1.4}.uid-file-upload__hint--error{color:var(--uid-danger)}.uid-code{--uid-code-bg:var(--uid-color-bg-subtle);--uid-code-color:var(--uid-color-text);--uid-code-border:var(--uid-color-border);--uid-code-radius:var(--uid-radius-md);--uid-code-padding-y:var(--uid-space-md);--uid-code-padding-x:var(--uid-space-md);--uid-code-font:var(--uid-font-family-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", "DejaVu Sans Mono", monospace);--uid-code-font-size:var(--uid-font-size-sm);background:var(--uid-code-bg);color:var(--uid-code-color);border:1px solid var(--uid-code-border);border-radius:var(--uid-code-radius);font-family:var(--uid-code-font);font-size:var(--uid-code-font-size);line-height:1.6;position:relative;overflow:hidden}.uid-code__header{padding:var(--uid-space-xs) var(--uid-space-sm);border-bottom:1px solid var(--uid-code-border);background:var(--uid-color-bg);justify-content:space-between;align-items:center;display:flex}.uid-code__lang{font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text-tertiary);text-transform:lowercase;letter-spacing:.05em}.uid-code__copy{align-items:center;gap:var(--uid-space-2xs);color:var(--uid-color-text-secondary);font-size:var(--uid-font-size-xs);border-radius:var(--uid-radius-sm);cursor:pointer;transition:background var(--uid-duration-fast), color var(--uid-duration-fast);background:0 0;border:none;padding:4px 8px;font-family:inherit;display:flex}.uid-code__copy:hover{background:var(--uid-color-bg-subtle);color:var(--uid-color-text)}.uid-code__copy--copied{color:var(--uid-color-success)}.uid-code__body{max-height:var(--uid-code-max-height,none);display:flex;overflow:auto}.uid-code__line-numbers{padding:var(--uid-code-padding-y) var(--uid-space-sm);text-align:right;-webkit-user-select:none;user-select:none;color:var(--uid-color-text-tertiary);background:var(--uid-color-bg);border-right:1px solid var(--uid-code-border);flex-direction:column;flex-shrink:0;display:flex}.uid-code__line-number{font-variant-numeric:tabular-nums;font-size:var(--uid-font-size-xs);line-height:calc(var(--uid-code-font-size) * 1.6)}.uid-code__pre{padding:var(--uid-code-padding-y) var(--uid-code-padding-x);font-family:inherit;font-size:inherit;line-height:inherit;white-space:pre;flex:1;min-width:0;margin:0;overflow:auto}.uid-code__pre code{font-family:inherit;font-size:inherit;background:0 0;border-radius:0;padding:0}.uid-code--inline{padding:2px var(--uid-space-xs);border-radius:var(--uid-radius-sm);background:var(--uid-color-bg-subtle);color:var(--uid-color-text);white-space:nowrap;border:none;font-size:.92em;display:inline}.uid-code--inline.uid-code--inline-strong{font-weight:var(--uid-font-weight-medium);color:var(--uid-color-primary)}.uid-code--minimal .uid-code__body{padding:0}.uid-code--wrap .uid-code__pre{white-space:pre-wrap;word-break:break-word}.uid-code{--uid-code-tok-comment:var(--uid-text-secondary);--uid-code-tok-string:var(--uid-success);--uid-code-tok-number:var(--uid-warning);--uid-code-tok-literal:var(--uid-warning);--uid-code-tok-keyword:var(--uid-accent-text);--uid-code-tok-function:var(--uid-info);--uid-code-tok-variable:var(--uid-danger);--uid-code-tok-tag:var(--uid-danger);--uid-code-tok-attr:var(--uid-warning);--uid-code-tok-property:var(--uid-info);--uid-code-tok-punctuation:var(--uid-text-secondary)}.uid-code__tok--comment{color:var(--uid-code-tok-comment);font-style:italic}.uid-code__tok--string{color:var(--uid-code-tok-string)}.uid-code__tok--number{color:var(--uid-code-tok-number)}.uid-code__tok--literal{color:var(--uid-code-tok-literal)}.uid-code__tok--keyword{color:var(--uid-code-tok-keyword);font-weight:var(--uid-font-weight-medium)}.uid-code__tok--function{color:var(--uid-code-tok-function)}.uid-code__tok--variable{color:var(--uid-code-tok-variable)}.uid-code__tok--tag{color:var(--uid-code-tok-tag)}.uid-code__tok--attr{color:var(--uid-code-tok-attr)}.uid-code__tok--property{color:var(--uid-code-tok-property)}.uid-code__tok--punctuation{color:var(--uid-code-tok-punctuation)}.uid-markdown{--uid-markdown-color:var(--uid-text-primary);--uid-markdown-muted:var(--uid-text-secondary);--uid-markdown-link:var(--uid-accent);--uid-markdown-border:var(--uid-border-subtle);--uid-markdown-sunken:color-mix(in srgb, var(--uid-text-primary) 6%, transparent);--uid-markdown-font-size:var(--uid-font-size-md);--uid-markdown-line-height:var(--uid-line-height-relaxed);--uid-markdown-toc-width:220px;gap:var(--uid-space-xl);min-width:0;color:var(--uid-markdown-color);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.uid-markdown--toc{grid-template-columns:minmax(0, 1fr) var(--uid-markdown-toc-width)}.uid-markdown__body{min-width:0;font-size:var(--uid-markdown-font-size);line-height:var(--uid-markdown-line-height);word-break:break-word}.uid-markdown__body>*+*{margin-top:var(--uid-space-md)}.uid-markdown__html>:first-child{margin-top:0}.uid-markdown__html>:last-child{margin-bottom:0}.uid-markdown__html p,.uid-markdown__html ul,.uid-markdown__html ol,.uid-markdown__html blockquote,.uid-markdown__html pre{margin:0 0 var(--uid-space-sm)}.uid-markdown__html h1,.uid-markdown__html h2,.uid-markdown__html h3,.uid-markdown__html h4,.uid-markdown__html h5,.uid-markdown__html h6{margin:var(--uid-space-lg) 0 var(--uid-space-xs);font-weight:var(--uid-font-weight-semibold);line-height:var(--uid-line-height-tight);scroll-margin-top:72px}.uid-markdown__html h1{font-size:var(--uid-font-size-2xl)}.uid-markdown__html h2{font-size:var(--uid-font-size-xl);padding-bottom:var(--uid-space-xs);border-bottom:1px solid var(--uid-markdown-border)}.uid-markdown__html h3{font-size:var(--uid-font-size-lg)}.uid-markdown__html h4{font-size:var(--uid-font-size-md)}.uid-markdown__html ul,.uid-markdown__html ol{padding-left:1.5em}.uid-markdown__html li+li{margin-top:var(--uid-space-2xs)}.uid-markdown__html a{color:var(--uid-markdown-link)}.uid-markdown__html blockquote{padding-left:var(--uid-space-md);border-left:3px solid var(--uid-markdown-border);color:var(--uid-markdown-muted)}.uid-markdown__html code{font-family:var(--uid-font-family-mono);border-radius:var(--uid-radius-sm);background:var(--uid-markdown-sunken);padding:0 .25em;font-size:.9em}.uid-markdown__html pre{padding:var(--uid-space-sm);border-radius:var(--uid-radius-md);background:var(--uid-markdown-sunken);overflow:auto}.uid-markdown__html pre code{background:0 0;padding:0}.uid-markdown__html img{max-width:100%}.uid-markdown__html hr{border:0;border-top:1px solid var(--uid-markdown-border);margin:var(--uid-space-lg) 0}.uid-markdown__table{margin:0 0 var(--uid-space-sm);overflow-x:auto}.uid-markdown__html table{border-collapse:collapse;width:100%;font-size:.95em}.uid-markdown__html th,.uid-markdown__html td{padding:var(--uid-space-xs) var(--uid-space-sm);border:1px solid var(--uid-markdown-border);text-align:left;vertical-align:top}.uid-markdown__html th{font-weight:var(--uid-font-weight-semibold);background:var(--uid-markdown-sunken)}.uid-markdown__html blockquote.uid-markdown__callout{padding:var(--uid-space-sm) var(--uid-space-md);border-radius:var(--uid-radius-sm);color:var(--uid-markdown-color);background:var(--uid-markdown-sunken);border-left-width:4px}.uid-markdown__html blockquote.uid-markdown__callout>:last-child{margin-bottom:0}.uid-markdown__html blockquote.uid-markdown__callout--note{border-left-color:var(--uid-info);background:var(--uid-info-subtle)}.uid-markdown__html blockquote.uid-markdown__callout--tip{border-left-color:var(--uid-success);background:var(--uid-success-subtle)}.uid-markdown__html blockquote.uid-markdown__callout--important{border-left-color:var(--uid-accent);background:var(--uid-accent-subtle)}.uid-markdown__html blockquote.uid-markdown__callout--warning{border-left-color:var(--uid-warning);background:var(--uid-warning-subtle)}.uid-markdown__html blockquote.uid-markdown__callout--caution{border-left-color:var(--uid-danger);background:var(--uid-danger-subtle)}.uid-markdown__html .uid-markdown__callout-title{font-weight:var(--uid-font-weight-semibold);margin-bottom:var(--uid-space-2xs)}.uid-markdown__code{width:100%}.uid-markdown__block{text-align:center;overflow-x:auto}.uid-markdown__block>svg{max-width:100%;height:auto}.uid-markdown__block--live{text-align:start;overflow:visible}.uid-markdown__block--pending{padding:var(--uid-space-lg);border:1px dashed var(--uid-markdown-border);border-radius:var(--uid-radius-md);color:var(--uid-markdown-muted);font-size:var(--uid-font-size-sm)}.uid-markdown__block-error-message{margin:0 0 var(--uid-space-xs);padding:var(--uid-space-xs) var(--uid-space-sm);border-left:3px solid var(--uid-danger);border-radius:var(--uid-radius-sm);background:var(--uid-danger-subtle);color:var(--uid-markdown-color);font-size:var(--uid-font-size-sm)}.uid-markdown__toc{top:var(--uid-space-lg);max-height:calc(100vh - 96px);font-size:var(--uid-font-size-sm);border-left:1px solid var(--uid-markdown-border);padding-left:var(--uid-space-md);position:sticky;overflow:auto}.uid-markdown__toc-title{font-weight:var(--uid-font-weight-semibold);margin-bottom:var(--uid-space-xs)}.uid-markdown__toc ul{margin:0;padding:0;list-style:none}.uid-markdown__toc-item{margin:2px 0}.uid-markdown__toc-item--l3{padding-left:var(--uid-space-md)}.uid-markdown__toc-item--l4,.uid-markdown__toc-item--l5,.uid-markdown__toc-item--l6{padding-left:var(--uid-space-xl)}.uid-markdown__toc a{color:var(--uid-markdown-muted);text-decoration:none}.uid-markdown__toc a:hover{color:var(--uid-markdown-link)}.uid-markdown__toc a:focus-visible{outline:2px solid var(--uid-focus-ring);outline-offset:2px;border-radius:var(--uid-radius-sm)}@media (max-width:1100px){.uid-markdown--toc{grid-template-columns:minmax(0,1fr)}.uid-markdown__toc{max-height:none;padding:var(--uid-space-sm) var(--uid-space-md);border-radius:var(--uid-radius-md);background:var(--uid-markdown-sunken);border-left:0;order:-1;position:static}}.uid-image{--uid-image-radius:var(--uid-radius-md);--uid-image-fit:cover;--uid-image-placeholder:var(--uid-surface-raised);--uid-image-fallback-fg:var(--uid-text-tertiary);border-radius:var(--uid-image-radius);background:var(--uid-image-placeholder);vertical-align:middle;max-width:100%;display:inline-block;position:relative;overflow:hidden}.uid-image[data-status=loaded]{background:0 0}.uid-image__img{object-fit:var(--uid-image-fit);width:100%;height:100%;transition:opacity var(--uid-duration-fast) var(--uid-ease-out);display:block}.uid-image[data-status=loading] .uid-image__img{opacity:0}.uid-image__placeholder{background:linear-gradient(90deg, var(--uid-surface-raised) 25%, color-mix(in srgb, var(--uid-text-tertiary) 18%, var(--uid-surface-raised)) 50%, var(--uid-surface-raised) 75%);background-size:200% 100%;justify-content:center;align-items:center;animation:1.6s ease-in-out infinite uid-image-shimmer;display:flex;position:absolute;inset:0}@keyframes uid-image-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.uid-image__placeholder{animation:none}}.uid-image__fallback{width:100%;min-width:48px;height:100%;min-height:48px;color:var(--uid-image-fallback-fg);background:var(--uid-image-placeholder);justify-content:center;align-items:center;display:flex}.uid-image__trigger{cursor:zoom-in;border-radius:inherit;background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.uid-image__trigger:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-image__preview{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.uid-image__preview-img{object-fit:contain;max-width:100%;max-height:80vh}.uid-media__button{width:var(--uid-media-button-size,40px);height:var(--uid-media-button-size,40px);border-radius:var(--uid-radius-md,8px);color:inherit;font:inherit;cursor:pointer;transition:background-color var(--uid-duration-fast,.12s), color var(--uid-duration-fast,.12s);background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.uid-media__button:hover{background:var(--uid-media-hover-bg,#ffffff29)}.uid-media__button:focus-visible,.uid-media-menu__item:focus-visible{outline:2px solid var(--uid-media-focus,var(--uid-color-focus-ring,currentColor));outline-offset:-2px}.uid-media__button--active{background:var(--uid-media-hover-bg,#ffffff29)}.uid-media__button--on:after{content:"";background:var(--uid-media-accent,var(--uid-accent));border-radius:1px;height:2px;position:absolute;bottom:6px;left:30%;right:30%}.uid-media__button:disabled{opacity:.4;cursor:default}.uid-media__badge{background:var(--uid-media-accent,var(--uid-accent));color:var(--uid-media-accent-contrast,#fff);pointer-events:none;border-radius:4px;padding:0 3px;font-size:9px;font-weight:700;line-height:13px;position:absolute;top:3px;right:0}.uid-media__fill{fill:currentColor}.uid-media__time{font-size:var(--uid-font-size-sm,14px);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}.uid-media__spin{animation:.9s linear infinite uid-media-spin}@keyframes uid-media-spin{to{transform:rotate(360deg)}}.uid-media__volume{flex:none;align-items:center;display:flex}.uid-media__volume-range{appearance:none;opacity:0;background:linear-gradient(to right, var(--uid-media-played,var(--uid-accent)) 0 var(--_fill,0%), var(--uid-media-rail,#ffffff4d) var(--_fill,0%) 100%);cursor:pointer;width:0;height:4px;transition:width var(--uid-duration-base,.2s) var(--uid-ease-out,ease-out), opacity var(--uid-duration-base,.2s), margin var(--uid-duration-base,.2s);border-radius:2px;margin:0}.uid-media__volume:hover .uid-media__volume-range,.uid-media__volume:focus-within .uid-media__volume-range,.uid-media__volume--open .uid-media__volume-range{width:var(--uid-media-volume-width,72px);opacity:1;margin:0 10px 0 4px}.uid-media__volume-range::-webkit-slider-thumb{-webkit-appearance:none;background:var(--uid-media-thumb,var(--uid-media-played,var(--uid-accent)));border:0;border-radius:50%;width:12px;height:12px}.uid-media__volume-range::-moz-range-thumb{background:var(--uid-media-thumb,var(--uid-media-played,var(--uid-accent)));border:0;border-radius:50%;width:12px;height:12px}.uid-media__volume-range:focus-visible{outline:2px solid var(--uid-media-focus,var(--uid-color-focus-ring,currentColor));outline-offset:4px}@media (hover:none) and (pointer:coarse){.uid-media__volume-range{display:none}.uid-media__button{width:var(--uid-media-button-size-touch,44px);height:var(--uid-media-button-size-touch,44px)}}.uid-media-scrubber{--_rail-h:var(--uid-media-rail-height,4px);height:var(--uid-media-scrubber-height,18px);cursor:pointer;touch-action:none;-webkit-tap-highlight-color:transparent;outline:none;align-items:center;display:flex;position:relative}.uid-media-scrubber--disabled{cursor:default}.uid-media-scrubber__rail{width:100%;height:var(--_rail-h);border-radius:var(--_rail-h);background:var(--uid-media-rail,#ffffff4d);transition:height var(--uid-duration-fast,.12s);position:relative;overflow:hidden}.uid-media-scrubber:hover .uid-media-scrubber__rail,.uid-media-scrubber:focus-visible .uid-media-scrubber__rail,.uid-media-scrubber--dragging .uid-media-scrubber__rail{height:calc(var(--_rail-h) + 2px)}.uid-media-scrubber__buffered{background:var(--uid-media-buffered,#ffffff73);position:absolute;top:0;bottom:0}.uid-media-scrubber__played{width:var(--_played,0%);background:var(--uid-media-played,var(--uid-accent));position:absolute;top:0;bottom:0;left:0}.uid-media-scrubber__handle{top:50%;left:var(--_played,0%);background:var(--uid-media-thumb,var(--uid-media-played,var(--uid-accent)));width:14px;height:14px;transition:transform var(--uid-duration-fast,.12s);pointer-events:none;border-radius:50%;margin:-7px 0 0 -7px;position:absolute;transform:scale(0);box-shadow:0 0 0 1px #00000026}.uid-media-scrubber:hover .uid-media-scrubber__handle,.uid-media-scrubber--dragging .uid-media-scrubber__handle,.uid-media-scrubber:focus-visible .uid-media-scrubber__handle{transform:scale(1)}.uid-media-scrubber:focus-visible .uid-media-scrubber__handle{box-shadow:0 0 0 3px var(--uid-media-focus,var(--uid-color-focus-ring,currentColor))}.uid-media-scrubber--disabled .uid-media-scrubber__handle{display:none}.uid-media-scrubber--wave{height:var(--uid-media-wave-height,40px)}.uid-media-scrubber__wave{width:100%;height:100%;position:relative}.uid-media-scrubber__wave svg{width:100%;height:100%;position:absolute;inset:0}.uid-media-scrubber__wave-base{fill:var(--uid-media-wave,var(--uid-border-default,#c4c4c8))}.uid-media-scrubber__wave-played{fill:var(--uid-media-played,var(--uid-accent));clip-path:inset(0 calc(100% - var(--_played,0%)) 0 0)}.uid-media-scrubber--wave:focus-visible{outline:2px solid var(--uid-media-focus,var(--uid-color-focus-ring,currentColor));outline-offset:2px}.uid-media-scrubber__placeholder{background:linear-gradient(90deg, transparent 0, #ffffff8c 50%, transparent 100%) no-repeat, repeating-linear-gradient(90deg, var(--uid-media-wave,#c4c4c8) 0 2px, transparent 2px 3px);opacity:.6;background-position:-40% 0,0 0;background-size:40% 100%,auto;border-radius:2px;width:100%;height:40%;animation:1.4s ease-in-out infinite uid-media-shimmer;position:relative}:root[data-theme=dark] .uid-media-scrubber__placeholder{background:linear-gradient(90deg, transparent 0, #ffffff2e 50%, transparent 100%) no-repeat, repeating-linear-gradient(90deg, var(--uid-media-wave,#52525b) 0 2px, transparent 2px 3px);background-position:-40% 0,0 0;background-size:40% 100%,auto}@keyframes uid-media-shimmer{to{background-position:140% 0,0 0}}.uid-media-scrubber__hover-line{background:var(--uid-media-hover-line,var(--uid-text-secondary,#888));pointer-events:none;width:1px;position:absolute;top:0;bottom:0}.uid-media-scrubber__preview{pointer-events:none;z-index:2;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;bottom:calc(100% + 6px);transform:translate(-50%)}.uid-media-scrubber__thumb{border-radius:var(--uid-radius-sm,4px);background-color:#000;background-repeat:no-repeat;border:2px solid #ffffffe6;box-shadow:0 4px 12px #0006}.uid-media-scrubber__chapter{text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:var(--uid-font-size-xs,12px);color:var(--uid-media-tooltip-color,#fff);text-shadow:0 1px 2px #0009;font-weight:600;overflow:hidden}.uid-media-scrubber__time{border-radius:var(--uid-radius-sm,4px);background:var(--uid-media-tooltip-bg,#000000bf);color:var(--uid-media-tooltip-color,#fff);font-size:var(--uid-font-size-xs,12px);font-variant-numeric:tabular-nums;white-space:nowrap;padding:2px 6px}.uid-media-menu{flex:none;display:inline-flex;position:relative}.uid-media-menu__panel{z-index:5;min-width:168px;max-height:var(--uid-media-menu-max-height,280px);border-radius:var(--uid-radius-lg,12px);background:var(--uid-media-menu-bg,#1c1c1ef0);color:var(--uid-media-menu-color,#fff);box-shadow:var(--uid-shadow-lg,0 8px 24px #0000004d);border:1px solid var(--uid-media-menu-border,transparent);font-size:var(--uid-font-size-sm,14px);animation:uid-media-menu-in var(--uid-duration-fast,.12s) var(--uid-ease-out,ease-out);padding:6px;position:absolute;bottom:calc(100% + 8px);overflow-y:auto}.uid-media-menu__panel--sheet{z-index:var(--uid-z-popover,1000);-webkit-backdrop-filter:blur(8px);flex-direction:column;gap:2px;padding:0 10px 8px;display:flex;position:fixed;bottom:auto;right:auto;overflow-y:auto}.uid-media-menu__panel--sheet .uid-media-menu__group{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:3px 4px;display:grid}.uid-media-menu__panel--sheet .uid-media-menu__group--compact{grid-template-columns:repeat(auto-fill,minmax(42px,1fr))}.uid-media-menu__panel--sheet .uid-media-menu__group--compact .uid-media-menu__item{font-size:var(--uid-font-size-xs,12px);padding:2px}.uid-media-menu__panel--sheet .uid-media-menu__group+.uid-media-menu__group{border-top:0;margin-top:0;padding-top:2px}.uid-media-menu__panel--sheet .uid-media-menu__heading{grid-column:1/-1;padding:0 2px;font-size:11px;line-height:16px}.uid-media-menu__panel--sheet .uid-media-menu__item{border:1px solid var(--uid-media-menu-divider,#ffffff24);text-align:center;justify-content:center;min-height:30px;padding:2px 6px}.uid-media-menu__panel--sheet .uid-media-menu__check{display:none}.uid-media-menu__panel--sheet .uid-media-menu__label{flex:none}.uid-media-menu__panel--sheet .uid-media-menu__item[aria-checked=true]{border-color:var(--uid-media-accent,var(--uid-accent));background:color-mix(in srgb, var(--uid-media-accent,var(--uid-accent)) 22%, transparent)}.uid-media-menu__sheet-head{justify-content:space-between;align-items:center;min-height:30px;font-weight:600;display:flex}.uid-media-menu__close{--uid-media-button-size:32px;--uid-media-button-size-touch:36px;margin-right:-6px}.uid-media-menu__panel--end{right:0}.uid-media-menu__panel--start{left:0}@keyframes uid-media-menu-in{0%{opacity:0;transform:translateY(4px)}}.uid-media-menu__group+.uid-media-menu__group{border-top:1px solid var(--uid-media-menu-divider,#ffffff24);margin-top:4px;padding-top:4px}.uid-media-menu__panel:not(.uid-media-menu__panel--sheet):has(.uid-media-menu__group+.uid-media-menu__group){grid-auto-columns:minmax(136px,auto);grid-auto-flow:column;display:grid}.uid-media-menu__panel:not(.uid-media-menu__panel--sheet) .uid-media-menu__group+.uid-media-menu__group{border-top:0;border-left:1px solid var(--uid-media-menu-divider,#ffffff24);margin:0 0 0 6px;padding:0 0 0 6px}.uid-media-menu__heading{font-size:var(--uid-font-size-xs,12px);text-transform:uppercase;letter-spacing:.04em;opacity:.65;padding:4px 10px 2px;font-weight:600}.uid-media-menu__item{border-radius:var(--uid-radius-md,8px);width:100%;min-height:34px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:4px 10px 4px 8px;display:flex}.uid-media-menu__item:hover,.uid-media-menu__item:focus-visible{background:var(--uid-media-hover-bg,#ffffff1f)}.uid-media-menu__check{opacity:.45;border:2px solid;border-radius:50%;flex:none;width:16px;height:16px}.uid-media-menu__item[aria-checked=true] .uid-media-menu__check{border-color:var(--uid-media-accent,var(--uid-accent));background:radial-gradient(circle, var(--uid-media-accent,var(--uid-accent)) 0 3.5px, transparent 4px);opacity:1}.uid-media-menu__item[aria-checked=true]{font-weight:600}.uid-media-menu__label{white-space:nowrap;flex:1}.uid-media-menu__hint{opacity:.65;font-weight:400}.uid-media-menu__item--action{padding-left:10px}@media (hover:none) and (pointer:coarse){.uid-media-menu__item{min-height:44px}}@media (prefers-reduced-motion:reduce){.uid-media__spin{animation-duration:2.4s}.uid-media-scrubber__placeholder{animation:none}.uid-media__volume-range,.uid-media-scrubber__rail,.uid-media-scrubber__handle,.uid-media-menu__panel{transition:none;animation:none}}.uid-video{--uid-media-accent:var(--uid-video-accent,var(--uid-accent));--uid-media-played:var(--uid-video-accent,var(--uid-accent));--uid-media-thumb:var(--uid-video-accent,var(--uid-accent));--uid-media-rail:#ffffff47;--uid-media-buffered:#ffffff80;--uid-media-focus:#fff;border-radius:var(--uid-video-radius,var(--uid-radius-lg,12px));background:var(--uid-video-bg,#000);width:100%;clip-path:inset(0 round var(--uid-video-radius,var(--uid-radius-lg,12px)));color:#fff;font-family:var(--uid-font-family-sans,system-ui, sans-serif);isolation:isolate;-webkit-user-select:none;user-select:none;outline:none;line-height:1.2;display:block;position:relative;overflow:hidden}.uid-video:focus-visible{box-shadow:inset 0 0 0 3px var(--uid-color-focus-ring,var(--uid-accent))}.uid-video--fullscreen{clip-path:none;border-radius:0}.uid-video__media{object-fit:contain;object-position:center;background:var(--uid-video-bg,#000);width:100%;height:100%;display:block}.uid-video__media::cue{opacity:0}.uid-video--bare .uid-video__media::cue{opacity:1}.uid-video__surface{z-index:1;cursor:pointer;-webkit-tap-highlight-color:transparent;position:absolute;inset:0}.uid-video--playing.uid-video--controls-hidden,.uid-video--playing.uid-video--controls-hidden .uid-video__surface{cursor:none}.uid-video__controls{z-index:3;transition:opacity var(--uid-duration-base,.2s), transform var(--uid-duration-base,.2s);background:linear-gradient(#0000,#00000061 45%,#000000b8);padding:32px 12px 6px;position:absolute;bottom:0;left:0;right:0}.uid-video--controls-hidden .uid-video__controls{opacity:0;pointer-events:none;transform:translateY(8px)}.uid-video__scrubber{margin:0 4px}.uid-video__bar{align-items:center;gap:2px;min-width:0;min-height:44px;display:flex}.uid-video__bar .uid-media__time{text-shadow:0 1px 2px #00000080;margin-left:6px}.uid-video__chapter{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--uid-font-size-sm,14px);opacity:.85;margin-left:6px;overflow:hidden}.uid-video__chapter:before{content:"·";margin-right:6px}.uid-video__spacer{flex:1}.uid-video__live{height:28px;color:inherit;font:inherit;font-size:var(--uid-font-size-xs,12px);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:#ffffff24;border:0;border-radius:999px;align-items:center;gap:6px;margin-left:6px;padding:0 10px;font-weight:700;display:inline-flex}.uid-video__live-dot{background:#fff9;border-radius:50%;width:8px;height:8px}.uid-video__live--edge .uid-video__live-dot{background:var(--uid-color-rose-500,#f43f5e)}.uid-video__live:focus-visible{outline-offset:2px;outline:2px solid #fff}.uid-video__big-play{z-index:2;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);width:68px;height:68px;transition:background-color var(--uid-duration-fast,.12s), transform var(--uid-duration-fast,.12s);background:#0000008c;border:0;border-radius:50%;justify-content:center;align-items:center;margin:-34px 0 0 -34px;padding:0 0 0 4px;display:flex;position:absolute;top:50%;left:50%}.uid-video__big-play:has(.uid-video__big-icon--pause){padding:0}.uid-video--controls-hidden .uid-video__big-play{opacity:0;pointer-events:none}.uid-video--paused .uid-video__big-play{opacity:1;pointer-events:auto}.uid-video__big-play:hover{background:#000000b8;transform:scale(1.06)}.uid-video__big-play:focus-visible{outline-offset:3px;outline:3px solid #fff}.uid-video--started .uid-video__big-play{width:60px;height:60px;margin:-30px 0 0 -30px}.uid-video__loading{z-index:2;color:#fff;filter:drop-shadow(0 1px 3px #00000080);pointer-events:none;margin:-22px 0 0 -22px;animation:.2s .35s both uid-video-fade-in;position:absolute;top:50%;left:50%}@keyframes uid-video-fade-in{0%{opacity:0}}.uid-video__flash{z-index:2;font-size:var(--uid-font-size-sm,14px);pointer-events:none;background:#0000008c;border-radius:999px;padding:8px 14px;font-weight:600;animation:.12s both uid-video-fade-in;position:absolute;top:50%;transform:translateY(-50%)}.uid-video__flash--left{left:12%}.uid-video__flash--right{right:12%}.uid-video__captions{z-index:2;text-align:center;pointer-events:none;transition:bottom var(--uid-duration-base,.2s);flex-direction:column;align-items:center;gap:2px;display:flex;position:absolute;bottom:18px;left:5%;right:5%}.uid-video:not(.uid-video--controls-hidden) .uid-video__captions{bottom:96px}.uid-video__caption-line{color:#fff;font-size:var(--uid-video-caption-size,clamp(14px, 2.6cqw, 28px));white-space:pre-wrap;background:#000000bf;border-radius:4px;padding:2px 8px;line-height:1.35}.uid-video{container-type:inline-size}.uid-video__error{z-index:4;text-align:center;background:#000000c7;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex;position:absolute;inset:0}.uid-video__error-text{max-width:420px;font-size:var(--uid-font-size-sm,14px);margin:0;line-height:1.45}.uid-video__retry{border-radius:var(--uid-radius-md,8px);height:34px;color:inherit;font:inherit;font-size:var(--uid-font-size-sm,14px);cursor:pointer;background:0 0;border:1px solid #fff6;padding:0 16px}.uid-video__retry:hover{background:#ffffff1f}.uid-video__retry:focus-visible{outline-offset:2px;outline:2px solid #fff}@container (width<=480px){.uid-video__chapter{display:none}.uid-video__controls{padding:24px 6px 2px}.uid-video:not(.uid-video--controls-hidden) .uid-video__captions{bottom:84px}}.uid-video__bar>.uid-media__button,.uid-video__bar>.uid-media-menu{flex:none}.uid-video__bar .uid-media__time{text-overflow:clip;flex:0 auto;min-width:0;overflow:hidden}.uid-video--folded .uid-video__bar{gap:0}@media (prefers-reduced-motion:reduce){.uid-video__controls,.uid-video__captions,.uid-video__big-play{transition:none}.uid-video--controls-hidden .uid-video__controls{transform:none}}.uid-video:has(.uid-media-scrubber__preview) .uid-video__captions{opacity:0}.uid-audio{--uid-media-accent:var(--uid-audio-accent,var(--uid-accent));--uid-media-played:var(--uid-audio-accent,var(--uid-accent));--uid-media-thumb:var(--uid-audio-accent,var(--uid-accent));--uid-media-rail:var(--uid-border-subtle,#e4e4e7);--uid-media-buffered:var(--uid-border-default,#d4d4d8);--uid-media-wave:var(--uid-audio-wave,var(--uid-border-hover,#a1a1aa));--uid-media-hover-bg:var(--uid-surface-base,#f4f4f5);--uid-media-focus:var(--uid-color-focus-ring,var(--uid-accent));--uid-media-menu-bg:var(--uid-surface-overlay,#fff);--uid-media-menu-color:var(--uid-text-primary,#18181b);--uid-media-menu-border:var(--uid-border-subtle,#e4e4e7);--uid-media-menu-divider:var(--uid-border-subtle,#e4e4e7);--uid-media-tooltip-bg:var(--uid-text-primary,#18181b);--uid-media-tooltip-color:var(--uid-surface-raised,#fff);--uid-media-button-size:36px;width:100%;padding:var(--uid-audio-padding,12px 14px);border:1px solid var(--uid-audio-border,var(--uid-border-subtle,#e4e4e7));border-radius:var(--uid-audio-radius,var(--uid-radius-lg,12px));background:var(--uid-audio-bg,var(--uid-surface-raised,#fff));color:var(--uid-text-primary,#18181b);font-family:var(--uid-font-family-sans,system-ui, sans-serif);box-sizing:border-box;line-height:1.3;display:block;container-type:inline-size}:root[data-theme=dark] .uid-audio{--uid-media-wave:var(--uid-audio-wave,var(--uid-border-default,#52525b))}:root[data-theme=dark] .uid-audio__play{color:var(--uid-audio-play-color,var(--uid-color-zinc-950,#09090b))}.uid-audio__media{display:none}.uid-audio__row{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"lead track side";align-items:center;gap:0 12px;min-width:0;display:grid}.uid-audio__row--meta{grid-template-areas:"lead meta side""lead track side"}.uid-audio__lead{grid-area:lead}.uid-audio__meta{grid-area:meta}.uid-audio__track{grid-area:track;min-width:0}.uid-audio__side{grid-area:side}.uid-audio__lead{flex:none;align-items:center;gap:2px;display:flex}.uid-audio__play{width:var(--uid-audio-play-size,44px);height:var(--uid-audio-play-size,44px);background:var(--uid-media-accent);color:var(--uid-audio-play-color,var(--uid-text-on-accent,#fff));cursor:pointer;transition:background-color var(--uid-duration-fast,.12s), transform var(--uid-duration-fast,.12s);border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.uid-audio__play:hover:not(:disabled){background:var(--uid-audio-accent-hover,var(--uid-accent-hover,var(--uid-media-accent)))}.uid-audio__play:active:not(:disabled){transform:scale(.95)}.uid-audio__play:focus-visible{outline:2px solid var(--uid-media-focus);outline-offset:2px}.uid-audio__play:disabled{opacity:.5;cursor:default}.uid-audio__play-icon{margin-left:2px}.uid-audio__play .uid-audio__play-icon{fill:currentColor}.uid-audio__skip{color:var(--uid-text-secondary,#71717a)}.uid-audio__skip:hover:not(:disabled){color:var(--uid-text-primary,#18181b)}.uid-audio__meta{min-width:0;font-size:var(--uid-font-size-sm,14px);align-items:baseline;gap:8px;display:flex}.uid-audio__title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.uid-audio__artist{text-overflow:ellipsis;white-space:nowrap;max-width:40%;color:var(--uid-text-secondary,#71717a);flex:none;overflow:hidden}.uid-audio__artist:before{content:"—";margin-right:8px}.uid-audio--wave .uid-audio__scrubber{--uid-media-scrubber-height:var(--uid-audio-wave-height,40px)}.uid-audio__error{min-height:18px;color:var(--uid-danger,#e11d48);font-size:var(--uid-font-size-sm,14px);align-items:center;gap:6px;margin:0;display:flex}.uid-audio__side{color:var(--uid-text-secondary,#71717a);flex:none;align-items:center;gap:2px;display:flex}.uid-audio__time{min-width:4.5em;font-size:var(--uid-font-size-xs,12px);text-align:right;margin-right:4px}.uid-audio__rate{width:auto;min-width:40px;padding:0 6px}.uid-audio__rate-text{font-size:var(--uid-font-size-xs,12px);font-variant-numeric:tabular-nums;font-weight:600}.uid-audio .uid-media-menu__panel{min-width:140px;top:calc(100% + 6px);bottom:auto}@container (width>=560px){.uid-audio__volume .uid-media__volume-range{width:var(--uid-media-volume-width,72px);opacity:1;margin:0 8px 0 2px}}@container (width<=480px){.uid-audio:not(.uid-audio--mini) .uid-audio__volume{display:none}.uid-audio:not(.uid-audio--mini) .uid-audio__side{display:contents}.uid-audio:not(.uid-audio--mini) .uid-audio__side .uid-media-menu{grid-area:rate}.uid-audio:not(.uid-audio--mini) .uid-audio__time{text-align:left;grid-area:time;min-width:0;margin:2px 0 0}.uid-audio:not(.uid-audio--mini) .uid-audio__row{grid-template-areas:"lead track rate""lead time time";gap:0 8px}.uid-audio:not(.uid-audio--mini) .uid-audio__row--meta{grid-template-areas:"lead meta rate""track track track""time time time"}.uid-audio__row--meta .uid-audio__track{margin-top:6px}.uid-audio__meta{flex-direction:column;align-items:stretch;gap:0}.uid-audio__title,.uid-audio__artist{max-width:100%}.uid-audio__artist{font-size:var(--uid-font-size-xs,12px)}.uid-audio__artist:before{display:none}}.uid-audio__list{max-height:var(--uid-audio-list-max-height,280px);border-top:1px solid var(--uid-border-subtle,#e4e4e7);flex-direction:column;gap:2px;margin:12px -6px -4px;padding:8px 0 0;list-style:none;display:flex;overflow-y:auto}.uid-audio__item{border-radius:var(--uid-radius-md,8px);width:100%;min-height:44px;color:inherit;font:inherit;font-size:var(--uid-font-size-sm,14px);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;padding:6px 10px;display:flex}.uid-audio__item:hover{background:var(--uid-surface-base,#f4f4f5)}.uid-audio__item:focus-visible{outline:2px solid var(--uid-media-focus);outline-offset:-2px}.uid-audio__item--active{background:var(--uid-accent-subtle,#f0fdfa);color:var(--uid-accent-text,var(--uid-media-accent))}.uid-audio__item--active:hover{background:var(--uid-accent-subtle,#f0fdfa)}.uid-audio__item-index{width:20px;color:var(--uid-text-secondary,#71717a);font-size:var(--uid-font-size-xs,12px);font-variant-numeric:tabular-nums;flex:none;justify-content:center;align-items:center;display:inline-flex}.uid-audio__item--active .uid-audio__item-index{color:inherit}.uid-audio__item-text{flex-direction:column;flex:1;min-width:0;display:flex}.uid-audio__item-title,.uid-audio__item-artist{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uid-audio__item--active .uid-audio__item-title{font-weight:600}.uid-audio__item-artist{color:var(--uid-text-secondary,#71717a);font-size:var(--uid-font-size-xs,12px)}.uid-audio__item-time{color:var(--uid-text-secondary,#71717a);font-size:var(--uid-font-size-xs,12px);font-variant-numeric:tabular-nums;flex:none}.uid-audio__eq{align-items:flex-end;gap:2px;height:12px;display:inline-flex}.uid-audio__eq i{transform-origin:bottom;background:currentColor;border-radius:1px;width:3px;height:100%;animation:.9s ease-in-out infinite uid-audio-eq}.uid-audio__eq i:nth-child(2){animation-delay:-.3s}.uid-audio__eq i:nth-child(3){animation-delay:-.6s}@keyframes uid-audio-eq{0%,to{transform:scaleY(.3)}50%{transform:scaleY(1)}}.uid-audio--mini{--uid-media-scrubber-height:24px;--uid-audio-play-size:28px;--uid-audio-wave-height:24px;width:var(--uid-audio-mini-width,240px);vertical-align:middle;background:0 0;border:0;max-width:100%;padding:0;display:inline-block}.uid-audio--mini .uid-audio__row{gap:8px}.uid-audio--mini .uid-audio__time{min-width:2.8em;margin:0}.uid-audio--mini .uid-audio__error{font-size:var(--uid-font-size-xs,12px)}.uid-audio--mini .uid-audio__error span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (hover:none) and (pointer:coarse){.uid-audio--mini{--uid-audio-play-size:36px}}@media (prefers-reduced-motion:reduce){.uid-audio__eq i{animation:none;transform:scaleY(.7)}.uid-audio__play{transition:none}}.uid-rating{--uid-rating-color:var(--uid-color-warning,#f59e0b);--uid-rating-color-empty:var(--uid-color-border);--uid-rating-size:24px;--uid-rating-gap:var(--uid-space-2xs);align-items:center;gap:var(--uid-rating-gap);font-size:var(--uid-rating-size);-webkit-user-select:none;user-select:none;line-height:1;display:inline-flex}.uid-rating--readonly{cursor:default}.uid-rating--disabled{opacity:.5;pointer-events:none}.uid-rating__star{cursor:pointer;width:1em;height:1em;color:var(--uid-rating-color-empty);transition:transform var(--uid-duration-fast) var(--uid-ease-out);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.uid-rating__star:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px;border-radius:4px}.uid-rating__star:hover{transform:scale(1.15)}.uid-rating--readonly .uid-rating__star,.uid-rating--readonly .uid-rating__star:hover{cursor:default;transform:none}.uid-rating__icon{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.uid-rating__icon--filled{color:var(--uid-rating-color);clip-path:inset(0)}.uid-rating__icon--filled[data-half=true]{clip-path:inset(0 50% 0 0)}.uid-rating__label{margin-left:var(--uid-space-xs);font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);font-variant-numeric:tabular-nums}.uid-rating--sm{--uid-rating-size:16px}.uid-rating--lg{--uid-rating-size:32px}.uid-rating--primary{--uid-rating-color:var(--uid-color-primary)}.uid-rating--success{--uid-rating-color:var(--uid-color-success)}.uid-rating--danger{--uid-rating-color:var(--uid-color-danger)}.uid-splitter{width:100%;height:100%;display:flex;position:relative;overflow:hidden}.uid-splitter--horizontal{flex-direction:row}.uid-splitter--vertical{flex-direction:column}.uid-splitter__pane{flex-grow:0;flex-shrink:0;min-width:0;min-height:0;position:relative;overflow:auto}.uid-splitter__pane--end{flex:1}.uid-splitter__handle{background:var(--uid-color-border);-webkit-user-select:none;user-select:none;transition:background var(--uid-duration-fast) var(--uid-ease-out);outline:none;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.uid-splitter__handle:hover,.uid-splitter__handle:focus-visible,.uid-splitter--dragging .uid-splitter__handle{background:var(--uid-color-primary)}.uid-splitter--horizontal .uid-splitter__handle{cursor:col-resize;width:4px;margin:0}.uid-splitter--vertical .uid-splitter__handle{cursor:row-resize;height:4px}.uid-splitter__handle:before{content:"";position:absolute;inset:-4px}.uid-splitter__grip{pointer-events:none;color:var(--uid-color-text-tertiary);gap:2px;display:flex}.uid-splitter__grip-dot{background:currentColor;border-radius:50%;width:2px;height:2px}.uid-splitter--horizontal .uid-splitter__grip{flex-direction:column}.uid-splitter--dragging{cursor:col-resize}.uid-splitter--dragging.uid-splitter--vertical{cursor:row-resize}.uid-splitter--disabled .uid-splitter__handle{cursor:not-allowed;opacity:.4;pointer-events:none}.uid-stat{--uid-stat-padding:var(--uid-space-md);--uid-stat-radius:var(--uid-radius-md);--uid-stat-bg:var(--uid-color-bg);--uid-stat-border:var(--uid-color-border);gap:var(--uid-space-md);padding:var(--uid-stat-padding);background:var(--uid-stat-bg);border:1px solid var(--uid-stat-border);border-radius:var(--uid-stat-radius);align-items:flex-start;min-width:0;display:flex}.uid-stat--bordered-none{border:none}.uid-stat--ghost{background:0 0;border:none;padding:0}.uid-stat__icon{border-radius:var(--uid-radius-md);background:var(--uid-color-primary-subtle);width:40px;height:40px;color:var(--uid-color-primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-stat--success .uid-stat__icon{background:var(--uid-color-success-subtle);color:var(--uid-color-success)}.uid-stat--warning .uid-stat__icon{background:var(--uid-color-warning-subtle);color:var(--uid-color-warning)}.uid-stat--danger .uid-stat__icon{background:var(--uid-color-danger-subtle);color:var(--uid-color-danger)}.uid-stat--info .uid-stat__icon{background:var(--uid-color-info-subtle);color:var(--uid-color-info)}.uid-stat__body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.uid-stat__title{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text-secondary);text-overflow:ellipsis;white-space:nowrap;margin:0;line-height:1.4;overflow:hidden}.uid-stat__value-row{align-items:baseline;gap:var(--uid-space-sm);flex-wrap:wrap;display:flex}.uid-stat__value{font-size:var(--uid-font-size-2xl,28px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);font-variant-numeric:tabular-nums;align-items:baseline;gap:2px;line-height:1.2;display:inline-flex}.uid-stat__prefix,.uid-stat__suffix{font-size:.65em;font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text-tertiary)}.uid-stat__trend{border-radius:var(--uid-radius-sm);font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);background:var(--uid-color-bg-subtle);color:var(--uid-color-text-secondary);align-items:center;gap:2px;padding:2px 6px;display:inline-flex}.uid-stat__trend--up{background:var(--uid-color-success-subtle);color:var(--uid-color-success)}.uid-stat__trend--down{background:var(--uid-color-danger-subtle);color:var(--uid-color-danger)}.uid-stat__footer{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary);margin:0;line-height:1.4}.uid-stat--loading .uid-stat__title,.uid-stat--loading .uid-stat__value,.uid-stat--loading .uid-stat__footer{background:var(--uid-color-bg-subtle);color:#0000;border-radius:var(--uid-radius-sm);background-image:linear-gradient(90deg, transparent 0%, var(--uid-color-border) 50%, transparent 100%);background-size:200% 100%;animation:1.4s linear infinite uid-stat-shimmer}@keyframes uid-stat-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.uid-stat--trend-below .uid-stat__value-row{flex-direction:column;align-items:flex-start;gap:4px}.uid-description-list{--uid-desc-cols:1;--uid-desc-label-color:var(--uid-color-text-secondary);--uid-desc-value-color:var(--uid-color-text);font-size:var(--uid-font-size-md)}.uid-description-list__title{margin:0 0 var(--uid-space-md) 0;font-size:var(--uid-font-size-lg,18px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text)}.uid-description-list__grid{grid-template-columns:repeat(var(--uid-desc-cols), 1fr);gap:0;display:grid}.uid-description-item{grid-column:span var(--uid-desc-span,1);min-width:0;display:flex}.uid-description-item__label{color:var(--uid-desc-label-color);font-weight:var(--uid-font-weight-medium);flex-shrink:0}.uid-description-item__value{color:var(--uid-desc-value-color);align-items:center;gap:var(--uid-space-xs);word-break:break-word;min-width:0;display:flex}.uid-description-item__copy{width:18px;height:18px;color:var(--uid-color-text-tertiary);cursor:pointer;border-radius:var(--uid-radius-sm);transition:color var(--uid-duration-fast), background var(--uid-duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.uid-description-item__copy:hover{background:var(--uid-color-bg-subtle);color:var(--uid-color-text)}.uid-description-item__copy--copied{color:var(--uid-color-success)}.uid-description-list--horizontal .uid-description-item{padding:var(--uid-space-sm) 0;align-items:baseline;gap:var(--uid-space-md)}.uid-description-list--horizontal .uid-description-item__label{width:var(--uid-desc-label-width,33%);min-width:120px}.uid-description-list--horizontal .uid-description-item__value{flex:1}.uid-description-list--vertical .uid-description-item{gap:var(--uid-space-2xs);padding:var(--uid-space-sm) 0;flex-direction:column}.uid-description-list--vertical .uid-description-item__label{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary)}.uid-description-list--bordered .uid-description-list__grid{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);overflow:hidden}.uid-description-list--bordered .uid-description-item{padding:var(--uid-space-sm) var(--uid-space-md);border-right:1px solid var(--uid-color-border);border-bottom:1px solid var(--uid-color-border)}.uid-description-list--bordered.uid-description-list--horizontal .uid-description-item__label{background:var(--uid-color-bg-subtle);margin:calc(-1 * var(--uid-space-sm)) 0 calc(-1 * var(--uid-space-sm)) calc(-1 * var(--uid-space-md));padding:var(--uid-space-sm) var(--uid-space-md);align-self:stretch;align-items:center;display:flex}.uid-description-list--sm{font-size:var(--uid-font-size-sm)}.uid-description-list--lg{font-size:var(--uid-font-size-lg,16px)}.uid-pattern-result{text-align:center;padding:var(--uid-space-2xl) var(--uid-space-md);align-items:center;gap:var(--uid-space-md);flex-direction:column;max-width:560px;margin:0 auto;display:flex}.uid-pattern-result__icon{background:var(--uid-color-bg-subtle);width:72px;height:72px;color:var(--uid-color-text-secondary);border-radius:50%;justify-content:center;align-items:center;display:flex}.uid-pattern-result--success .uid-pattern-result__icon{background:var(--uid-color-success-subtle);color:var(--uid-color-success)}.uid-pattern-result--info .uid-pattern-result__icon{background:var(--uid-color-info-subtle);color:var(--uid-color-info)}.uid-pattern-result--warning .uid-pattern-result__icon{background:var(--uid-color-warning-subtle);color:var(--uid-color-warning)}.uid-pattern-result--error .uid-pattern-result__icon{background:var(--uid-color-danger-subtle);color:var(--uid-color-danger)}.uid-pattern-result__title{font-size:var(--uid-font-size-xl,22px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);margin:0;line-height:1.3}.uid-pattern-result__description{font-size:var(--uid-font-size-md);color:var(--uid-color-text-secondary);max-width:480px;margin:0;line-height:1.5}.uid-pattern-result__content{width:100%;margin-top:var(--uid-space-md);padding:var(--uid-space-md);background:var(--uid-color-bg-subtle);border-radius:var(--uid-radius-md);font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);text-align:left}.uid-pattern-result__actions{gap:var(--uid-space-sm);margin-top:var(--uid-space-sm);flex-wrap:wrap;justify-content:center;display:flex}.uid-pattern-result--compact{padding:var(--uid-space-md);gap:var(--uid-space-sm)}.uid-pattern-result--compact .uid-pattern-result__icon{width:48px;height:48px}.uid-pattern-result--compact .uid-pattern-result__title{font-size:var(--uid-font-size-lg,18px)}.uid-back-top{right:var(--uid-back-top-right,32px);bottom:var(--uid-back-top-bottom,32px);z-index:var(--uid-z-fixed,1000);border:1px solid var(--uid-color-border);background:var(--uid-color-bg);width:44px;height:44px;color:var(--uid-color-text-secondary);cursor:pointer;box-shadow:var(--uid-shadow-md);transition:color var(--uid-duration-fast) var(--uid-ease-out), background var(--uid-duration-fast) var(--uid-ease-out), transform var(--uid-duration-fast) var(--uid-ease-out);border-radius:50%;outline:none;justify-content:center;align-items:center;padding:0;display:flex;position:fixed}.uid-back-top:hover{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);border-color:var(--uid-color-primary)}.uid-back-top:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-back-top:active{transform:translateY(1px)}.uid-back-top-enter-active,.uid-back-top-leave-active{transition:opacity var(--uid-duration-base) var(--uid-ease-out), transform var(--uid-duration-base) var(--uid-ease-out)}.uid-back-top-enter-from,.uid-back-top-leave-to{opacity:0;transform:translateY(8px)}.uid-affix{position:relative}.uid-affix__sentinel{visibility:hidden;pointer-events:none;width:100%;height:1px}.uid-affix__content{z-index:var(--uid-z-affix,90);transition:box-shadow var(--uid-duration-base) var(--uid-ease-out);position:sticky}.uid-affix--top .uid-affix__content{top:var(--uid-affix-offset,0px)}.uid-affix--bottom .uid-affix__content{bottom:var(--uid-affix-offset,0px)}.uid-affix--affixed .uid-affix__content{box-shadow:var(--uid-shadow-sm)}.uid-watermark{isolation:isolate;position:relative}.uid-watermark__overlay{pointer-events:none;z-index:var(--uid-watermark-z,9);background-position:0 0;background-repeat:repeat;background-size:var(--uid-watermark-size,auto);background-image:var(--uid-watermark-image,none);position:absolute;inset:0}.uid-watermark__content{z-index:1;position:relative}.uid-anchor{border-left:2px solid var(--uid-color-border);font-size:var(--uid-font-size-sm);flex-direction:column;padding-left:0;display:flex}.uid-anchor__list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.uid-anchor__item{flex-direction:column;display:flex;position:relative}.uid-anchor__link{padding:var(--uid-space-xs) var(--uid-space-md);color:var(--uid-color-text-secondary);transition:color var(--uid-duration-fast) var(--uid-ease-out);border-left:2px solid #0000;border-radius:0;margin-left:-2px;text-decoration:none;display:block}.uid-anchor__link:hover{color:var(--uid-color-text)}.uid-anchor__link--active{color:var(--uid-color-primary);border-left-color:var(--uid-color-primary);font-weight:var(--uid-font-weight-medium)}.uid-anchor__sublist{padding:0 0 0 var(--uid-space-md);margin:0;list-style:none}.uid-anchor__sublist .uid-anchor__link{font-size:.92em}.uid-tour{z-index:var(--uid-z-modal,1500);pointer-events:none;position:fixed;inset:0}.uid-tour__mask{pointer-events:auto;background:#00000073;position:fixed;inset:0}.uid-tour__spotlight{border-radius:var(--uid-radius-md);pointer-events:none;outline:2px solid var(--uid-color-primary);outline-offset:2px;transition:top var(--uid-duration-base) var(--uid-ease-out), left var(--uid-duration-base) var(--uid-ease-out), width var(--uid-duration-base) var(--uid-ease-out), height var(--uid-duration-base) var(--uid-ease-out);position:absolute;box-shadow:0 0 0 9999px #00000073}.uid-tour__popover{background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);width:320px;box-shadow:var(--uid-shadow-lg);padding:var(--uid-space-md);pointer-events:auto;z-index:1;transition:top var(--uid-duration-base) var(--uid-ease-out), left var(--uid-duration-base) var(--uid-ease-out);position:absolute}.uid-tour__popover--center{transition:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.uid-tour__title{margin:0 0 var(--uid-space-xs) 0;font-size:var(--uid-font-size-lg,18px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text)}.uid-tour__description{margin:0 0 var(--uid-space-md) 0;font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);line-height:1.5}.uid-tour__footer{justify-content:space-between;align-items:center;gap:var(--uid-space-sm);display:flex}.uid-tour__progress{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary);font-variant-numeric:tabular-nums}.uid-tour__actions{gap:var(--uid-space-xs);display:flex}.uid-tour__btn{border:1px solid var(--uid-color-border);background:var(--uid-color-bg);color:var(--uid-color-text);font-size:var(--uid-font-size-sm);border-radius:var(--uid-radius-sm);cursor:pointer;transition:background var(--uid-duration-fast);padding:6px 12px}.uid-tour__btn:hover{background:var(--uid-color-bg-subtle)}.uid-tour__btn--primary{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);border-color:var(--uid-color-primary)}.uid-tour__btn--primary:hover{background:var(--uid-color-primary-hover);border-color:var(--uid-color-primary-hover)}.uid-tour__btn--ghost{color:var(--uid-color-text-secondary);border-color:#0000}.uid-tour__btn--ghost:hover{background:var(--uid-color-bg-subtle)}.uid-mention{gap:var(--uid-space-xs);flex-direction:column;display:flex;position:relative}.uid-mention__label{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary)}.uid-mention__field{width:100%;padding:var(--uid-space-sm) 12px;border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-md);resize:vertical;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);line-height:1.5;display:block}.uid-mention__field:focus{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle);outline:none}.uid-mention__field::placeholder{color:var(--uid-color-text-tertiary)}.uid-mention--disabled .uid-mention__field{opacity:.5;cursor:not-allowed;background:var(--uid-surface-base)}.uid-mention__dropdown{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);width:240px;max-height:240px;padding:var(--uid-space-2xs);overflow-y:auto}.uid-mention__option{align-items:center;gap:var(--uid-space-sm);width:100%;padding:var(--uid-space-sm);border-radius:var(--uid-radius-sm);text-align:left;cursor:pointer;font-size:var(--uid-font-size-md);color:var(--uid-color-text);background:0 0;border:none;display:flex}.uid-mention__option:hover,.uid-mention__option--active{background:var(--uid-color-bg-subtle)}.uid-mention__option-label{font-weight:var(--uid-font-weight-medium)}.uid-mention__option-hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary);margin-left:auto}.uid-mention__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-sm)}.uid-tree-select{gap:var(--uid-space-xs);flex-direction:column;display:flex;position:relative}.uid-tree-select__label{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary)}.uid-tree-select__required{color:var(--uid-danger)}.uid-tree-select__trigger{align-items:center;gap:var(--uid-space-sm);min-height:var(--uid-size-md);padding:0 var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);outline:none;display:flex}.uid-tree-select--open .uid-tree-select__trigger,.uid-tree-select__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-tree-select--disabled .uid-tree-select__trigger{opacity:.5;cursor:not-allowed;pointer-events:none;background:var(--uid-surface-base)}.uid-tree-select__value{align-items:center;gap:var(--uid-space-xs);padding:var(--uid-space-2xs) 0;font-size:var(--uid-font-size-md);color:var(--uid-color-text);flex-wrap:wrap;flex:1;min-width:0;display:flex}.uid-tree-select__placeholder{color:var(--uid-color-text-tertiary)}.uid-tree-select__chip{align-items:center;gap:var(--uid-space-2xs);padding:2px var(--uid-space-xs);background:var(--uid-color-primary-subtle);color:var(--uid-color-primary);border-radius:var(--uid-radius-sm);font-size:var(--uid-font-size-sm);display:inline-flex}.uid-tree-select__chip-remove{width:14px;height:14px;color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;display:flex}.uid-tree-select__chip-remove:hover{opacity:1}.uid-tree-select__suffix{align-items:center;gap:var(--uid-space-xs);color:var(--uid-color-text-secondary);flex-shrink:0;display:flex}.uid-tree-select__clear{border-radius:var(--uid-radius-sm);cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.uid-tree-select__clear:hover{color:var(--uid-color-text)}.uid-tree-select__chevron{transition:transform var(--uid-duration-base)}.uid-tree-select__chevron--open{transform:rotate(180deg)}.uid-tree-select__hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0}.uid-tree-select__hint--error{color:var(--uid-danger)}.uid-tree-select--error .uid-tree-select__trigger{border-color:var(--uid-danger)}.uid-tree-select__dropdown{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);max-height:320px;padding:var(--uid-space-xs) 0;left:0;overflow-y:auto}.uid-tree-select--sm .uid-tree-select__trigger{min-height:var(--uid-size-sm);padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-tree-select--lg .uid-tree-select__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-tree-select--sm .uid-tree-select__value{font-size:var(--uid-font-size-sm)}.uid-tree-select--md .uid-tree-select__value{font-size:var(--uid-font-size-md)}.uid-tree-select--lg .uid-tree-select__value{font-size:var(--uid-font-size-lg)}.uid-notification-badge{--uid-notif-badge-size:18px;--uid-notif-badge-color:var(--uid-color-text-on-primary);--uid-notif-badge-bg:var(--uid-color-danger);--uid-notif-badge-offset-x:0px;--uid-notif-badge-offset-y:0px;display:inline-flex;position:relative}.uid-notification-badge__dot,.uid-notification-badge__count{background:var(--uid-notif-badge-bg);color:var(--uid-notif-badge-color);box-shadow:0 0 0 2px var(--uid-color-bg);pointer-events:none;font-variant-numeric:tabular-nums;border-radius:999px;justify-content:center;align-items:center;display:inline-flex;position:absolute}.uid-notification-badge__dot{width:8px;height:8px}.uid-notification-badge__count{min-width:var(--uid-notif-badge-size);height:var(--uid-notif-badge-size);font-size:11px;font-weight:var(--uid-font-weight-semibold);padding:0 6px;line-height:1}.uid-notification-badge--top-right .uid-notification-badge__dot,.uid-notification-badge--top-right .uid-notification-badge__count{top:var(--uid-notif-badge-offset-y);right:var(--uid-notif-badge-offset-x);transform:translate(50%,-50%)}.uid-notification-badge--top-left .uid-notification-badge__dot,.uid-notification-badge--top-left .uid-notification-badge__count{top:var(--uid-notif-badge-offset-y);left:var(--uid-notif-badge-offset-x);transform:translate(-50%,-50%)}.uid-notification-badge--bottom-right .uid-notification-badge__dot,.uid-notification-badge--bottom-right .uid-notification-badge__count{bottom:var(--uid-notif-badge-offset-y);right:var(--uid-notif-badge-offset-x);transform:translate(50%,50%)}.uid-notification-badge--bottom-left .uid-notification-badge__dot,.uid-notification-badge--bottom-left .uid-notification-badge__count{bottom:var(--uid-notif-badge-offset-y);left:var(--uid-notif-badge-offset-x);transform:translate(-50%,50%)}.uid-notification-badge--primary .uid-notification-badge__dot,.uid-notification-badge--primary .uid-notification-badge__count{background:var(--uid-color-primary)}.uid-notification-badge--success .uid-notification-badge__dot,.uid-notification-badge--success .uid-notification-badge__count{background:var(--uid-color-success)}.uid-notification-badge--warning .uid-notification-badge__dot,.uid-notification-badge--warning .uid-notification-badge__count{background:var(--uid-color-warning)}.uid-notification-badge--info .uid-notification-badge__dot,.uid-notification-badge--info .uid-notification-badge__count{background:var(--uid-color-info)}.uid-carousel{border-radius:var(--uid-radius-md);position:relative;overflow:hidden}.uid-carousel__track{transition:transform var(--uid-duration-slow,.4s) var(--uid-ease-in-out);will-change:transform;display:flex}.uid-carousel--no-transition .uid-carousel__track{transition:none}.uid-carousel__slide{flex:0 0 100%;min-width:0}.uid-carousel__arrow{color:#fff;cursor:pointer;z-index:2;width:36px;height:36px;transition:background var(--uid-duration-fast) var(--uid-ease-out);background:#0006;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.uid-carousel__arrow:hover{background:#0009}.uid-carousel__arrow:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-carousel__arrow:disabled{opacity:.4;cursor:not-allowed}.uid-carousel__arrow--prev{left:var(--uid-space-sm)}.uid-carousel__arrow--next{right:var(--uid-space-sm)}.uid-carousel__indicators{bottom:var(--uid-space-sm);justify-content:center;gap:var(--uid-space-xs);z-index:2;display:flex;position:absolute;left:0;right:0}.uid-carousel__indicator{cursor:pointer;width:8px;height:8px;transition:background var(--uid-duration-fast) var(--uid-ease-out), width var(--uid-duration-fast) var(--uid-ease-out);background:#ffffff80;border:none;border-radius:50%;padding:0}.uid-carousel__indicator--active{background:#fff;border-radius:4px;width:24px}.uid-carousel__indicator:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-carousel--vertical .uid-carousel__track{flex-direction:column}.uid-carousel--vertical .uid-carousel__slide{flex:0 0 100%;height:100%}.uid-carousel--vertical .uid-carousel__arrow--prev{top:var(--uid-space-sm);left:50%;transform:translate(-50%)}.uid-carousel--vertical .uid-carousel__arrow--next{top:auto;bottom:var(--uid-space-sm);left:50%;right:auto;transform:translate(-50%)}.uid-carousel--vertical .uid-carousel__indicators{top:50%;bottom:auto;right:var(--uid-space-sm);flex-direction:column;left:auto;transform:translateY(-50%)}.uid-board{gap:var(--uid-space-md);flex-direction:column;display:flex;overflow-x:auto}.uid-board--busy{opacity:.7;pointer-events:none}.uid-board__lane-title{font-weight:600;font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);padding:var(--uid-space-xs) 0}.uid-board__columns{gap:var(--uid-space-sm);grid-auto-columns:minmax(220px,1fr);grid-auto-flow:column;display:grid}.uid-board__column{background:var(--uid-board-column-bg,var(--uid-color-surface-sunken,var(--uid-color-surface-raised)));border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md,8px);flex-direction:column;min-height:120px;transition:border-color .12s,background .12s;display:flex}.uid-board__column--target{border-color:var(--uid-color-primary);background:var(--uid-color-primary-subtle,var(--uid-color-surface-raised))}.uid-board__column--blocked{opacity:.55}.uid-board__header{justify-content:space-between;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);font-size:var(--uid-font-size-sm);text-transform:uppercase;letter-spacing:.02em;color:var(--uid-color-text-secondary);font-weight:600;display:flex}.uid-board__count{font-variant-numeric:tabular-nums;font-weight:500}.uid-board__column--over .uid-board__count{color:var(--uid-color-danger);font-weight:700}.uid-board__cards{padding:0 var(--uid-space-sm) var(--uid-space-sm);gap:var(--uid-space-xs);flex-direction:column;flex:1;margin:0;list-style:none;display:flex}.uid-board__card{padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-color-surface);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm,6px);cursor:grab;outline:none}.uid-board__card:focus-visible{box-shadow:0 0 0 2px var(--uid-color-primary)}.uid-board__card--dragging{opacity:.4}.uid-board__card--drop-before{box-shadow:0 -2px 0 0 var(--uid-color-primary)}.uid-board__card-title{font-size:var(--uid-font-size-sm);color:var(--uid-color-text);overflow-wrap:anywhere}.uid-board__card-subtitle{font-size:var(--uid-font-size-xs,11px);color:var(--uid-color-text-secondary);margin-top:2px}.uid-board__card-tags{margin-top:var(--uid-space-xs);flex-wrap:wrap;gap:4px;display:flex}.uid-board__tag{font-size:var(--uid-font-size-xs,11px);border:1px solid var(--uid-color-border);color:var(--uid-color-text-secondary);border-radius:9999px;padding:0 6px}.uid-board__tag--info{color:var(--uid-color-info);border-color:currentColor}.uid-board__tag--success{color:var(--uid-color-success);border-color:currentColor}.uid-board__tag--warning{color:var(--uid-color-warning);border-color:currentColor}.uid-board__tag--danger{color:var(--uid-color-danger);border-color:currentColor}.uid-board__empty{padding:var(--uid-space-md);text-align:center;font-size:var(--uid-font-size-xs,11px);color:var(--uid-color-text-tertiary,var(--uid-color-text-secondary))}.uid-board--readonly .uid-board__card{cursor:pointer}.uid-transfer{gap:var(--uid-space-md);grid-template-columns:1fr auto 1fr;align-items:stretch;display:grid}.uid-transfer__panel{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-bg);flex-direction:column;min-height:280px;display:flex;overflow:hidden}.uid-transfer__header{padding:var(--uid-space-sm) 12px;border-bottom:1px solid var(--uid-color-border);background:var(--uid-color-bg-subtle);font-size:var(--uid-font-size-sm);justify-content:space-between;align-items:center;gap:var(--uid-space-sm);min-height:40px;display:flex}.uid-transfer__title{font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text);gap:var(--uid-space-xs);align-items:center;display:flex}.uid-transfer__count{color:var(--uid-color-text-tertiary);font-variant-numeric:tabular-nums}.uid-transfer__select-all{cursor:pointer;align-items:center;gap:4px;font-size:12px;display:inline-flex}.uid-transfer__search{padding:var(--uid-space-xs) 12px;border-bottom:1px solid var(--uid-color-border)}.uid-transfer__search-input{width:100%;color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-sm);background:0 0;border:none;outline:none}.uid-transfer__search-input::placeholder{color:var(--uid-color-text-tertiary)}.uid-transfer__list{flex:1;margin:0;padding:0;list-style:none;overflow-y:auto}.uid-transfer__item{align-items:center;gap:var(--uid-space-sm);cursor:pointer;font-size:var(--uid-font-size-sm);color:var(--uid-color-text);transition:background var(--uid-duration-fast) var(--uid-ease-out);padding:8px 12px;display:flex}.uid-transfer__item:hover:not(.uid-transfer__item--disabled){background:var(--uid-color-bg-subtle)}.uid-transfer__item--disabled{opacity:.5;cursor:not-allowed}.uid-transfer__check{border:1px solid var(--uid-color-border);background:var(--uid-color-bg);width:14px;height:14px;color:var(--uid-color-text-on-primary);border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.uid-transfer__check--checked{background:var(--uid-color-primary);border-color:var(--uid-color-primary)}.uid-transfer__label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.uid-transfer__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-sm)}.uid-transfer__ops{justify-content:center;gap:var(--uid-space-sm);flex-direction:column;display:flex}.uid-transfer__op{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-bg);width:32px;height:32px;color:var(--uid-color-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast), color var(--uid-duration-fast);justify-content:center;align-items:center;display:flex}.uid-transfer__op:hover:not(:disabled){background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);border-color:var(--uid-color-primary)}.uid-transfer__op:disabled{opacity:.4;cursor:not-allowed}.uid-transfer--disabled .uid-transfer__panel,.uid-transfer--disabled .uid-transfer__op{opacity:.6;pointer-events:none}.uid-cascader{gap:var(--uid-space-xs);flex-direction:column;display:flex;position:relative}.uid-cascader__label{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);color:var(--uid-text-primary)}.uid-cascader__trigger{align-items:center;gap:var(--uid-space-sm);min-height:var(--uid-size-md);padding:var(--uid-space-xs) 12px;border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color var(--uid-duration-fast) var(--uid-ease-out), box-shadow var(--uid-duration-fast) var(--uid-ease-out);outline:none;display:flex}.uid-cascader--open .uid-cascader__trigger,.uid-cascader__trigger:focus-visible{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-cascader--disabled .uid-cascader__trigger{opacity:.5;pointer-events:none;background:var(--uid-surface-base)}.uid-cascader__value{min-width:0;font-size:var(--uid-font-size-md);flex-wrap:wrap;flex:1;align-items:center;gap:4px;display:flex}.uid-cascader__placeholder{color:var(--uid-color-text-tertiary)}.uid-cascader__separator{color:var(--uid-color-text-tertiary);margin:0 2px}.uid-cascader__suffix{align-items:center;gap:var(--uid-space-xs);color:var(--uid-color-text-secondary);flex-shrink:0;display:flex}.uid-cascader__clear{cursor:pointer;width:18px;height:18px;color:var(--uid-color-text-secondary);border-radius:var(--uid-radius-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.uid-cascader__clear:hover{color:var(--uid-color-text)}.uid-cascader__chevron{transition:transform var(--uid-duration-base)}.uid-cascader__chevron--open{transform:rotate(180deg)}.uid-cascader__dropdown{z-index:var(--uid-z-popover,450);background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);flex-direction:column;max-height:360px;display:flex;overflow:hidden}.uid-cascader__columns{min-height:0;display:flex}.uid-cascader__search{padding:var(--uid-space-2xs);border-bottom:1px solid var(--uid-color-border)}.uid-cascader__search-input{width:100%;min-height:var(--uid-size-sm);padding:0 var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-surface-raised);color:var(--uid-color-text);font:inherit;font-size:var(--uid-font-size-sm);outline:none}.uid-cascader__search-input:focus-visible{border-color:var(--uid-color-primary);box-shadow:0 0 0 3px var(--uid-color-primary-subtle)}.uid-cascader__results{padding:var(--uid-space-2xs);min-width:240px;max-height:300px;margin:0;list-style:none;overflow-y:auto}.uid-cascader__result{padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-sm);cursor:pointer;font-size:var(--uid-font-size-md);color:var(--uid-color-text);flex-wrap:wrap;align-items:center;gap:2px;display:flex}.uid-cascader__result--active{background:var(--uid-color-bg-subtle)}.uid-cascader__highlight{color:var(--uid-color-primary);font-weight:var(--uid-font-weight-medium);background:0 0}.uid-cascader__empty{padding:var(--uid-space-sm) 12px;font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary)}.uid-cascader__column{min-width:160px;max-height:320px;padding:var(--uid-space-2xs);flex-direction:column;display:flex;overflow-y:auto}.uid-cascader__column+.uid-cascader__column{border-left:1px solid var(--uid-color-border)}.uid-cascader__option{align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) 12px;border-radius:var(--uid-radius-sm);text-align:left;cursor:pointer;font-size:var(--uid-font-size-md);color:var(--uid-color-text);white-space:nowrap;background:0 0;border:none;width:100%;display:flex}.uid-cascader__option:hover{background:var(--uid-color-bg-subtle)}.uid-cascader__option--active{background:var(--uid-color-primary-subtle);color:var(--uid-color-primary)}.uid-cascader__option--selected{font-weight:var(--uid-font-weight-medium)}.uid-cascader__option:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-cascader__option--disabled{opacity:.4;cursor:not-allowed}.uid-cascader__option-label{text-overflow:ellipsis;flex:1;overflow:hidden}.uid-cascader__option-arrow{color:var(--uid-color-text-tertiary)}.uid-cascader__hint{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-secondary);margin:0}.uid-cascader--sm .uid-cascader__trigger{min-height:var(--uid-size-sm);padding-block:0;padding-inline:var(--uid-space-sm);font-size:var(--uid-font-size-sm)}.uid-cascader--lg .uid-cascader__trigger{min-height:var(--uid-size-lg);padding-inline:var(--uid-space-md)}.uid-cascader--sm .uid-cascader__value{font-size:var(--uid-font-size-sm)}.uid-cascader--md .uid-cascader__value{font-size:var(--uid-font-size-md)}.uid-cascader--lg .uid-cascader__value{font-size:var(--uid-font-size-lg)}.uid-calendar{--uid-cal-cell-min-h:88px;background:var(--uid-color-bg);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);flex-direction:column;width:100%;display:flex;overflow:hidden}.uid-calendar__header{padding:var(--uid-space-sm) var(--uid-space-md);border-bottom:1px solid var(--uid-color-border);background:var(--uid-color-bg-subtle);justify-content:space-between;align-items:center;display:flex}.uid-calendar__title{font-size:var(--uid-font-size-lg,16px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text)}.uid-calendar__nav{gap:var(--uid-space-xs);display:flex}.uid-calendar__header{gap:var(--uid-space-sm);flex-wrap:wrap}.uid-calendar__tools{align-items:center;gap:var(--uid-space-sm);flex-wrap:wrap;display:flex}.uid-calendar__views{display:flex}.uid-calendar__view{border-radius:0;margin-left:-1px}.uid-calendar__view:first-child{border-radius:var(--uid-radius-sm) 0 0 var(--uid-radius-sm);margin-left:0}.uid-calendar__view:last-child{border-radius:0 var(--uid-radius-sm) var(--uid-radius-sm) 0}.uid-calendar__view--active,.uid-calendar__view--active:hover{background:var(--uid-color-primary-subtle);border-color:var(--uid-color-primary);color:var(--uid-color-primary);position:relative}.uid-calendar__btn:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px;position:relative}.uid-calendar__btn{height:28px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);background:var(--uid-color-bg);color:var(--uid-color-text);font-size:var(--uid-font-size-sm);cursor:pointer;transition:background var(--uid-duration-fast);justify-content:center;align-items:center;display:flex}.uid-calendar__btn:hover{background:var(--uid-color-bg-subtle)}.uid-calendar__btn--icon{width:28px;padding:0}.uid-calendar__weekdays{background:var(--uid-color-bg-subtle);border-bottom:1px solid var(--uid-color-border);grid-template-columns:repeat(7,1fr);display:grid}.uid-calendar__weekday{padding:var(--uid-space-sm);font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text-tertiary);text-align:center;text-transform:uppercase;letter-spacing:.06em}.uid-calendar__grid{grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(var(--uid-cal-cell-min-h), 1fr);display:grid}.uid-calendar__day{border-right:1px solid var(--uid-color-border);border-bottom:1px solid var(--uid-color-border);cursor:pointer;background:var(--uid-color-bg);transition:background var(--uid-duration-fast) var(--uid-ease-out);flex-direction:column;gap:4px;padding:4px 6px;display:flex;position:relative;overflow:hidden}.uid-calendar__day:hover{background:var(--uid-color-bg-subtle)}.uid-calendar__day:nth-child(7n){border-right:none}.uid-calendar__grid>.uid-calendar__day:nth-last-child(-n+7){border-bottom:none}.uid-calendar__day--other{background:var(--uid-color-bg-subtle)}.uid-calendar__day--other .uid-calendar__date{color:var(--uid-color-text-tertiary)}.uid-calendar__day--today .uid-calendar__date{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary)}.uid-calendar__day--selected{background:var(--uid-color-primary-subtle)}.uid-calendar__day--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.uid-calendar__day:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-calendar__date{min-width:22px;height:22px;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-medium);font-variant-numeric:tabular-nums;color:var(--uid-color-text);border-radius:11px;justify-content:center;align-self:flex-end;align-items:center;padding:0 4px;display:inline-flex}.uid-calendar__events{flex-direction:column;gap:2px;display:flex;overflow:hidden}.uid-calendar__event{background:var(--uid-event-color,var(--uid-color-primary));color:var(--uid-color-text-on-primary);border-radius:var(--uid-radius-sm);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;text-align:left;border:none;align-items:center;gap:4px;width:100%;padding:2px 6px;font-size:11px;display:flex;overflow:hidden}.uid-calendar__event:hover{filter:brightness(.9)}.uid-calendar__more{color:var(--uid-color-text-secondary);text-align:left;cursor:pointer;background:0 0;border:none;padding:0 6px;font-size:11px}.uid-calendar__more:hover{color:var(--uid-color-text);text-decoration:underline}.uid-calendar__event-label{text-overflow:ellipsis;overflow:hidden}.uid-calendar__event-time{font-variant-numeric:tabular-nums;opacity:.85;flex:none}.uid-calendar__event--timed{color:var(--uid-color-text);background:0 0}.uid-calendar__event--timed:before{content:"";background:var(--uid-event-color,var(--uid-color-primary));border-radius:50%;flex:none;width:6px;height:6px}.uid-calendar__event--timed:hover{filter:none;background:var(--uid-color-bg-subtle)}.uid-calendar__event--from-prev{border-top-left-radius:0;border-bottom-left-radius:0;width:calc(100% + 7px);margin-left:-7px}.uid-calendar__event--to-next{border-top-right-radius:0;border-bottom-right-radius:0;width:calc(100% + 7px);margin-right:-7px}.uid-calendar__event--from-prev.uid-calendar__event--to-next{width:calc(100% + 14px)}:is(.uid-calendar__day:has(.uid-calendar__event--to-next),.uid-calendar__allday-cell:has(.uid-calendar__event--to-next)){overflow:visible}.uid-calendar__event--draggable{touch-action:none}.uid-calendar__event--dragging,.uid-calendar__block--dragging{opacity:.75;z-index:3;box-shadow:0 4px 12px #0000002e}.uid-calendar__event:focus-visible,.uid-calendar__block:focus-visible,.uid-calendar__agenda-item:focus-visible,.uid-calendar__mini-day:focus-visible,.uid-calendar__mini-title:focus-visible,.uid-calendar__tg-day:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px}.uid-calendar__tg{--uid-cal-gutter-w:52px;flex-direction:column;min-height:0;display:flex}.uid-calendar__tg-head,.uid-calendar__allday,.uid-calendar__tg-inner{grid-template-columns:var(--uid-cal-gutter-w) repeat(var(--uid-cal-days,7), minmax(0, 1fr));display:grid}.uid-calendar--day .uid-calendar__tg{--uid-cal-days:1}.uid-calendar__tg-head{background:var(--uid-color-bg-subtle);border-bottom:1px solid var(--uid-color-border)}.uid-calendar__tg-day{border:none;border-left:1px solid var(--uid-color-border);color:var(--uid-color-text);cursor:pointer;background:0 0;flex-direction:column;align-items:center;gap:2px;padding:6px 0;display:flex}.uid-calendar__tg-weekday{font-size:var(--uid-font-size-xs);color:var(--uid-color-text-tertiary);text-transform:uppercase;letter-spacing:.06em}.uid-calendar__tg-date{min-width:28px;height:28px;font-size:var(--uid-font-size-lg,16px);font-weight:var(--uid-font-weight-medium);font-variant-numeric:tabular-nums;border-radius:14px;justify-content:center;align-items:center;display:inline-flex}.uid-calendar__tg-day--today .uid-calendar__tg-date{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary)}.uid-calendar__allday{border-bottom:1px solid var(--uid-color-border);min-height:28px}.uid-calendar__gutter-label{color:var(--uid-color-text-tertiary);justify-content:flex-end;align-items:center;padding-right:6px;font-size:10px;display:flex}.uid-calendar__allday-cell{border-left:1px solid var(--uid-color-border);flex-direction:column;gap:2px;min-width:0;padding:3px 6px;display:flex}.uid-calendar__tg-body{max-height:var(--uid-cal-grid-h,560px);overflow-y:auto}.uid-calendar__tg-inner{height:calc(24 * var(--uid-cal-hour-h,48px));margin-top:8px;position:relative}.uid-calendar__hours{position:relative}.uid-calendar__hour{height:var(--uid-cal-hour-h,48px);font-variant-numeric:tabular-nums;text-align:right;color:var(--uid-color-text-tertiary);padding-right:6px;font-size:10px;display:block;transform:translateY(-6px)}.uid-calendar__col{border-left:1px solid var(--uid-color-border);background-image:linear-gradient(to bottom, var(--uid-color-border) 1px, transparent 1px);background-size:100% var(--uid-cal-hour-h,48px);position:relative}.uid-calendar--editable .uid-calendar__col{cursor:cell}.uid-calendar__col--today{background-color:color-mix(in srgb, var(--uid-color-primary) 4%, transparent)}.uid-calendar__now{z-index:2;background:var(--uid-color-danger,#dc2626);pointer-events:none;height:2px;position:absolute;left:0;right:0}.uid-calendar__now:before{content:"";background:inherit;border-radius:50%;width:8px;height:8px;position:absolute;top:-3px;left:-4px}.uid-calendar__block{z-index:1;border-radius:var(--uid-radius-sm);border-left:3px solid var(--uid-event-color,var(--uid-color-primary));background:color-mix(in srgb, var(--uid-event-color,var(--uid-color-primary)) 18%, var(--uid-color-bg));color:var(--uid-color-text);cursor:pointer;box-sizing:border-box;flex-direction:column;gap:1px;padding:2px 6px;font-size:11px;line-height:1.3;display:flex;position:absolute;overflow:hidden}.uid-calendar--editable .uid-calendar__block{touch-action:none}.uid-calendar__block-time{font-variant-numeric:tabular-nums;color:var(--uid-color-text-secondary)}.uid-calendar__block-title{font-weight:var(--uid-font-weight-medium);text-overflow:ellipsis;overflow:hidden}.uid-calendar__block--short{white-space:nowrap;flex-direction:row;align-items:center;gap:4px}.uid-calendar__resize{cursor:ns-resize;height:6px;position:absolute;bottom:0;left:0;right:0}.uid-calendar__year{gap:var(--uid-space-md);padding:var(--uid-space-md);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.uid-calendar__mini-title{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);cursor:pointer;border-radius:var(--uid-radius-sm);background:0 0;border:none;margin-bottom:4px;padding:2px 4px;display:block}.uid-calendar__mini-title:hover{background:var(--uid-color-bg-subtle)}.uid-calendar__mini-grid{grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.uid-calendar__mini-wd{text-align:center;color:var(--uid-color-text-tertiary);font-size:10px}.uid-calendar__mini-day{font-variant-numeric:tabular-nums;width:24px;height:24px;color:var(--uid-color-text);cursor:pointer;background:0 0;border:none;border-radius:12px;justify-self:center;padding:0;font-size:11px;position:relative}.uid-calendar__mini-day:hover:not(:disabled){background:var(--uid-color-bg-subtle)}.uid-calendar__mini-day--other{visibility:hidden}.uid-calendar__mini-day--busy{font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-primary)}.uid-calendar__mini-day--busy:after{content:"";background:var(--uid-color-primary);border-radius:50%;width:4px;height:4px;margin-left:-2px;position:absolute;bottom:2px;left:50%}.uid-calendar__mini-day--today{background:var(--uid-color-primary);color:var(--uid-color-text-on-primary)}.uid-calendar__mini-day--today.uid-calendar__mini-day--busy:after{background:var(--uid-color-text-on-primary)}.uid-calendar__agenda{padding:var(--uid-space-sm) 0;flex-direction:column;display:flex}.uid-calendar__empty{padding:var(--uid-space-lg) var(--uid-space-md);text-align:center;color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-sm);margin:0}.uid-calendar__agenda-day{padding:var(--uid-space-xs) var(--uid-space-md);flex-direction:column;display:flex}.uid-calendar__agenda-day+.uid-calendar__agenda-day{border-top:1px solid var(--uid-color-border)}.uid-calendar__agenda-date{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);margin:4px 0}.uid-calendar__agenda-day--today .uid-calendar__agenda-date{color:var(--uid-color-primary)}.uid-calendar__agenda-item{align-items:center;gap:var(--uid-space-sm);border-radius:var(--uid-radius-sm);color:var(--uid-color-text);font-size:var(--uid-font-size-sm);text-align:left;cursor:pointer;background:0 0;border:none;grid-template-columns:96px 10px 1fr;padding:6px 4px;display:grid}.uid-calendar__agenda-item:hover{background:var(--uid-color-bg-subtle)}.uid-calendar__agenda-time{font-variant-numeric:tabular-nums;color:var(--uid-color-text-secondary)}.uid-calendar__agenda-dot{background:var(--uid-event-color,var(--uid-color-primary));border-radius:50%;width:8px;height:8px}.uid-calendar--compact{--uid-cal-cell-min-h:40px}.uid-calendar--compact .uid-calendar__day{padding:4px}.uid-calendar--compact .uid-calendar__events{flex-flow:wrap;gap:2px;display:flex}.uid-calendar--compact .uid-calendar__event{border-radius:50%;width:6px;height:6px;padding:0;overflow:visible}.uid-calendar--compact .uid-calendar__event-label,.uid-calendar--compact .uid-calendar__more{display:none}.uid-kanban{gap:var(--uid-space-sm);flex-direction:column;min-width:0;display:flex}.uid-kanban__bar{align-items:center;gap:var(--uid-space-sm);flex-wrap:wrap;display:flex}.uid-kanban__title{font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text-primary);margin-right:var(--uid-space-sm)}.uid-kanban__filters{align-items:center;gap:var(--uid-space-sm);flex-wrap:wrap;flex:1;min-width:0;display:flex}.uid-kanban__tags{flex-wrap:wrap;gap:4px;display:flex}.uid-kanban__filter,.uid-kanban__tab{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-full);background:var(--uid-color-surface-raised);color:var(--uid-color-text-secondary);font:inherit;font-size:var(--uid-font-size-sm);cursor:pointer;padding:2px 10px}.uid-kanban__filter--on,.uid-kanban__tab--on{border-color:var(--uid-color-primary);background:var(--uid-color-primary-subtle);color:var(--uid-color-primary)}.uid-kanban__people{min-width:180px}.uid-kanban__actions{align-items:center;gap:var(--uid-space-sm);margin-left:auto;display:flex}.uid-kanban__tabs{gap:4px;display:flex}.uid-kanban__lock,.uid-kanban__add{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-surface-raised);width:28px;height:28px;color:var(--uid-color-text-secondary);cursor:pointer;justify-content:center;align-items:center;padding:0;display:inline-flex}.uid-kanban__lock--on{color:var(--uid-color-warning);border-color:currentColor}.uid-kanban__add{background:0 0;border-color:#0000;width:22px;height:22px;margin-left:auto}.uid-kanban__add:hover{color:var(--uid-color-text-primary);background:var(--uid-color-bg-subtle)}.uid-kanban__filter:focus-visible,.uid-kanban__tab:focus-visible,.uid-kanban__lock:focus-visible,.uid-kanban__add:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px}.uid-kanban__column-head{align-items:center;gap:6px;width:100%;min-width:0;display:flex}.uid-kanban__column-title{font-weight:var(--uid-font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uid-kanban__count{border-radius:var(--uid-radius-full);background:var(--uid-color-bg-subtle);color:var(--uid-color-text-secondary);font-size:var(--uid-font-size-xs);font-variant-numeric:tabular-nums;padding:0 6px}.uid-kanban__column-head--over .uid-kanban__count{background:var(--uid-color-danger-subtle);color:var(--uid-color-danger)}.uid-kanban__card{flex-direction:column;gap:6px;display:flex;position:relative}.uid-kanban__card-title{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-primary);overflow-wrap:anywhere;padding-right:12px;line-height:1.4}.uid-kanban__card-title a{color:var(--uid-color-primary)}.uid-kanban__card-title code{font-size:.92em}.uid-kanban__card--done .uid-kanban__card-title{color:var(--uid-color-text-secondary);text-decoration:line-through}.uid-kanban__card-meta{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.uid-kanban__card-foot{font-size:var(--uid-font-size-xs);color:var(--uid-color-text-secondary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.uid-kanban__priority{font-size:11px;font-weight:var(--uid-font-weight-semibold);border-radius:4px;padding:0 6px}.uid-kanban__priority--high{background:var(--uid-color-danger-subtle);color:var(--uid-color-danger)}.uid-kanban__priority--low{background:var(--uid-color-bg-subtle);color:var(--uid-color-text-secondary)}.uid-kanban__due{font-variant-numeric:tabular-nums}.uid-kanban__due--overdue{color:var(--uid-color-danger);font-weight:var(--uid-font-weight-semibold)}.uid-kanban__who{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.uid-kanban__avatar{background:var(--uid-kanban-avatar,var(--uid-color-zinc-500));width:20px;height:20px;color:var(--uid-color-white);font-size:10px;font-weight:var(--uid-font-weight-semibold);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.uid-kanban__has-desc{color:var(--uid-color-text-tertiary);font-size:var(--uid-font-size-xs);position:absolute;top:0;right:0}.uid-kanban__source{flex-direction:column;gap:6px;display:flex}.uid-kanban__code{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-surface-raised);width:100%;min-height:320px;color:var(--uid-color-text-primary);font:13px/1.5 var(--uid-font-family-mono);resize:vertical;tab-size:2;padding:10px 12px}.uid-kanban__problems{color:var(--uid-color-danger);margin:0;padding-left:18px;font-size:13px}.uid-kanban__form{flex-direction:column;gap:12px;display:flex}.uid-kanban__field{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.uid-kanban__label{font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text-secondary)}.uid-kanban__row{gap:12px;display:flex}.uid-kanban__buttons{gap:8px;display:flex}.uid-kanban__delete{margin-left:auto}.uid-kanban__details{flex-direction:column;gap:12px;display:flex}.uid-kanban__props{grid-template-columns:max-content 1fr;gap:4px 12px;margin:0;font-size:13px;display:grid}.uid-kanban__props dt{color:var(--uid-color-text-secondary)}.uid-kanban__props dd{margin:0}.uid-event-calendar{gap:var(--uid-space-sm);flex-direction:column;min-width:0;display:flex}.uid-event-calendar__bar{align-items:center;gap:var(--uid-space-sm);flex-wrap:wrap;display:flex}.uid-event-calendar__title{font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text-primary)}.uid-event-calendar__actions{align-items:center;gap:var(--uid-space-sm);margin-left:auto;display:flex}.uid-event-calendar__tabs{gap:4px;display:flex}.uid-event-calendar__btn,.uid-event-calendar__tab{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-full);background:var(--uid-color-surface-raised);color:var(--uid-color-text-secondary);font:inherit;font-size:var(--uid-font-size-sm);cursor:pointer;padding:2px 10px}.uid-event-calendar__btn{border-color:var(--uid-color-primary);color:var(--uid-color-primary)}.uid-event-calendar__tab--on{border-color:var(--uid-color-primary);background:var(--uid-color-primary-subtle);color:var(--uid-color-primary)}.uid-event-calendar__lock{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-surface-raised);width:28px;height:28px;color:var(--uid-color-text-secondary);cursor:pointer;justify-content:center;align-items:center;padding:0;display:inline-flex}.uid-event-calendar__lock--on{color:var(--uid-color-warning);border-color:currentColor}.uid-event-calendar__btn:focus-visible,.uid-event-calendar__tab:focus-visible,.uid-event-calendar__lock:focus-visible,.uid-event-calendar__day:focus-visible,.uid-event-calendar__chip:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px}.uid-event-calendar__source{flex-direction:column;gap:6px;display:flex}.uid-event-calendar__code{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);background:var(--uid-color-surface-raised);width:100%;min-height:320px;color:var(--uid-color-text-primary);font:13px/1.5 var(--uid-font-family-mono);resize:vertical;padding:10px 12px}.uid-event-calendar__problems{color:var(--uid-color-danger);margin:0;padding-left:18px;font-size:13px}.uid-event-calendar__form{flex-direction:column;gap:12px;display:flex}.uid-event-calendar__field{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.uid-event-calendar__label{font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text-secondary)}.uid-event-calendar__row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.uid-event-calendar__row>*{flex:1;min-width:120px}.uid-event-calendar__repeat{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-md);flex-direction:column;gap:10px;margin:0;padding:10px 12px 12px;display:flex}.uid-event-calendar__interval{color:var(--uid-color-text-secondary);align-items:center;gap:8px;font-size:13px;display:flex}.uid-event-calendar__interval>:nth-child(2){flex:none;width:90px}.uid-event-calendar__days{flex-wrap:wrap;gap:4px;display:flex}.uid-event-calendar__day{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-full);background:var(--uid-color-surface-raised);min-width:40px;color:var(--uid-color-text-secondary);font:inherit;cursor:pointer;padding:4px 8px;font-size:13px}.uid-event-calendar__day--on{border-color:var(--uid-color-primary);background:var(--uid-color-primary);color:var(--uid-color-text-on-primary)}.uid-event-calendar__skipped{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.uid-event-calendar__chip{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-full);background:var(--uid-color-bg-subtle);color:var(--uid-color-text-secondary);font:inherit;font-size:var(--uid-font-size-xs);cursor:pointer;padding:1px 8px}.uid-event-calendar__line{flex-direction:column;gap:4px;display:flex}.uid-event-calendar__line code{border-radius:var(--uid-radius-sm);background:var(--uid-color-bg-subtle);font:12px/1.45 var(--uid-font-family-mono);overflow-wrap:anywhere;padding:6px 8px}.uid-event-calendar__buttons{flex-wrap:wrap;gap:8px;display:flex}.uid-event-calendar__delete{margin-left:auto}.uid-event-calendar__details{flex-direction:column;gap:12px;display:flex}.uid-event-calendar__tags{flex-wrap:wrap;gap:4px;display:flex}.uid-event-calendar__props{grid-template-columns:max-content 1fr;gap:4px 12px;margin:0;font-size:13px;display:grid}.uid-event-calendar__props dt{color:var(--uid-color-text-secondary)}.uid-event-calendar__props dd{margin:0}.uid-sparkline{--uid-sparkline-color:var(--uid-color-primary);--uid-sparkline-area-opacity:.15;vertical-align:middle;line-height:0;display:inline-block}.uid-sparkline__svg{display:block;overflow:visible}.uid-sparkline__line{fill:none;stroke:var(--uid-sparkline-color);stroke-width:var(--uid-sparkline-stroke,1.5);stroke-linejoin:round;stroke-linecap:round}.uid-sparkline__area{fill:var(--uid-sparkline-color);fill-opacity:var(--uid-sparkline-area-opacity);stroke:none}.uid-sparkline__bar{fill:var(--uid-sparkline-color);rx:1}.uid-sparkline__bar--negative{fill:var(--uid-color-danger)}.uid-sparkline__dot{fill:var(--uid-color-bg);stroke:var(--uid-sparkline-color);stroke-width:2px}.uid-sparkline__dot--last{fill:var(--uid-sparkline-color)}.uid-sparkline__zero{stroke:var(--uid-color-border);stroke-width:1px;stroke-dasharray:2 2}.uid-progress-ring{--uid-ring-color:var(--uid-color-primary);--uid-ring-track:var(--uid-color-bg-subtle);justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}.uid-progress-ring__svg{display:block;transform:rotate(-90deg)}.uid-progress-ring__track{fill:none;stroke:var(--uid-ring-track)}.uid-progress-ring__progress{fill:none;stroke:var(--uid-ring-color);stroke-linecap:round;transition:stroke-dashoffset var(--uid-duration-base) var(--uid-ease-in-out)}.uid-progress-ring__indeterminate .uid-progress-ring__progress{animation:1s linear infinite uid-ring-spin}@keyframes uid-ring-spin{to{stroke-dashoffset:-1000px}}.uid-progress-ring__label{font-size:var(--uid-ring-label-size,14px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);font-variant-numeric:tabular-nums;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.uid-progress-ring--success{--uid-ring-color:var(--uid-color-success)}.uid-progress-ring--warning{--uid-ring-color:var(--uid-color-warning)}.uid-progress-ring--danger{--uid-ring-color:var(--uid-color-danger)}.uid-progress-ring--info{--uid-ring-color:var(--uid-color-info)}.uid-gauge{--uid-gauge-color:var(--uid-color-primary);--uid-gauge-track:var(--uid-color-bg-subtle);flex-direction:column;align-items:center;line-height:1;display:inline-flex;position:relative}.uid-gauge__svg{display:block;overflow:visible}.uid-gauge__track{fill:none;stroke:var(--uid-gauge-track);stroke-linecap:round}.uid-gauge__progress{fill:none;stroke:var(--uid-gauge-color);stroke-linecap:round;transition:stroke-dashoffset var(--uid-duration-base) var(--uid-ease-in-out)}.uid-gauge__range{fill:none;stroke-linecap:butt}.uid-gauge--ranged .uid-gauge__track{stroke-linecap:butt}.uid-gauge__needle{stroke:var(--uid-color-text);stroke-width:2px;stroke-linecap:round;transition:transform var(--uid-duration-base) var(--uid-ease-in-out)}.uid-gauge__needle-pivot{fill:var(--uid-color-text)}.uid-gauge__content{text-align:center;pointer-events:none;position:absolute;bottom:8%;left:0;right:0}.uid-gauge__value{font-size:var(--uid-gauge-value-size,22px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-color-text);font-variant-numeric:tabular-nums;align-items:baseline;gap:2px;display:inline-flex}.uid-gauge__suffix{font-size:.6em;font-weight:var(--uid-font-weight-medium);color:var(--uid-color-text-tertiary)}.uid-gauge__label{font-size:var(--uid-font-size-sm);color:var(--uid-color-text-tertiary);margin-top:2px}.uid-gauge__limits{width:100%;font-size:var(--uid-font-size-xs);color:var(--uid-color-text-tertiary);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:2px;display:flex}.uid-gauge--success{--uid-gauge-color:var(--uid-color-success)}.uid-gauge--warning{--uid-gauge-color:var(--uid-color-warning)}.uid-gauge--danger{--uid-gauge-color:var(--uid-color-danger)}.uid-gauge--info{--uid-gauge-color:var(--uid-color-info)}.uid-heatmap{--uid-heatmap-color:var(--uid-color-primary);--uid-heatmap-empty:var(--uid-color-bg-subtle);--uid-heatmap-cell:12px;--uid-heatmap-gap:3px;gap:var(--uid-space-xs);font-size:var(--uid-font-size-xs);color:var(--uid-color-text-tertiary);flex-direction:column;display:flex}.uid-heatmap__chart{gap:var(--uid-space-xs);align-items:flex-start;display:flex}.uid-heatmap__weekdays{grid-template-rows:repeat(7, var(--uid-heatmap-cell));gap:var(--uid-heatmap-gap);flex-shrink:0;margin-top:16px;font-size:10px;display:grid}.uid-heatmap__weekday{height:var(--uid-heatmap-cell);visibility:hidden;align-items:center;display:flex}.uid-heatmap__weekday--visible{visibility:visible}.uid-heatmap__grid-wrapper{flex-direction:column;gap:2px;display:flex}.uid-heatmap__months{height:14px;font-size:10px;display:flex;position:relative}.uid-heatmap__month{white-space:nowrap;position:absolute}.uid-heatmap__svg{display:block}.uid-heatmap__cell{fill:var(--uid-heatmap-empty);rx:2;ry:2;cursor:default;transition:fill var(--uid-duration-fast) var(--uid-ease-out)}.uid-heatmap__cell:hover{stroke:var(--uid-color-text);stroke-width:1px}.uid-heatmap__legend{align-items:center;gap:4px;margin-left:auto;font-size:10px;display:flex}.uid-heatmap__legend-cell{width:var(--uid-heatmap-cell);height:var(--uid-heatmap-cell);background:var(--uid-heatmap-empty);border-radius:2px}.uid-heatmap-matrix{--uid-heatmap-matrix-color:var(--uid-color-primary);--uid-heatmap-matrix-empty-border:var(--uid-color-border);--uid-heatmap-matrix-cols:1;--uid-heatmap-matrix-cell-height:20px;--uid-heatmap-matrix-min-cell:10px;--uid-heatmap-matrix-gap:2px;--uid-heatmap-matrix-header-height:19px;--uid-heatmap-matrix-radius:2px;gap:var(--uid-space-sm);min-width:0;color:var(--uid-color-text-secondary);flex-direction:column;font-size:11px;display:flex;position:relative}.uid-heatmap-matrix__scroll{min-width:0;padding:2px;overflow-x:auto}.uid-heatmap-matrix__grid{grid-template-columns:max-content repeat(var(--uid-heatmap-matrix-cols), minmax(var(--uid-heatmap-matrix-min-cell), 1fr));gap:var(--uid-heatmap-matrix-gap);align-items:center;display:grid}.uid-heatmap-matrix__row{display:contents}.uid-heatmap-matrix__corner,.uid-heatmap-matrix__col-header{height:var(--uid-heatmap-matrix-header-height);position:relative}.uid-heatmap-matrix__col-label{white-space:nowrap;text-overflow:ellipsis;max-width:96px;color:var(--uid-color-text-secondary);line-height:14px;position:absolute;bottom:2px;left:50%;overflow:hidden;transform:translate(-50%)}.uid-heatmap-matrix--labels-rotated .uid-heatmap-matrix__col-label{transform-origin:0 100%;bottom:2px;transform:rotate(-45deg)}.uid-heatmap-matrix__col-label--hidden{visibility:hidden}.uid-heatmap-matrix__row-header{white-space:nowrap;text-align:end;text-overflow:ellipsis;max-width:12em;padding-inline-end:var(--uid-space-xs);line-height:14px;overflow:hidden}.uid-heatmap-matrix__cell{height:var(--uid-heatmap-matrix-cell-height);border-radius:var(--uid-heatmap-matrix-radius);cursor:default;transition:box-shadow var(--uid-duration-fast) var(--uid-ease-out);outline:none}.uid-heatmap-matrix__cell--empty{box-shadow:inset 0 0 0 1px var(--uid-heatmap-matrix-empty-border);background:0 0}.uid-heatmap-matrix__cell--active{box-shadow:0 0 0 1.5px var(--uid-color-text)}.uid-heatmap-matrix__cell:focus-visible{box-shadow:0 0 0 2px var(--uid-color-focus-ring)}.uid-heatmap-matrix__tooltip{z-index:var(--uid-z-tooltip);max-width:var(--uid-tooltip-max-width,240px);padding:var(--uid-space-xs) var(--uid-space-sm);background:var(--uid-tooltip-bg,var(--uid-color-zinc-900));color:var(--uid-tooltip-color,var(--uid-color-zinc-50));font-size:var(--uid-font-size-xs);white-space:nowrap;border-radius:var(--uid-tooltip-radius,var(--uid-radius-sm));box-shadow:var(--uid-shadow-md);pointer-events:none;flex-direction:column;gap:2px;line-height:1.35;display:flex;position:absolute;transform:translate(-50%,calc(-100% - 6px))}.uid-heatmap-matrix__tooltip-label{opacity:.8}.uid-heatmap-matrix__tooltip-value{font-weight:var(--uid-font-weight-semibold,600);font-variant-numeric:tabular-nums}.uid-heatmap-matrix__legend{justify-content:flex-end;align-items:center;gap:var(--uid-space-xs) var(--uid-space-sm);color:var(--uid-color-text-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.uid-heatmap-matrix__legend-bar{border-radius:4px;width:120px;max-width:40%;height:8px}.uid-heatmap-matrix__legend-empty{align-items:center;gap:var(--uid-space-xs);margin-inline-start:var(--uid-space-xs);display:inline-flex}.uid-heatmap-matrix__legend-swatch{border-radius:var(--uid-heatmap-matrix-radius);width:10px;height:10px;box-shadow:inset 0 0 0 1px var(--uid-heatmap-matrix-empty-border)}.uid-stepper{align-items:flex-start;margin:0;padding:0;list-style:none;display:flex}.uid-stepper__step{flex-direction:column;flex:1;align-items:center;display:flex;position:relative}.uid-stepper:not(.uid-stepper--vertical) .uid-stepper__step:not(:last-child):after{content:"";top:calc(var(--uid-stepper-indicator-size,32px) / 2);left:calc(50% + var(--uid-stepper-indicator-size,32px) / 2);width:calc(100% - var(--uid-stepper-indicator-size,32px));background:var(--uid-stepper-connector,var(--uid-color-border));height:2px;transition:background var(--uid-duration-base);position:absolute}.uid-stepper:not(.uid-stepper--vertical) .uid-stepper__step--completed:not(:last-child):after{background:var(--uid-stepper-connector-completed,var(--uid-color-primary))}.uid-stepper__indicator{width:var(--uid-stepper-indicator-size,32px);height:var(--uid-stepper-indicator-size,32px);z-index:1;background:var(--uid-stepper-indicator-bg,var(--uid-color-bg-subtle));border:2px solid var(--uid-stepper-indicator-border,var(--uid-color-border));color:var(--uid-stepper-indicator-color,var(--uid-color-text-secondary));transition:background var(--uid-duration-base), border-color var(--uid-duration-base), color var(--uid-duration-base);border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex}.uid-stepper__step--current .uid-stepper__indicator{background:var(--uid-stepper-indicator-bg-current,var(--uid-color-primary));border-color:var(--uid-stepper-indicator-border-current,var(--uid-color-primary));color:var(--uid-stepper-indicator-color-current,var(--uid-color-text-on-primary))}.uid-stepper__step--completed .uid-stepper__indicator{background:var(--uid-stepper-indicator-bg-completed,var(--uid-color-primary));border-color:var(--uid-stepper-indicator-border-completed,var(--uid-color-primary));color:var(--uid-stepper-indicator-color-completed,var(--uid-color-text-on-primary))}.uid-stepper__content{margin-top:var(--uid-space-sm);text-align:center;flex-direction:column;gap:2px;display:flex}.uid-stepper__label{font-size:var(--uid-font-size-sm,14px);color:var(--uid-stepper-label-color,var(--uid-color-text));transition:color var(--uid-duration-base);font-weight:500}.uid-stepper__step--pending .uid-stepper__label{color:var(--uid-stepper-label-color-pending,var(--uid-color-text-secondary))}.uid-stepper__description{font-size:var(--uid-font-size-xs,12px);color:var(--uid-stepper-desc-color,var(--uid-color-text-tertiary))}.uid-stepper--vertical{flex-direction:column}.uid-stepper--vertical .uid-stepper__step{padding-bottom:var(--uid-space-lg);flex-direction:row;flex:none;align-items:flex-start;gap:12px}.uid-stepper--vertical .uid-stepper__step:last-child{padding-bottom:0}.uid-stepper--vertical .uid-stepper__step:not(:last-child):after{content:"";top:var(--uid-stepper-indicator-size,32px);left:calc(var(--uid-stepper-indicator-size,32px) / 2 - 1px);width:2px;height:calc(100% - var(--uid-stepper-indicator-size,32px));background:var(--uid-stepper-connector,var(--uid-color-border));transition:background var(--uid-duration-base);position:absolute}.uid-stepper--vertical .uid-stepper__step--completed:not(:last-child):after{background:var(--uid-stepper-connector-completed,var(--uid-color-primary))}.uid-stepper--vertical .uid-stepper__content{text-align:left;margin-top:4px}.uid-stepper__target{display:contents}.uid-stepper__target--selectable{flex-direction:inherit;align-items:inherit;gap:inherit;font:inherit;color:inherit;text-align:inherit;cursor:pointer;border-radius:var(--uid-radius-md);background:0 0;border:0;padding:0;display:flex}.uid-stepper__target--selectable:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-stack{display:flex}.uid-stack--inline{display:inline-flex}.uid-grid{display:grid}.uid-container{width:100%;margin-inline:auto}.uid-container--sm{max-width:var(--uid-container-sm,640px)}.uid-container--md{max-width:var(--uid-container-md,768px)}.uid-container--lg{max-width:var(--uid-container-lg,1024px)}.uid-container--xl{max-width:var(--uid-container-xl,1280px)}.uid-container--2xl{max-width:var(--uid-container-2xl,1536px)}.uid-container--full{max-width:100%}.uid-container--padded{padding-inline:var(--uid-container-padding-x,var(--uid-space-md))}.uid-wizard{gap:var(--uid-wizard-gap,var(--uid-space-lg));flex-direction:column;display:flex}.uid-wizard-step{flex:1}.uid-pattern-header{--uid-header-height:64px;--uid-header-bg:var(--uid-color-surface);--uid-header-border:var(--uid-color-border);--uid-header-z:var(--uid-z-sticky);background:var(--uid-header-bg);height:var(--uid-header-height);z-index:var(--uid-header-z)}.uid-pattern-header--sticky{position:sticky;top:0}.uid-pattern-header--bordered{border-bottom:1px solid var(--uid-header-border)}.uid-pattern-header--transparent{background:0 0}.uid-pattern-header__inner{height:100%;padding:0 var(--uid-space-lg);align-items:center;gap:var(--uid-space-lg);max-width:var(--uid-container-xl,1280px);margin-inline:auto;display:flex}.uid-pattern-header__logo{flex-shrink:0;align-items:center;display:flex}.uid-pattern-header__nav{align-items:center;gap:var(--uid-space-xs);flex:1;display:flex}.uid-pattern-header__actions{align-items:center;gap:var(--uid-space-sm);flex-shrink:0;display:flex}.uid-pattern-header__mobile{display:none}@media (max-width:768px){.uid-pattern-header__nav{display:none}.uid-pattern-header__mobile{align-items:center;margin-left:auto;display:flex}}.uid-pattern-footer{background:var(--uid-footer-bg,var(--uid-color-surface));border-top:1px solid var(--uid-color-border);color:var(--uid-color-text-secondary);font-size:var(--uid-font-size-sm)}.uid-pattern-footer__inner{max-width:var(--uid-container-xl,1280px);padding:var(--uid-space-lg);margin-inline:auto}.uid-pattern-footer--minimal .uid-pattern-footer__content{justify-content:center;align-items:center;gap:var(--uid-space-md);flex-wrap:wrap;display:flex}.uid-pattern-footer--columns .uid-pattern-footer__columns{gap:var(--uid-space-xl);padding-bottom:var(--uid-space-lg);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.uid-pattern-footer__bottom{padding-top:var(--uid-space-md);border-top:1px solid var(--uid-color-border);color:var(--uid-color-text-disabled);font-size:var(--uid-font-size-xs,12px);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.uid-pattern-sidebar{--uid-sidebar-width:240px;--uid-sidebar-collapsed-width:56px;width:var(--uid-sidebar-width);background:var(--uid-sidebar-bg,var(--uid-color-bg-subtle));border-color:var(--uid-color-border);transition:width var(--uid-duration-base) var(--uid-ease-in-out);border-style:solid;border-width:0;flex-direction:column;display:flex;overflow:hidden}.uid-pattern-sidebar--left{border-right-width:1px}.uid-pattern-sidebar--right{border-left-width:1px}.uid-pattern-sidebar--collapsed{width:var(--uid-sidebar-collapsed-width)}.uid-pattern-sidebar--collapsed .uid-sidebar-item__label,.uid-pattern-sidebar--collapsed .uid-sidebar-item__badge,.uid-pattern-sidebar--collapsed .uid-sidebar-group__title{display:none}.uid-pattern-sidebar__header{padding:var(--uid-space-md);border-bottom:1px solid var(--uid-color-border);flex-shrink:0}.uid-pattern-sidebar__nav{padding:var(--uid-space-sm) 0;flex:1;overflow-y:auto}.uid-pattern-sidebar__footer{padding:12px var(--uid-space-sm);border-top:1px solid var(--uid-color-border);flex-shrink:0}.uid-sidebar-item{padding:var(--uid-space-sm) 12px;margin:1px var(--uid-space-sm);border-radius:var(--uid-radius-sm);color:var(--uid-sidebar-item-color,var(--uid-color-text-secondary));font-size:var(--uid-font-size-sm);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);align-items:center;gap:12px;font-weight:500;text-decoration:none;display:flex}.uid-sidebar-item:hover:not(.uid-sidebar-item--disabled){background:var(--uid-color-surface-hover);color:var(--uid-color-text-primary)}.uid-sidebar-item--active{background:var(--uid-sidebar-item-bg-active,var(--uid-color-primary-subtle,color-mix(in srgb, var(--uid-color-primary) 10%, transparent)));color:var(--uid-sidebar-item-color-active,var(--uid-color-primary))}.uid-sidebar-item--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.uid-sidebar-item:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:-2px}.uid-sidebar-item__icon{flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.uid-sidebar-item__label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.uid-sidebar-item__badge{min-width:18px;height:18px;padding:0 var(--uid-space-xs);background:var(--uid-color-primary);color:var(--uid-color-text-on-primary);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex}.uid-sidebar-group{padding:var(--uid-space-xs) 0}.uid-sidebar-group__title{padding:var(--uid-space-sm) 20px;text-transform:uppercase;letter-spacing:.06em;color:var(--uid-color-text-disabled);margin:0;font-size:11px;font-weight:600}.uid-sidebar-divider{height:1px;margin:var(--uid-space-sm) 12px;background:var(--uid-color-border)}.uid-pattern-page-header{padding:var(--uid-space-lg) 0 0}.uid-pattern-page-header__breadcrumb{margin-bottom:12px}.uid-pattern-page-header__row{justify-content:space-between;align-items:flex-start;gap:var(--uid-space-md);flex-wrap:wrap;display:flex}.uid-pattern-page-header__heading{align-items:flex-start;gap:12px;display:flex}.uid-pattern-page-header__back{border:1px solid var(--uid-color-border);border-radius:var(--uid-radius-sm);width:36px;height:36px;color:var(--uid-color-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out), color var(--uid-duration-fast) var(--uid-ease-out);background:0 0;flex-shrink:0;justify-content:center;align-items:center;margin-top:2px;display:flex}.uid-pattern-page-header__back:hover{background:var(--uid-color-surface-hover);color:var(--uid-color-text-primary)}.uid-pattern-page-header__back:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:2px}.uid-pattern-page-header__title{font-size:var(--uid-font-size-2xl,24px);color:var(--uid-color-text-primary);margin:0;font-weight:700;line-height:1.2}.uid-pattern-page-header__description{margin:var(--uid-space-xs) 0 0;font-size:var(--uid-font-size-base);color:var(--uid-color-text-secondary);line-height:1.5}.uid-pattern-page-header__actions{align-items:center;gap:var(--uid-space-sm);flex-shrink:0;display:flex}.uid-pattern-page-header__tabs{margin-top:var(--uid-space-md)}.uid-pattern-empty-state{justify-content:center;align-items:center;gap:var(--uid-space-md);padding:var(--uid-space-2xl) var(--uid-space-lg);text-align:center;flex-direction:column;display:flex}.uid-pattern-empty-state__illustration{color:var(--uid-color-text-disabled);justify-content:center;align-items:center;display:flex}.uid-pattern-empty-state__content{gap:var(--uid-space-sm);flex-direction:column;max-width:360px;display:flex}.uid-pattern-empty-state__title{font-size:var(--uid-font-size-lg);color:var(--uid-color-text-primary);margin:0;font-weight:600}.uid-pattern-empty-state__description{font-size:var(--uid-font-size-base);color:var(--uid-color-text-secondary);margin:0;line-height:1.5}.uid-pattern-empty-state__actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.uid-pattern-error-state{justify-content:center;align-items:center;gap:var(--uid-space-md);padding:var(--uid-space-2xl) var(--uid-space-lg);text-align:center;flex-direction:column;display:flex}.uid-pattern-error-state__illustration{color:var(--uid-color-danger);opacity:.8;justify-content:center;align-items:center;display:flex}.uid-pattern-error-state__code{color:var(--uid-color-text-disabled);letter-spacing:-2px;font-variant-numeric:tabular-nums;font-size:64px;font-weight:800;line-height:1}.uid-pattern-error-state__content{gap:var(--uid-space-sm);flex-direction:column;max-width:400px;display:flex}.uid-pattern-error-state__title{font-size:var(--uid-font-size-xl,20px);color:var(--uid-color-text-primary);margin:0;font-weight:700}.uid-pattern-error-state__description{font-size:var(--uid-font-size-base);color:var(--uid-color-text-secondary);margin:0;line-height:1.5}.uid-pattern-error-state__actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.uid-layout-simple{min-height:var(--uid-layout-simple-min-height,100vh);flex-direction:column;display:flex}.uid-layout-simple--full{height:100vh;overflow:hidden}.uid-layout-simple__header{flex-shrink:0}.uid-layout-simple__content{flex:1;width:100%}.uid-layout-simple--full .uid-layout-simple__content{overflow-y:auto}.uid-layout-simple__footer{flex-shrink:0}.uid-layout-sidebar{min-height:var(--uid-layout-sidebar-min-height,100vh);display:flex;position:relative}.uid-layout-sidebar__sidebar{width:var(--uid-layout-sidebar-width,240px);transition:width var(--uid-duration-base) var(--uid-ease-in-out);flex-shrink:0;overflow:hidden}.uid-layout-sidebar--collapsed .uid-layout-sidebar__sidebar{width:var(--uid-layout-sidebar-collapsed-width,56px)}.uid-layout-sidebar__main{flex-direction:column;flex:1;min-width:0;display:flex}.uid-layout-sidebar__main-header{flex-shrink:0}.uid-layout-sidebar__main-content{flex:1;min-width:0}.uid-layout-sidebar__main-footer{flex-shrink:0}.uid-layout-sidebar__backdrop{display:none}@media (max-width:768px){.uid-layout-sidebar__sidebar{z-index:var(--uid-z-drawer,400);transition:transform var(--uid-duration-base) var(--uid-ease-in-out);background:var(--uid-color-bg);position:fixed;inset:0 auto 0 0;transform:translate(-100%);width:var(--uid-layout-sidebar-width,240px)!important}.uid-layout-sidebar:not(.uid-layout-sidebar--collapsed) .uid-layout-sidebar__sidebar{box-shadow:var(--uid-shadow-lg);transform:translate(0)}.uid-layout-sidebar__backdrop{background:var(--uid-color-overlay,#00000080);z-index:calc(var(--uid-z-drawer,400) - 1);cursor:pointer;display:none;position:fixed;inset:0}.uid-layout-sidebar:not(.uid-layout-sidebar--collapsed) .uid-layout-sidebar__backdrop{display:block}}.uid-layout-auth{min-height:var(--uid-layout-auth-min-height,100vh);display:flex}.uid-layout-auth--centered{padding:var(--uid-space-lg);background:var(--uid-layout-auth-bg,var(--uid-color-bg-subtle));justify-content:center;align-items:center}.uid-layout-auth--centered .uid-layout-auth__main{align-items:center;gap:var(--uid-space-md);flex-direction:column;width:100%;display:flex}.uid-layout-auth__card{width:100%;max-width:var(--uid-layout-auth-card-width,400px)}.uid-layout-auth__footer{font-size:var(--uid-font-size-sm,14px);color:var(--uid-color-text-secondary);text-align:center}.uid-layout-auth--split{align-items:stretch}.uid-layout-auth__brand{padding:var(--uid-space-2xl);background:var(--uid-layout-auth-brand-bg,var(--uid-color-primary));color:var(--uid-layout-auth-brand-color,var(--uid-color-text-on-primary));flex:1;justify-content:center;align-items:center;display:flex}.uid-layout-auth--split .uid-layout-auth__main{padding:var(--uid-space-2xl);justify-content:center;align-items:center;gap:var(--uid-space-md);background:var(--uid-color-bg);flex-direction:column;flex:1;display:flex}@media (max-width:768px){.uid-layout-auth--split{flex-direction:column}.uid-layout-auth__brand{padding:var(--uid-space-xl) var(--uid-space-lg);flex:none}.uid-layout-auth--split .uid-layout-auth__main{padding:var(--uid-space-xl) var(--uid-space-lg);flex:1}}.uid-layout-wizard{min-height:var(--uid-layout-wizard-min-height,0);background:var(--uid-color-bg);flex-direction:column;width:100%;display:flex}.uid-layout-wizard__header{padding:var(--uid-space-lg) var(--uid-space-xl) var(--uid-space-md);border-bottom:1px solid var(--uid-color-border);flex-shrink:0}.uid-layout-wizard__stepper{padding:var(--uid-space-lg) var(--uid-space-xl);border-bottom:1px solid var(--uid-color-border);flex-shrink:0}.uid-layout-wizard__content{padding:var(--uid-layout-wizard-content-padding,var(--uid-space-xl));flex:1;min-width:0}.uid-layout-wizard__nav{padding:var(--uid-space-md) var(--uid-space-xl);border-top:1px solid var(--uid-color-border);background:var(--uid-color-bg);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}@media (max-width:640px){.uid-layout-wizard__header,.uid-layout-wizard__stepper,.uid-layout-wizard__content,.uid-layout-wizard__nav{padding-left:var(--uid-space-md);padding-right:var(--uid-space-md)}}`,openapi:`:where(main,section,header,footer,nav,article,aside):is([class^=oa-],[class*=\\ oa-]){float:none;width:auto;max-width:none;box-shadow:none;background:0 0;border:0;margin:0;padding:0}.oa-reference,.oa-editor{color:var(--uid-text-primary);font-size:14px;line-height:1.5}.oa-reference{--oa-header-h:56px;flex-direction:column;min-height:100%;display:flex;position:relative;container:oa-reference/inline-size}.oa-reference>.uid-alert{margin:16px 0}.oa-switcher{max-width:var(--oa-nav-width,272px);margin-top:12px}.oa-loading{justify-content:center;padding:48px 0;display:flex}.oa-header{top:var(--oa-sticky-top,0px);z-index:30;height:var(--oa-header-h);border-bottom:1px solid var(--uid-border-subtle);background:color-mix(in srgb, var(--uid-surface-base,var(--uid-color-bg)) 88%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);backdrop-filter:saturate(1.4)blur(10px);align-items:center;gap:12px;padding:0 4px;display:flex;position:sticky}.oa-header__title{flex:0 auto;align-items:baseline;gap:8px;min-width:0;display:flex}.oa-header__title .oa-chip-static{flex:none}.oa-header__name{white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:2.5em;font-size:15px;font-weight:650;overflow:hidden}.oa-header__summary{min-width:0;max-width:34ch;color:var(--uid-text-tertiary);white-space:nowrap;text-overflow:ellipsis;flex:0 1000 auto;font-size:13px;overflow:hidden}.oa-header__find{display:contents}.oa-header__specs{flex:0 1000 200px;min-width:120px}.oa-header__search{flex:1 10000 160px;min-width:96px;max-width:520px;margin-left:auto}.oa-header__actions{flex:none;align-items:center;gap:6px;display:flex}.oa-header__icon{width:34px;height:34px;color:var(--uid-text-secondary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;flex:none;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.oa-header__icon:hover{background:var(--uid-color-bg-subtle);color:var(--uid-text-primary)}.oa-header__icon:focus-visible,.oa-header__settings:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:1px}.oa-header__menu{display:none}.oa-header__settings{border:1px solid var(--uid-border-default);background:var(--uid-surface-raised);max-width:280px;height:34px;color:var(--uid-text-secondary);font:inherit;cursor:pointer;border-radius:17px;flex:none;align-items:center;gap:8px;padding:0 12px;font-size:13px;transition:border-color .15s,color .15s,box-shadow .15s;display:inline-flex}.oa-header__settings:hover{border-color:var(--uid-border-hover);color:var(--uid-text-primary);box-shadow:var(--uid-shadow-sm)}.oa-header__host{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;overflow:hidden}.oa-header__key{color:var(--uid-text-tertiary);flex:none}.oa-header__key.is-on{color:var(--uid-success)}.oa-header__downloads{border:1px solid var(--uid-border-subtle);border-radius:9px;padding:2px;display:inline-flex}.oa-header__download{height:28px;color:var(--uid-text-secondary);font:500 11px/1 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:4px;padding:0 8px;transition:background .15s,color .15s;display:inline-flex}.oa-header__download:hover{background:var(--uid-color-bg-subtle);color:var(--uid-text-primary)}.oa-header__download:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:-2px}.oa-settings__row{gap:8px;display:flex}.oa-settings__downloads{display:none}.oa-menu{flex-direction:column;min-width:200px;padding:4px;display:flex}.oa-menu__item{color:var(--uid-text-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:7px 10px;font-size:13px}.oa-menu__item:hover,.oa-menu__item:focus-visible{background:var(--uid-accent-subtle);outline:none}.oa-body{grid-template-columns:var(--oa-nav-width,272px) minmax(0, 1fr);flex:1;align-items:start;gap:28px;display:grid}.oa-footer{border-top:1px solid var(--uid-border-subtle);color:var(--uid-text-tertiary);flex-wrap:wrap;gap:6px 18px;margin-top:40px;padding:18px 4px 24px;font-size:12px;display:flex}.oa-settings{flex-direction:column;gap:24px;display:flex}.oa-settings__section{flex-direction:column;gap:10px;display:flex}.oa-settings__title{letter-spacing:.05em;text-transform:uppercase;color:var(--uid-text-tertiary);margin:0;font-size:11px;font-weight:600}.oa-servers{flex-direction:column;gap:10px;display:flex}.oa-servers__vars{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;display:grid}.oa-servers__url{background:var(--uid-color-bg-subtle);font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-secondary);overflow-wrap:anywhere;border-radius:6px;padding:6px 10px}.oa-auth--embedded .oa-auth__body{padding:0}.oa-nav{top:calc(var(--oa-sticky-top,0px) + var(--oa-header-h));height:calc(var(--oa-viewport-h,100vh) - var(--oa-sticky-top,0px) - var(--oa-header-h));flex-direction:column;padding:16px 0 24px;display:flex;position:sticky}.oa-nav__scroll{overscroll-behavior:contain;scrollbar-width:thin;padding:2px 6px 2px 2px;overflow-y:auto}.oa-nav__overlay{display:none}.oa-nav__group{margin-bottom:12px}.oa-nav__tag{letter-spacing:.04em;text-transform:uppercase;color:var(--uid-text-tertiary);padding:6px 8px 4px;font-size:11px;font-weight:600}.oa-nav__op{color:var(--uid-text-secondary);border-radius:7px;align-items:center;gap:8px;padding:6px 8px;font-size:13px;text-decoration:none;transition:background .15s,color .15s,box-shadow .15s;display:flex}.oa-nav__op:hover{background:var(--uid-color-bg-subtle);color:var(--uid-text-primary)}.oa-nav__op:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:-2px}.oa-nav__op.is-active{background:var(--uid-accent-subtle);color:var(--uid-text-primary);box-shadow:inset 2px 0 0 var(--uid-accent)}.oa-nav__op.is-deprecated .oa-nav__label{text-decoration:line-through}.oa-nav__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.oa-nav__empty{color:var(--uid-text-tertiary);padding:8px}.oa-method{min-width:52px;font:600 12px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--oa-other,var(--uid-text-secondary));background:var(--oa-other-bg,var(--uid-color-bg-subtle));border-radius:4px;justify-content:center;padding:2px 6px;display:inline-flex}.oa-method--small{min-width:40px;padding:1px 4px;font-size:10px}.oa-method--get{color:var(--oa-get,var(--uid-info));background:var(--oa-get-bg,var(--uid-info-subtle))}.oa-method--post{color:var(--oa-post,var(--uid-success));background:var(--oa-post-bg,var(--uid-success-subtle))}.oa-method--put{color:var(--oa-put,var(--uid-warning));background:var(--oa-put-bg,var(--uid-warning-subtle))}.oa-method--patch{color:var(--oa-patch,var(--uid-warning));background:var(--oa-patch-bg,var(--uid-warning-subtle))}.oa-method--delete{color:var(--oa-delete,var(--uid-danger));background:var(--oa-delete-bg,var(--uid-danger-subtle))}.oa-status{font:600 12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);background:var(--uid-color-bg-subtle);color:var(--uid-text-secondary);border-radius:10px;padding:1px 8px;display:inline-block}.oa-status--success{background:var(--uid-success-subtle);color:var(--uid-success)}.oa-status--info{background:var(--uid-info-subtle);color:var(--uid-info)}.oa-status--danger{background:var(--uid-danger-subtle);color:var(--uid-danger)}.oa-main{min-width:0}.oa-intro{padding:28px 0 8px}.oa-chip-static{background:var(--uid-accent-subtle);color:var(--uid-text-primary);white-space:nowrap;border-radius:10px;padding:1px 8px;font-size:12px;font-weight:500}.oa-chip-static--muted{background:var(--uid-color-bg-subtle);color:var(--uid-text-secondary);font-weight:400}.oa-intro__title{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.oa-intro__title h1{letter-spacing:-.01em;margin:0;font-size:30px;line-height:1.2}.oa-intro__version,.oa-intro__spec{background:var(--uid-color-bg-subtle);color:var(--uid-text-secondary);border-radius:10px;padding:1px 8px;font-size:12px}.oa-intro__download{align-self:center;gap:2px;margin-left:auto;display:inline-flex}.oa-intro__summary{color:var(--uid-text-secondary);margin:8px 0 0}.oa-intro__meta{flex-wrap:wrap;gap:14px;font-size:13px;display:flex}.oa-intro__meta a{color:var(--uid-accent-text,var(--uid-accent))}.oa-servers__var{flex-direction:column;gap:4px;font-size:13px;display:flex}.oa-panel{border:1px solid var(--uid-border-default);border-radius:var(--oa-radius,8px);background:var(--uid-surface-raised);overflow:hidden}.oa-panel__head{border:0;border-bottom:1px solid var(--uid-border-subtle);background:var(--uid-color-bg-subtle);width:100%;color:inherit;font:inherit;text-align:left;align-items:center;gap:10px;padding:8px 12px;display:flex}.oa-panel__head--button{cursor:pointer;border-bottom-color:#0000}.oa-panel__head--button[aria-expanded=true]{border-bottom-color:var(--uid-border-subtle)}.oa-panel__title{flex:1;font-size:13px;font-weight:600}.oa-servers__body,.oa-auth__body{flex-direction:column;gap:10px;padding:12px;display:flex}.oa-auth__names{color:var(--uid-text-tertiary);font-size:12px}.oa-auth__scheme{border-bottom:1px dashed var(--uid-border-subtle);flex-direction:column;gap:6px;padding-bottom:10px;display:flex}.oa-auth__scheme:last-child{border-bottom:0;padding-bottom:0}.oa-auth__row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;display:grid}.oa-auth__oauth{flex-direction:column;gap:8px;display:flex}.oa-auth__flows{flex-wrap:wrap;align-self:flex-start}.oa-auth__scopes{flex-wrap:wrap;align-items:flex-start;gap:6px 16px;display:flex}.oa-auth__label{color:var(--uid-text-secondary);flex-basis:100%;font-size:12px}.oa-auth__status{color:var(--uid-text-tertiary);align-items:center;gap:8px;font-size:12px;display:flex}.oa-auth__persist{color:var(--uid-text-tertiary);justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.oa-tag{padding-top:12px}.oa-tag__title{letter-spacing:-.01em;scroll-margin-top:calc(var(--oa-sticky-top,0px) + var(--oa-header-h) + 12px);margin:36px 0 6px;font-size:22px}.oa-op{border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);box-shadow:var(--uid-shadow-sm);scroll-margin-top:calc(var(--oa-sticky-top,0px) + var(--oa-header-h) + 12px);border-radius:14px;margin:18px 0;padding:22px 24px;transition:opacity .35s,transform .35s,box-shadow .2s,border-color .2s}.oa-op:hover{box-shadow:var(--uid-shadow-md);border-color:var(--uid-border-default)}.oa-op--pending{opacity:.4;min-height:420px;transform:translateY(8px)}.oa-reference--large .oa-op{content-visibility:auto;contain-intrinsic-size:auto 600px}.oa-op__head{border-bottom:1px solid var(--uid-border-subtle);padding-bottom:14px}.oa-side-tabs{border:1px solid var(--uid-border-default);background:var(--uid-color-bg-subtle);border-radius:10px;padding:3px;display:flex}.oa-side-tabs__tab{color:var(--uid-text-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;flex:1;padding:6px 10px;font-size:13px;font-weight:500;transition:background .15s,color .15s,box-shadow .15s}.oa-side-tabs__tab.is-active{background:var(--uid-surface-raised);color:var(--uid-text-primary);box-shadow:var(--uid-shadow-sm)}.oa-side-tabs__tab:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:-2px}.oa-op--deprecated .oa-op__title{color:var(--uid-text-secondary);text-decoration:line-through}.oa-op__title{margin:0 0 6px;font-size:17px}.oa-op__titlebar{align-items:flex-start;gap:4px;display:flex}.oa-op__titlebar .oa-op__title{min-width:0}.oa-op__copy{opacity:0;flex:none;margin-top:-3px;transition:opacity .12s}.oa-op__head:hover .oa-op__copy,.oa-op__head:focus-within .oa-op__copy,.oa-op__copy.is-copied{opacity:1}@media (hover:none){.oa-op__copy{opacity:1}}.oa-op__copied{color:var(--uid-success);align-self:center;margin-top:-6px;font-size:12px}.oa-op__line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.oa-op__path{font:13px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);word-break:break-all}.oa-op__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;margin-top:16px;display:grid}.oa-op__side{flex-direction:column;gap:12px;min-width:0;display:flex}.oa-op__ext{font-size:13px}.oa-block{margin-top:18px}.oa-block__title{border-bottom:1px solid var(--uid-border-subtle);text-transform:uppercase;letter-spacing:.03em;color:var(--uid-text-secondary);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 8px;padding-bottom:6px;font-size:13px;display:flex}.oa-block__media{text-transform:none;letter-spacing:0;flex-wrap:wrap;gap:4px;margin-left:auto;display:inline-flex}.oa-chip{border:1px solid var(--uid-border-default);color:var(--uid-text-secondary);font:11px/1.6 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);cursor:pointer;background:0 0;border-radius:10px;padding:1px 8px}.oa-chip.is-active{border-color:var(--uid-accent);color:var(--uid-text-primary);background:var(--uid-accent-subtle)}.oa-params__loc{text-transform:uppercase;color:var(--uid-text-tertiary);margin:10px 0 2px;font-size:11px}.oa-param{border-bottom:1px dashed var(--uid-border-subtle);padding:8px 0}.oa-param:last-child{border-bottom:0}.oa-response{border:1px solid var(--uid-border-subtle);border-radius:6px;margin-bottom:6px}.oa-response__head{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:7px 10px;display:flex}.oa-response__desc{color:var(--uid-text-secondary);flex:1}.oa-response__head--plain{cursor:default}.oa-response__body{flex-direction:column;gap:8px;padding:4px 10px 10px;display:flex}.oa-response__example{margin-top:4px}.oa-callback{margin:6px 0}.oa-callback__item{flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;font-size:12px;display:flex}.oa-schema__row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.oa-schema__toggle,.oa-schema__toggle-space{flex:none;width:16px;height:16px}.oa-schema__toggle{color:var(--uid-text-tertiary);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.oa-schema__chevron{color:var(--uid-text-tertiary);font-size:14px;line-height:1;transition:transform .15s;display:inline-block}.oa-schema__chevron.is-open{transform:rotate(90deg)}.oa-schema__name{font:600 13px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-primary)}.oa-schema__type{font:12px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-tertiary)}.oa-schema__flag{background:var(--uid-color-bg-subtle);color:var(--uid-text-secondary);border-radius:8px;padding:0 6px;font-size:11px}.oa-schema__flag--required{color:var(--uid-danger);background:var(--uid-danger-subtle)}.oa-schema__flag--deprecated{color:var(--uid-warning);background:var(--uid-warning-subtle)}.oa-schema__meta{padding-left:22px}.oa-schema__constraints,.oa-schema__enum{color:var(--uid-text-secondary);flex-wrap:wrap;align-items:center;gap:6px;margin-top:3px;font-size:12px;display:flex}.oa-schema__constraints span,.oa-schema__enum code{background:var(--uid-color-bg-subtle);font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);border-radius:4px;padding:0 5px}.oa-schema__label{color:var(--uid-text-tertiary)}.oa-schema>.oa-schema__row{padding-top:7px}.oa-schema__children--nested{border-left:1px solid var(--uid-border-subtle);margin:4px 0 4px 7px;padding-left:14px}.oa-schema__variants{flex-wrap:wrap;align-items:center;gap:4px;margin:6px 0;display:flex}.oa-schema__variant{border:1px solid var(--uid-border-default);color:var(--uid-text-secondary);cursor:pointer;background:0 0;border-radius:10px;padding:1px 8px;font-size:12px}.oa-schema__variant.is-active{border-color:var(--uid-accent);background:var(--uid-accent-subtle);color:var(--uid-text-primary)}.oa-schema__scalar{flex-direction:column;gap:4px;display:flex}.oa-model{border-bottom:1px solid var(--uid-border-subtle);scroll-margin-top:var(--oa-sticky-top,0px);padding:14px 0}.oa-model__title{font:600 15px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);margin:0 0 4px}.oa-samples__select{width:190px}.oa-samples__code{border:0;border-radius:0}.oa-tryit__body{flex-direction:column;gap:16px;min-width:0;padding:12px;display:flex}.oa-tryit__group{flex-direction:column;gap:8px;min-width:0;display:flex}.oa-tryit__group-title{flex-wrap:wrap;align-items:center;gap:6px 8px;min-height:24px;display:flex}.oa-tryit__media{text-transform:none;flex:160px;min-width:0;max-width:260px}.oa-tryit__media-one{min-width:0;font:11px var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-secondary);overflow-wrap:anywhere}.oa-tryit__textarea{box-sizing:border-box;border:1px solid var(--uid-input-border,var(--uid-border-default));border-radius:var(--uid-input-radius,6px);background:var(--uid-input-bg,var(--uid-surface-base));width:100%;color:var(--uid-text-primary);font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);resize:none;overflow-wrap:anywhere;padding:8px 10px}.oa-tryit__textarea:focus{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:-1px}.oa-tryit__warn{color:var(--uid-warning);font-size:12px}.oa-tryit__actions{flex-wrap:wrap;gap:8px;display:flex}.oa-tryit__response{border-top:1px solid var(--uid-border-subtle);flex-direction:column;gap:8px;min-width:0;padding-top:12px;display:flex}.oa-tryit__status{align-items:center;gap:6px 12px;font-size:12px;display:flex}.oa-tryit__time,.oa-tryit__size{color:var(--uid-text-tertiary)}.oa-tryit__view{gap:4px;margin-left:auto;display:inline-flex}.oa-tryit__status{flex-wrap:wrap}.oa-tryit .oa-tryit__file .uid-file-upload__dropzone{gap:2px;padding:10px 12px}.oa-tryit .oa-tryit__file .uid-file-upload__icon{width:20px;height:20px}.oa-tryit .oa-tryit__file .uid-file-upload__primary-text{margin:0;font-size:13px}.oa-tryit .oa-tryit__file .uid-file-upload__secondary-text{display:none}.oa-tryit__image{border:1px solid var(--uid-border-subtle);background:repeating-conic-gradient(var(--uid-color-bg-subtle) 0 25%, transparent 0 50%) 0 0 / 16px 16px;border-radius:6px;align-self:flex-start;max-width:100%;max-height:360px;display:block}.oa-tryit__download{align-self:flex-start;font-size:13px}.oa-link{color:var(--uid-accent-text,var(--uid-accent));font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.oa-table{border-collapse:collapse;width:100%;font-size:12px}.oa-table th{text-align:left;color:var(--uid-text-tertiary);font-weight:600}.oa-table td,.oa-table th{border-bottom:1px solid var(--uid-border-subtle);vertical-align:top;padding:4px 6px}.oa-table--compact td:first-child{white-space:nowrap}.oa-md{--uid-markdown-font-size:14px}.oa-md--small{--uid-markdown-font-size:13px;--uid-markdown-color:var(--uid-text-secondary);margin-top:2px}.oa-md--small p{margin:0}@container oa-reference (width<=1180px){.oa-op__grid{grid-template-columns:minmax(0,1fr)}.oa-header__summary{display:none}}@container oa-reference (width<=860px){.oa-body{grid-template-columns:minmax(0,1fr)}.oa-header__menu{display:inline-flex}.oa-header__downloads{display:none}.oa-settings__downloads{display:flex}.oa-nav{z-index:29;top:var(--oa-header-h);background:var(--uid-surface-raised);width:min(320px,86%);height:auto;box-shadow:var(--uid-shadow-xl);visibility:hidden;padding:12px 8px;transition:transform .22s,visibility 0s linear .22s;position:absolute;bottom:0;left:0;transform:translate(-105%)}.oa-nav.is-open{visibility:visible;transition:transform .22s;transform:none}.oa-nav__scroll{top:calc(var(--oa-sticky-top,0px) + var(--oa-header-h) + 12px);max-height:calc(var(--oa-viewport-h,100dvh) - var(--oa-sticky-top,0px) - var(--oa-header-h) - 24px);position:sticky}.oa-nav__overlay{z-index:28;inset:var(--oa-header-h) 0 0 0;background:#00000052;display:block;position:absolute}.oa-op{border-radius:12px;padding:18px 16px}}@container oa-reference (width<=600px){.oa-header{gap:6px}.oa-header__title .oa-chip-static,.oa-header__host{display:none}.oa-header__settings{padding:0 9px}.oa-header__search{flex-basis:0;min-width:72px}.oa-header__specs{min-width:96px}.oa-search{position:static}.oa-search__results{width:auto;left:4px;right:4px}.oa-intro__title h1{font-size:24px}}@container oa-reference (width<=560px){.oa-header--multi,.oa-header--multi~.oa-body{--oa-header-h:96px}.oa-header--multi{flex-wrap:wrap;align-content:center;row-gap:8px;padding:8px 4px}.oa-header--multi .oa-header__title{flex:1 1 0}.oa-header--multi .oa-header__find{flex:100%;order:1;gap:6px;min-width:0;display:flex}.oa-header--multi .oa-header__specs{flex:1 1 0;min-width:0}.oa-header--multi .oa-header__search{flex:1 1 0;min-width:0;max-width:none;margin-left:0}}@media (prefers-reduced-motion:reduce){.oa-op,.oa-nav,.oa-nav__op{transition:none}.oa-op--pending{transform:none}}.oa-locale-passthrough{display:contents}.oa-editor{flex-direction:column;gap:12px;display:flex;container:oa-editor/inline-size}.oa-editor__bar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.oa-segmented{border:1px solid var(--uid-border-default);background:var(--uid-color-bg-subtle);border-radius:8px;padding:2px;display:inline-flex}.oa-segmented__item{color:var(--uid-text-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:4px 12px;font-size:13px}.oa-segmented__item.is-active{background:var(--uid-surface-raised);color:var(--uid-text-primary);box-shadow:var(--uid-shadow-sm)}.oa-segmented__item:disabled{opacity:.5;cursor:default}.oa-editor__issues{border:1px solid var(--uid-border-default);background:var(--uid-success-subtle);color:var(--uid-success);font:inherit;cursor:pointer;border-radius:12px;margin-left:auto;padding:3px 10px;font-size:12px}.oa-editor__issues.has-errors{background:var(--uid-danger-subtle);color:var(--uid-danger)}.oa-editor__body{flex-direction:column;gap:12px;min-height:420px;display:flex}.oa-editor__empty{border:1px dashed var(--uid-border-default);border-radius:var(--oa-radius,8px);color:var(--uid-text-secondary);flex-direction:column;align-items:flex-start;gap:10px;padding:24px;display:flex}.oa-editor__visual{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:16px;display:grid}.oa-editor__tree{top:var(--oa-sticky-top,0px);max-height:calc(100vh - var(--oa-sticky-top,0px) - 24px);border:1px solid var(--uid-border-default);border-radius:var(--oa-radius,8px);background:var(--uid-surface-raised);flex-direction:column;gap:1px;padding:6px;display:flex;position:sticky;overflow-y:auto}.oa-tree__section{letter-spacing:.04em;text-transform:uppercase;color:var(--uid-text-tertiary);justify-content:space-between;align-items:center;margin-top:10px;padding:2px 8px;font-size:11px;font-weight:600;display:flex}.oa-tree__add{border:1px solid var(--uid-border-default);width:22px;height:22px;color:var(--uid-text-secondary);cursor:pointer;background:0 0;border-radius:6px;font:600 14px/1 inherit}.oa-tree__add:hover{background:var(--uid-accent-subtle);color:var(--uid-text-primary)}.oa-tree__item{color:var(--uid-text-secondary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;min-width:0;padding:5px 8px;font-size:13px;display:flex}.oa-tree__item:hover{background:var(--uid-color-bg-subtle);color:var(--uid-text-primary)}.oa-tree__item.is-active{background:var(--uid-accent-subtle);color:var(--uid-text-primary)}.oa-tree__item--nested{padding-left:18px}.oa-tree__item--path code{font:12px var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.oa-tree__count{color:var(--uid-text-tertiary);margin-left:auto;font-size:11px}.oa-editor__form{border:1px solid var(--uid-border-default);border-radius:var(--oa-radius,8px);background:var(--uid-surface-raised);min-width:0;padding:16px}.oa-ef{flex-direction:column;gap:12px;display:flex}.oa-ef__title{align-items:center;gap:8px;display:flex}.oa-ef__section{flex-direction:column;gap:8px;margin-top:8px;display:flex}.oa-ef__hint{flex-wrap:wrap;gap:6px;display:flex}.oa-ef__grow{flex:1;min-width:160px}.oa-ef__in{width:120px}.oa-ef__code{width:90px}.oa-ef__footer{border-top:1px solid var(--uid-border-subtle);justify-content:flex-end;margin-top:16px;padding-top:12px;display:flex}.oa-es{flex-direction:column;gap:8px;display:flex}.oa-es__row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.oa-es__row>.uid-input-field,.oa-es__row>.uid-select{flex:none}.oa-es__kind{width:130px}.oa-es__ref{width:200px}.oa-es__format{width:140px}.oa-es__grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.oa-es__nested{border-left:1px solid var(--uid-border-subtle);flex-direction:column;gap:8px;margin-left:7px;padding-left:14px;display:flex}.oa-es__nested-title{text-transform:uppercase;color:var(--uid-text-tertiary);font-size:11px;font-weight:600}.oa-es__prop{border-bottom:1px dashed var(--uid-border-subtle);flex-direction:column;gap:6px;padding:6px 0;display:flex}.oa-es__prop-name{width:180px}.oa-ec{flex-direction:column;gap:8px;display:flex}.oa-ec__types{align-items:center;margin-left:0}.oa-ec__new{width:200px}.oa-source{--uid-code-tok-comment:var(--uid-text-secondary);--uid-code-tok-string:var(--uid-success);--uid-code-tok-number:var(--uid-warning);--uid-code-tok-literal:var(--uid-warning);--uid-code-tok-keyword:var(--uid-accent-text,var(--uid-accent));--uid-code-tok-function:var(--uid-info);--uid-code-tok-variable:var(--uid-danger);--uid-code-tok-tag:var(--uid-danger);--uid-code-tok-attr:var(--uid-warning);--uid-code-tok-property:var(--uid-info);--uid-code-tok-punctuation:var(--uid-text-secondary);flex-direction:column;gap:8px;display:flex}.oa-source__frame{height:var(--oa-source-height,560px);border:1px solid var(--uid-border-default);border-radius:var(--oa-radius,8px);background:var(--uid-surface-raised);font:12.5px/1.6 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);grid-template-columns:auto minmax(0,1fr);display:grid;overflow:hidden}.oa-source__gutter{text-align:right;min-width:44px;color:var(--uid-text-tertiary);background:var(--uid-color-bg-subtle);border-right:1px solid var(--uid-border-subtle);-webkit-user-select:none;user-select:none;padding:10px 0;position:relative;overflow:hidden}.oa-source__gutter-inner{position:relative}.oa-source__numbers{font:inherit;margin:0;padding:0 8px}.oa-source__mark{background:var(--uid-danger-subtle);border-left:3px solid var(--uid-danger);height:1.6em;position:absolute;left:0;right:0}.oa-source--plain .oa-source__textarea{color:var(--uid-text-primary)}.oa-source__stack{min-width:0;position:relative}.oa-source__highlight,.oa-source__textarea{font:inherit;white-space:pre;tab-size:2;border:0;margin:0;padding:10px 12px;position:absolute;inset:0;overflow:auto}.oa-source__highlight{color:var(--uid-text-primary);pointer-events:none;scrollbar-width:none}.oa-source__highlight::-webkit-scrollbar{display:none}.oa-source__textarea{color:#0000;caret-color:var(--uid-text-primary);resize:none;background:0 0;outline:none}.oa-source__textarea::selection{background:color-mix(in srgb, var(--uid-accent) 30%, transparent);color:#0000}.oa-source__issues{flex-direction:column;gap:2px;max-height:180px;display:flex;overflow-y:auto}.oa-source__issues-title{color:var(--uid-text-tertiary);padding:2px 0;font-size:12px}.oa-source__issue{color:var(--uid-text-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;gap:10px;padding:4px 8px;font-size:12px;display:flex}.oa-source__issue:hover{background:var(--uid-color-bg-subtle)}.oa-source__issue.is-error{color:var(--uid-danger)}.oa-source__issue.is-warning{color:var(--uid-warning)}.oa-source__where{min-width:64px;font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-tertiary);flex:none}@container oa-editor (width<=860px){.oa-editor__visual{grid-template-columns:minmax(0,1fr)}.oa-editor__tree{max-height:40vh;position:static}}.oa-ef>.uid-button,.oa-ef__section>.uid-button,.oa-es>.uid-button,.oa-es__nested>.uid-button{align-self:flex-start}.oa-share{flex-direction:column;gap:6px;display:flex}.oa-share__row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.oa-share__done{color:var(--uid-success,var(--uid-text-secondary));font-size:12px}.oa-share__creds{margin-left:auto;font-size:12px}.oa-page{background:var(--uid-surface-base);min-height:100vh;color:var(--uid-text-primary)}.oa-page__bar{z-index:20;padding:8px var(--oa-page-padding,24px);border-bottom:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex;position:sticky;top:0}.oa-page__title{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:15px;font-weight:600;overflow:hidden}.oa-page__actions{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.oa-page__actions .oa-segmented__item{padding:4px 10px}.oa-page__actions .oa-segmented__item.oa-page__icon{align-items:center;padding:5px 8px;display:inline-flex}.oa-page__actions .oa-segmented__item:focus-visible{outline:2px solid var(--uid-color-focus-ring);outline-offset:1px}.oa-page__body{max-width:var(--oa-page-width,1440px);padding:16px var(--oa-page-padding,24px);margin:0 auto}@media (max-width:640px){.oa-page{--oa-page-padding:16px}}.oa-examples{flex-direction:column;gap:6px;margin:6px 0;display:flex}.oa-examples__names{flex-wrap:wrap;gap:4px;display:flex}.oa-examples__external{margin:0;font-size:13px}.oa-param__examples .oa-chip{cursor:pointer}.oa-tryit__example{color:var(--uid-text-secondary);flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:12px;display:flex}.oa-search{position:relative}.oa-search__results{z-index:20;border:1px solid var(--uid-border-default);border-radius:var(--oa-radius,8px);background:var(--uid-surface-overlay,var(--uid-color-bg));width:min(440px,100cqw - 16px);max-height:min(60vh,520px);padding:4px;position:absolute;top:calc(100% + 4px);left:0;overflow-y:auto;box-shadow:0 8px 24px #00000029}.oa-search__hit{cursor:pointer;border-radius:6px;flex-direction:column;gap:2px;padding:6px 8px;display:flex}.oa-search__hit.is-cursor{background:var(--uid-accent-subtle)}.oa-search__line{align-items:center;gap:8px;min-width:0;display:flex}.oa-search__kind{text-transform:uppercase;letter-spacing:.04em;min-width:40px;color:var(--uid-text-tertiary);flex:none;font-size:10px}.oa-search__title{text-overflow:ellipsis;white-space:nowrap;color:var(--uid-text-primary);font-size:13px;overflow:hidden}.oa-search__path{text-overflow:ellipsis;white-space:nowrap;font:11px var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-secondary);overflow:hidden}.oa-search__snippet{color:var(--uid-text-secondary);overflow-wrap:anywhere;font-size:12px;line-height:1.4}.oa-search__hit mark{background:var(--uid-warning-subtle,#facc1559);color:inherit;border-radius:2px}.oa-code{position:relative}.oa-code .uid-code__pre{overflow-x:hidden}.oa-code--folded .uid-code__body{max-height:calc(var(--oa-code-fold-lines,18) * 1.6em + 24px);overflow:hidden;-webkit-mask-image:linear-gradient(#000 70%,#0000);mask-image:linear-gradient(#000 70%,#0000)}.oa-code__toggle{border:0;border-top:1px solid var(--uid-border-subtle);background:var(--uid-color-bg-subtle);width:100%;color:var(--uid-accent-text,var(--uid-accent));font:inherit;cursor:pointer;padding:6px;font-size:12px;display:block}.oa-side-tabs~.oa-tryit>.oa-panel__head{display:none}.oa-side-tabs~.oa-samples .oa-panel__title{visibility:hidden}.oa-tryit{min-width:0;container-type:inline-size}.oa-tryit,.oa-tryit *{box-sizing:border-box}.oa-tryit__body>*{min-width:0;max-width:100%}.oa-tryit__heading{letter-spacing:.05em;text-transform:uppercase;color:var(--uid-text-tertiary);font-size:11px;font-weight:600}.oa-tryit__add{margin-left:auto;font-size:12px}.oa-tryit__view-toggle{margin-left:auto}.oa-tryit__view-toggle .oa-segmented__item{padding:2px 10px;font-size:12px}.oa-tryit__form{flex-direction:column;gap:12px;min-width:0;display:flex}.oa-tryit__send{min-width:120px}.oa-tryit__headers{margin:0}.oa-tryit__result{min-width:0}.oa-tryit .uid-code__pre,.oa-tryit .uid-code__pre code{white-space:pre-wrap;overflow-wrap:anywhere}@container (width<=420px){.oa-tryit__send{flex:100%}.oa-tryit__actions>.uid-button:not(.oa-tryit__send){flex:1 1 0}}.oa-field{flex-direction:column;gap:4px;min-width:0;display:flex}.oa-field__head{flex-wrap:wrap;align-items:center;gap:2px 6px;min-width:0;display:flex}.oa-field__name{min-width:0;font:600 12px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-primary);overflow-wrap:anywhere}.oa-field.is-deprecated>.oa-field__head>.oa-field__name{color:var(--uid-text-secondary);text-decoration:line-through}.oa-field__required{color:var(--uid-danger);margin-left:-4px;font-weight:600}.oa-field__type{font:11px/1.4 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-tertiary);overflow-wrap:anywhere}.oa-field__actions{flex-wrap:wrap;align-items:center;gap:4px;margin-left:auto;display:inline-flex}.oa-field__control{align-items:flex-start;gap:6px;min-width:0;display:flex}.oa-field__control>:not(.oa-icon-button){flex:auto;min-width:0}.oa-field__control>.oa-field__bool{flex:none}.oa-field__bool .oa-segmented__item{font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);padding:2px 12px}.oa-field__hint{-webkit-line-clamp:2;line-clamp:2;color:var(--uid-text-tertiary);overflow-wrap:anywhere;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.oa-field__json{border:1px solid var(--uid-input-border,var(--uid-border-default));border-radius:var(--uid-input-radius,6px);background:var(--uid-input-bg,var(--uid-surface-base));width:100%;min-height:32px;color:var(--uid-text-primary);font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);overflow-wrap:anywhere;padding:5px 8px}.oa-field__json:focus{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:-1px}.oa-tryit .uid-input-field,.oa-tryit .uid-number-input,.oa-tryit .uid-tags-input,.oa-tryit .uid-select{min-width:0;max-width:100%}.oa-tryit .uid-tags-input__control{flex-wrap:wrap;min-width:0}.oa-tryit .uid-tags-input__chip{overflow-wrap:anywhere;max-width:100%}.oa-tryit .uid-tags-input__field{flex:60px;min-width:60px}.oa-tryit .uid-select__value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.oa-tryit .uid-input-field__input,.oa-tryit .uid-number-input__input{min-width:0}.oa-icon-button{width:28px;height:28px;color:var(--uid-text-tertiary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:inline-flex}.oa-icon-button:hover{border-color:var(--uid-border-default);color:var(--uid-danger)}.oa-icon-button:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:1px}.oa-kv{flex-direction:column;gap:6px;display:flex}.oa-kv__row{grid-template-columns:minmax(0,2fr) minmax(0,3fr) auto;align-items:center;gap:6px;display:grid}.oa-kv__key input{font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px}.oa-sf{min-width:0}.oa-sf--group{flex-direction:column;gap:6px;display:flex}.oa-sf__head{flex-wrap:wrap;align-items:center;gap:2px 6px;min-width:0;min-height:28px;display:flex}.oa-sf__toggle{cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:18px;height:18px;margin-left:-2px;padding:0;display:inline-flex}.oa-sf__body{border-left:1px solid var(--uid-border-subtle);flex-direction:column;gap:12px;min-width:0;margin-left:7px;padding-left:12px;display:flex}.oa-sf--root>.oa-sf__body{border-left:0;margin-left:0;padding-left:0}.oa-sf--group.is-absent>.oa-sf__head>.oa-field__name,.oa-sf--group.is-null>.oa-sf__head>.oa-field__name{color:var(--uid-text-secondary)}.oa-sf__variant{width:160px;max-width:100%}.oa-sf__variant-label{color:var(--uid-text-secondary);font-size:12px}.oa-sf__add{font-size:12px}.oa-sf__more{align-self:flex-start}.oa-sf__entry{flex-direction:column;gap:6px;min-width:0;display:flex}.oa-sf__entry--leaf{grid-template-columns:minmax(0,2fr) minmax(0,3fr);align-items:start;display:grid}.oa-sf__key input{font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px}.oa-sf__null{font-size:11px}.oa-preview{border:1px solid var(--uid-border-subtle);border-radius:6px;min-width:0}.oa-preview__summary{width:100%;min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex}.oa-preview__title{letter-spacing:.05em;text-transform:uppercase;color:var(--uid-text-tertiary);flex:none;font-size:11px;font-weight:600}.oa-preview__line{min-width:0;font:11px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-secondary);gap:6px;display:flex}.oa-preview__method{color:var(--uid-text-primary);flex:none;font-weight:600}.oa-preview__url-short{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.oa-preview__count{flex:none}.oa-preview__body{flex-direction:column;gap:8px;padding:0 10px 10px;display:flex}.oa-preview__url-row{flex-wrap:wrap;align-items:flex-start;gap:4px 8px;display:flex}.oa-preview__url{background:var(--uid-color-bg-subtle);min-width:0;font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);overflow-wrap:anywhere;white-space:pre-wrap;border-radius:6px;flex:200px;padding:6px 8px}.oa-preview__copy{font-size:12px}.oa-preview__headers{font:12px/1.5 var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);grid-template-columns:minmax(0,max-content) minmax(0,1fr);gap:4px 12px;margin:0;display:grid}.oa-preview__headers dt{max-width:18ch;color:var(--uid-text-secondary);overflow-wrap:anywhere}.oa-preview__headers dd{min-width:0;color:var(--uid-text-primary);overflow-wrap:anywhere;margin:0}@container (width<=380px){.oa-preview__summary{flex-wrap:wrap}.oa-preview__line{flex:100%}.oa-kv__row{grid-template-columns:minmax(0,1fr) auto}.oa-kv__value{grid-column:1}.oa-sf__entry--leaf{grid-template-columns:minmax(0,1fr)}}.oa-tryit__add{border:1px dashed var(--uid-border-default);color:var(--uid-text-secondary);font:inherit;cursor:pointer;background:0 0;border-radius:8px;align-self:flex-start;align-items:center;gap:6px;margin-left:0;padding:5px 10px;font-size:12px;transition:border-color .15s,color .15s,background .15s;display:inline-flex}.oa-tryit__add:hover{border-color:var(--uid-accent);color:var(--uid-text-primary);background:var(--uid-accent-subtle)}.oa-tryit__add:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:1px}.oa-preview__add{margin-top:8px}.oa-types__names{border-bottom:1px solid var(--uid-border-subtle);flex-wrap:wrap;align-items:center;gap:4px;padding:8px 12px;display:flex}.oa-types__name{overflow-wrap:anywhere;text-align:left;max-width:100%}.oa-types__copied{color:var(--uid-text-tertiary);font-size:11px}.oa-types__code{border:0;border-radius:0}.oa-side-tabs~.oa-types>.oa-panel__head{display:none}.oa-reference.oa-embed{min-height:0;margin:16px 0;display:block;container-type:inline-size}.oa-embed__card{border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);box-shadow:var(--uid-shadow-sm);border-radius:12px;padding:18px 20px}.oa-embed__head{border-bottom:1px solid var(--uid-border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 16px;padding-bottom:12px;display:flex}.oa-embed__heading{flex:240px;min-width:0}.oa-embed__title{margin:6px 0 0;font-size:16px}.oa-embed__card.oa-op--deprecated .oa-embed__title{color:var(--uid-text-secondary);text-decoration:line-through}.oa-embed__tools{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.oa-embed__settings{max-width:220px;height:30px}.oa-embed__ref{color:var(--uid-accent);align-items:center;gap:4px;font-size:13px;text-decoration:none;display:inline-flex}.oa-embed__ref:hover{text-decoration:underline}.oa-op.oa-op--compact{box-shadow:none;content-visibility:visible;background:0 0;border:0;border-radius:0;margin:0;padding:0;container-type:inline-size}.oa-op.oa-op--compact .oa-op__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}@container (width<=899px){.oa-op.oa-op--compact .oa-op__grid{grid-template-columns:minmax(0,1fr)}}@container (width<=480px){.oa-embed__card{padding:14px 12px}.oa-embed__settings .oa-header__host{display:none}}.oa-op__pdf{opacity:0;flex:none;margin-top:-3px;transition:opacity .12s}.oa-op__head:hover .oa-op__pdf,.oa-op__head:focus-within .oa-op__pdf{opacity:1}@media (hover:none){.oa-op__pdf{opacity:1}}.oa-settings__print{display:flex}.oa-bk{color:var(--uid-text-primary);margin:16px 0;font-size:14px;line-height:1.5;container-type:inline-size}.oa-bk--editable{border:1px solid var(--uid-border-subtle);background:var(--uid-color-bg-subtle);border-radius:12px;padding:2px 14px 14px}.oa-bk__tabs .uid-tabs__list{align-items:center}.oa-bk__tabs .uid-tab-panel{padding-bottom:0}.oa-bk__format{flex:none;margin-left:auto}.oa-bk__format .oa-segmented__item{padding:2px 8px;font-size:11px}.oa-bk__dot{background:var(--uid-danger);border-radius:50%;width:6px;height:6px;margin-left:6px;display:inline-block}.oa-bk__preview{flex-direction:column;gap:12px;display:flex}.oa-bk__preview .oa-reference.oa-embed{margin:0}.oa-bk__heading{flex-direction:column;gap:4px;display:flex}.oa-bk__title{margin:0;font-size:17px;font-weight:600}.oa-bk__empty{color:var(--uid-text-secondary);margin:0}.oa-bk__where{font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--uid-text-secondary);font-size:12px}.oa-bk__form{flex-direction:column;gap:4px;display:flex}.oa-bk__section{border-top:1px solid var(--uid-border-subtle);flex-direction:column;gap:8px;padding:12px 0;display:flex}.oa-bk__form>.oa-bk__section:first-child{border-top:0;padding-top:0}.oa-bk__section-title{letter-spacing:.04em;text-transform:uppercase;color:var(--uid-text-tertiary);margin:0;font-size:11px;font-weight:600}.oa-bk__section>.uid-button,.oa-bk__footer>.uid-button,.oa-bk__mode{align-self:flex-start}.oa-bk__grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;display:grid}.oa-bk__line{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.oa-bk__line--top{align-items:flex-start}.oa-bk__method{flex:none;width:116px}.oa-bk__url{flex:260px;min-width:0}.oa-bk__url input,.oa-bk__param-name input,.oa-bk__status input,.oa-bk__mono textarea{font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12.5px}.oa-bk__grow{flex:160px;min-width:0}.oa-bk__requests{flex-wrap:wrap;align-items:center;gap:6px;padding-bottom:12px;display:flex}.oa-bk__request{border:1px solid var(--uid-border-default);background:var(--uid-surface-raised);min-width:0;max-width:100%;color:var(--uid-text-primary);font:inherit;cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:4px 8px;display:inline-flex}.oa-bk__request:hover{border-color:var(--uid-text-tertiary)}.oa-bk__request.is-active{border-color:var(--uid-accent);box-shadow:0 0 0 1px var(--uid-accent)}.oa-bk__request:focus-visible{outline:2px solid var(--uid-focus-ring,var(--uid-accent));outline-offset:1px}.oa-bk__request-path{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--oa-mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;overflow:hidden}.oa-bk__params{flex-direction:column;gap:6px;display:flex}.oa-bk__param{border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.oa-bk__param-main{grid-template-columns:104px minmax(0,1fr) minmax(120px,180px) auto auto;grid-template-areas:"in name type req end";align-items:center;gap:6px;display:grid}.oa-bk__param-in{grid-area:in}.oa-bk__param-name{grid-area:name;min-width:0}.oa-bk__param-type{grid-area:type;min-width:0}.oa-bk__param-req{white-space:nowrap;grid-area:req}.oa-bk__param-main>.oa-icon-button,.oa-bk__param-tag{grid-area:end;justify-self:end}.oa-bk__param-tag{color:var(--uid-text-tertiary);white-space:nowrap;font-size:11px}.oa-bk__param-more{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;display:grid}.oa-bk .uid-select__value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.oa-bk__auth{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));align-items:start;gap:8px;display:grid}.oa-bk__wide{grid-column:1/-1}.oa-bk__media{flex:0 300px;min-width:0}.oa-bk__body-req{padding-bottom:6px}.oa-bk__body-remove{margin-left:auto}.oa-bk__error{color:var(--uid-danger);margin:0;font-size:12px}.oa-bk__response{flex-direction:column;gap:6px;display:flex}.oa-bk__response-main{align-items:center;gap:6px;display:flex}.oa-bk__status{flex:none;width:84px}.oa-bk__footer{justify-content:flex-end;padding-top:4px;display:flex}.oa-bk__format--panel{display:none}.oa-bk__form .uid-checkbox__text{font-size:13px}.oa-bk__example-toggle{color:var(--uid-text-tertiary)}.oa-bk__example-toggle.is-on{color:var(--uid-accent)}@container (width<=520px){.oa-bk__format--bar{display:none}.oa-bk__format--panel{width:max-content;margin:0 0 10px auto;display:flex}}@container (width<=560px){.oa-bk__param-main{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"name name end""in type req"}.oa-bk__param-more{grid-template-columns:minmax(0,1fr)}.oa-bk__method{width:100%}}@media (max-width:480px){.oa-bk--editable{padding:2px 10px 10px}}.oa-action{text-transform:uppercase}.oa-action--send{color:var(--oa-send,var(--uid-success));background:var(--oa-send-bg,var(--uid-success-subtle))}.oa-action--receive{color:var(--oa-receive,var(--uid-info));background:var(--oa-receive-bg,var(--uid-info-subtle))}.oa-async__param{color:var(--uid-primary);font-weight:600}.oa-async__address{word-break:break-all;font-size:13px}.oa-async__summary{color:var(--uid-text-muted);margin:0 0 8px}.oa-async__meta{color:var(--uid-text-muted);font-size:12px}.oa-async__part{margin-top:10px}.oa-async-message{border:1px solid var(--uid-border);border-radius:8px;margin-top:12px;padding:12px 14px}.oa-async-message__head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.oa-async-message__head .oa-block__title{margin:0}.oa-async-op__body{flex-direction:column;gap:4px;display:flex}.oa-async-reply{border-left:3px solid var(--uid-border);padding-left:12px}.oa-async-server{margin-bottom:8px}`,flow:`.fl-view,.fl-editor{--fl-bg:var(--uid-surface-base,#fafafa);--fl-grid:color-mix(in srgb, var(--uid-text-tertiary,#a1a1aa) 45%, transparent);--fl-node-bg:var(--uid-surface-raised,#fff);--fl-node-border:var(--uid-border-default,#d4d4d8);--fl-node-text:var(--uid-text-primary,#18181b);--fl-node-muted:var(--uid-text-secondary,#71717a);--fl-edge:color-mix(in srgb, var(--uid-text-tertiary,#a1a1aa) 85%, var(--uid-text-secondary,#71717a));--fl-accent:var(--uid-accent,#14b8a6);--fl-accent-subtle:var(--uid-accent-subtle,#f0fdfa);--fl-success:var(--uid-success,#059669);--fl-success-subtle:var(--uid-success-subtle,#ecfdf5);--fl-danger:var(--uid-danger,#e11d48);--fl-danger-subtle:var(--uid-danger-subtle,#fff1f2);--fl-warning:var(--uid-warning,#d97706);--fl-warning-subtle:var(--uid-warning-subtle,#fffbeb);--fl-info:var(--uid-info,#2563eb);--fl-info-subtle:var(--uid-info-subtle,#eff6ff);--fl-shadow:color-mix(in srgb, var(--uid-text-primary,#18181b) 9%, transparent);--fl-font:var(--uid-font-family-sans,system-ui, sans-serif);--fl-radius:var(--uid-radius-lg,12px);height:100%;min-height:360px;font-family:var(--fl-font);color:var(--fl-node-text);display:flex;position:relative}.fl-canvas{min-width:0;min-height:inherit;background:var(--fl-bg);border-radius:inherit;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;outline:none;flex:auto;position:relative;overflow:hidden}.fl-canvas.is-panning,.fl-canvas.is-space,.fl-canvas.is-space *{cursor:grabbing}.fl-canvas.is-editable{cursor:default}.fl-canvas.is-connecting,.fl-canvas.is-connecting *{cursor:crosshair}.fl-svg{width:100%;height:100%;font-family:var(--fl-font);display:block;position:absolute;inset:0}.fl-canvas.is-animating .fl-viewport{transition:transform .24s var(--uid-ease-out,ease-out)}.fl-grid-dot{fill:var(--fl-grid)}.fl-group rect{fill:color-mix(in srgb, var(--fl-node-muted) 6%, transparent);stroke:color-mix(in srgb, var(--fl-node-muted) 35%, transparent);stroke-dasharray:5 4;stroke-width:1px}.fl-group--region rect{fill:none;stroke:color-mix(in srgb, var(--fl-info) 45%, transparent);stroke-dasharray:8 5;stroke-width:1.25px}.fl-group--region .fl-group__label{fill:var(--fl-info);letter-spacing:.02em}.fl-group__label{letter-spacing:.04em;text-transform:uppercase;fill:var(--fl-node-muted);font-size:11px;font-weight:600}.fl-edge__hit{fill:none;stroke:#0000;stroke-width:16px;pointer-events:stroke;cursor:pointer}.fl-edge__line{fill:none;stroke:var(--fl-edge);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;transition:stroke .12s}.fl-edge.is-hovered .fl-edge__line{stroke:var(--fl-node-muted);stroke-width:2px}.fl-edge.is-association .fl-edge__line{stroke-dasharray:3 4;stroke-width:1.2px}.fl-edge.is-traversed .fl-edge__line{stroke:color-mix(in srgb, var(--fl-success) 75%, var(--fl-edge));stroke-width:2px}.fl-edge.is-path .fl-edge__line{stroke:var(--fl-accent);stroke-width:2.6px}.fl-edge__flow{fill:none;stroke:color-mix(in srgb, var(--fl-node-bg) 80%, transparent);stroke-width:1.4px;stroke-dasharray:2 12;stroke-linecap:round;pointer-events:none;animation:1.1s linear infinite fl-flow}.fl-edge.is-disabled .fl-edge__line{stroke-dasharray:5 5;opacity:.45}.fl-edge.is-selected .fl-edge__line,.fl-edge.is-focused .fl-edge__line{stroke:var(--fl-accent);stroke-width:2.6px}.fl-edge.has-error .fl-edge__line{stroke:var(--fl-danger)}.fl-edge.has-warning .fl-edge__line{stroke:var(--fl-warning)}.fl-arrow path{fill:var(--fl-edge)}.fl-arrow--accent path{fill:var(--fl-accent)}.fl-arrow--success path{fill:color-mix(in srgb, var(--fl-success) 75%, var(--fl-edge))}.fl-arrow--muted path{fill:var(--fl-edge);opacity:.45}.fl-arrow--danger path{fill:var(--fl-danger)}.fl-edge-label{cursor:pointer;outline:none}.fl-edge-label__bg{fill:var(--fl-bg);stroke:var(--uid-border-subtle,#e4e4e7);stroke-width:1px}.fl-edge-label__text{fill:var(--fl-node-muted);font-size:12px;font-weight:500}.fl-edge-label__trigger{color:var(--fl-warning)}.fl-edge-label.is-path .fl-edge-label__bg{stroke:color-mix(in srgb, var(--fl-accent) 55%, transparent);fill:var(--fl-accent-subtle)}.fl-edge-label.is-path .fl-edge-label__text{fill:var(--uid-accent-text,var(--fl-accent))}.fl-edge-label.is-selected .fl-edge-label__bg,.fl-edge-label.is-focused .fl-edge-label__bg{stroke:var(--fl-accent);stroke-width:1.5px}.fl-edge-label.is-disabled{opacity:.5}.fl-edge-label.is-disabled .fl-edge-label__text{text-decoration:line-through}.fl-edge-label:not(:has(rect)){pointer-events:none}.fl-node-wrap{cursor:pointer;outline:none}.fl-canvas.is-editable .fl-node-wrap{cursor:grab}.fl-canvas.is-dragging .fl-node-wrap{cursor:grabbing}.fl-node__body{fill:var(--fl-node-bg);stroke:var(--fl-node-border);stroke-width:1px;transition:stroke .12s,fill .12s}.fl-node__shadow{fill:var(--fl-shadow)}.fl-node-wrap.is-hovered .fl-node__body{stroke:var(--uid-border-hover,#a1a1aa)}.fl-node__label{fill:var(--fl-node-text);pointer-events:none;font-size:14px;font-weight:500}.fl-node__label--outside{fill:var(--fl-node-muted);font-size:13px}.fl-node__desc{fill:var(--fl-node-muted);font-size:12px;font-weight:400}.fl-node__tile rect{fill:var(--fl-accent-subtle)}.fl-node__tile svg{color:var(--uid-accent-text,var(--fl-accent))}.fl-node--rect.fl-node .fl-node__tile rect{fill:var(--fl-info-subtle)}.fl-node--rect.fl-node .fl-node__tile svg{color:var(--fl-info)}.fl-node__body--start{fill:var(--fl-success-subtle);stroke:var(--fl-success);stroke-width:1.5px}.fl-node--circle .fl-node__glyph{color:var(--fl-success);fill:var(--fl-success)}.fl-node__body--end{fill:var(--fl-node-bg);stroke:var(--fl-node-text);stroke-width:3px}.fl-node__end-core{fill:var(--fl-node-text)}.fl-node__body--event{fill:var(--fl-node-bg);stroke:var(--fl-warning);stroke-width:1.5px}.fl-node__event-inner{fill:none;stroke:var(--fl-warning);stroke-width:1.2px}.fl-node--event .fl-node__glyph{color:var(--fl-warning)}.fl-node__body--any{fill:var(--fl-node-bg);stroke:var(--fl-node-muted);stroke-width:1.5px;stroke-dasharray:3 3}.fl-node--any .fl-node__glyph{color:var(--fl-node-muted)}.fl-node__regions-rule,.fl-node__region-divider{stroke:var(--fl-node-border);stroke-width:1px}.fl-node__region-divider{stroke-dasharray:4 3}.fl-node__region-label{fill:var(--fl-node-muted);font-size:11px;font-weight:500}.fl-node__join rect{fill:var(--fl-info-subtle);stroke:color-mix(in srgb, var(--fl-info) 55%, transparent);stroke-width:1px}.fl-node__join text{fill:var(--fl-info);font-size:10.5px;font-weight:600}.fl-node--note .fl-node__body{fill:var(--fl-warning-subtle);stroke:color-mix(in srgb, var(--fl-warning) 45%, transparent)}.fl-node--note .fl-node__shadow{display:none}.fl-node--note .fl-node__label{fill:var(--fl-node-muted);font-size:13px;font-weight:400}.fl-node--diamond .fl-node__body{fill:var(--fl-node-bg)}.fl-node.fl-tone--accent .fl-node__body{stroke:var(--fl-accent);stroke-width:2px}.fl-node.fl-tone--success .fl-node__body{stroke:color-mix(in srgb, var(--fl-success) 70%, var(--fl-node-border));stroke-width:1.5px}.fl-node.fl-tone--danger .fl-node__body{stroke:var(--fl-danger);stroke-width:2px;fill:color-mix(in srgb, var(--fl-danger-subtle) 60%, var(--fl-node-bg))}.fl-node.fl-tone--warning .fl-node__body{stroke:var(--fl-warning);stroke-width:1.5px;stroke-dasharray:6 3}.fl-node.fl-tone--neutral .fl-node__body{stroke-dasharray:3 3}.fl-node.fl-tone--neutral .fl-node__label{fill:var(--fl-node-muted)}.fl-node.is-on-path:not(.has-status) .fl-node__body{stroke:color-mix(in srgb, var(--fl-accent) 60%, var(--fl-node-border))}.fl-node__halo{fill:none;stroke:var(--fl-accent);stroke-width:6px;opacity:.22;transform-box:fill-box;transform-origin:50%;pointer-events:none;animation:1.8s ease-in-out infinite fl-pulse}.fl-node.is-current .fl-node__halo{opacity:.32}.fl-node__ring{fill:none;stroke:var(--fl-accent);stroke-width:2px;pointer-events:none}.fl-node.is-focused:not(.is-selected) .fl-node__ring{stroke-dasharray:4 3}.fl-node__chip>circle,.fl-node__chip>rect{fill:var(--fl-node-muted);stroke:var(--fl-bg);stroke-width:2px}.fl-node__chip svg{color:#fff}.fl-node__chip text{fill:#fff;font-variant-numeric:tabular-nums;font-size:11px;font-weight:700}.fl-tone--success .fl-node__chip>circle,.fl-tone--success .fl-node__chip>rect{fill:var(--fl-success)}.fl-tone--danger .fl-node__chip>circle,.fl-tone--danger .fl-node__chip>rect{fill:var(--fl-danger)}.fl-tone--warning .fl-node__chip>circle,.fl-tone--warning .fl-node__chip>rect{fill:var(--fl-warning)}.fl-tone--warning .fl-node__chip svg{color:#422006}.fl-tone--warning .fl-node__chip text{fill:#422006}.fl-tone--accent .fl-node__chip>circle,.fl-tone--accent .fl-node__chip>rect{fill:var(--fl-accent)}.fl-tone--info .fl-node__chip>circle,.fl-tone--info .fl-node__chip>rect{fill:var(--fl-info)}.fl-node__chip--pulse .fl-node__pulse{opacity:.35;stroke:none;transform-box:fill-box;transform-origin:50%;animation:1.6s ease-out infinite fl-ping}.fl-node__count rect,.fl-edge-count rect{fill:var(--uid-surface-raised,#fff);stroke:var(--uid-border-default,#d4d4d8);stroke-width:1px}.fl-node__count text,.fl-edge-count text{fill:var(--uid-text-secondary,#71717a);font-variant-numeric:tabular-nums;font-size:11px;font-weight:600}.fl-node__count--accent rect,.fl-edge-label.is-path .fl-edge-count rect{fill:var(--fl-accent-subtle);stroke:color-mix(in srgb, var(--fl-accent) 70%, transparent)}.fl-node__count--accent text,.fl-edge-label.is-path .fl-edge-count text{fill:var(--uid-accent-text,var(--fl-accent))}.fl-node__count--danger rect{fill:var(--fl-danger-subtle);stroke:color-mix(in srgb, var(--fl-danger) 70%, transparent)}.fl-node__count--danger text{fill:var(--fl-danger)}.fl-node__enter{cursor:pointer}.fl-node__enter rect{fill:var(--fl-node-bg);stroke:var(--fl-node-border)}.fl-node__enter svg{color:var(--fl-node-muted)}.fl-node__enter:hover rect{stroke:var(--fl-accent);fill:var(--fl-accent-subtle)}.fl-node__enter:hover svg{color:var(--uid-accent-text,var(--fl-accent))}.fl-node__issue circle{stroke:var(--fl-bg);stroke-width:2px}.fl-node.has-error .fl-node__issue circle{fill:var(--fl-danger)}.fl-node.has-warning .fl-node__issue circle{fill:var(--fl-warning)}.fl-node__issue text{fill:#fff;font-size:11px;font-weight:800}.fl-node.has-error .fl-node__body{stroke:var(--fl-danger)}.fl-node.is-disabled{opacity:.5}.fl-node.is-disabled .fl-node__body{stroke-dasharray:4 3}.fl-node.is-disabled .fl-node__label tspan:not(.fl-node__desc){text-decoration:line-through}.fl-node-wrap.is-drop-target .fl-node__body{stroke:var(--fl-accent);stroke-width:2px}.fl-handle{cursor:crosshair}.fl-handle__hit{fill:#0000}.fl-handle__dot{fill:var(--fl-node-bg);stroke:var(--fl-accent);stroke-width:1.6px;transition:r .1s}.fl-handle:hover .fl-handle__dot,.fl-handle.is-snapped .fl-handle__dot{fill:var(--fl-accent);r:6.5}.fl-edge-end{fill:var(--fl-node-bg);stroke:var(--fl-accent);stroke-width:2px;cursor:move}.fl-edge-end:hover{fill:var(--fl-accent)}.fl-connect-preview{fill:none;stroke:var(--fl-accent);stroke-width:2px;stroke-dasharray:6 4;pointer-events:none}.fl-connect-preview.is-snapped{stroke-dasharray:none}.fl-band{fill:color-mix(in srgb, var(--fl-accent) 10%, transparent);stroke:var(--fl-accent);stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke;pointer-events:none}.fl-controls{background:var(--fl-node-bg);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);cursor:default;z-index:2;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;bottom:12px;left:12px}.fl-controls__zoom{font-variant-numeric:tabular-nums;min-width:52px}.fl-controls__sep{background:var(--uid-border-subtle,#e4e4e7);align-self:stretch;width:1px;margin:4px 2px}.fl-minimap{background:color-mix(in srgb, var(--fl-node-bg) 92%, transparent);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);cursor:pointer;z-index:2;position:absolute;bottom:12px;right:12px;overflow:hidden}.fl-minimap svg{touch-action:none;display:block}.fl-minimap__node{fill:color-mix(in srgb, var(--fl-node-muted) 45%, transparent)}.fl-minimap__node.is-current{fill:var(--fl-accent)}.fl-minimap__node.is-selected{fill:var(--uid-accent-text,var(--fl-accent))}.fl-minimap__group{fill:color-mix(in srgb, var(--fl-node-muted) 10%, transparent)}.fl-minimap__view{fill:color-mix(in srgb, var(--fl-accent) 8%, transparent);stroke:var(--fl-accent)}.fl-hovebar{background:var(--fl-node-bg);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--uid-radius-md,8px);box-shadow:var(--uid-shadow-md);cursor:default;z-index:3;white-space:nowrap;align-items:center;gap:6px;padding:4px 6px 4px 10px;display:flex;position:absolute;transform:translate(-50%,calc(-100% - 8px))}.fl-hovebar:after{content:"";height:10px;position:absolute;bottom:-10px;left:0;right:0}.fl-hovebar--edge{transform:translate(-50%,calc(-100% - 6px))}.fl-nav__join{flex:none;margin-left:4px}.fl-nav{background:var(--fl-node-bg);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--uid-radius-md,8px);max-width:min(640px,100% - 24px);box-shadow:var(--uid-shadow-sm);cursor:default;z-index:2;align-items:center;gap:4px;width:max-content;padding:3px 12px 3px 3px;display:flex;position:absolute;top:12px;left:12px;right:12px}.fl-nav__crumbs{flex:auto;min-width:0}.fl-status{background:color-mix(in srgb, var(--fl-node-bg) 94%, transparent);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--uid-radius-md,8px);max-width:calc(100% - 24px);box-shadow:var(--uid-shadow-sm);font-size:var(--uid-font-size-sm,13px);color:var(--fl-node-muted);cursor:default;z-index:2;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;padding:4px 6px 4px 12px;display:flex;position:absolute;top:12px;right:12px}.fl-view:has(.fl-nav) .fl-status{top:60px}.fl-status__text{font-variant-numeric:tabular-nums;white-space:nowrap}.fl-status__summary{flex-wrap:wrap;gap:4px;display:inline-flex}.fl-status__dot{background:var(--fl-node-muted);border-radius:50%;flex:none;width:8px;height:8px}.fl-status__dot.is-live{background:var(--fl-success);box-shadow:0 0 0 0 color-mix(in srgb, var(--fl-success) 60%, transparent);animation:2s ease-out infinite fl-live}.fl-status__dot.is-stale{background:var(--fl-warning)}.fl-status__dot.is-error{background:var(--fl-danger)}.fl-busy{background:color-mix(in srgb, var(--fl-bg) 60%, transparent);z-index:4;place-items:center;display:grid;position:absolute;inset:0}.fl-empty{text-align:center;cursor:default;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:24px;display:flex;position:absolute;inset:0}.fl-empty>*{pointer-events:auto}.fl-empty__title{font-size:var(--uid-font-size-lg,16px);color:var(--fl-node-text);margin:0;font-weight:600}.fl-empty__hint{max-width:360px;color:var(--fl-node-muted);font-size:var(--uid-font-size-sm,13px);margin:0;line-height:1.5}.fl-layout-error{color:var(--fl-danger);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.fl-details{flex-direction:column;gap:14px;display:flex}.fl-details__head{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fl-details__desc{color:var(--uid-text-secondary);margin:0;line-height:1.5}.fl-details__enter{align-self:flex-start}.fl-details__section{font-size:var(--uid-font-size-xs,12px);letter-spacing:.04em;text-transform:uppercase;color:var(--uid-text-secondary);margin:4px 0 0;font-weight:600}.fl-details code{font-family:var(--uid-font-family-mono,monospace);font-size:.92em}@keyframes fl-pulse{0%,to{opacity:.12;stroke-width:4px}50%{opacity:.34;stroke-width:9px}}@keyframes fl-ping{0%{opacity:.5;transform:scale(.8)}to{opacity:0;transform:scale(1.9)}}@keyframes fl-flow{to{stroke-dashoffset:-14px}}@keyframes fl-live{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--fl-success) 55%, transparent)}70%,to{box-shadow:0 0 0 6px #0000}}@media (prefers-reduced-motion:reduce){.fl-node__halo,.fl-node__chip--pulse .fl-node__pulse,.fl-edge__flow,.fl-status__dot.is-live{animation:none}.fl-canvas.is-animating .fl-viewport{transition:none}}@media (max-width:640px){.fl-minimap,.fl-status__summary,.fl-controls__zoom{display:none}}.fl-editor{background:var(--fl-node-bg);border:1px solid var(--uid-border-subtle,#e4e4e7);border-radius:var(--fl-radius);flex-direction:column;overflow:hidden}.fl-toolbar{border-bottom:1px solid var(--uid-border-subtle,#e4e4e7);background:var(--fl-node-bg);box-sizing:border-box;flex:none;align-items:center;gap:2px;min-height:44px;padding:6px 8px;display:flex}.fl-toolbar__sep{background:var(--uid-border-subtle,#e4e4e7);width:1px;height:20px;margin:0 6px}.fl-toolbar__spacer{flex:auto}.fl-toolbar__text{white-space:nowrap}.fl-editor__body{flex:auto;min-height:0;display:flex}.fl-editor__palette{border-right:1px solid var(--uid-border-subtle,#e4e4e7);box-sizing:border-box;flex:none;width:196px;padding:12px;overflow-y:auto}.fl-editor__canvas{flex:auto;min-width:0;display:flex;position:relative}.fl-editor__canvas .fl-canvas{border-radius:0}.fl-editor__side{border-left:1px solid var(--uid-border-subtle,#e4e4e7);box-sizing:border-box;flex:none;width:312px;padding:4px 14px 16px;overflow-y:auto}.fl-panel-title{font-size:var(--uid-font-size-xs,12px);letter-spacing:.04em;text-transform:uppercase;color:var(--fl-node-muted);margin:2px 2px 10px;font-weight:600}.fl-palette{flex-direction:column;gap:6px;display:flex}.fl-palette__item-wrap{display:flex}.fl-palette__item.uid-button{cursor:grab;touch-action:none;flex:auto;justify-content:flex-start}.fl-palette__hint{font-size:var(--uid-font-size-xs,12px);color:var(--fl-node-muted);margin:8px 2px 0;line-height:1.45}.fl-palette-ghost{z-index:1000;background:var(--uid-surface-raised,#fff);border:1.5px solid var(--uid-accent,#14b8a6);box-shadow:var(--uid-shadow-lg);color:var(--uid-text-primary);font:500 13px var(--uid-font-family-sans,system-ui, sans-serif);pointer-events:none;opacity:.92;border-radius:10px;padding:8px 14px;position:fixed;transform:translate(-50%,-50%)}.fl-props{flex-direction:column;gap:14px;padding-top:14px;display:flex}.fl-props__muted{color:var(--fl-node-muted);font-size:var(--uid-font-size-sm,13px);margin:0;line-height:1.5}.fl-props__route{color:var(--fl-node-text);font-weight:500}.fl-props__count{margin:0;font-weight:600}.fl-props__tools{flex-wrap:wrap;gap:4px;display:flex}.fl-props__section{border-top:1px solid var(--uid-border-subtle,#e4e4e7);flex-direction:column;gap:8px;padding-top:12px;display:flex}.fl-props__section h4{font-size:var(--uid-font-size-xs,12px);letter-spacing:.04em;text-transform:uppercase;color:var(--fl-node-muted);margin:0;font-weight:600}.fl-props__row{gap:6px;display:flex}.fl-props__kv{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) auto;align-items:center;gap:4px;display:grid}.fl-props__add,.fl-props__delete{align-self:flex-start}.fl-props__condition input{font-family:var(--uid-font-family-mono,monospace)}.fl-issues__summary{font-size:var(--uid-font-size-sm,13px);color:var(--fl-node-muted);margin:14px 0 8px}.fl-issues__none{color:var(--fl-success);font-size:var(--uid-font-size-sm,13px);align-items:center;gap:8px;margin:8px 0;display:flex}.fl-issues__list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.fl-issue.uid-button{text-align:left;white-space:normal;justify-content:flex-start;align-items:flex-start;width:100%;height:auto;min-height:32px;padding-top:6px;padding-bottom:6px}.fl-issue__text{font-weight:400;line-height:1.4}.fl-issue--error .uid-icon{color:var(--fl-danger)}.fl-issue--warning .uid-icon{color:var(--fl-warning)}.fl-tab-issues__count{margin-left:6px}.fl-hint{background:color-mix(in srgb, var(--fl-node-bg) 85%, transparent);color:var(--fl-node-muted);font-size:var(--uid-font-size-xs,12px);pointer-events:none;white-space:nowrap;border-radius:999px;margin:0;padding:4px 10px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.fl-editor-empty{flex-direction:column;align-items:center;gap:8px;max-width:400px;display:flex}.fl-editor-empty__actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px;display:flex}.fl-menu-label{flex:auto}.fl-menu-shortcut{font:inherit;font-size:var(--uid-font-size-xs,12px);color:var(--uid-text-tertiary,#a1a1aa);margin-left:16px}.fl-import{flex-direction:column;gap:12px;display:flex}.fl-import__source textarea{font-family:var(--uid-font-family-mono,monospace);font-size:13px}.fl-editor.is-narrow .fl-hint{display:none}.fl-toggle.uid-button.is-active{background:var(--fl-accent-subtle);color:var(--uid-accent-text,var(--fl-accent))}.fl-props__head{align-items:center;gap:8px;min-width:0;display:flex}.fl-props__head .uid-icon,.fl-props__head svg{color:var(--fl-node-muted);flex:none}.fl-props__kind{font-weight:600;font-size:var(--uid-font-size-sm,13px)}.fl-props__id{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--uid-font-family-mono,monospace);font-size:var(--uid-font-size-xs,12px);color:var(--fl-node-muted);margin-left:auto;overflow:hidden}.fl-props__transition.uid-button{justify-content:flex-start;width:100%}.fl-node__glyph-text{fill:var(--fl-node-text);pointer-events:none;font-size:20px;font-weight:600}.fl-node__number{fill:var(--fl-node-muted,var(--fl-node-text));pointer-events:none;font-size:11px;font-weight:600}.fl-node__body--plain{stroke:none}.fl-node__store-line{fill:none;stroke:var(--fl-node-border);stroke-width:1.5px}`,editor:`.dsk-wysiwyg-slash{z-index:1000;background:var(--dsk-wysiwyg-bg,#fff);border:1px solid var(--dsk-wysiwyg-border,#e5e7eb);border-radius:8px;flex-direction:column;gap:1px;min-width:220px;max-width:320px;max-height:280px;padding:4px;display:flex;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #00000014}.dsk-wysiwyg-slash__item{text-align:left;cursor:pointer;font:inherit;color:var(--dsk-wysiwyg-fg,#1f2937);background:0 0;border:0;border-radius:4px;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 10px;font-size:13px;display:flex}.dsk-wysiwyg-slash__item:hover,.dsk-wysiwyg-slash__item.is-active{background:var(--dsk-wysiwyg-btn-hover-bg,#0000000d)}.dsk-wysiwyg-slash__label{font-weight:500}.dsk-wysiwyg-slash__hint{color:var(--dsk-wysiwyg-fg-muted,#6b7280);font-size:11px}.dsk-wysiwyg{min-height:var(--dsk-wysiwyg-min-height,200px);max-height:var(--dsk-wysiwyg-max-height,none);--dsk-wysiwyg-bg:#fff;--dsk-wysiwyg-fg:#1f2937;--dsk-wysiwyg-fg-muted:#6b7280;--dsk-wysiwyg-border:#e5e7eb;--dsk-wysiwyg-border-focus:#2dd4bf;--dsk-wysiwyg-radius:8px;--dsk-wysiwyg-padding:12px 16px;--dsk-wysiwyg-toolbar-bg:#f9fafb;--dsk-wysiwyg-btn-active-bg:#2dd4bf29;--dsk-wysiwyg-btn-active-fg:#0d9488;--dsk-wysiwyg-btn-hover-bg:#0000000d;--dsk-wysiwyg-link-color:#2563eb;--dsk-wysiwyg-code-bg:#f3f4f6;--dsk-wysiwyg-code-fg:#b91c1c;--dsk-wysiwyg-blockquote-border:#d1d5db;--dsk-wysiwyg-error-bg:#fef2f2;--dsk-wysiwyg-error-fg:#b91c1c;--dsk-wysiwyg-tok-keyword:#7c3aed;--dsk-wysiwyg-tok-string:#16a34a;--dsk-wysiwyg-tok-comment:#6b7280;--dsk-wysiwyg-tok-number:#b45309;--dsk-wysiwyg-tok-tag:#2563eb;--dsk-wysiwyg-tok-attr:#b45309;--dsk-wysiwyg-tok-function:#0891b2;--dsk-wysiwyg-tok-punct:#6b7280;border:1px solid var(--dsk-wysiwyg-border);border-radius:var(--dsk-wysiwyg-radius);background:var(--dsk-wysiwyg-bg);color:var(--dsk-wysiwyg-fg);flex-direction:column;font-family:inherit;font-size:14px;line-height:1.55;transition:border-color .12s;display:flex;position:relative;overflow:hidden}.dsk-wysiwyg:focus-within{border-color:var(--dsk-wysiwyg-border-focus)}.dsk-wysiwyg--resizable{resize:vertical;overflow:hidden}.dsk-wysiwyg--readonly{background:var(--dsk-wysiwyg-toolbar-bg)}.dsk-wysiwyg--fullscreen{z-index:var(--dsk-wysiwyg-fullscreen-z,1000);background:var(--dsk-wysiwyg-bg);border-width:0;border-radius:0;min-height:0;max-height:none;position:fixed;inset:0;height:auto!important}.dsk-wysiwyg--fullscreen .dsk-wysiwyg__content{padding-inline:max(16px,50% - 480px)}html.dsk-wysiwyg-fullscreen-open,html.dsk-wysiwyg-fullscreen-open body{overflow:hidden}.dsk-wysiwyg-toolbar{background:var(--dsk-wysiwyg-toolbar-bg);border-bottom:1px solid var(--dsk-wysiwyg-border);flex-wrap:wrap;gap:2px;padding:6px 8px;display:flex}.dsk-wysiwyg-toolbar__btn{min-width:28px;height:28px;color:var(--dsk-wysiwyg-fg);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0 8px;font-size:13px;transition:background 80ms,color 80ms;display:inline-flex}.dsk-wysiwyg-toolbar__btn:hover:not(:disabled){background:var(--dsk-wysiwyg-btn-hover-bg)}.dsk-wysiwyg-toolbar__btn.is-active{background:var(--dsk-wysiwyg-btn-active-bg);color:var(--dsk-wysiwyg-btn-active-fg)}.dsk-wysiwyg-toolbar__btn:disabled{opacity:.4;cursor:not-allowed}.dsk-wysiwyg-toolbar__divider{background:var(--dsk-wysiwyg-border);width:1px;margin:4px}.dsk-wysiwyg__content{padding:var(--dsk-wysiwyg-padding);word-wrap:break-word;white-space:pre-wrap;cursor:text;outline:none;flex:auto;min-height:0;overflow-y:auto}.dsk-wysiwyg__source-wrap{background:var(--dsk-wysiwyg-code-bg);flex:auto;min-height:0;position:relative}.dsk-wysiwyg__source,.dsk-wysiwyg__source-highlight{box-sizing:border-box;width:100%;height:100%;padding:var(--dsk-wysiwyg-padding);tab-size:2;letter-spacing:0;white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word;margin:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.5;display:block}.dsk-wysiwyg__source-highlight{color:var(--dsk-wysiwyg-fg);pointer-events:none;background:0 0;border:0;position:absolute;inset:0;overflow:hidden}.dsk-wysiwyg__source{z-index:1;resize:none;color:#0000;caret-color:var(--dsk-wysiwyg-fg);background:0 0;border:0;outline:none;position:relative;overflow:auto}.dsk-wysiwyg__source::selection{color:#0000;background:#2dd4bf4d}.dsk-wysiwyg__source::placeholder{color:var(--dsk-wysiwyg-fg-muted);opacity:.6}.dsk-wysiwyg__content p:not([data-dsk-preview-live] *){margin:0 0 .75em}.dsk-wysiwyg__content p:last-child:not([data-dsk-preview-live] *){margin-bottom:0}.dsk-wysiwyg__content h1:not([data-dsk-preview-live] *),.dsk-wysiwyg__content h2:not([data-dsk-preview-live] *),.dsk-wysiwyg__content h3:not([data-dsk-preview-live] *){margin:1em 0 .5em;font-weight:600;line-height:1.25}.dsk-wysiwyg__content h1:not([data-dsk-preview-live] *){font-size:1.6em}.dsk-wysiwyg__content h2:not([data-dsk-preview-live] *){font-size:1.35em}.dsk-wysiwyg__content h3:not([data-dsk-preview-live] *){font-size:1.15em}.dsk-wysiwyg__content ul:not([data-dsk-preview-live] *),.dsk-wysiwyg__content ol:not([data-dsk-preview-live] *){margin:.5em 0;padding-left:1.5em}.dsk-wysiwyg__content li:not([data-dsk-preview-live] *){margin:.2em 0}.dsk-wysiwyg__content blockquote:not([data-dsk-preview-live] *){border-left:3px solid var(--dsk-wysiwyg-blockquote-border);color:var(--dsk-wysiwyg-fg-muted);margin:.5em 0;padding-left:1em}.dsk-wysiwyg__content code:not([data-dsk-preview-live] *){background:var(--dsk-wysiwyg-code-bg);color:var(--dsk-wysiwyg-code-fg);border-radius:3px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.92em}.dsk-wysiwyg__content pre:not([data-dsk-preview-live] *){color:#f4f4f5;background:#18181b;border-radius:6px;margin:.5em 0;padding:12px 14px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.9em;overflow-x:auto}.dsk-wysiwyg__content pre code:not([data-dsk-preview-live] *){color:inherit;background:0 0;padding:0}.dsk-wysiwyg__content pre[data-dsk-preview-state=view]{display:none}.dsk-wysiwyg__content pre[data-dsk-preview-state=edit],.dsk-wysiwyg__content pre[data-dsk-preview-state=error]{border-bottom-right-radius:0;border-bottom-left-radius:0;margin-bottom:0}.dsk-wysiwyg__preview{cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:6px;margin:.5em 0;padding:8px;overflow-x:auto}.dsk-wysiwyg__preview:empty{display:none}.dsk-wysiwyg__preview>svg{max-width:100%;height:auto;margin:0 auto;display:block}.dsk-wysiwyg__preview:hover{border-color:var(--dsk-wysiwyg-border)}.dsk-wysiwyg--readonly .dsk-wysiwyg__preview{cursor:default}.dsk-wysiwyg--readonly .dsk-wysiwyg__preview:hover{border-color:#0000}pre[data-dsk-preview-state=edit]+.dsk-wysiwyg__preview,pre[data-dsk-preview-state=error]+.dsk-wysiwyg__preview{border-color:var(--dsk-wysiwyg-border);cursor:default;border-top-left-radius:0;border-top-right-radius:0;margin-top:0}.dsk-wysiwyg__preview[data-error]{padding:0}.dsk-wysiwyg__preview[data-dsk-preview-live]{cursor:auto;-webkit-user-select:text;user-select:text;white-space:normal;word-wrap:normal;padding:0;overflow:visible}.dsk-wysiwyg__preview[data-dsk-preview-live]:hover{border-color:#0000}.dsk-wysiwyg__preview-error{background:var(--dsk-wysiwyg-error-bg);color:var(--dsk-wysiwyg-error-fg);white-space:pre-wrap;padding:8px 12px;font-size:.9em}.dsk-wysiwyg .dsk-tok-keyword{color:var(--dsk-wysiwyg-tok-keyword)}.dsk-wysiwyg .dsk-tok-string{color:var(--dsk-wysiwyg-tok-string)}.dsk-wysiwyg .dsk-tok-comment{color:var(--dsk-wysiwyg-tok-comment);font-style:italic}.dsk-wysiwyg .dsk-tok-number{color:var(--dsk-wysiwyg-tok-number)}.dsk-wysiwyg .dsk-tok-tag{color:var(--dsk-wysiwyg-tok-tag)}.dsk-wysiwyg .dsk-tok-attr{color:var(--dsk-wysiwyg-tok-attr)}.dsk-wysiwyg .dsk-tok-function{color:var(--dsk-wysiwyg-tok-function)}.dsk-wysiwyg .dsk-tok-punct{color:var(--dsk-wysiwyg-tok-punct)}.dsk-wysiwyg__content a:not([data-dsk-preview-live] *){color:var(--dsk-wysiwyg-link-color);text-decoration:underline}.dsk-wysiwyg__content img:not([data-dsk-preview-live] *){border-radius:4px;max-width:100%;height:auto}.dsk-wysiwyg__content hr:not([data-dsk-preview-live] *){border:0;border-top:1px solid var(--dsk-wysiwyg-border);margin:1em 0}.dsk-wysiwyg__content table:not([data-dsk-preview-live] *){border-collapse:collapse;width:100%;margin:.75em 0}.dsk-wysiwyg__content th:not([data-dsk-preview-live] *),.dsk-wysiwyg__content td:not([data-dsk-preview-live] *){border:1px solid var(--dsk-wysiwyg-border);vertical-align:top;min-width:40px;padding:6px 10px}.dsk-wysiwyg__content th:not([data-dsk-preview-live] *){background:var(--dsk-wysiwyg-toolbar-bg);text-align:left;font-weight:600}.dsk-wysiwyg--empty .dsk-wysiwyg__content:before{content:attr(data-placeholder);color:var(--dsk-wysiwyg-fg-muted);pointer-events:none;position:absolute}.dsk-wysiwyg--dark-theme,:where(:root[data-theme=dark],:root.dark,[data-theme=dark]) .dsk-wysiwyg{--dsk-wysiwyg-bg:#18181b;--dsk-wysiwyg-fg:#e5e7eb;--dsk-wysiwyg-fg-muted:#9ca3af;--dsk-wysiwyg-border:#3f3f46;--dsk-wysiwyg-toolbar-bg:#27272a;--dsk-wysiwyg-btn-hover-bg:#ffffff0f;--dsk-wysiwyg-code-bg:#27272a;--dsk-wysiwyg-code-fg:#f87171;--dsk-wysiwyg-blockquote-border:#52525b;--dsk-wysiwyg-tok-keyword:#c084fc;--dsk-wysiwyg-tok-string:#86efac;--dsk-wysiwyg-tok-comment:#71717a;--dsk-wysiwyg-tok-number:#fbbf24;--dsk-wysiwyg-tok-tag:#f87171;--dsk-wysiwyg-tok-attr:#60a5fa;--dsk-wysiwyg-tok-function:#38bdf8;--dsk-wysiwyg-tok-punct:#d4d4d8}@media (prefers-color-scheme:dark){:where(.dsk-wysiwyg){--dsk-wysiwyg-bg:#18181b;--dsk-wysiwyg-fg:#e5e7eb;--dsk-wysiwyg-fg-muted:#9ca3af;--dsk-wysiwyg-border:#3f3f46;--dsk-wysiwyg-toolbar-bg:#27272a;--dsk-wysiwyg-btn-hover-bg:#ffffff0f;--dsk-wysiwyg-code-bg:#27272a;--dsk-wysiwyg-code-fg:#f87171;--dsk-wysiwyg-blockquote-border:#52525b;--dsk-wysiwyg-tok-keyword:#c084fc;--dsk-wysiwyg-tok-string:#86efac;--dsk-wysiwyg-tok-comment:#71717a;--dsk-wysiwyg-tok-number:#fbbf24;--dsk-wysiwyg-tok-tag:#f87171;--dsk-wysiwyg-tok-attr:#60a5fa;--dsk-wysiwyg-tok-function:#38bdf8;--dsk-wysiwyg-tok-punct:#d4d4d8}}:where(:root[data-theme=light],:root.light,[data-theme=light]) .dsk-wysiwyg{--dsk-wysiwyg-bg:#fff;--dsk-wysiwyg-fg:#1f2937;--dsk-wysiwyg-fg-muted:#6b7280;--dsk-wysiwyg-border:#e5e7eb;--dsk-wysiwyg-toolbar-bg:#f9fafb;--dsk-wysiwyg-btn-hover-bg:#0000000d;--dsk-wysiwyg-code-bg:#f3f4f6;--dsk-wysiwyg-code-fg:#b91c1c;--dsk-wysiwyg-blockquote-border:#d1d5db;--dsk-wysiwyg-tok-keyword:#7c3aed;--dsk-wysiwyg-tok-string:#16a34a;--dsk-wysiwyg-tok-comment:#6b7280;--dsk-wysiwyg-tok-number:#b45309;--dsk-wysiwyg-tok-tag:#2563eb;--dsk-wysiwyg-tok-attr:#b45309;--dsk-wysiwyg-tok-function:#0891b2;--dsk-wysiwyg-tok-punct:#6b7280}`,board:`.bd-root{--bd-text:var(--uid-color-text,#1f2937);--bd-stroke:var(--uid-color-text,#1f2937);--bd-shape-fill:var(--uid-color-surface,#fff);--bd-surface:var(--uid-color-surface,#fff);--bd-frame-fill:var(--uid-color-surface-subtle,#f6f7f9);--bd-frame-stroke:var(--uid-color-border,#d5d9e0);--bd-frame-title:var(--uid-color-text-muted,#5b6472);--bd-connector:var(--uid-color-text-muted,#475569);--bd-accent:var(--uid-color-primary,#14b8a6);--bd-canvas:var(--uid-color-bg,#fbfbfc);--bd-dot:var(--uid-color-border,#d5d9e0);--bd-mini:var(--uid-color-text-subtle,#9aa3af);background:var(--bd-canvas);-webkit-user-select:none;user-select:none;touch-action:none;outline:none;width:100%;height:100%;min-height:320px;font-family:inherit;position:relative;overflow:hidden}.bd-canvas{cursor:default;width:100%;height:100%;display:block;position:absolute;inset:0}.bd-tool-hand .bd-canvas,.bd-panning .bd-canvas,.bd-root--readonly .bd-canvas{cursor:grab}.bd-tool-pen .bd-canvas,.bd-tool-marker .bd-canvas,.bd-tool-eraser .bd-canvas,.bd-tool-sticky .bd-canvas,.bd-tool-shape .bd-canvas,.bd-tool-text .bd-canvas,.bd-tool-frame .bd-canvas,.bd-tool-connector .bd-canvas,.bd-tool-emoji .bd-canvas{cursor:crosshair}.bd-dot{fill:var(--bd-dot)}.bd-text{white-space:pre;font-family:inherit}.bd-emoji{font-family:Apple Color Emoji,Segoe UI Emoji,Noto Color Emoji,sans-serif}.bd-editing .bd-text{visibility:hidden}.bd-overlay{pointer-events:none}.bd-group-outline{fill:none;stroke:var(--bd-accent);stroke-width:1px;stroke-dasharray:4 3}.bd-outline{fill:none;stroke:var(--bd-accent);stroke-width:1.5px}.bd-guide{stroke:#ec4899;stroke-width:1px;stroke-dasharray:4 3}.bd-marquee{fill:color-mix(in srgb, var(--bd-accent) 10%, transparent);stroke:var(--bd-accent);stroke-width:1px}.bd-create{fill:none;stroke:var(--bd-accent);stroke-width:1.5px;stroke-dasharray:5 4}.bd-connect-line{stroke:var(--bd-accent);stroke-width:2px;stroke-dasharray:6 4}.bd-drop{fill:none;stroke:var(--bd-accent);stroke-width:2px}.bd-handle{pointer-events:all;fill:var(--bd-surface);stroke:var(--bd-accent);stroke-width:1.5px}.bd-handle--n,.bd-handle--s{cursor:ns-resize}.bd-handle--e,.bd-handle--w{cursor:ew-resize}.bd-handle--nw,.bd-handle--se{cursor:nwse-resize}.bd-handle--ne,.bd-handle--sw{cursor:nesw-resize}.bd-handle--rotate{cursor:grab}.bd-handle--from,.bd-handle--to{cursor:move;fill:var(--bd-accent)}.bd-text-editor{z-index:5;outline:2px solid var(--bd-accent);outline-offset:2px;color:var(--bd-text);resize:none;transform-origin:50%;-webkit-user-select:text;user-select:text;background:0 0;border:none;margin:0;padding:0;font-family:inherit;position:absolute;overflow:hidden}.bd-panel{z-index:10;border:1px solid var(--uid-color-border,#e5e7eb);background:var(--bd-surface);border-radius:10px;align-items:center;gap:2px;padding:4px;display:flex;position:absolute;box-shadow:0 4px 16px #0f172a14}.bd-tools{flex-direction:column;top:50%;left:12px;transform:translateY(-50%)}.bd-sep{background:var(--uid-color-border,#e5e7eb);width:1px;height:20px;margin:0 4px}.bd-tools .bd-sep{width:20px;height:1px;margin:4px 0}.bd-flyout{flex-wrap:wrap;width:156px;top:50%;left:64px;transform:translateY(-50%)}.bd-flyout--emoji{width:240px}.bd-swatch-btn,.bd-emoji-btn{width:36px;height:32px;color:var(--bd-text);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:20px;display:inline-flex}.bd-emoji-btn{width:28px;height:28px;font-size:18px}.bd-swatch-btn:hover,.bd-emoji-btn:hover,.bd-swatch-btn.is-active,.bd-emoji-btn.is-active{background:color-mix(in srgb, var(--bd-accent) 14%, transparent)}.bd-bar{white-space:nowrap;flex-wrap:nowrap;transform:translate(-50%)}.bd-color{cursor:pointer;border:1px solid #0000001f;border-radius:50%;width:20px;height:20px;margin:0 2px;padding:0}.bd-color--sm{width:16px;height:16px}.bd-color--ring{background:0 0;border-width:3px}.bd-label{color:var(--uid-color-text-muted,#6b7280);margin:0 2px 0 6px;font-size:12px}.bd-select{border:1px solid var(--uid-color-border,#e5e7eb);background:var(--bd-surface);height:28px;color:var(--bd-text);font:inherit;border-radius:6px;margin:0 4px;font-size:13px}.bd-corner{z-index:10;pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:12px;right:12px}.bd-corner>*{pointer-events:auto}.bd-corner .bd-panel{position:static}.bd-minimap{cursor:pointer;padding:0;overflow:hidden}.bd-minimap svg{background:var(--bd-canvas);display:block}.bd-mini-view{fill:color-mix(in srgb, var(--bd-accent) 12%, transparent);stroke:var(--bd-accent);stroke-width:1.5px}.bd-zoom-pct{font-variant-numeric:tabular-nums;min-width:52px}.bd-export{flex-direction:column;align-items:stretch}.bd-export button{color:var(--bd-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 12px;font-size:13px}.bd-export button:hover{background:color-mix(in srgb, var(--bd-accent) 12%, transparent)}.bd-hint{color:var(--uid-color-text-muted,#6b7280);pointer-events:none;font-size:15px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.bd-delete{color:var(--uid-color-danger,#ef4444)}:is([data-theme=dark],[data-color-mode=dark]) .bd-root{--bd-shadow:#0006}.bd-status{gap:4px;padding:4px 8px;top:12px;right:12px}.bd-status-dot{background:#10b981;border-radius:50%;width:8px;height:8px}.bd-status--connecting .bd-status-dot{background:#f59e0b}.bd-status--offline .bd-status-dot{background:#ef4444}.bd-avatar{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:600;display:inline-flex}.bd-cursor{transition:transform .1s linear}.bd-cursor text{font-family:inherit}.bd-erasing{opacity:.25}.bd-flyout--ink{width:196px}.bd-flyout-break{flex-basis:100%;height:4px}.bd-color.is-active{outline:2px solid var(--bd-accent);outline-offset:2px}.bd-width-dot{border-radius:50%;display:block}.bd-live-stroke{pointer-events:none}.bd-avatar--me{box-shadow:0 0 0 2px var(--bd-surface), 0 0 0 3.5px currentColor;color:#fff}.bd-avatar-sep{background:var(--uid-color-border,#e5e7eb);width:1px;height:16px;margin:0 2px}.bd-locked{color:var(--bd-text);gap:8px;padding:6px 8px 6px 12px;font-size:13px;top:12px;left:50%;transform:translate(-50%)}.bd-flyout--templates{flex-flow:column;gap:2px;width:300px;top:72px;transform:none}.bd-template{color:var(--bd-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.bd-template:hover,.bd-template:focus-visible{background:color-mix(in srgb, var(--bd-accent) 10%, transparent);outline:none}.bd-template__title{font-size:13px;font-weight:600}.bd-template__desc{color:var(--bd-frame-title);font-size:12px}`,bpmn:`.bpmn-ed{--bpmn-ed-accent:var(--uid-color-primary,#2563eb);--bpmn-ed-danger:var(--uid-color-danger,#dc2626);--bpmn-ed-surface:var(--uid-color-surface,#fff);--bpmn-ed-canvas:var(--uid-color-bg,#fbfbfc);--bpmn-ed-border:var(--uid-color-border,#d5d9e0);--bpmn-ed-text:var(--uid-color-text,#1f2937);--bpmn-ed-muted:var(--uid-color-text-muted,#5b6472);--bpmn-ed-dot:var(--uid-color-border,#d5d9e0);--bpmn-stroke:var(--uid-color-text,#22242a);--bpmn-text:var(--uid-color-text,#22242a);--bpmn-fill:var(--uid-color-surface,#fff);--bpmn-pool-fill:var(--uid-color-surface,#fff);--bpmn-label-halo:var(--bpmn-ed-canvas);--bpmn-group-stroke:var(--uid-color-text-muted,#22242a);--bpmn-annotation-stroke:var(--uid-color-text-muted,#22242a);background:var(--bpmn-ed-canvas);width:100%;height:100%;min-height:360px;color:var(--bpmn-ed-text);-webkit-user-select:none;user-select:none;outline:none;display:flex;position:relative;overflow:hidden}.bpmn-ed--readonly{--bpmn-ed-canvas:transparent}.bpmn-ed-stage{flex:1;min-width:0;position:relative;overflow:hidden}.bpmn-ed-canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.bpmn-ed-dot{fill:var(--bpmn-ed-dot)}.bpmn-ed-overlay{pointer-events:none}.bpmn-ed-hover{fill:none;stroke:var(--bpmn-ed-accent);stroke-opacity:.5;stroke-dasharray:4 3}.bpmn-ed-selected{fill:none;stroke:var(--bpmn-ed-accent)}.bpmn-ed-selected.bpmn-ed-edge-outline,.bpmn-ed-highlight.bpmn-ed-edge-outline{stroke-opacity:.35;stroke-linecap:round;stroke-linejoin:round}.bpmn-ed-highlight{fill:none;stroke:var(--bpmn-ed-accent);stroke-opacity:.6}.bpmn-ed-ghost{fill:color-mix(in srgb, var(--bpmn-ed-accent) 8%, transparent);stroke:var(--bpmn-ed-accent);stroke-dasharray:5 4}.bpmn-ed-marquee{fill:color-mix(in srgb, var(--bpmn-ed-accent) 10%, transparent);stroke:var(--bpmn-ed-accent)}.bpmn-ed-drop{fill:none;stroke:#16a34a}.bpmn-ed-drop-bad{fill:none;stroke:var(--bpmn-ed-danger)}.bpmn-ed-connect{stroke:var(--bpmn-ed-muted);stroke-dasharray:6 4}.bpmn-ed-connect--ok{stroke:#16a34a}.bpmn-ed-handle{pointer-events:all;fill:var(--bpmn-ed-surface);stroke:var(--bpmn-ed-accent)}.bpmn-ed-handle--nw,.bpmn-ed-handle--se{cursor:nwse-resize}.bpmn-ed-handle--ne,.bpmn-ed-handle--sw{cursor:nesw-resize}.bpmn-ed-panel{z-index:3;background:var(--bpmn-ed-surface);border:1px solid var(--bpmn-ed-border);border-radius:8px;gap:2px;padding:4px;display:flex;position:absolute;box-shadow:0 2px 8px #0f172a14}.bpmn-ed-palette{flex-direction:column;top:12px;left:12px}.bpmn-ed-pad{flex-wrap:wrap;width:112px}.bpmn-ed-controls{align-items:center;bottom:12px;right:12px}.bpmn-ed-sep{background:var(--bpmn-ed-border);align-self:stretch;width:1px;margin:2px 4px}.bpmn-ed-zoom{min-width:48px;color:var(--bpmn-ed-muted);font:inherit;cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:12px}.bpmn-ed-danger{color:var(--bpmn-ed-danger)}.bpmn-ed-icon{display:block}.bpmn-ed-menu{flex-direction:column;min-width:180px;max-height:60%;overflow:auto}.bpmn-ed-menu--download{bottom:56px;right:12px}.bpmn-ed-menu-item{color:var(--bpmn-ed-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 10px;font-size:13px}.bpmn-ed-menu-item:hover{background:color-mix(in srgb, var(--bpmn-ed-accent) 10%, transparent)}.bpmn-ed-menu-item--current{font-weight:600}.bpmn-ed-swatches{gap:6px;padding:2px;display:flex}.bpmn-ed-swatch{cursor:pointer;border:2px solid;border-radius:50%;width:22px;height:22px;padding:0}.bpmn-ed-text{z-index:4;box-sizing:border-box;outline:2px solid var(--bpmn-ed-accent);background:var(--bpmn-ed-surface);color:var(--bpmn-ed-text);text-align:center;resize:none;-webkit-user-select:text;user-select:text;border:none;border-radius:4px;margin:0;padding:2px 4px;font-family:Arial,Helvetica Neue,Helvetica,sans-serif;line-height:1.2;position:absolute;overflow:hidden}.bpmn-ed-text--inside{align-items:center;padding-top:.6em;display:flex}.bpmn-ed-message{z-index:5;background:var(--bpmn-ed-text);color:var(--bpmn-ed-surface);pointer-events:none;border-radius:6px;padding:6px 12px;font-size:13px;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.bpmn-ed-properties{border-left:1px solid var(--bpmn-ed-border);background:var(--bpmn-ed-surface);flex:none;width:280px;overflow:auto}.bpmn-props{-webkit-user-select:text;user-select:text;flex-direction:column;gap:12px;padding:12px;display:flex}.bpmn-props__head{align-items:center;gap:8px;display:flex}.bpmn-props__kind{font-size:14px;font-weight:600}.bpmn-props__hint{color:var(--bpmn-ed-muted);margin:0;font-size:13px}.dmn-ed-logic-view{background:var(--bpmn-ed-surface);padding:12px 16px 24px;position:absolute;inset:0;overflow:auto}.dmn-ed-crumbs{align-items:center;gap:2px;margin-bottom:8px;display:flex}.dmn-ed-logic{-webkit-user-select:text;user-select:text;flex-direction:column;gap:12px;display:flex}.dmn-ed-logic__head{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.dmn-ed-logic__name{margin:0 auto 6px 0;font-size:18px;font-weight:600}.dmn-ed-logic__head .uid-form-field{min-width:180px}.dmn-ed-table-wrap{flex-direction:column;align-items:flex-start;gap:8px;display:flex;position:relative}.dmn-ed-table{border-collapse:collapse;font-size:13px}.dmn-ed-table th,.dmn-ed-table td{border:1px solid var(--bpmn-ed-border);vertical-align:top;text-align:left;padding:0}.dmn-ed-table thead th{background:color-mix(in srgb, var(--bpmn-ed-border) 30%, var(--bpmn-ed-surface));padding:6px 8px;font-weight:600}.dmn-ed-hit{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-align:center!important}.dmn-ed-col{cursor:pointer;min-width:120px}.dmn-ed-col:hover{background:color-mix(in srgb, var(--bpmn-ed-accent) 12%, var(--bpmn-ed-surface))!important}.dmn-ed-col__sub{color:var(--bpmn-ed-muted);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;font-weight:400}.dmn-ed-col__type{color:var(--bpmn-ed-muted);font-size:11px;font-weight:400}.dmn-ed-first-output,.dmn-ed-first-annotation{border-left:3px double var(--bpmn-ed-border)!important}.dmn-ed-index{color:var(--bpmn-ed-muted);text-align:right!important;padding:6px 8px!important}.dmn-ed-cell textarea{box-sizing:border-box;width:100%;min-width:120px;min-height:30px;color:var(--bpmn-ed-text);resize:vertical;background:0 0;border:none;outline:none;margin:0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;display:block}.dmn-ed-cell--note textarea{font-family:inherit;font-size:13px}.dmn-ed-cell textarea:focus{box-shadow:inset 0 0 0 2px var(--bpmn-ed-accent)}.dmn-ed-actions{white-space:nowrap;background:0 0!important;border:none!important;padding:0 2px!important}.dmn-ed-empty{color:var(--bpmn-ed-muted);text-align:center!important;padding:10px!important}.dmn-ed-table-tools{gap:8px;display:flex}.dmn-ed-column-form{z-index:4;background:var(--bpmn-ed-surface);border:1px solid var(--bpmn-ed-border);border-radius:8px;flex-direction:column;gap:10px;width:260px;padding:12px;display:flex;position:absolute;top:0;right:0;box-shadow:0 4px 16px #0f172a1f}.dmn-ed-column-form__head,.dmn-ed-column-form__actions{justify-content:space-between;align-items:center;gap:8px;display:flex}.dmn-ed-literal{flex-direction:column;gap:12px;max-width:720px;display:flex}.dmn-ed-literal textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.dmn-ed-hint{color:var(--bpmn-ed-muted);margin:0}`},L=class extends Error{constructor(e,t=0,n=0,r){super(t>0?`${e} (line ${t}${n>0?`, column ${n}`:``})`:e),this.line=t,this.column=n,this.hint=r,this.name=`DiagramError`}};function we(e,t,n){return new L(`The diagram has ${t} ${e}; the limit is ${n}.`,0,0,`Split it into several diagrams.`)}var Te=`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`,R={size:14,family:Te},Ee={"--dg-font-family":Te,"--dg-text":`#1f2937`,"--dg-text-muted":`#6b7280`,"--dg-background":`transparent`,"--dg-line":`#64748b`,"--dg-node-fill":`#eef2ff`,"--dg-node-stroke":`#6366f1`,"--dg-node-text":`#1e1b4b`,"--dg-row-fill":`#ffffff`,"--dg-row-alt-fill":`#f5f7ff`,"--dg-cluster-fill":`#f8fafc`,"--dg-cluster-stroke":`#cbd5e1`,"--dg-cluster-text":`#334155`,"--dg-edge-label-fill":`#ffffff`,"--dg-note-fill":`#fef9c3`,"--dg-note-stroke":`#ca8a04`,"--dg-note-text":`#422006`,"--dg-actor-fill":`#eef2ff`,"--dg-actor-stroke":`#6366f1`,"--dg-activation-fill":`#e0e7ff`,"--dg-block-stroke":`#94a3b8`,"--dg-block-label-fill":`#e2e8f0`,"--dg-grid":`#e5e7eb`,"--dg-task-fill":`#818cf8`,"--dg-task-stroke":`#4f46e5`,"--dg-task-done-fill":`#cbd5e1`,"--dg-task-done-stroke":`#64748b`,"--dg-task-active-fill":`#c7d2fe`,"--dg-task-crit-fill":`#f87171`,"--dg-task-crit-stroke":`#b91c1c`,"--dg-task-text":`#ffffff`,"--dg-task-text-dark":`#1f2937`,"--dg-exclude-fill":`rgba(148, 163, 184, 0.18)`,"--dg-today":`#ef4444`,"--dg-section-fill-0":`rgba(99, 102, 241, 0.06)`,"--dg-section-fill-1":`rgba(100, 116, 139, 0.06)`,"--dg-state-start":`#1f2937`,"--dg-lifeline":`#94a3b8`,"--dg-number-text":`#ffffff`,"--dg-rect-fill":`rgba(148, 163, 184, 0.12)`,"--dg-pie-stroke":`#ffffff`,"--dg-journey-face":`#fde68a`,"--dg-journey-face-sad":`#fecaca`,"--dg-journey-face-happy":`#bbf7d0`,"--dg-quadrant-1":`rgba(99, 102, 241, 0.12)`,"--dg-quadrant-2":`rgba(14, 165, 233, 0.10)`,"--dg-quadrant-3":`rgba(148, 163, 184, 0.12)`,"--dg-quadrant-4":`rgba(16, 185, 129, 0.10)`,"--dg-pie-text":`#ffffff`,"--dg-c4-person-fill":`#08427b`,"--dg-c4-person-stroke":`#052e56`,"--dg-c4-person-text":`#ffffff`,"--dg-c4-system-fill":`#1168bd`,"--dg-c4-system-stroke":`#0b4884`,"--dg-c4-system-text":`#ffffff`,"--dg-c4-container-fill":`#438dd5`,"--dg-c4-container-stroke":`#2e6295`,"--dg-c4-container-text":`#ffffff`,"--dg-c4-component-fill":`#85bbf0`,"--dg-c4-component-stroke":`#5d82a8`,"--dg-c4-component-text":`#0b2540`,"--dg-c4-external-fill":`#7b7b7b`,"--dg-c4-external-stroke":`#5c5c5c`,"--dg-c4-external-text":`#ffffff`,"--dg-c4-boundary-stroke":`#6b7280`,"--dg-c4-boundary-text":`#1f2937`,"--dg-c4-node-fill":`rgba(148, 163, 184, 0.08)`,"--dg-c4-node-stroke":`#6b7280`,"--dg-c4-node-text":`#1f2937`},De=[`#6366f1`,`#f59e0b`,`#10b981`,`#ef4444`,`#06b6d4`,`#8b5cf6`,`#84cc16`,`#ec4899`,`#f97316`,`#14b8a6`,`#64748b`,`#a855f7`];function Oe(e){let t=e%De.length;return`var(--dg-pie-${t+1}, ${De[t]})`}function z(e){let t=Ee[e];return t===void 0?`var(${e})`:`var(${e}, ${t})`}function ke(e,t=``){let n=`#${e}`;return[`${n}{font-family:${z(`--dg-font-family`)};font-size:${R.size}px;color:${z(`--dg-text`)}}`,`${n} text{fill:${z(`--dg-text`)}}`,`${n} .dg-label{fill:${z(`--dg-node-text`)}}`,`${n} .dg-node .dg-shape{fill:${z(`--dg-node-fill`)};stroke:${z(`--dg-node-stroke`)};stroke-width:1.5px}`,`${n} .dg-cluster-box{fill:${z(`--dg-cluster-fill`)};stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${n} .dg-cluster-label{fill:${z(`--dg-cluster-text`)};font-weight:600}`,`${n} .dg-cluster-title .dg-cluster-label{stroke:${z(`--dg-cluster-fill`)};stroke-width:4px;stroke-linejoin:round;paint-order:stroke}`,`${n} .dg-edge{fill:none;stroke:${z(`--dg-line`)};stroke-width:1.5px}`,`${n} .dg-edge-thick{stroke-width:3.5px}`,`${n} .dg-edge-dotted{stroke-dasharray:3 3}`,`${n} .dg-marker{fill:${z(`--dg-line`)};stroke:${z(`--dg-line`)}}`,`${n} .dg-edge-label-box{fill:${z(`--dg-edge-label-fill`)};opacity:0.9}`,`${n} .dg-edge-label{fill:${z(`--dg-text`)}}`,`${n} .dg-muted{fill:${z(`--dg-text-muted`)}}`,`${n} a{cursor:pointer}`,t].filter(Boolean).join(``)}var Ae=/^[a-zA-Z][a-zA-Z0-9:_-]*$/;function B(e,t={},n=[]){if(!Ae.test(e))throw Error(`Invalid SVG tag name: ${e}`);return{tag:e,attrs:t,children:n.filter(e=>!!e)}}function je(e){return{text:e}}function Me(e){return e.replace(/[&<>]/g,e=>e===`&`?`&amp;`:e===`<`?`&lt;`:`&gt;`)}function Ne(e){return e.replace(/[&<>"']/g,e=>{switch(e){case`&`:return`&amp;`;case`<`:return`&lt;`;case`>`:return`&gt;`;case`"`:return`&quot;`;default:return`&#39;`}})}function V(e){if(!Number.isFinite(e))return`0`;let t=Math.round(e*100)/100;return Object.is(t,-0)?`0`:String(t)}function Pe(e){let t=``;for(let[n,r]of Object.entries(e))if(r!=null&&r!==!1){if(!Ae.test(n))throw Error(`Invalid SVG attribute name: ${n}`);t+=r===!0?` ${n}=""`:typeof r==`number`?` ${n}="${V(r)}"`:` ${n}="${Ne(r)}"`}return t}function Fe(e){if(`text`in e)return Me(e.text);let t=Pe(e.attrs);return e.children.length===0?`<${e.tag}${t}/>`:`<${e.tag}${t}>${e.children.map(Fe).join(``)}</${e.tag}>`}var H=class{constructor(){this.parts=[]}moveTo(e,t){return this.parts.push(`M${V(e)},${V(t)}`),this}lineTo(e,t){return this.parts.push(`L${V(e)},${V(t)}`),this}curveTo(e,t,n,r,i,a){return this.parts.push(`C${V(e)},${V(t)} ${V(n)},${V(r)} ${V(i)},${V(a)}`),this}quadTo(e,t,n,r){return this.parts.push(`Q${V(e)},${V(t)} ${V(n)},${V(r)}`),this}arcTo(e,t,n,r,i,a,o){return this.parts.push(`A${V(e)},${V(t)} ${V(n)} ${+!!r},${+!!i} ${V(a)},${V(o)}`),this}close(){return this.parts.push(`Z`),this}toString(){return this.parts.join(` `)}};function Ie(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return`dg-${(t>>>0).toString(36)}`}function Le(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`-`);return/^[a-zA-Z]/.test(t)?t:`dg-${t}`}function U(e){let t=Math.ceil(e.width+16),n=Math.ceil(e.height+16),r=`${e.id}-title`;return{svg:Fe(B(`svg`,{xmlns:`http://www.w3.org/2000/svg`,id:e.id,class:`dg dg-${e.type}`,width:t,height:n,viewBox:`0 0 ${t} ${n}`,role:`img`,"aria-labelledby":r,style:`max-width:100%;height:auto`},[B(`title`,{id:r},[je(e.title)]),e.description?B(`desc`,{},[je(e.description)]):null,B(`style`,{},[je(ke(e.id,e.css))]),e.defs&&e.defs.length>0?B(`defs`,{},e.defs):null,B(`g`,{transform:`translate(8,8)`},e.body)])),width:t,height:n,type:e.type}}var Re=/^(#[0-9a-fA-F]{3,4}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{8}|(rgb|rgba|hsl|hsla)\(\s*[0-9.]+%?\s*,\s*[0-9.]+%?\s*,\s*[0-9.]+%?\s*(,\s*[0-9.]+%?\s*)?\)|[a-zA-Z]{3,20})$/,ze=/^[0-9]+(\.[0-9]+)?(px|em)?$/,Be=/^[0-9.]+([\s,]+[0-9.]+)*$/,Ve=/^(0(\.[0-9]+)?|1(\.0+)?)$/,He={fill:Re,stroke:Re,"stroke-width":ze,"stroke-dasharray":Be,opacity:Ve,"fill-opacity":Ve,"stroke-opacity":Ve},Ue={color:Re,"font-weight":/^(normal|bold|[1-9]00)$/,"font-style":/^(normal|italic)$/,"font-size":ze};function W(e,t=0,n=0){let r={shape:{},text:{}};for(let i of We(e)){let e=i.trim();if(e===``)continue;let a=e.indexOf(`:`);if(a<0)throw new L(`"${e}" is not a style declaration`,t,n,`Write property:value.`);let o=e.slice(0,a).trim().toLowerCase(),s=e.slice(a+1).trim().replace(/\s*!important$/,``),c=He[o],l=Ue[o];if(!c&&!l)throw new L(`The style property "${o}" is not supported`,t,n,`Supported: ${[...Object.keys(He),...Object.keys(Ue)].join(`, `)}.`);if(!(c??l).test(s))throw new L(`"${s}" is not a valid value for ${o}`,t,n);c?r.shape[o]=s:r.text[o===`color`?`fill`:o]=s}return r}function We(e){let t=[],n=0,r=0;for(let i=0;i<e.length;i++){let a=e[i];a===`(`?n++:a===`)`?n=Math.max(0,n-1):(a===`,`||a===`;`)&&n===0&&(t.push(e.slice(r,i)),r=i+1)}return t.push(e.slice(r)),t}function Ge(...e){let t={shape:{},text:{}};for(let n of e)n&&(Object.assign(t.shape,n.shape),Object.assign(t.text,n.text));return t}function G(e){let t=Object.entries(e);if(t.length!==0)return t.map(([e,t])=>`${e}:${t}`).join(`;`)}function Ke(e){let t=e.trim();return/^(https?:|mailto:)/i.test(t)?t:/^[a-z][a-z0-9+.-]*:/i.test(t)||t.startsWith(`//`)?null:t}var qe={c4:`C4Context`,c4_context:`C4Context`,c4_container:`C4Container`,c4_component:`C4Component`,c4_dynamic:`C4Dynamic`,c4_deployment:`C4Deployment`,c4_sequence:`C4Dynamic`};function Je(e){let t=/^!include(?:url)?\s+.*?\b(C4(?:_\w+)?)(?:\.puml)?\s*>?\s*$/i.exec(e);return t?qe[t[1].toLowerCase()]??null:null}var Ye={startuml:`uml`,startmindmap:`mindmap`,startgantt:`gantt`,startsalt:`salt`,startwbs:`wbs`,startjson:`json`,startyaml:`yaml`};function Xe(e){let t=e.replace(/^\uFEFF/,``).split(/\r\n?|\n/).find(e=>e.trim()!==``);return t!==void 0&&/^\s*@start[a-z]+\b/i.test(t)}function Ze(e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];if(r===`"`&&(t=!t),!t&&r===`'`&&(n===0||/\s/.test(e[n-1]))&&e.slice(0,n).trim()===``)return``}return e}var Qe=/^!(include|includeurl|includesub|import|define|definelong|procedure|function|unquoted|if|ifdef|ifndef|while|foreach|local|global|\$)/i,$e=/^(skinparam\b|!theme\b|!pragma\b|scale\b|(hide|remove|restore)\s+(empty\s+)?(members|methods|fields|attributes|circle|stereotype|unlinked|@unlinked|description|private|protected|package|public|\$\w+|<<[^>]*>>)|show\s|allowmixing\b|allow_mixing\b|set\s+namespaceSeparator|autoactivate\b|skin\b|newpage\b|mainframe\b)/i;function et(e){let t=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
7
7
  `).split(`
8
- `),n={frame:`uml`,statements:[],hideFootbox:!1},r=!1,i=!1,a=!1,o=null,s=null;for(let e=0;e<t.length;e++){let c=e+1,l=t[e];if(a){let e=l.indexOf(`'/`);if(e<0)continue;a=!1,l=` `.repeat(e+2)+l.slice(e+2)}for(;;){let e=l.indexOf(`/'`);if(e<0)break;let t=l.indexOf(`'/`,e+2);if(t<0){l=l.slice(0,e),a=!0;break}l=l.slice(0,e)+` `.repeat(t+2-e)+l.slice(t+2)}let u=Qe(l),d=u.trim();if(d===``)continue;let f=u.length-u.trimStart().length+1;if(!r){let e=/^@(start[a-z]+)\b/i.exec(d);if(!e)throw new I(`A PlantUML diagram starts with "@startuml"`,c,f);let t=Xe[e[1].toLowerCase()];if(!t)throw new I(`"@${e[1]}" is not a supported PlantUML diagram`,c,f,`Supported: ${Object.keys(Xe).map(e=>`@${e}`).join(`, `)}.`);n.frame=t,r=!0;continue}if(/^@end[a-z]+\b/i.test(d)){i=!0;break}if(o){o.test(d)&&(o=null);continue}if(s){/^end\s*title$/i.test(d)?(n.title=s.join(`
9
- `),s=null):s.push(d);continue}let p=Ye(d);if(p){let e=[`C4Context`,`C4Container`,`C4Component`,`C4Deployment`,`C4Dynamic`];(!n.c4||e.indexOf(p)>e.indexOf(n.c4))&&(n.c4=p);continue}if($e.test(d))throw new I(`The preprocessor directive "${d.split(/\s/)[0]}" is not supported`,c,f,`The renderer reads one source with no files or variables: write the diagram out in full.`);if(/^skinparam\b[^{]*\{\s*$/i.test(d)){o=/^\}$/;continue}if(/^<style>/i.test(d)){/<\/style>/i.test(d)||(o=/<\/style>/i);continue}if(/^(legend|header|footer|caption)\b/i.test(d)&&!/:/.test(d)&&/^(legend|header|footer)(\s+(left|right|center|top|bottom))*\s*$/i.test(d)){o=/^end\s*(legend|header|footer)$/i;continue}if(/^(header|footer|caption|legend)\b/i.test(d)||et.test(d))continue;if(/^hide\s+footbox$/i.test(d)){n.hideFootbox=!0;continue}if(/^left\s+to\s+right\s+direction$/i.test(d)){n.direction=`LR`;continue}if(/^top\s+to\s+bottom\s+direction$/i.test(d)){n.direction=`TB`;continue}let m=/^title(?:\s*:\s*|\s+)(.*)$/i.exec(d);m?n.title=m[1].trim().replace(/\\n/g,`
10
- `):/^title$/i.test(d)?s=[]:n.statements.push({text:d,line:c,column:f})}if(!r)throw new I(`The diagram is empty`,0,0);if(!i)throw new I(`The diagram has no "@enduml"`,t.length,0,`End it with @enduml.`);if(a)throw new I(`A block comment /' … is never closed`,t.length,0,`Close it with '/.`);return n}function G(e){return e.replace(/\\n/g,`<br>`)}function nt(e){let t=e.trim();return t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`)?t.slice(1,-1):t}var rt=/[;|<>/\]}]$/;function it(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n],i=/^(#\S+\s*)?:/.test(r.text)&&!rt.test(r.text),a=/^(floating\s+)?note\s+(left|right)\s*(#\S+)?$/i.test(r.text);if(!i&&!a){t.push(r);continue}let o=[r.text],s=n+1;for(;s<e.length;s++){let t=e[s].text;if(i){if(o.push(t),rt.test(t))break}else{if(/^end\s*note$/i.test(t))break;o.push(t)}}if(s>=e.length)throw new I(i?`This action is never closed`:`This note is never closed`,r.line,r.column,i?`End it with ";".`:`Close it with "end note".`);t.push({...r,text:i?o.join(`
8
+ `),n={frame:`uml`,statements:[],hideFootbox:!1},r=!1,i=!1,a=!1,o=null,s=null;for(let e=0;e<t.length;e++){let c=e+1,l=t[e];if(a){let e=l.indexOf(`'/`);if(e<0)continue;a=!1,l=` `.repeat(e+2)+l.slice(e+2)}for(;;){let e=l.indexOf(`/'`);if(e<0)break;let t=l.indexOf(`'/`,e+2);if(t<0){l=l.slice(0,e),a=!0;break}l=l.slice(0,e)+` `.repeat(t+2-e)+l.slice(t+2)}let u=Ze(l),d=u.trim();if(d===``)continue;let f=u.length-u.trimStart().length+1;if(!r){let e=/^@(start[a-z]+)\b/i.exec(d);if(!e)throw new L(`A PlantUML diagram starts with "@startuml"`,c,f);let t=Ye[e[1].toLowerCase()];if(!t)throw new L(`"@${e[1]}" is not a supported PlantUML diagram`,c,f,`Supported: ${Object.keys(Ye).map(e=>`@${e}`).join(`, `)}.`);n.frame=t,r=!0;continue}if(/^@end[a-z]+\b/i.test(d)){i=!0;break}if(o){o.test(d)&&(o=null);continue}if(s){/^end\s*title$/i.test(d)?(n.title=s.join(`
9
+ `),s=null):s.push(d);continue}let p=Je(d);if(p){let e=[`C4Context`,`C4Container`,`C4Component`,`C4Deployment`,`C4Dynamic`];(!n.c4||e.indexOf(p)>e.indexOf(n.c4))&&(n.c4=p);continue}if(Qe.test(d))throw new L(`The preprocessor directive "${d.split(/\s/)[0]}" is not supported`,c,f,`The renderer reads one source with no files or variables: write the diagram out in full.`);if(/^skinparam\b[^{]*\{\s*$/i.test(d)){o=/^\}$/;continue}if(/^<style>/i.test(d)){/<\/style>/i.test(d)||(o=/<\/style>/i);continue}if(/^(legend|header|footer|caption)\b/i.test(d)&&!/:/.test(d)&&/^(legend|header|footer)(\s+(left|right|center|top|bottom))*\s*$/i.test(d)){o=/^end\s*(legend|header|footer)$/i;continue}if(/^(header|footer|caption|legend)\b/i.test(d)||$e.test(d))continue;if(/^hide\s+footbox$/i.test(d)){n.hideFootbox=!0;continue}if(/^left\s+to\s+right\s+direction$/i.test(d)){n.direction=`LR`;continue}if(/^top\s+to\s+bottom\s+direction$/i.test(d)){n.direction=`TB`;continue}let m=/^title(?:\s*:\s*|\s+)(.*)$/i.exec(d);m?n.title=m[1].trim().replace(/\\n/g,`
10
+ `):/^title$/i.test(d)?s=[]:n.statements.push({text:d,line:c,column:f})}if(!r)throw new L(`The diagram is empty`,0,0);if(!i)throw new L(`The diagram has no "@enduml"`,t.length,0,`End it with @enduml.`);if(a)throw new L(`A block comment /' … is never closed`,t.length,0,`Close it with '/.`);return n}function K(e){return e.replace(/\\n/g,`<br>`)}function tt(e){let t=e.trim();return t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`)?t.slice(1,-1):t}var nt=/[;|<>/\]}]$/;function rt(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n],i=/^(#\S+\s*)?:/.test(r.text)&&!nt.test(r.text),a=/^(floating\s+)?note\s+(left|right)\s*(#\S+)?$/i.test(r.text);if(!i&&!a){t.push(r);continue}let o=[r.text],s=n+1;for(;s<e.length;s++){let t=e[s].text;if(i){if(o.push(t),nt.test(t))break}else{if(/^end\s*note$/i.test(t))break;o.push(t)}}if(s>=e.length)throw new L(i?`This action is never closed`:`This note is never closed`,r.line,r.column,i?`End it with ";".`:`Close it with "end note".`);t.push({...r,text:i?o.join(`
11
11
  `):`${o[0]} : ${o.slice(1).join(`
12
- `)}`}),n=s}return t}var at=class{constructor(e){this.chart={type:`flowchart`,direction:`TB`,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},this.count=0,this.i=0,this.partitions=[],this.lanes=new Map,this.pending={},this.list=it(e)}run(){let{stop:e}=this.block([],[]);if(e){let e=this.list[this.i];throw new I(`"${e.text}" has no block to close`,e.line,e.column)}if(this.partitions.length>0)throw new I(`A partition is never closed`,0,0,`Close it with "}".`);return this.chart}node(e,t,n){let r=`a${++this.count}`;return this.chart.nodes.set(r,{id:r,text:t,markdown:!1,shape:e,classes:[],style:n,subgraph:this.partitions[this.partitions.length-1]??this.lane}),r}connect(e,t){for(let n of e){let e={from:n.id,to:t,stroke:this.pending.stroke??`normal`,start:`none`,end:`arrow`,length:1,text:n.label??this.pending.label,markdown:!1,style:this.pending.style};this.chart.edges.push(e)}this.pending={}}step(e,t,n,r){let i=this.node(t,n,r);return this.connect(e,i),{id:i,tails:[{id:i}]}}block(e,t){for(;this.i<this.list.length;this.i++){let n=this.list[this.i];if(t.some(e=>e.test(n.text)))return{tails:e,stop:n};e=this.statement(n,e)}return{tails:e,stop:null}}statement(e,t){let n=e.text,r;if(/^start$/i.test(n))return this.step(t,`start`,``).tails;if(/^(stop|end)$/i.test(n))return this.step(t,`end`,``),[];if(/^(kill|detach)$/i.test(n))return[];if((r=/^(#\S+?)?\s*:([\s\S]*?)[;|<>/\]}]$/.exec(n))&&n.trimStart().match(/^(#\S+\s*)?:/)){let n=r[1]?U(`fill:${ot(r[1])}`,e.line,e.column):void 0;return this.step(t,`round`,G(r[2].trim()).replace(/\n/g,`<br>`),n).tails}if(r=/^-+(?:\[([^\]]*)\])?-*>\s*(.*?);?$/.exec(n)){let n=(r[1]??``).split(/[,;]/).map(e=>e.trim().toLowerCase()).filter(Boolean);r[2]&&(this.pending.label=G(r[2].trim())),n.includes(`hidden`)?this.pending.stroke=`invisible`:n.includes(`dashed`)||n.includes(`dotted`)?this.pending.stroke=`dotted`:n.includes(`bold`)&&(this.pending.stroke=`thick`);let i=n.find(e=>e.startsWith(`#`));return i&&(this.pending.style=U(`stroke:${ot(i)}`,e.line,e.column)),t}if(r=/^if\s*\((.*?)\)\s*(?:is\s*\((.*?)\)\s*)?then(?:\s*\((.*)\))?$/i.exec(n))return this.ifBlock(e,t,r[1],r[3]??r[2]);if(r=/^while\s*\((.*?)\)(?:\s*is\s*\((.*)\))?$/i.exec(n))return this.whileBlock(e,t,r[1],r[2]);if(/^repeat$/i.test(n))return this.repeatBlock(e,t);if(/^(fork|split)$/i.test(n))return this.forkBlock(e,t,n.toLowerCase());if(r=/^(partition|group)\s+(.*?)\s*(\{)?$/i.exec(n))return this.partition(e,t,r[1].toLowerCase(),r[2],!!r[3]);if(r=/^(?:floating\s+)?note\s+(left|right)\s*(?:#\S+)?\s*:\s?([\s\S]*)$/i.exec(n)){let e=this.node(`note`,G(r[2].trim()).replace(/\n/g,`<br>`)),n=t[t.length-1];return n&&this.chart.edges.push({from:n.id,to:e,stroke:`dotted`,start:`none`,end:`none`,length:1,markdown:!1}),t}if(r=/^\|(?:(#[^|]+)\|)?([^|]+)\|$/.exec(n)){let n=r[2].trim(),i=this.lanes.get(n);if(!i){i=`lane${this.lanes.size+1}`,this.lanes.set(n,i);let t=r[1]?U(`fill:${ot(r[1])}`,e.line,e.column):void 0;this.chart.subgraphs.set(i,{id:i,title:G(n),markdown:!1,classes:[],style:t,kind:`rect`})}return this.lane=i,t}throw/^\(\*\)/.test(n)?new I(`The old activity syntax ((*) --> …) is not supported`,e.line,e.column,`Write start, :action;, stop.`):new I(`"${n.split(`
13
- `)[0]}" is not an activity statement`,e.line,e.column)}ifBlock(e,t,n,r){let i=this.step(t,`rhombus`,G(n)).id,a=r?G(r):void 0,o=[];for(;;){this.i++;let t=this.block([{id:i,label:a}],[/^elseif\b/i,/^else\b/i,/^end\s*if$/i]);if(o.push(...t.tails),!t.stop)throw new I(`This "if" is never closed`,e.line,e.column,`Close it with "endif".`);let n=/^elseif\s*\((.*?)\)\s*(?:is\s*\((.*?)\)\s*)?then(?:\s*\((.*)\))?$/i.exec(t.stop.text);if(n){let e=this.node(`rhombus`,G(n[1]));this.chart.edges.push({from:i,to:e,stroke:`normal`,start:`none`,end:`arrow`,length:1,markdown:!1}),i=e,a=n[3]??n[2]?G(n[3]??n[2]):void 0;continue}let r=/^else\b\s*(?:\((.*)\))?$/i.exec(t.stop.text);if(r){this.i++;let t=this.block([{id:i,label:r[1]?G(r[1]):void 0}],[/^end\s*if$/i]);if(!t.stop)throw new I(`This "if" is never closed`,e.line,e.column,`Close it with "endif".`);return o.push(...t.tails),o}return o.push({id:i}),o}}whileBlock(e,t,n,r){let i=this.step(t,`rhombus`,G(n)).id;this.i++;let a=this.block([{id:i,label:r?G(r):void 0}],[/^end\s*while\b/i]);if(!a.stop)throw new I(`This "while" is never closed`,e.line,e.column,`Close it with "endwhile".`);this.connect(a.tails,i);let o=/^end\s*while\s*(?:\((.*)\))?$/i.exec(a.stop.text);return[{id:i,label:o?.[1]?G(o[1]):void 0}]}repeatBlock(e,t){let n=this.step(t,`choice`,``).id;this.i++;let r=this.block([{id:n}],[/^repeat\s+while\b/i]);if(!r.stop)throw new I(`This "repeat" is never closed`,e.line,e.column,`Close it with "repeat while (condition)".`);let i=/^repeat\s+while\s*\((.*?)\)(?:\s*is\s*\((.*?)\))?(?:\s*not\s*\((.*?)\))?\s*$/i.exec(r.stop.text);if(!i)throw new I(`"${r.stop.text}" is not a repeat condition`,r.stop.line,r.stop.column,`repeat while (more?) is (yes) not (no)`);let a=this.step(r.tails,`rhombus`,G(i[1])).id;return this.chart.edges.push({from:a,to:n,stroke:`normal`,start:`none`,end:`arrow`,length:1,text:i[2]?G(i[2]):void 0,markdown:!1}),[{id:a,label:i[3]?G(i[3]):void 0}]}forkBlock(e,t,n){let r=n===`fork`?[{id:this.step(t,`fork`,``).id}]:t,i=[],a=n===`fork`?/^fork\s+again$/i:/^split\s+again$/i,o=n===`fork`?/^end\s*(fork|merge)\b/i:/^end\s*split$/i;for(;;){this.i++;let t=this.block([...r],[a,o]);if(i.push(...t.tails),!t.stop)throw new I(`This "${n}" is never closed`,e.line,e.column,`Close it with "end ${n}".`);if(!a.test(t.stop.text))return n===`fork`&&/^end\s*fork/i.test(t.stop.text)?[{id:this.step(i,`fork`,``).id}]:i}}partition(e,t,n,r,i){let a=`p${++this.count}`;this.chart.subgraphs.set(a,{id:a,title:G(r.replace(/^"|"$/g,``)),markdown:!1,parent:this.partitions[this.partitions.length-1]??this.lane,classes:[],kind:n===`group`?`rect`:`frame`}),this.partitions.push(a),this.i++;let o=i||n===`partition`?[/^\}$/,/^end\s*(partition|group)$/i]:[/^end\s*group$/i],s=this.block(t,o);if(!s.stop)throw new I(`This ${n} is never closed`,e.line,e.column,i?`Close it with "}".`:`Close it with "end ${n}".`);return this.partitions.pop(),s.tails}};function ot(e){let t=e.replace(/^#/,``);return/^[0-9a-fA-F]{3,8}$/.test(t)?`#${t}`:t}function st(e){let t=new at(e.statements).run();return e.title&&(t.title=e.title.replace(/\n/g,`<br>`)),t}function ct(e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];if(r===`"`&&(t=!t),!t&&r===`%`&&e[n+1]===`%`)return e.slice(0,n)}return e}function K(e,t={}){let n=[],r=e.replace(/\r\n?/g,`
12
+ `)}`}),n=s}return t}var it=class{constructor(e){this.chart={type:`flowchart`,direction:`TB`,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},this.count=0,this.i=0,this.partitions=[],this.lanes=new Map,this.pending={},this.list=rt(e)}run(){let{stop:e}=this.block([],[]);if(e){let e=this.list[this.i];throw new L(`"${e.text}" has no block to close`,e.line,e.column)}if(this.partitions.length>0)throw new L(`A partition is never closed`,0,0,`Close it with "}".`);return this.chart}node(e,t,n){let r=`a${++this.count}`;return this.chart.nodes.set(r,{id:r,text:t,markdown:!1,shape:e,classes:[],style:n,subgraph:this.partitions[this.partitions.length-1]??this.lane}),r}connect(e,t){for(let n of e){let e={from:n.id,to:t,stroke:this.pending.stroke??`normal`,start:`none`,end:`arrow`,length:1,text:n.label??this.pending.label,markdown:!1,style:this.pending.style};this.chart.edges.push(e)}this.pending={}}step(e,t,n,r){let i=this.node(t,n,r);return this.connect(e,i),{id:i,tails:[{id:i}]}}block(e,t){for(;this.i<this.list.length;this.i++){let n=this.list[this.i];if(t.some(e=>e.test(n.text)))return{tails:e,stop:n};e=this.statement(n,e)}return{tails:e,stop:null}}statement(e,t){let n=e.text,r;if(/^start$/i.test(n))return this.step(t,`start`,``).tails;if(/^(stop|end)$/i.test(n))return this.step(t,`end`,``),[];if(/^(kill|detach)$/i.test(n))return[];if((r=/^(#\S+?)?\s*:([\s\S]*?)[;|<>/\]}]$/.exec(n))&&n.trimStart().match(/^(#\S+\s*)?:/)){let n=r[1]?W(`fill:${at(r[1])}`,e.line,e.column):void 0;return this.step(t,`round`,K(r[2].trim()).replace(/\n/g,`<br>`),n).tails}if(r=/^-+(?:\[([^\]]*)\])?-*>\s*(.*?);?$/.exec(n)){let n=(r[1]??``).split(/[,;]/).map(e=>e.trim().toLowerCase()).filter(Boolean);r[2]&&(this.pending.label=K(r[2].trim())),n.includes(`hidden`)?this.pending.stroke=`invisible`:n.includes(`dashed`)||n.includes(`dotted`)?this.pending.stroke=`dotted`:n.includes(`bold`)&&(this.pending.stroke=`thick`);let i=n.find(e=>e.startsWith(`#`));return i&&(this.pending.style=W(`stroke:${at(i)}`,e.line,e.column)),t}if(r=/^if\s*\((.*?)\)\s*(?:is\s*\((.*?)\)\s*)?then(?:\s*\((.*)\))?$/i.exec(n))return this.ifBlock(e,t,r[1],r[3]??r[2]);if(r=/^while\s*\((.*?)\)(?:\s*is\s*\((.*)\))?$/i.exec(n))return this.whileBlock(e,t,r[1],r[2]);if(/^repeat$/i.test(n))return this.repeatBlock(e,t);if(/^(fork|split)$/i.test(n))return this.forkBlock(e,t,n.toLowerCase());if(r=/^(partition|group)\s+(.*?)\s*(\{)?$/i.exec(n))return this.partition(e,t,r[1].toLowerCase(),r[2],!!r[3]);if(r=/^(?:floating\s+)?note\s+(left|right)\s*(?:#\S+)?\s*:\s?([\s\S]*)$/i.exec(n)){let e=this.node(`note`,K(r[2].trim()).replace(/\n/g,`<br>`)),n=t[t.length-1];return n&&this.chart.edges.push({from:n.id,to:e,stroke:`dotted`,start:`none`,end:`none`,length:1,markdown:!1}),t}if(r=/^\|(?:(#[^|]+)\|)?([^|]+)\|$/.exec(n)){let n=r[2].trim(),i=this.lanes.get(n);if(!i){i=`lane${this.lanes.size+1}`,this.lanes.set(n,i);let t=r[1]?W(`fill:${at(r[1])}`,e.line,e.column):void 0;this.chart.subgraphs.set(i,{id:i,title:K(n),markdown:!1,classes:[],style:t,kind:`rect`})}return this.lane=i,t}throw/^\(\*\)/.test(n)?new L(`The old activity syntax ((*) --> …) is not supported`,e.line,e.column,`Write start, :action;, stop.`):new L(`"${n.split(`
13
+ `)[0]}" is not an activity statement`,e.line,e.column)}ifBlock(e,t,n,r){let i=this.step(t,`rhombus`,K(n)).id,a=r?K(r):void 0,o=[];for(;;){this.i++;let t=this.block([{id:i,label:a}],[/^elseif\b/i,/^else\b/i,/^end\s*if$/i]);if(o.push(...t.tails),!t.stop)throw new L(`This "if" is never closed`,e.line,e.column,`Close it with "endif".`);let n=/^elseif\s*\((.*?)\)\s*(?:is\s*\((.*?)\)\s*)?then(?:\s*\((.*)\))?$/i.exec(t.stop.text);if(n){let e=this.node(`rhombus`,K(n[1]));this.chart.edges.push({from:i,to:e,stroke:`normal`,start:`none`,end:`arrow`,length:1,markdown:!1}),i=e,a=n[3]??n[2]?K(n[3]??n[2]):void 0;continue}let r=/^else\b\s*(?:\((.*)\))?$/i.exec(t.stop.text);if(r){this.i++;let t=this.block([{id:i,label:r[1]?K(r[1]):void 0}],[/^end\s*if$/i]);if(!t.stop)throw new L(`This "if" is never closed`,e.line,e.column,`Close it with "endif".`);return o.push(...t.tails),o}return o.push({id:i}),o}}whileBlock(e,t,n,r){let i=this.step(t,`rhombus`,K(n)).id;this.i++;let a=this.block([{id:i,label:r?K(r):void 0}],[/^end\s*while\b/i]);if(!a.stop)throw new L(`This "while" is never closed`,e.line,e.column,`Close it with "endwhile".`);this.connect(a.tails,i);let o=/^end\s*while\s*(?:\((.*)\))?$/i.exec(a.stop.text);return[{id:i,label:o?.[1]?K(o[1]):void 0}]}repeatBlock(e,t){let n=this.step(t,`choice`,``).id;this.i++;let r=this.block([{id:n}],[/^repeat\s+while\b/i]);if(!r.stop)throw new L(`This "repeat" is never closed`,e.line,e.column,`Close it with "repeat while (condition)".`);let i=/^repeat\s+while\s*\((.*?)\)(?:\s*is\s*\((.*?)\))?(?:\s*not\s*\((.*?)\))?\s*$/i.exec(r.stop.text);if(!i)throw new L(`"${r.stop.text}" is not a repeat condition`,r.stop.line,r.stop.column,`repeat while (more?) is (yes) not (no)`);let a=this.step(r.tails,`rhombus`,K(i[1])).id;return this.chart.edges.push({from:a,to:n,stroke:`normal`,start:`none`,end:`arrow`,length:1,text:i[2]?K(i[2]):void 0,markdown:!1}),[{id:a,label:i[3]?K(i[3]):void 0}]}forkBlock(e,t,n){let r=n===`fork`?[{id:this.step(t,`fork`,``).id}]:t,i=[],a=n===`fork`?/^fork\s+again$/i:/^split\s+again$/i,o=n===`fork`?/^end\s*(fork|merge)\b/i:/^end\s*split$/i;for(;;){this.i++;let t=this.block([...r],[a,o]);if(i.push(...t.tails),!t.stop)throw new L(`This "${n}" is never closed`,e.line,e.column,`Close it with "end ${n}".`);if(!a.test(t.stop.text))return n===`fork`&&/^end\s*fork/i.test(t.stop.text)?[{id:this.step(i,`fork`,``).id}]:i}}partition(e,t,n,r,i){let a=`p${++this.count}`;this.chart.subgraphs.set(a,{id:a,title:K(r.replace(/^"|"$/g,``)),markdown:!1,parent:this.partitions[this.partitions.length-1]??this.lane,classes:[],kind:n===`group`?`rect`:`frame`}),this.partitions.push(a),this.i++;let o=i||n===`partition`?[/^\}$/,/^end\s*(partition|group)$/i]:[/^end\s*group$/i],s=this.block(t,o);if(!s.stop)throw new L(`This ${n} is never closed`,e.line,e.column,i?`Close it with "}".`:`Close it with "end ${n}".`);return this.partitions.pop(),s.tails}};function at(e){let t=e.replace(/^#/,``);return/^[0-9a-fA-F]{3,8}$/.test(t)?`#${t}`:t}function ot(e){let t=new it(e.statements).run();return e.title&&(t.title=e.title.replace(/\n/g,`<br>`)),t}function st(e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];if(r===`"`&&(t=!t),!t&&r===`%`&&e[n+1]===`%`)return e.slice(0,n)}return e}function q(e,t={}){let n=[],r=e.replace(/\r\n?/g,`
14
14
  `).split(`
15
- `),i=!1;return r.forEach((e,r)=>{let a=r+1;if(i){e.includes(`}%%`)&&(i=!1);return}if(e.trimStart().startsWith(`%%{`)){e.includes(`}%%`)||(i=!0);return}let o=ct(e),s=t.semicolons?lt(o):[{text:o,offset:0}];for(let e of s){let t=e.text.length-e.text.trimStart().length,r=e.text.trim();r.length!==0&&n.push({text:r,line:a,column:e.offset+t+1})}}),n}function lt(e){let t=[],n=0,r=!1,i=0;for(let a=0;a<e.length;a++){let o=e[a];o===`"`&&(r=!r),!r&&(`([{`.includes(o)?n++:`)]}`.includes(o)?n=Math.max(0,n-1):o===`;`&&n===0&&(t.push({text:e.slice(i,a),offset:i}),i=a+1))}return t.push({text:e.slice(i),offset:i}),t}function ut(e){let t=K(e)[0];if(!t)return null;let n=/^([A-Za-z][\w-]*)\s*(.*)$/.exec(t.text);return n?{keyword:n[1],rest:n[2].trim(),statement:t}:null}var dt=class{constructor(e,t=e.text){this.statement=e,this.text=t,this.pos=0}get done(){return this.pos>=this.text.length}peek(e=0){return this.text[this.pos+e]??``}rest(){return this.text.slice(this.pos)}skipSpaces(){for(;!this.done&&/\s/.test(this.text[this.pos]);)this.pos++}startsWith(e){return this.text.startsWith(e,this.pos)}eat(e){return this.startsWith(e)?(this.pos+=e.length,!0):!1}match(e){let t=new RegExp(e.source,e.flags.replace(`g`,``)+`y`);t.lastIndex=this.pos;let n=t.exec(this.text);return n&&(this.pos+=n[0].length),n}column(e=this.pos){return this.statement.column+e}error(e,t,n=this.pos){return new I(e,this.statement.line,this.column(n),t)}};function ft(e){let t=e.trim();return t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`)?t.slice(1,-1):t}function q(e,t,n){let r=e[t],i=/^accTitle\s*:\s*(.*)$/.exec(r.text);if(i)return n.title=i[1].trim(),1;if(i=/^accDescr\s*:\s*(.*)$/.exec(r.text),i)return n.description=i[1].trim(),1;if(i=/^accDescr\s*\{\s*(.*)$/.exec(r.text),i){let r=[],a=i[1],o=t;for(;;){let t=a.indexOf(`}`);if(t>=0){r.push(a.slice(0,t));break}if(r.push(a),o++,o>=e.length)break;a=e[o].text}return n.description=r.map(e=>e.trim()).filter(Boolean).join(` `),o-t+1}return 0}var pt=[`C4Context`,`C4Container`,`C4Component`,`C4Dynamic`,`C4Deployment`];function mt(e){let t=e.text,n=/^([A-Za-z_][\w]*)\s*\(/.exec(t);if(!n)return null;let r=n[1],i=[],a=n[0].length,o=t=>e.column+t,s=(t,n,r)=>new I(t,e.line,o(n),r),c=()=>{for(;a<t.length&&/\s/.test(t[a]);)a++};if(c(),t[a]===`)`)a++;else for(;;){c();let e=a,n,l=/^\$([A-Za-z_]\w*)\s*=\s*/.exec(t.slice(a));l&&(n=l[1].toLowerCase(),a+=l[0].length);let u;if(t[a]===`"`){let e=t.indexOf(`"`,a+1);if(e<0)throw s(`The string is not closed`,a,`Add the closing ".`);u=t.slice(a+1,e),a=e+1,c()}else{let e=0,n=a;for(;a<t.length;){let n=t[a];if(n===`"`)throw s(`A quote inside an unquoted argument`,a,`Quote the whole argument.`);if(n===`(`)e++;else if(n===`)`){if(e===0)break;e--}else if(n===`,`&&e===0)break;a++}u=t.slice(n,a).trim()}if(i.push({name:n,value:u,column:o(e)}),t[a]===`,`)a++;else{if(t[a]===`)`){a++;break}throw a>=t.length?s(`"${r}(" is not closed`,t.length,`Add ")".`):s(`Unexpected "${t[a]}" in the arguments of ${r}`,a,`Separate arguments with commas.`)}}c();let l=!1,u=!1;if(t[a]===`{`&&(l=!0,a++,c(),t[a]===`}`&&(u=!0,a++,c())),a<t.length)throw s(`Unexpected "${t.slice(a)}" after ${r}(…)`,a);return{name:r,args:i,opens:l,closes:u}}function ht(e,t,n,r=[]){let i=new Map,a=0;for(let o of e.args){if(o.name===void 0){if(a>=n.length)throw new I(`${e.name} takes at most ${n.length} positional arguments`,t.line,o.column,`Parameters: ${n.join(`, `)}.`);i.set(n[a++],o);continue}let s=n.find(e=>e.toLowerCase()===o.name)??r.find(e=>e.toLowerCase()===o.name);if(!s)throw new I(`${e.name} has no parameter "$${o.name}"`,t.line,o.column,`Parameters: ${[...n,...r].map(e=>`$${e}`).join(`, `)}.`);i.set(s,o)}return i}function gt(e,t){let n=e.get(t);if(!n)return;let r=n.value.replace(/\\n/g,`<br>`);return r.trim()===``?void 0:r}var _t={};for(let[e,t]of[[`System`,`system`],[`Container`,`container`],[`Component`,`component`]])for(let[n,r]of[[``,`box`],[`Db`,`db`],[`Queue`,`queue`]])_t[`${e}${n}`]={level:t,shape:r,external:!1},_t[`${e}${n}_Ext`]={level:t,shape:r,external:!0};_t.Person={level:`person`,shape:`person`,external:!1},_t.Person_Ext={level:`person`,shape:`person`,external:!0};var vt={Boundary:`boundary`,Enterprise_Boundary:`enterprise`,System_Boundary:`system`,Container_Boundary:`container`,Deployment_Node:`node`,Deployment_Node_L:`node`,Deployment_Node_R:`node`,Node:`node`,Node_L:`node`,Node_R:`node`},yt={U:`up`,Up:`up`,D:`down`,Down:`down`,L:`left`,Left:`left`,R:`right`,Right:`right`},bt={Rel:{arrows:`end`},BiRel:{arrows:`both`},Rel_Back:{arrows:`start`},RelIndex:{arrows:`end`,indexed:!0}};for(let[e,t]of Object.entries(yt))bt[`Rel_${e}`]={arrows:`end`,direction:t},bt[`BiRel_${e}`]={arrows:`both`,direction:t},bt[`Lay_${e}`]={arrows:`end`,direction:t,hidden:!0},bt[`RelIndex_${e}`]={arrows:`end`,direction:t,indexed:!0};var xt=new Set(`SHOW_LEGEND.SHOW_FLOATING_LEGEND.LAYOUT_WITH_LEGEND.LAYOUT_AS_SKETCH.HIDE_STEREOTYPE.HIDE_PERSON_SPRITE.SHOW_PERSON_SPRITE.SHOW_PERSON_PORTRAIT.SHOW_PERSON_OUTLINE.AddElementTag.AddRelTag.AddBoundaryTag.AddPersonTag.AddSystemTag.AddContainerTag.AddComponentTag.AddNodeTag.UpdateElementTag.UpdateRelTag.UpdateBoundaryTag.UpdateContainerBoundaryStyle.UpdateSystemBoundaryStyle.UpdateEnterpriseBoundaryStyle.SetPropertyHeader.WithoutPropertyHeader.AddProperty.Lay_Distance.Rel_Neighbor.Rel_Back_Neighbor.BiRel_Neighbor.Index.SetIndex.LastIndex.increment.setIndex`.split(`.`)),St=[`alias`,`label`,`descr`,`sprite`,`tags`,`link`],Ct=[`alias`,`label`,`techn`,`descr`,`sprite`,`tags`,`link`],wt=[`from`,`to`,`label`,`techn`,`descr`,`sprite`,`tags`,`link`],Tt=[`shadowing`,`shape`,`sprite`,`techn`,`legendText`,`legendSprite`,`borderStyle`,`borderThickness`,`type`],Et=/^[\p{L}\p{N}_][\p{L}\p{N}_.-]*$/u;function Dt(e,t,n,r){let i=e.get(t);if(!i||i.value.trim()===``)throw new I(`${n.name} needs ${t===`alias`?`an alias`:`"${t}"`}`,r.line,r.column);let a=i.value.trim();if(!Et.test(a))throw new I(`"${a}" is not a valid alias`,r.line,i.column,`Use letters, digits, "_", "-" and ".".`);return a}function Ot(e,t,n){if(e&&e.value.trim()!==``)try{let r=U(`${t}:${e.value.trim()}`,n.line,e.column);return t===`color`?r.text.fill:r.shape[t]}catch{throw new I(`"${e.value}" is not a colour`,n.line,e.column,`Write #rgb, #rrggbb, rgb(…) or a colour name.`)}}function kt(e,t){if(!e)return;let n=e.value.trim();if(!/^[0-9]+$/.test(n)||Number(n)<1||Number(n)>50)throw new I(`"${e.value}" is not a number from 1 to 50`,t.line,e.column);return Number(n)}function At(e){let t=K(e),n=t[0],r=n?pt.find(e=>e===n.text)??null:null;if(!n||!r)throw new I(`A C4 diagram starts with C4Context, C4Container, C4Component, C4Dynamic or C4Deployment`,n?.line??1,n?.column??1);let i={type:`c4`,kind:r,direction:`TB`,elements:new Map,boundaries:new Map,children:new Map([[``,[]]]),relations:[],shapeInRow:4,boundaryInRow:2,accessibility:{}},a=[],o=null,s=()=>a[a.length-1],c=(e,t,n)=>{if(i.elements.has(e)||i.boundaries.has(e))throw new I(`"${e}" is defined twice`,t.line,n,`Every alias must be unique.`);i.children.get(s()??``).push(e)},l=1,u=[],d=[];for(let e=1;e<t.length;e++){let n=t[e],r=n.text;if(o){let{id:e,s:t}=o;if(o=null,r===`{`||r===`{}`){r===`{`&&a.push(e);continue}throw new I(`"${e}" needs a body`,t.line,t.column,`Add "{" … "}" after it.`)}let f=q(t,e,i.accessibility);if(f>0){e+=f-1;continue}let p=/^title(?:\s+(.*))?$/.exec(r);if(p){i.title=p[1]?.trim()||void 0;continue}if(r===`}`){if(a.length===0)throw new I(`"}" without an open boundary`,n.line,n.column);a.pop();continue}let m=mt(n);if(!m)throw/^!(include|define|theme)/.test(r)?new I(`PlantUML preprocessor lines are not part of Mermaid C4`,n.line,n.column,`Remove the line.`):new I(`"${r}" is not a C4 statement`,n.line,n.column,`Write a macro call such as Person(alias, "Label").`);if(m.opens&&!(m.name in vt))throw new I(`${m.name} cannot have a body`,n.line,n.column,`Only boundaries and deployment nodes take "{ … }".`);let h=_t[m.name];if(h){let e=ht(m,n,h.level===`container`||h.level===`component`?Ct:St,h.level===`person`||h.level===`system`?[`type`,`baseShape`]:[`baseShape`]),t=Dt(e,`alias`,m,n),r=gt(e,`label`);if(r===void 0)throw new I(`${m.name}(${t}, …) needs a label`,n.line,n.column);c(t,n,e.get(`alias`).column),i.elements.set(t,{id:t,level:h.level,shape:h.shape,external:h.external,label:r,techn:gt(e,`techn`),type:gt(e,`type`),description:gt(e,`descr`),parent:s()});continue}let g=vt[m.name];if(g){let e=ht(m,n,g===`node`?[`alias`,`label`,`type`,`descr`,`sprite`,`tags`,`link`]:g===`boundary`?[`alias`,`label`,`type`,`tags`,`link`]:[`alias`,`label`,`tags`,`link`],[`descr`,`type`,`sprite`]),t=Dt(e,`alias`,m,n);c(t,n,e.get(`alias`).column),i.boundaries.set(t,{id:t,kind:g,label:gt(e,`label`)??t,type:gt(e,`type`),description:gt(e,`descr`),parent:s()}),i.children.set(t,[]),m.opens&&!m.closes?a.push(t):m.opens||(o={id:t,s:n});continue}let _=bt[m.name];if(_){let e=ht(m,n,_.hidden?[`from`,`to`]:_.indexed?[`index`,...wt]:[...wt],_.hidden?[]:[`index`]),t=Dt(e,`from`,m,n),r=Dt(e,`to`,m,n),a,o=e.get(`index`)?.value.trim();if(_.indexed&&!o)throw new I(`${m.name} needs an index`,n.line,n.column);o?/^Index\(\s*\)$/.test(o)?a=String(l++):/^LastIndex\(\s*\)$/.test(o)?a=String(Math.max(1,l-1)):(a=o,/^[0-9]+$/.test(o)&&(l=Number(o)+1)):i.kind===`C4Dynamic`&&!_.hidden&&(a=String(l++)),i.relations.push({from:t,to:r,label:gt(e,`label`)??``,techn:gt(e,`techn`),description:gt(e,`descr`),direction:_.direction,arrows:_.arrows,hidden:_.hidden??!1,index:a,line:n.line,column:n.column})}else{switch(m.name){case`UpdateElementStyle`:case`UpdateBoundaryStyle`:{let e=ht(m,n,[`elementName`,`bgColor`,`fontColor`,`borderColor`],Tt),t=Dt(e,`elementName`,m,n);u.push({id:t,s:n,boundary:m.name===`UpdateBoundaryStyle`,style:{fill:Ot(e.get(`bgColor`),`fill`,n),text:Ot(e.get(`fontColor`),`color`,n),stroke:Ot(e.get(`borderColor`),`stroke`,n)}});continue}case`UpdateRelStyle`:{let e=ht(m,n,[`from`,`to`,`textColor`,`lineColor`,`offsetX`,`offsetY`]);d.push({from:Dt(e,`from`,m,n),to:Dt(e,`to`,m,n),s:n,style:{text:Ot(e.get(`textColor`),`color`,n),line:Ot(e.get(`lineColor`),`stroke`,n)}});continue}case`UpdateLayoutConfig`:{let e=ht(m,n,[`c4ShapeInRow`,`c4BoundaryInRow`]);i.shapeInRow=kt(e.get(`c4ShapeInRow`),n)??i.shapeInRow,i.boundaryInRow=kt(e.get(`c4BoundaryInRow`),n)??i.boundaryInRow;continue}case`LAYOUT_TOP_DOWN`:case`LAYOUT_LEFT_RIGHT`:case`LAYOUT_LANDSCAPE`:if(m.args.length>0)throw new I(`${m.name}() takes no arguments`,n.line,n.column);i.direction=m.name===`LAYOUT_TOP_DOWN`?`TB`:`LR`;continue}throw xt.has(m.name)?new I(`${m.name} is a C4-PlantUML feature that is not supported`,n.line,n.column,`Remove the statement; see the C4 page of the documentation for what is supported.`):new I(`"${m.name}" is not a C4 macro`,n.line,n.column,`Elements: Person, System, SystemDb, SystemQueue, Container…, Component… (with _Ext); boundaries: Boundary, Enterprise_Boundary, System_Boundary, Container_Boundary, Deployment_Node, Node; relations: Rel, BiRel, Rel_U/D/L/R, Rel_Back, RelIndex.`)}}if(o)throw new I(`"${o.id}" needs a body`,o.s.line,o.s.column,`Add "{" … "}" after it.`);if(a.length>0){let e=a[a.length-1];throw new I(`Boundary "${e}" is not closed`,0,0,`Add "}".`)}let f=e=>{let t=new Set,n=i.elements.get(e)?.parent??i.boundaries.get(e)?.parent;for(;n!==void 0;)t.add(n),n=i.boundaries.get(n)?.parent;return t};for(let e of i.relations){for(let t of[e.from,e.to])if(!i.elements.has(t)&&!i.boundaries.has(t))throw new I(`A relation refers to an unknown element "${t}"`,e.line,e.column);if(f(e.from).has(e.to)||f(e.to).has(e.from))throw new I(`A relation cannot connect "${e.from}" and "${e.to}": one is inside the other`,e.line,e.column)}for(let e of u){let t=e.boundary?i.boundaries.get(e.id):i.elements.get(e.id)??i.boundaries.get(e.id);if(!t)throw new I(`A style refers to an unknown ${e.boundary?`boundary`:`element`} "${e.id}"`,e.s.line,e.s.column);t.style={...t.style,...jt(e.style)}}for(let e of d){let t=i.relations.filter(t=>!t.hidden&&t.from===e.from&&t.to===e.to);if(t.length===0)throw new I(`UpdateRelStyle: there is no relation from "${e.from}" to "${e.to}"`,e.s.line,e.s.column);for(let n of t)n.style={...n.style,...jt(e.style)}}return i}function jt(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}var Mt=class{constructor(e){this.lines=[{text:e,from:null}]}add(e,t){this.lines.push({text:e,from:t})}get source(){return this.lines.map(e=>e.text).join(`
16
- `)}parse(e){try{return e(this.source)}catch(e){if(!(e instanceof I))throw e;let t=e.line>0?this.lines[e.line-1]?.from:null;throw new I(e.message.replace(/ \(line \d+(, column \d+)?\)$/,``),t?.line??0,t?.column??0,e.hint)}}};function Nt(e){return e.replace(/\s+##?(?:\[[^\]]*\])?[\w;:,.#-]*(?=\s*\{?\s*$)/,``)}function Pt(e){return e.replace(/\[[^\]]*\]/g,``).replace(/(up|down|left|right|le|ri|do|u|d|l|r)(?=[-.])/gi,``)}var Ft=/^(SHOW_\w+|HIDE_\w+|LAYOUT_WITH_LEGEND|LAYOUT_AS_SKETCH|Add\w*Tag|Update\w*Tag|Update(Container|System|Enterprise)BoundaryStyle|SetPropertyHeader|WithoutPropertyHeader|AddProperty|Lay_\w+|SetSketchStyle|SET_SKETCH_STYLE|AddRelTag)\s*\(/;function It(e){return e.c4!==void 0||e.statements.some(e=>/^(Person|System|Container|Component|Rel|BiRel|Boundary|System_Boundary|Container_Boundary|Enterprise_Boundary|Deployment_Node)(_\w+)?\s*\(/.test(e.text))}function Lt(e){let t=new Mt(e.c4??`C4Context`);e.title&&t.add(`title ${e.title.replace(/\n/g,` `)}`,e.statements[0]);for(let n of e.statements)Ft.test(n.text)||t.add(n.text.replace(/^(Bi)?Rel(_Back)?_Neighbor\s*\(/,(e,t,n)=>`${t??``}Rel${n??``}(`),n);return t.parse(At)}var Rt=1.25,zt=[278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584],Bt=1.06,Vt=new Set(`гзтэсеё`.split(``)),Ht=new Set(`жмшщюыЖМШЩЮЫФф`.split(``));function Ut(e){let t=e.codePointAt(0)??0;return t>=32&&t<=126?zt[t-32]??556:t>=1024&&t<=1279?Ht.has(e)?800:Vt.has(e)?470:e===e.toUpperCase()?690:545:t>=11904&&t<=40959||t>=44032&&t<=55215||t>=63744&&t<=64255||t>=65280&&t<=65519||t>=127744&&t<=129791||t===8212||t===8230?1e3:t===8211?556:t===160?278:600}var Wt=(e,t)=>{let n=0;for(let t of e)n+=Ut(t);let r=n/1e3*t.size*Bt;return t.weight===`bold`&&(r*=1.07),{width:r,height:t.size*Rt}},Gt;function Kt(){if(Gt!==void 0)return Gt;Gt=null;try{let e=globalThis;if(e.navigator?.userAgent?.includes(`jsdom`))return Gt;typeof e.OffscreenCanvas==`function`?Gt=new e.OffscreenCanvas(1,1).getContext(`2d`):e.document&&typeof e.document.createElement==`function`&&(Gt=e.document.createElement(`canvas`).getContext(`2d`)),Gt&&Gt.measureText(`M`).width<=0&&(Gt=null)}catch{Gt=null}return Gt}function qt(e){return`${e.style===`italic`?`italic `:``}${e.weight===`bold`?`bold `:``}${e.size}px ${e.family}`}function Jt(e){let t=new Map;return(n,r)=>{let i=`${qt(r)}\u0000${n}`,a=t.get(i);return a||(a=e(n,r),t.size>5e3&&t.clear(),t.set(i,a)),a}}function Yt(){let e=Kt();return e?Jt((t,n)=>(e.font=qt(n),{width:e.measureText(t).width,height:n.size*Rt})):Wt}var Xt={quot:`"`,amp:`&`,lt:`<`,gt:`>`,apos:`'`,nbsp:`\xA0`,semi:`;`,colon:`:`,num:`#`,hash:`#`};function Zt(e){return e.replace(/#(x[0-9a-fA-F]+|[0-9]+|[a-zA-Z]+);/g,(e,t)=>{if(t[0]===`x`||t[0]===`X`){let n=parseInt(t.slice(1),16);return Qt(n)?String.fromCodePoint(n):e}if(/^[0-9]+$/.test(t)){let n=parseInt(t,10);return Qt(n)?String.fromCodePoint(n):e}return Xt[t.toLowerCase()]??e})}function Qt(e){return e>0&&e<=1114111&&!(e>=55296&&e<=57343)}var $t=/<br\s*\/?>/gi;function en(e){let t=[],n=/(\*\*|__)(.+?)\1|(\*|_)(.+?)\3/g,r=0;for(let i of e.matchAll(n)){let n=i.index??0;if(n>r&&t.push({text:e.slice(r,n)}),i[2]!==void 0)for(let e of en(i[2]))t.push({...e,bold:!0});else if(i[4]!==void 0)for(let e of en(i[4]))t.push({...e,italic:!0});r=n+i[0].length}return r<e.length&&t.push({text:e.slice(r)}),t.filter(e=>e.text.length>0)}function J(e,t={}){let n=Zt(e),r=(t.markdown?n.split(/\r?\n|<br\s*\/?>/i).map(e=>e.trim()):n.split($t)).map(e=>t.markdown?en(e):e.length>0?[{text:e}]:[]);return{lines:r.length>0?r:[[]]}}function tn(e){return{lines:e.split(`
17
- `).map(e=>e.length>0?[{text:e}]:[])}}function nn(e){return e.lines.every(e=>e.every(e=>e.text.trim()===``))}function rn(e,t){return{...t,weight:e.bold?`bold`:t.weight,style:e.italic?`italic`:t.style}}function an(e,t,n){let r=0;for(let i of e)r+=n(i.text,rn(i,t)).width;return r}function on(e,t,n,r){let i=[];for(let a of e.lines){if(an(a,n,r)<=t){i.push(a);continue}let e=[[]];for(let t of a){let n=t.text.split(/( +)/);for(let r of n)/^ +$/.test(r)?e.push([]):r.length>0&&e[e.length-1].push({...t,text:r})}let o=[],s=0,c=r(` `,n).width;for(let a of e){if(a.length===0)continue;let e=an(a,n,r);o.length>0&&s+c+e>t&&(i.push(o),o=[],s=0),o.length>0&&(o.push({...a[0],text:` `}),s+=c),o.push(...a),s+=e}i.push(o)}return{lines:i}}function Y(e,t,n){let r=t.size*Rt,i=0;for(let r of e.lines)i=Math.max(i,an(r,t,n));return{label:e,width:i,height:r*e.lines.length,lineHeight:r}}function X(e,t,n,r={}){let{label:i,lineHeight:a}=e,o=n-a*i.lines.length/2,s=i.lines.map((e,n)=>{let r=o+a*n+a/2,i=e.map(e=>e.bold||e.italic?z(`tspan`,{"font-weight":e.bold?`bold`:void 0,"font-style":e.italic?`italic`:void 0,"dominant-baseline":`central`},[Me(e.text)]):Me(e.text));return z(`tspan`,{x:t,y:r,"dominant-baseline":`central`},i.length>0?i:[Me(``)])});return z(`text`,{class:r.className??`dg-label`,"text-anchor":r.anchor??`middle`,"dominant-baseline":`central`,style:r.style},s)}var sn=1e3,cn=60*sn,ln=60*cn,un=24*ln,dn=7*un,fn=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],pn=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],mn=Object.fromEntries(pn.map((e,t)=>[e.toLowerCase(),t])),hn=[[`YYYY`,`year`,`(\\d{4})`],[`SSS`,`ms`,`(\\d{3})`],[`YY`,`year2`,`(\\d{2})`],[`MM`,`month`,`(\\d{2})`],[`DD`,`day`,`(\\d{2})`],[`HH`,`hour`,`(\\d{2})`],[`mm`,`minute`,`(\\d{2})`],[`ss`,`second`,`(\\d{2})`],[`M`,`month`,`(\\d{1,2})`],[`D`,`day`,`(\\d{1,2})`],[`H`,`hour`,`(\\d{1,2})`],[`m`,`minute`,`(\\d{1,2})`],[`s`,`second`,`(\\d{1,2})`],[`X`,`unix`,`(\\d+(?:\\.\\d+)?)`],[`x`,`unixMs`,`(\\d+)`]],gn=[`MMMM`,`MMM`,`dddd`,`ddd`,`dd`,`Do`,`hh`,`A`,`a`,`ZZ`,`Z`,`Q`,`w`,`W`,`k`,`h`,`d`],_n=class extends Error{};function vn(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function yn(e){let t=[],n=0;outer:for(;n<e.length;){if(e[n]===`[`){let r=e.indexOf(`]`,n);if(r>n){t.push({pattern:vn(e.slice(n+1,r)),literal:``}),n=r+1;continue}}for(let t of gn)if(e.startsWith(t,n))throw new _n(`The date token "${t}" is not supported`);for(let[r,i,a]of hn)if(e.startsWith(r,n)){t.push({field:i,pattern:a}),n+=r.length;continue outer}t.push({pattern:vn(e[n]),literal:e[n]}),n++}return{source:e,regex:RegExp(`^${t.map(e=>e.pattern).join(``)}$`),fields:t.filter(e=>e.field).map(e=>e.field)}}function bn(e,t){return new Date(Date.UTC(e,t+1,0)).getUTCDate()}function xn(e,t){let n=t.regex.exec(e.trim());if(!n)return null;let r=1970,i=1,a=1,o=0,s=0,c=0,l=0;for(let e=0;e<t.fields.length;e++){let u=n[e+1],d=Number(u);switch(t.fields[e]){case`unix`:return Math.round(d*1e3);case`unixMs`:return d;case`year`:r=d;break;case`year2`:r=2e3+d;break;case`month`:i=d;break;case`day`:a=d;break;case`hour`:o=d;break;case`minute`:s=d;break;case`second`:c=d;break;case`ms`:l=d}}return i<1||i>12||a<1||a>bn(r,i-1)||o>23||s>59||c>59?null:Date.UTC(r,i-1,a,o,s,c,l)}var Sn=/^(\d+(?:\.\d+)?)(ms|[smhdwMy])$/;function Cn(e){let t=Sn.exec(e.trim());return t?{amount:Number(t[1]),unit:t[2]}:null}function wn(e,t){let{amount:n,unit:r}=t;switch(r){case`ms`:return e+n;case`s`:return e+n*sn;case`m`:return e+n*cn;case`h`:return e+n*ln;case`d`:return e+n*un;case`w`:return e+n*dn;case`M`:return Tn(e,n);case`y`:return Tn(e,n*12)}}function Tn(e,t){let n=Math.trunc(t),r=new Date(e),i=r.getUTCMonth()+n,a=r.getUTCFullYear()+Math.floor(i/12),o=(i%12+12)%12,s=Math.min(r.getUTCDate(),bn(a,o));return Date.UTC(a,o,s,r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds(),r.getUTCMilliseconds())+(t-n)*30*un}function En(e){return Math.floor(e/un)*un}function Dn(e){return new Date(e).getUTCDay()}function On(e){return new Date(En(e)).toISOString().slice(0,10)}function kn(e,t,n){let r=String(e);return r.length>=t?r:n.repeat(t-r.length)+r}var An=`aAbBdeHIjLmMpSuwyY%`;function jn(e){for(let t=0;t<e.length;t++){if(e[t]!==`%`)continue;let n=t+1;`-_0`.includes(e[n]??``)&&n++;let r=e[n];if(!r||!An.includes(r))return e.slice(t,n+1);t=n}return null}function Mn(e,t){let n=new Date(e),r=``;for(let i=0;i<t.length;i++){let a=t[i];if(a!==`%`){r+=a;continue}let o=null,s=t[i+1]??``;`-_0`.includes(s)&&s!==``&&(o=s,s=t[i+2]??``,i++),i++;let c=(e,t,n)=>o===`-`?String(e):kn(e,t,o===`_`?` `:o===`0`?`0`:n);switch(s){case`Y`:r+=String(n.getUTCFullYear());break;case`y`:r+=c(n.getUTCFullYear()%100,2,`0`);break;case`m`:r+=c(n.getUTCMonth()+1,2,`0`);break;case`d`:r+=c(n.getUTCDate(),2,`0`);break;case`e`:r+=c(n.getUTCDate(),2,` `);break;case`H`:r+=c(n.getUTCHours(),2,`0`);break;case`I`:r+=c(n.getUTCHours()%12||12,2,`0`);break;case`M`:r+=c(n.getUTCMinutes(),2,`0`);break;case`S`:r+=c(n.getUTCSeconds(),2,`0`);break;case`L`:r+=c(n.getUTCMilliseconds(),3,`0`);break;case`p`:r+=n.getUTCHours()<12?`AM`:`PM`;break;case`j`:{let t=Date.UTC(n.getUTCFullYear(),0,1);r+=c(Math.floor((En(e)-t)/un)+1,3,`0`);break}case`a`:r+=pn[n.getUTCDay()].slice(0,3);break;case`A`:r+=pn[n.getUTCDay()];break;case`b`:r+=fn[n.getUTCMonth()].slice(0,3);break;case`B`:r+=fn[n.getUTCMonth()];break;case`w`:r+=String(n.getUTCDay());break;case`u`:r+=String(n.getUTCDay()||7);break;case`%`:r+=`%`;break;default:r+=`%${s}`}}return r}var Nn={millisecond:`ms`,second:`s`,minute:`m`,hour:`h`,day:`d`,week:`w`,month:`M`};function Pn(e){let t=/^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/.exec(e.trim());return t?{step:Number(t[1]),unit:Nn[t[2]]}:null}var Fn={ms:1,s:sn,m:cn,h:ln,d:un,w:dn};function In(e){return e.unit===`M`?e.step*30*un:e.step*Fn[e.unit]}function Ln(e,t,n,r=1e3){let i=[];if(n.unit===`M`){let a=new Date(e),o=a.getUTCFullYear(),s=a.getUTCMonth();s-=s%n.step;let c=Date.UTC(o,s,1);for(;c<=t&&i.length<r;)c>=e&&i.push(c),s+=n.step,o+=Math.floor(s/12),s%=12,c=Date.UTC(o,s,1);return i}let a=Fn[n.unit]*n.step,o;if(n.unit===`w`){let t=En(e);o=t-Dn(t)*un}else o=n.unit===`d`?En(e):Math.floor(e/a)*a;for(;o<e;)o+=a;for(;o<=t&&i.length<r;)i.push(o),o+=a;return i}var Rn=[{unit:`s`,step:1},{unit:`s`,step:5},{unit:`s`,step:15},{unit:`s`,step:30},{unit:`m`,step:1},{unit:`m`,step:5},{unit:`m`,step:15},{unit:`m`,step:30},{unit:`h`,step:1},{unit:`h`,step:3},{unit:`h`,step:6},{unit:`h`,step:12},{unit:`d`,step:1},{unit:`d`,step:2},{unit:`w`,step:1},{unit:`w`,step:2},{unit:`M`,step:1},{unit:`M`,step:3},{unit:`M`,step:6},{unit:`M`,step:12},{unit:`M`,step:24},{unit:`M`,step:60}],zn=[`done`,`active`,`crit`,`milestone`],Bn=new Set([`title`,`dateFormat`,`axisFormat`,`tickInterval`,`excludes`,`includes`,`weekend`,`todayMarker`,`topAxis`,`inclusiveEndDates`,`section`,`click`,`displayMode`]);function Vn(e){let t=K(e),n=t[0];if(!n||!/^gantt$/.test(n.text))throw new I(`A gantt chart starts with "gantt"`,n?.line??1,n?.column??1);let r={type:`gantt`,dateFormat:`YYYY-MM-DD`,axisFormat:`%Y-%m-%d`,axisFormatSet:!1,excludes:[],includes:[],todayMarker:`on`,topAxis:!1,inclusiveEndDates:!1,sections:[],tasks:[],excludedRanges:[],accessibility:{}},i=[6,0],a=n,o=[],s=[],c=``,l=0,u=new Map;for(let e=1;e<t.length;e++){let n=t[e],d=q(t,e,r.accessibility);if(d>0){e+=d-1;continue}let f=/^([A-Za-z]+)(?:\s+(.*))?$/.exec(n.text),p=f?.[1]??``,m=(f?.[2]??``).trim();if(Bn.has(p)||!n.text.includes(`:`))switch(p){case`title`:r.title=Zt(m);continue;case`dateFormat`:r.dateFormat=m,a=n;continue;case`axisFormat`:if(jn(m))throw new I(`The axis format directive "${jn(m)}" is not supported`,n.line,n.column,`Supported: %Y %y %m %d %e %H %I %M %S %L %p %j %a %A %b %B %w %u %%.`);r.axisFormat=m,r.axisFormatSet=!0;continue;case`tickInterval`:{let e=Pn(m);if(!e)throw new I(`"${m}" is not a tick interval`,n.line,n.column,`Write e.g. 1day, 2week, 1month.`);r.tickInterval=e;continue}case`excludes`:for(let e of Hn(m))r.excludes.push(e),u.set(e,n);continue;case`includes`:r.includes.push(...Hn(m));continue;case`weekend`:if(m===`friday`)i=[5,6];else if(m===`saturday`)i=[6,0];else throw new I(`"${m}" cannot start a weekend`,n.line,n.column,`Write friday or saturday.`);continue;case`todayMarker`:r.todayMarker=m===``?`on`:m;continue;case`topAxis`:r.topAxis=!0;continue;case`inclusiveEndDates`:r.inclusiveEndDates=!0;continue;case`section`:c=Zt(m);continue;case`click`:{let e=/^(\S+)\s+href\s+("[^"]*"|\S+)\s*$/.exec(m);if(!e)throw new I(`Only "click <id> href <url>" is supported`,n.line,n.column,`Callbacks are not run: a diagram cannot execute code.`);let t=qe(ft(e[2]));if(t===null)throw new I(`The link "${ft(e[2])}" is not allowed`,n.line,n.column,`Use http(s), mailto or a relative link.`);for(let r of e[1].split(`,`))s.push({id:r.trim(),href:t,statement:n});continue}case`displayMode`:throw new I(`displayMode is not supported`,n.line,n.column,`Remove the line; every task gets its own row.`);default:throw new I(`"${n.text}" is not a task`,n.line,n.column,`Write: Task name : 2024-01-01, 3d`)}let h=n.text.indexOf(`:`),g=Zt(n.text.slice(0,h).trim());if(g===``)throw new I(`The task has no name`,n.line,n.column);let _=n.text.slice(h+1).split(`,`).map(e=>e.trim()),v={done:!1,active:!1,crit:!1,milestone:!1};for(;_.length>0&&zn.includes(_[0]);)v[_.shift()]=!0;if(_.some(e=>e===``))throw new I(`The task has an empty item`,n.line,n.column+h+1);let y=`task${++l}`,b=null,x;if(_.length===1)x=_[0];else if(_.length===2)b=_[0],x=_[1];else if(_.length===3)y=_[0],b=_[1],x=_[2];else throw new I(_.length===0?`The task has no dates`:`The task has too many items`,n.line,n.column+h+1,`Write: [tags,] [id,] [start,] end or duration`);if(/\s/.test(y))throw new I(`"${y}" cannot be a task id: it contains a space`,n.line,n.column+h+1);if(o.some(e=>e.id===y))throw new I(`The task id "${y}" is used twice`,n.line,n.column+h+1);if(b===null&&o.length===0)throw new I(`The first task needs a start date`,n.line,n.column+h+1,`Write: Task : 2024-01-01, 3d`);o.push({id:y,name:g,section:c,tags:v,startSpec:b,endSpec:x,statement:n})}let d;try{d=yn(r.dateFormat)}catch(e){throw e instanceof _n?new I(e.message,a.line,a.column):e}let f=Un(r,d,i,u),p=new Map(o.map(e=>[e.id,e]));o.forEach((e,t)=>Gn(e,t,o,p,d,r,f));for(let e of s){let t=p.get(e.id);if(!t)throw new I(`No task has the id "${e.id}"`,e.statement.line,e.statement.column);t.href=e.href}for(let e of o)r.sections.includes(e.section)||r.sections.push(e.section),r.tasks.push({id:e.id,name:e.name,section:e.section,tags:e.tags,start:e.start,end:e.end,renderEnd:e.renderEnd,href:e.href,line:e.statement.line});if(f&&r.tasks.length>0){let e=En(Math.min(...r.tasks.map(e=>e.start))),t=Math.max(...r.tasks.map(e=>e.end));for(let n=e;n<t&&n<e+316224e6;n+=un){if(!f(n))continue;let e=r.excludedRanges[r.excludedRanges.length-1];e&&e.end===n?e.end=n+un:r.excludedRanges.push({start:n,end:n+un})}}return r}function Hn(e){return e.split(/[\s,]+/).map(e=>e.trim().toLowerCase()).filter(Boolean)}function Un(e,t,n,r){if(e.excludes.length===0)return null;let i=new Set,a=new Set,o=yn(`YYYY-MM-DD`),s=e=>{let n=xn(e,t)??xn(e,o);return n===null?null:On(n)};for(let t of e.excludes)if(t===`weekends`)i.add(n[0]),i.add(n[1]);else if(t in mn)i.add(mn[t]);else{let e=s(t);if(e===null){let e=r.get(t);throw new I(`"${t}" in excludes is neither a weekday nor a date`,e?.line??0,e?.column??0)}a.add(e)}let c=new Set(e.includes.map(s).filter(e=>e!==null));return e=>{let t=On(e);return c.has(t)?!1:i.has(Dn(e))||a.has(t)}}function Wn(e,t,n,r){let i=e.statement.text.indexOf(`:`),a=r?e.statement.text.indexOf(r,i):-1;return new I(t,e.statement.line,e.statement.column+(a>=0?a:i+1),n)}function Gn(e,t,n,r,i,a,o){if(e.end!==void 0)return;if(e.resolving)throw Wn(e,`The task "${e.name}" depends on itself through "after" or "until"`);e.resolving=!0;let s=t=>{let s=r.get(t);if(!s)throw Wn(e,`No task has the id "${t}"`,void 0,t);return Gn(s,n.indexOf(s),n,r,i,a,o),s},c;if(e.startSpec===null){let e=n[t-1];Gn(e,t-1,n,r,i,a,o),c=e.end}else if(/^after\s/.test(e.startSpec)){let t=e.startSpec.slice(5).trim().split(/\s+/);c=Math.max(...t.map(e=>s(e).end))}else{let t=xn(e.startSpec,i);if(t===null)throw Wn(e,`"${e.startSpec}" is not a date in the format ${i.source}`,void 0,e.startSpec);c=t}let l,u=!1,d=Cn(e.endSpec);if(d)l=wn(c,d);else if(/^until\s/.test(e.endSpec)){let t=e.endSpec.slice(5).trim().split(/\s+/);l=Math.min(...t.map(e=>s(e).start)),u=!0}else{let t=xn(e.endSpec,i);if(t===null)throw Wn(e,`"${e.endSpec}" is neither a duration nor a date in the format ${i.source}`,`Durations: 3d, 2w, 4h, 30m, 1M.`,e.endSpec);l=a.inclusiveEndDates?t+un:t,u=!0}if(l<c)throw Wn(e,`The task "${e.name}" ends before it starts`);let f=l;if(o&&!u&&!e.tags.milestone){let e=c,t=!1,n=0;for(;e<=l&&n++<1e5;)t||(f=l),t=o(e),t&&(l+=un),e+=un}e.start=c,e.end=l,e.renderEnd=Math.max(c,Math.min(f,l)),e.manualEnd=u,e.resolving=!1}var Kn=String.raw`\d{4}-\d{2}-\d{2}`,qn=[`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`,`sunday`];function Jn(e,t){return Number(e)*(/^week/i.test(t)?7:1)}function Yn(e){let t=new Map,n=new Map,r=[],i,a=``,o=null,s=(e,r)=>{let i=n.get(e);if(i)return t.get(i);let o={id:`t${t.size+1}`,name:e,section:a,milestone:!1,s:r};return t.set(o.id,o),n.set(e,o.id),o},c=(e,t)=>{let r=n.get(e);if(!r)throw new I(`"[${e}]" is not a task`,t.line,t.column,`Declare the task before referring to it.`);return r};for(let t of e.statements){let e=t.text,l;if(l=RegExp(`^project\\s+starts\\s+(?:the\\s+)?(${Kn})$`,`i`).exec(e)){i=l[1];continue}if(l=/^--\s*(.*?)\s*--$/.exec(e)){a=l[1];continue}if(l=RegExp(`^(${qn.join(`|`)})s?\\s+(?:are|is)\\s+closed$`,`i`).exec(e)){r.push(l[1].toLowerCase());continue}if(l=RegExp(`^(${Kn})(?:\\s+to\\s+(${Kn}))?\\s+(?:are|is)\\s+closed$`,`i`).exec(e)){r.push(l[1]);continue}if(/^(printscale|projectscale|language|today|hide|show|saturday|sunday|\d{4}-\d{2}-\d{2}.*\bopen\b|.*\bare\s+open$|.*\bis\s+open$|<style>|separator)/i.test(e))continue;if(l=/^\[([^\]]+)\]\s*->\s*\[([^\]]+)\]$/.exec(e)){let e=c(l[1],t),n=s(l[2],t);n.start={after:e};continue}let u=!1;if(/^then\s+/i.test(e)&&(u=!0,e=e.replace(/^then\s+/i,``)),l=/^\[([^\]]+)\](?:\s+as\s+\[([^\]]+)\])?\s*(.*)$/.exec(e),!l)throw new I(`"${t.text}" is not a Gantt statement`,t.line,t.column,`[Task] lasts 5 days`);let d=s(l[1],t);l[2]&&n.set(l[2],d.id),u&&o&&(d.start={after:o.id});for(let e of l[3].split(/\s+and\s+/i)){let n=e.trim().replace(/\s+on\s+\{[^}]*\}.*$/i,``);if(n===``)continue;let r;if(r=/^(?:lasts|requires)\s+(\d+)\s+(days?|weeks?)$/i.exec(n))d.days=Jn(r[1],r[2]);else if(r=RegExp(`^starts\\s+(?:the\\s+)?(${Kn})$`,`i`).exec(n))d.start={date:r[1]};else if(/^starts\s+\d+\s+days?\s+(after|before)\s/i.test(n))throw new I(`A start offset ("N days after") is not supported yet`,t.line,t.column,`Start at [X]'s end, or give the task a date.`);else if(r=/^starts\s+(?:at\s+)?\[([^\]]+)\]'s\s+end$/i.exec(n))d.start={after:c(r[1],t)};else if(r=/^starts\s+at\s+\[([^\]]+)\]'s\s+start$/i.exec(n))d.start={after:`start:${c(r[1],t)}`};else if(r=RegExp(`^ends\\s+(?:the\\s+)?(${Kn})$`,`i`).exec(n))d.end={date:r[1]};else if(r=/^ends\s+at\s+\[([^\]]+)\]'s\s+start$/i.exec(n))d.end={until:c(r[1],t)};else if(r=/^happens\s+at\s+\[([^\]]+)\]'s\s+end$/i.exec(n))d.milestone=!0,d.start={after:c(r[1],t)};else if(r=RegExp(`^happens\\s+(?:the\\s+)?(${Kn})$`,`i`).exec(n))d.milestone=!0,d.start={date:r[1]};else if(r=/^is\s+(\d+)%\s+(?:completed|complete)$/i.exec(n))d.progress=Number(r[1]);else if(/^is\s+completed$/i.test(n))d.progress=100;else if(/^is\s+colou?red\b|^is\s+deleted$|^displays\s/i.test(n))continue;else throw new I(`"${n}" is not something a task can do here`,t.line,t.column,`lasts 5 days, starts at [X]'s end, is 40% completed, happens at [X]'s end`)}o=d}if(t.size===0)throw new I(`The chart has no tasks`,0,0,`[Task] lasts 5 days`);if([...t.values()].some(e=>!e.start||!e.start.date&&!e.start.after)&&!i){let e=[...t.values()].find(e=>!e.start);throw new I(`The chart needs a start date`,e.s.line,e.s.column,`Project starts 2026-01-05, or give the first task a date.`)}let l=[],u=new Map,d=e=>{if(u.get(e.id)===`done`)return;if(u.get(e.id)===`visiting`)throw new I(`"[${e.name}]" depends on itself`,e.s.line,e.s.column);u.set(e.id,`visiting`);let n=e.start?.after?.replace(/^start:/,``);for(let r of[n,e.end?.until])r&&d(t.get(r));u.set(e.id,`done`),l.push(e)};for(let e of t.values())d(e);let f=new Mt(`gantt`),p=e.statements[0];f.add(`dateFormat YYYY-MM-DD`,p),e.title&&f.add(`title ${e.title.replace(/\n/g,` `)}`,p);let m=r.filter(e=>qn.includes(e)),h=m.includes(`saturday`)&&m.includes(`sunday`),g=[...h?[`weekends`]:[],...m.filter(e=>!h||e!==`saturday`&&e!==`sunday`),...r.filter(e=>!qn.includes(e))];g.length>0&&f.add(`excludes ${g.join(` `)}`,p);let _=null;for(let e of l){e.section!==_&&(_=e.section,e.section&&f.add(`section ${e.section}`,e.s));let n=[];e.milestone&&n.push(`milestone`),e.progress!==void 0&&n.push(e.progress>=100?`done`:e.progress>0?`active`:``);let r;r=e.start?.date?e.start.date:e.start?.after?.startsWith(`start:`)?t.get(e.start.after.slice(6)).start?.date??i:e.start?.after?`after ${e.start.after}`:i;let a;a=e.milestone?`0d`:e.end?.date?e.end.date:e.end?.until?`until ${e.end.until}`:`${e.days??1}d`;let o=e.name.replace(/[:#;]/g,` `).trim()+(e.progress!==void 0&&e.progress>0&&e.progress<100?` (${e.progress}%)`:``);f.add(`${o} :${[...n.filter(Boolean),e.id,r,a].join(`, `)}`,e.s)}return f.parse(Vn)}var Xn={"..":`dotted`,"==":`double`,"~~":`dashed`,"--":`solid`};function Zn(e){let t=/<b>/i.test(e);return{text:G(e.replace(/<&[\w-]+>/g,``).replace(/<\/?[a-z][^>]*>/gi,``).trim()),bold:t}}function Qn(e){let t=e.trim();if(t===``||t===`.`||t===`*`)return{kind:`empty`};let n;if(n=/^\^([^^]*)\^/.exec(t))return{kind:`droplist`,text:Zn(n[1]).text};if(n=/^"(.*)"$/.exec(e.trim()))return{kind:`input`,text:n[1]};if(n=/^\[([Xx ]?)\]\s*(.*)$/.exec(t))return{kind:`checkbox`,checked:/x/i.test(n[1]),text:Zn(n[2]).text};if(n=/^\(([Xx ]?)\)\s*(.*)$/.exec(t))return{kind:`radio`,checked:/x/i.test(n[1]),text:Zn(n[2]).text};if(n=/^\[(.+)\]$/.exec(t))return{kind:`button`,text:Zn(n[1]).text};let r=Zn(t);return{kind:`text`,text:r.text,bold:r.bold}}var $n=class{constructor(e){this.list=e,this.pos=0,this.lineAt=[];let t=[];for(let n of e){t.push(n.text);for(let e=0;e<=n.text.length;e++)this.lineAt.push(n.line)}this.text=t.join(`
18
- `)}error(e,t){return new I(e,this.lineAt[Math.min(this.pos,this.lineAt.length-1)]??0,0,t)}run(){if(this.skipSpace(),this.text[this.pos]!==`{`)throw this.error(`A wireframe starts with "{"`,`{ Login | "name" }`);this.pos++;let e=this.block();if(this.skipSpace(),this.pos<this.text.length)throw this.error(`Text after the closing "}"`);return e}skipSpace(){for(;this.pos<this.text.length&&/\s/.test(this.text[this.pos]);)this.pos++}block(){let e=/^(\^"[^"]*"|SI|S-|[+#!\-/*TS^])?/.exec(this.text.slice(this.pos))[0];this.pos+=e.length;let t=[[]],n=``,r=()=>{let e=t[t.length-1];(n.trim()!==``||e.length>0||n.includes(`"`))&&e.push(n),n=``};for(;;){if(this.pos>=this.text.length)throw this.error(`A "{" is never closed`,`Close it with "}".`);let e=this.text[this.pos];if(e===`"`){let e=this.text.indexOf(`"`,this.pos+1);if(e<0)throw this.error(`A text field is never closed`,`End it with ".`);n+=this.text.slice(this.pos,e+1),this.pos=e+1}else if(e===`{`){this.pos++;let e=this.block();for(n=``,t[t.length-1].push(e);this.pos<this.text.length&&!/[|\n}]/.test(this.text[this.pos]);)this.pos++;this.text[this.pos]===`|`&&this.pos++}else{if(e===`}`){this.pos++,r();break}e===`|`?(this.pos++,r()):e===`
19
- `?(this.pos++,r(),t.push([])):(n+=e,this.pos++)}}let i=t.filter(e=>e.some(e=>typeof e!=`string`||e.trim()!==``)),a=e=>e.map(e=>typeof e==`string`?e.trim():``).filter(e=>e!==``);if(e===`/`){if(i.length>1&&i.every(e=>a(e).length===1)){let e=i.map(e=>a(e)[0]);return{kind:`tabs`,tabs:e.map(e=>Zn(e).text),selected:Math.max(0,e.findIndex(e=>/<b>/i.test(e))),vertical:!0}}let e=i.flatMap(a);return{kind:`tabs`,tabs:e.map(e=>Zn(e).text),selected:Math.max(0,e.findIndex(e=>/<b>/i.test(e))),vertical:!1}}if(e===`*`)return{kind:`menu`,items:a(i[0]??[]).map(e=>Zn(e).text)};if(e===`T`)return{kind:`tree`,items:i.map(e=>{let t=a(e)[0]??``,n=/^(\++)\s*(.*)$/.exec(t);return{depth:n?n[1].length:1,text:Zn(n?n[2]:t).text}})};let o=e===`+`?`outer`:e===`#`?`all`:e===`!`?`columns`:e===`-`?`rows`:`none`,s=e.startsWith(`^`)&&Zn(e.slice(2,-1)).text||void 0;return{kind:`grid`,border:s!==void 0||e===`^`?`outer`:o,title:s,scroll:e.startsWith(`S`),rows:i.map(e=>e.length===1&&typeof e[0]==`string`&&Xn[e[0].trim()]?[{kind:`separator`,style:Xn[e[0].trim()]}]:e.map(e=>typeof e==`string`?Qn(e):e))}}};function er(e){return/^salt$/i.test(e.statements[0]?.text??``)}function tr(e){let t=er(e)?e.statements.slice(1):e.statements;if(t.length===0)throw new I(`The wireframe is empty`,0,0,`{ Login | "name" }`);return{type:`salt`,root:new $n(t).run(),title:e.title?G(e.title):void 0,accessibility:{}}}function nr(e){return e.statements.some(e=>/^(robust|concise|binary|clock)\s+\S/i.test(e.text))}function rr(e){let t={type:`timing`,title:e.title?G(e.title):void 0,signals:[],messages:[],highlights:[],accessibility:{}},n=new Map,r=new Set,i=0,a=null,o=(e,t,r)=>{let i=n.get(nt(e));if(!i)throw new I(`"${e}" is not a signal`,t,r,`Declare it first: robust "Name" as N`);return i},s=(e,t)=>{let n=e.trim();return n.startsWith(`+`)?t+Number(n.slice(1)):Number(n)},c=(e,t,n)=>{let i=nt(n.replace(/\s*:.*$/,``).trim());e.kind!==`robust`||r.has(e.id)||e.states.includes(i)||/^\{.*\}$/.test(i)||e.states.unshift(i);let a=e.changes[e.changes.length-1];if(a&&a.at>t)throw new I(`"${e.label}" changes at ${t}, before its previous change at ${a.at}`);a&&a.at===t?a.state=i:e.changes.push({at:t,state:i})};for(let l of e.statements){let e=l.text,u;if(u=/^(robust|concise|binary|clock)\s+("[^"]+"|\S+)(?:\s+as\s+(\S+))?(?:\s+with\s+period\s+(\d+)(?:\s+pulse\s+(\d+))?(?:\s+offset\s+(\d+))?)?(?:\s*<<.*>>)?$/i.exec(e)){let e=u[1].toLowerCase(),r=nt(u[2]),i=u[3]??r,a={id:i,label:G(r),kind:e,states:[],changes:[]};if(e===`clock`){let e=Number(u[4]??100);a.clock={period:e,pulse:u[5]?Number(u[5]):e/2,offset:u[6]?Number(u[6]):0}}n.set(i,a),n.set(r,a),t.signals.push(a)}else if(u=/^("[^"]+"|\S+)\s+has\s+(.+)$/i.exec(e)){let e=o(u[1],l.line,l.column);e.states=u[2].split(`,`).map(e=>nt(e.trim())).reverse(),r.add(e.id)}else if(u=/^@(\+?-?[\d.]+)$/.exec(e))i=s(u[1],i),a=null;else if(u=/^@("[^"]+"|[^\s@]+)$/.exec(e))a=o(u[1],l.line,l.column),i=0;else if(a&&(u=/^(\+?-?[\d.]+)\s+is\s+(.+)$/i.exec(e)))i=s(u[1],i),c(a,i,u[2]);else if(u=/^("[^"]+"|\S+)\s+is\s+(.+)$/i.exec(e))c(o(u[1],l.line,l.column),i,u[2]);else if(u=/^("[^"]+"|[^\s-]+)\s*-+>\s*("[^"]+"|[^\s@:]+)(?:@(\+?-?[\d.]+))?\s*(?::\s*(.*))?$/.exec(e)){let e=o(u[1],l.line,l.column),n=o(u[2],l.line,l.column);t.messages.push({from:e.id,to:n.id,at:i,until:u[3]?s(u[3],i):i,text:G(u[4]?.trim()??``)})}else if(u=/^highlight\s+(\+?-?[\d.]+)\s+to\s+(\+?-?[\d.]+)\s*(#[\w;:.-]+)?\s*(?::\s*(.*))?$/i.exec(e)){let e=u[3]?.split(`;`)[0]?.slice(1),n=e?U(`fill:${/^[0-9a-fA-F]{3,8}$/.test(e)?`#${e}`:e}`,l.line,l.column).shape.fill:void 0;t.highlights.push({from:s(u[1],i),to:s(u[2],i),text:G(u[4]?.trim()??``),color:n})}else if(!/^(hide|show|scale|mode|manual|compact)\b/i.test(e))throw new I(`"${e}" is not a timing diagram statement`,l.line,l.column)}if(t.signals.length===0)throw new I(`The diagram has no signals`,0,0,`robust "Name" as N`);return t}var ir=/^([*+#-])\1*(?=[_[:\s])/,ar=500;function or(e){let t=e.statements,n=[],r=null,i=0;for(let e=0;e<t.length;e++){let a=t[e];if(/^(left|right)\s+side$/i.test(a.text))continue;let o=ir.exec(a.text);if(!o)throw new I(`"${a.text}" is not a node`,a.line,a.column,`Start each node with stars: * root, ** child.`);let s=o[0].length,c=a.text.slice(s),l=c.startsWith(`_`);l&&(c=c.slice(1)),c=c.replace(/^\[[^\]]*\]/,``);let u=c.trim();if(u.startsWith(`:`)){let n=[u.slice(1)];for(;!n[n.length-1].trimEnd().endsWith(`;`);){if(e++,e>=t.length)throw new I(`This node is never closed`,a.line,a.column,`End it with ";".`);n.push(t[e].text)}n[n.length-1]=n[n.length-1].trimEnd().slice(0,-1),u=n.join(`<br>`)}if(++i>ar)throw Te(`nodes`,i,ar);let d={id:`n${i}`,label:G(u),markdown:!1,shape:l?`default`:`rounded`,classes:[],children:[],line:a.line,column:a.column};if(!r){if(s!==1)throw new I(`The first node is the root, with one star`,a.line,a.column);r=d,n.push({depth:s,node:d});continue}if(s===1)throw new I(`A mind map has one root`,a.line,a.column,`Give the other top-level nodes two stars.`);for(;n.length>0&&n[n.length-1].depth>=s;)n.pop();let f=n[n.length-1];if(!f)throw new I(`This node has no parent`,a.line,a.column);f.node.children.push(d),n.push({depth:s,node:d})}if(!r)throw new I(`The mind map is empty`,0,0);return{type:`mindmap`,root:r,accessibility:e.title?{title:e.title}:{}}}var sr={TB:`TB`,TD:`TB`,BT:`BT`,LR:`LR`,RL:`RL`},cr=`[\\p{L}\\p{N}_](?:[\\p{L}\\p{N}_]|-(?=[\\p{L}\\p{N}_]))*`,lr=`~([^~\\s{]+(?:~[^~\\s{]*~)?[^~\\s{]*)~`,ur={"<|":`inheritance`,"*":`composition`,o:`aggregation`,"<":`arrow`},dr={"|>":`inheritance`,"*":`composition`,o:`aggregation`,">":`arrow`},fr=RegExp(`^(${cr})\\s*(?:"([^"]*)"\\s*)?(<\\||\\*|o|<)?(--|\\.\\.)(\\|>|\\*|o|>)?\\s*(?:"([^"]*)"\\s*)?(${cr})\\s*(?::\\s*(.*))?$`,`u`),pr=RegExp(`^class\\s+(${cr})(?:${lr})?(?:\\s*\\[\\s*"([^"]*)"\\s*\\])?(?::::([\\w-]+))?(?:\\s*<<\\s*([^>]+?)\\s*>>)?\\s*(\\{\\s*\\}?)?$`,`u`),mr=RegExp(`^<<\\s*([^>]+?)\\s*>>\\s*(${cr})$`,`u`),hr=RegExp(`^(${cr})\\s*:\\s*(.+)$`,`u`),gr=`(_blank|_self|_parent|_top)`;function _r(e){let t=``,n=0;for(let r=0;r<e.length;r++){let i=e[r];if(i!==`~`){t+=i;continue}let a=e[r-1]??``,o=e[r+1]??``;/[\p{L}\p{N}_\]]/u.test(a)&&/[\p{L}\p{N}_[(]/u.test(o)||n===0?(t+=`<`,n++):(t+=`>`,n--)}return t+`>`.repeat(Math.max(0,n))}function vr(e){let t=e.trim(),n;/^[+\-#~]/.test(t)&&(n=t[0],t=t.slice(1).trim());let r=n??``,i=e=>e===`$`?`static`:`abstract`,a=t.indexOf(`(`),o=t.lastIndexOf(`)`);if(a>=0&&o>a){let e=t.slice(0,a).trim(),s=t.slice(a+1,o).trim(),c=t.slice(o+1).trim(),l;/^[$*]/.test(c)?(l=i(c[0]),c=c.slice(1).trim()):/[$*]$/.test(c)&&(l=i(c[c.length-1]),c=c.slice(0,-1).trim());let u=c.replace(/^:\s*/,``);return{kind:`method`,text:`${r}${_r(e)}(${_r(s)})${u?` : ${_r(u)}`:``}`,visibility:n,classifier:l}}let s;return/[$*]$/.test(t)&&(s=i(t[t.length-1]),t=t.slice(0,-1).trim()),{kind:`attribute`,text:`${r}${_r(t)}`,visibility:n,classifier:s}}function yr(e){let t=K(e),n=t[0];if(!n||!/^classDiagram(-v2)?$/.test(n.text))throw new I(`A class diagram starts with "classDiagram"`,n?.line??1,n?.column??1);let r={type:`class`,direction:`TB`,classes:new Map,relations:[],notes:[],namespaces:new Map,classDefs:new Map,accessibility:{}},i=[],a=[],o=[],s=[],c=null,l=e=>{let t=r.classes.get(e);return t||(t={id:e,label:e,annotations:[],attributes:[],methods:[],classes:[]},r.classes.set(e,t)),c&&!t.namespace&&(t.namespace=c.id),t},u=(e,t,n)=>{let r=/^<<\s*([^>]+?)\s*>>$/.exec(t);if(r){e.annotations.push(r[1]);return}if(t.startsWith(`<<`))throw new I(`"${t}" is not an annotation`,n.line,n.column,`Write <<interface>> on its own line.`);let i=vr(t);i.kind===`method`?e.methods.push(i):e.attributes.push(i)};for(let e=1;e<t.length;e++){let n=t[e],d=n.text,f=q(t,e,r.accessibility);if(f>0){e+=f-1;continue}if(d===`}`){if(!c)throw new I(`"}" without an open class or namespace`,n.line,n.column);c=null;continue}let p=/^namespace\s+(\S+?)\s*\{$/u.exec(d);if(p){if(c)throw new I(`Namespaces do not nest`,n.line,n.column,`Close the namespace before opening another, or use a dotted name: namespace A.B {`);if(!/^[\p{L}\p{N}_][\p{L}\p{N}_.-]*$/u.test(p[1]))throw new I(`"${p[1]}" is not a namespace name`,n.line,n.column+10);c={id:p[1],s:n},r.namespaces.has(p[1])||r.namespaces.set(p[1],{id:p[1]});continue}if(p=/^direction\s+(\w+)$/.exec(d),p){let e=sr[p[1].toUpperCase()];if(!e)throw new I(`"${p[1]}" is not a direction`,n.line,n.column+10,`Use TB, BT, LR or RL.`);r.direction=e;continue}if(/^class\s+`/.test(d))throw new I(`Class names in backquotes are not supported`,n.line,n.column+6,`Give the class an id and a label: class Animal["Animal Class!"].`);if(p=pr.exec(d),p){let r=l(p[1]);if(p[2]!==void 0&&(r.generic=p[2],r.label=`${r.id}<${_r(p[2])}>`),p[3]!==void 0&&(r.label=p[3]),p[4]&&r.classes.push(p[4]),p[5]&&r.annotations.push(p[5]),p[6]!==void 0&&!p[6].endsWith(`}`)){let i=e+1;for(;i<t.length&&t[i].text!==`}`;i++)u(r,t[i].text,t[i]);if(i>=t.length)throw new I(`The body of class "${r.id}" is not closed`,n.line,n.column,`Add "}" on its own line.`);e=i}continue}if(/^class\s/.test(d))throw new I(`"${d}" is not a class declaration`,n.line,n.column,`Write class Name, class Name~T~, class Name["Label"] or class Name {.`);if(p=mr.exec(d),p){l(p[2]).annotations.push(p[1]);continue}if(c)throw new I(`Only class declarations go inside a namespace`,n.line,n.column,`Write relationships, notes and members ("Class : member") after the namespace block.`);if(p=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(d),p){let e=U(p[2],n.line,n.column);for(let t of p[1].split(`,`))r.classDefs.set(t.trim(),e);continue}if(p=/^cssClass\s+("[^"]*"|\S+)\s+([\w-]+)$/.exec(d),p){let e=p[1].replace(/^"|"$/g,``).split(`,`).map(e=>e.trim()).filter(Boolean);i.push({ids:e,cls:p[2],s:n});continue}if(p=RegExp(`^style\\s+(${cr})\\s+(.+)$`,`u`).exec(d),p){a.push({id:p[1],style:U(p[2],n.line,n.column),s:n});continue}if(p=RegExp(`^(?:click\\s+(${cr})\\s+href|link\\s+(${cr}))\\s+"([^"]*)"(?:\\s+"([^"]*)")?(?:\\s+${gr})?$`,`u`).exec(d),p){o.push({id:p[1]??p[2],href:p[3],tooltip:p[4],target:p[5],s:n});continue}if(/^callback\s/.test(d)||RegExp(`^click\\s+${cr}\\s+call\\s`,`u`).test(d))continue;if(/^(click|link)\s/.test(d))throw new I(`"${d}" is not a link`,n.line,n.column,`Write click Name href "url" or link Name "url".`);if(p=/^note\s+for\s+(\S+)\s+"(.*)"$/u.exec(d),p){r.notes.push({target:p[1],text:p[2].replace(/\\n/g,`
15
+ `),i=!1;return r.forEach((e,r)=>{let a=r+1;if(i){e.includes(`}%%`)&&(i=!1);return}if(e.trimStart().startsWith(`%%{`)){e.includes(`}%%`)||(i=!0);return}let o=st(e),s=t.semicolons?ct(o):[{text:o,offset:0}];for(let e of s){let t=e.text.length-e.text.trimStart().length,r=e.text.trim();r.length!==0&&n.push({text:r,line:a,column:e.offset+t+1})}}),n}function ct(e){let t=[],n=0,r=!1,i=0;for(let a=0;a<e.length;a++){let o=e[a];o===`"`&&(r=!r),!r&&(`([{`.includes(o)?n++:`)]}`.includes(o)?n=Math.max(0,n-1):o===`;`&&n===0&&(t.push({text:e.slice(i,a),offset:i}),i=a+1))}return t.push({text:e.slice(i),offset:i}),t}function lt(e){let t=q(e)[0];if(!t)return null;let n=/^([A-Za-z][\w-]*)\s*(.*)$/.exec(t.text);return n?{keyword:n[1],rest:n[2].trim(),statement:t}:null}var ut=class{constructor(e,t=e.text){this.statement=e,this.text=t,this.pos=0}get done(){return this.pos>=this.text.length}peek(e=0){return this.text[this.pos+e]??``}rest(){return this.text.slice(this.pos)}skipSpaces(){for(;!this.done&&/\s/.test(this.text[this.pos]);)this.pos++}startsWith(e){return this.text.startsWith(e,this.pos)}eat(e){return this.startsWith(e)?(this.pos+=e.length,!0):!1}match(e){let t=new RegExp(e.source,e.flags.replace(`g`,``)+`y`);t.lastIndex=this.pos;let n=t.exec(this.text);return n&&(this.pos+=n[0].length),n}column(e=this.pos){return this.statement.column+e}error(e,t,n=this.pos){return new L(e,this.statement.line,this.column(n),t)}};function dt(e){let t=e.trim();return t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`)?t.slice(1,-1):t}function J(e,t,n){let r=e[t],i=/^accTitle\s*:\s*(.*)$/.exec(r.text);if(i)return n.title=i[1].trim(),1;if(i=/^accDescr\s*:\s*(.*)$/.exec(r.text),i)return n.description=i[1].trim(),1;if(i=/^accDescr\s*\{\s*(.*)$/.exec(r.text),i){let r=[],a=i[1],o=t;for(;;){let t=a.indexOf(`}`);if(t>=0){r.push(a.slice(0,t));break}if(r.push(a),o++,o>=e.length)break;a=e[o].text}return n.description=r.map(e=>e.trim()).filter(Boolean).join(` `),o-t+1}return 0}var ft=[`C4Context`,`C4Container`,`C4Component`,`C4Dynamic`,`C4Deployment`];function pt(e){let t=e.text,n=/^([A-Za-z_][\w]*)\s*\(/.exec(t);if(!n)return null;let r=n[1],i=[],a=n[0].length,o=t=>e.column+t,s=(t,n,r)=>new L(t,e.line,o(n),r),c=()=>{for(;a<t.length&&/\s/.test(t[a]);)a++};if(c(),t[a]===`)`)a++;else for(;;){c();let e=a,n,l=/^\$([A-Za-z_]\w*)\s*=\s*/.exec(t.slice(a));l&&(n=l[1].toLowerCase(),a+=l[0].length);let u;if(t[a]===`"`){let e=t.indexOf(`"`,a+1);if(e<0)throw s(`The string is not closed`,a,`Add the closing ".`);u=t.slice(a+1,e),a=e+1,c()}else{let e=0,n=a;for(;a<t.length;){let n=t[a];if(n===`"`)throw s(`A quote inside an unquoted argument`,a,`Quote the whole argument.`);if(n===`(`)e++;else if(n===`)`){if(e===0)break;e--}else if(n===`,`&&e===0)break;a++}u=t.slice(n,a).trim()}if(i.push({name:n,value:u,column:o(e)}),t[a]===`,`)a++;else{if(t[a]===`)`){a++;break}throw a>=t.length?s(`"${r}(" is not closed`,t.length,`Add ")".`):s(`Unexpected "${t[a]}" in the arguments of ${r}`,a,`Separate arguments with commas.`)}}c();let l=!1,u=!1;if(t[a]===`{`&&(l=!0,a++,c(),t[a]===`}`&&(u=!0,a++,c())),a<t.length)throw s(`Unexpected "${t.slice(a)}" after ${r}(…)`,a);return{name:r,args:i,opens:l,closes:u}}function mt(e,t,n,r=[]){let i=new Map,a=0;for(let o of e.args){if(o.name===void 0){if(a>=n.length)throw new L(`${e.name} takes at most ${n.length} positional arguments`,t.line,o.column,`Parameters: ${n.join(`, `)}.`);i.set(n[a++],o);continue}let s=n.find(e=>e.toLowerCase()===o.name)??r.find(e=>e.toLowerCase()===o.name);if(!s)throw new L(`${e.name} has no parameter "$${o.name}"`,t.line,o.column,`Parameters: ${[...n,...r].map(e=>`$${e}`).join(`, `)}.`);i.set(s,o)}return i}function ht(e,t){let n=e.get(t);if(!n)return;let r=n.value.replace(/\\n/g,`<br>`);return r.trim()===``?void 0:r}var gt={};for(let[e,t]of[[`System`,`system`],[`Container`,`container`],[`Component`,`component`]])for(let[n,r]of[[``,`box`],[`Db`,`db`],[`Queue`,`queue`]])gt[`${e}${n}`]={level:t,shape:r,external:!1},gt[`${e}${n}_Ext`]={level:t,shape:r,external:!0};gt.Person={level:`person`,shape:`person`,external:!1},gt.Person_Ext={level:`person`,shape:`person`,external:!0};var _t={Boundary:`boundary`,Enterprise_Boundary:`enterprise`,System_Boundary:`system`,Container_Boundary:`container`,Deployment_Node:`node`,Deployment_Node_L:`node`,Deployment_Node_R:`node`,Node:`node`,Node_L:`node`,Node_R:`node`},vt={U:`up`,Up:`up`,D:`down`,Down:`down`,L:`left`,Left:`left`,R:`right`,Right:`right`},yt={Rel:{arrows:`end`},BiRel:{arrows:`both`},Rel_Back:{arrows:`start`},RelIndex:{arrows:`end`,indexed:!0}};for(let[e,t]of Object.entries(vt))yt[`Rel_${e}`]={arrows:`end`,direction:t},yt[`BiRel_${e}`]={arrows:`both`,direction:t},yt[`Lay_${e}`]={arrows:`end`,direction:t,hidden:!0},yt[`RelIndex_${e}`]={arrows:`end`,direction:t,indexed:!0};var bt=new Set(`SHOW_LEGEND.SHOW_FLOATING_LEGEND.LAYOUT_WITH_LEGEND.LAYOUT_AS_SKETCH.HIDE_STEREOTYPE.HIDE_PERSON_SPRITE.SHOW_PERSON_SPRITE.SHOW_PERSON_PORTRAIT.SHOW_PERSON_OUTLINE.AddElementTag.AddRelTag.AddBoundaryTag.AddPersonTag.AddSystemTag.AddContainerTag.AddComponentTag.AddNodeTag.UpdateElementTag.UpdateRelTag.UpdateBoundaryTag.UpdateContainerBoundaryStyle.UpdateSystemBoundaryStyle.UpdateEnterpriseBoundaryStyle.SetPropertyHeader.WithoutPropertyHeader.AddProperty.Lay_Distance.Rel_Neighbor.Rel_Back_Neighbor.BiRel_Neighbor.Index.SetIndex.LastIndex.increment.setIndex`.split(`.`)),xt=[`alias`,`label`,`descr`,`sprite`,`tags`,`link`],St=[`alias`,`label`,`techn`,`descr`,`sprite`,`tags`,`link`],Ct=[`from`,`to`,`label`,`techn`,`descr`,`sprite`,`tags`,`link`],wt=[`shadowing`,`shape`,`sprite`,`techn`,`legendText`,`legendSprite`,`borderStyle`,`borderThickness`,`type`],Tt=/^[\p{L}\p{N}_][\p{L}\p{N}_.-]*$/u;function Et(e,t,n,r){let i=e.get(t);if(!i||i.value.trim()===``)throw new L(`${n.name} needs ${t===`alias`?`an alias`:`"${t}"`}`,r.line,r.column);let a=i.value.trim();if(!Tt.test(a))throw new L(`"${a}" is not a valid alias`,r.line,i.column,`Use letters, digits, "_", "-" and ".".`);return a}function Dt(e,t,n){if(e&&e.value.trim()!==``)try{let r=W(`${t}:${e.value.trim()}`,n.line,e.column);return t===`color`?r.text.fill:r.shape[t]}catch{throw new L(`"${e.value}" is not a colour`,n.line,e.column,`Write #rgb, #rrggbb, rgb(…) or a colour name.`)}}function Ot(e,t){if(!e)return;let n=e.value.trim();if(!/^[0-9]+$/.test(n)||Number(n)<1||Number(n)>50)throw new L(`"${e.value}" is not a number from 1 to 50`,t.line,e.column);return Number(n)}function kt(e){let t=q(e),n=t[0],r=n?ft.find(e=>e===n.text)??null:null;if(!n||!r)throw new L(`A C4 diagram starts with C4Context, C4Container, C4Component, C4Dynamic or C4Deployment`,n?.line??1,n?.column??1);let i={type:`c4`,kind:r,direction:`TB`,elements:new Map,boundaries:new Map,children:new Map([[``,[]]]),relations:[],shapeInRow:4,boundaryInRow:2,accessibility:{}},a=[],o=null,s=()=>a[a.length-1],c=(e,t,n)=>{if(i.elements.has(e)||i.boundaries.has(e))throw new L(`"${e}" is defined twice`,t.line,n,`Every alias must be unique.`);i.children.get(s()??``).push(e)},l=1,u=[],d=[];for(let e=1;e<t.length;e++){let n=t[e],r=n.text;if(o){let{id:e,s:t}=o;if(o=null,r===`{`||r===`{}`){r===`{`&&a.push(e);continue}throw new L(`"${e}" needs a body`,t.line,t.column,`Add "{" … "}" after it.`)}let f=J(t,e,i.accessibility);if(f>0){e+=f-1;continue}let p=/^title(?:\s+(.*))?$/.exec(r);if(p){i.title=p[1]?.trim()||void 0;continue}if(r===`}`){if(a.length===0)throw new L(`"}" without an open boundary`,n.line,n.column);a.pop();continue}let m=pt(n);if(!m)throw/^!(include|define|theme)/.test(r)?new L(`PlantUML preprocessor lines are not part of Mermaid C4`,n.line,n.column,`Remove the line.`):new L(`"${r}" is not a C4 statement`,n.line,n.column,`Write a macro call such as Person(alias, "Label").`);if(m.opens&&!(m.name in _t))throw new L(`${m.name} cannot have a body`,n.line,n.column,`Only boundaries and deployment nodes take "{ … }".`);let h=gt[m.name];if(h){let e=mt(m,n,h.level===`container`||h.level===`component`?St:xt,h.level===`person`||h.level===`system`?[`type`,`baseShape`]:[`baseShape`]),t=Et(e,`alias`,m,n),r=ht(e,`label`);if(r===void 0)throw new L(`${m.name}(${t}, …) needs a label`,n.line,n.column);c(t,n,e.get(`alias`).column),i.elements.set(t,{id:t,level:h.level,shape:h.shape,external:h.external,label:r,techn:ht(e,`techn`),type:ht(e,`type`),description:ht(e,`descr`),parent:s()});continue}let g=_t[m.name];if(g){let e=mt(m,n,g===`node`?[`alias`,`label`,`type`,`descr`,`sprite`,`tags`,`link`]:g===`boundary`?[`alias`,`label`,`type`,`tags`,`link`]:[`alias`,`label`,`tags`,`link`],[`descr`,`type`,`sprite`]),t=Et(e,`alias`,m,n);c(t,n,e.get(`alias`).column),i.boundaries.set(t,{id:t,kind:g,label:ht(e,`label`)??t,type:ht(e,`type`),description:ht(e,`descr`),parent:s()}),i.children.set(t,[]),m.opens&&!m.closes?a.push(t):m.opens||(o={id:t,s:n});continue}let _=yt[m.name];if(_){let e=mt(m,n,_.hidden?[`from`,`to`]:_.indexed?[`index`,...Ct]:[...Ct],_.hidden?[]:[`index`]),t=Et(e,`from`,m,n),r=Et(e,`to`,m,n),a,o=e.get(`index`)?.value.trim();if(_.indexed&&!o)throw new L(`${m.name} needs an index`,n.line,n.column);o?/^Index\(\s*\)$/.test(o)?a=String(l++):/^LastIndex\(\s*\)$/.test(o)?a=String(Math.max(1,l-1)):(a=o,/^[0-9]+$/.test(o)&&(l=Number(o)+1)):i.kind===`C4Dynamic`&&!_.hidden&&(a=String(l++)),i.relations.push({from:t,to:r,label:ht(e,`label`)??``,techn:ht(e,`techn`),description:ht(e,`descr`),direction:_.direction,arrows:_.arrows,hidden:_.hidden??!1,index:a,line:n.line,column:n.column})}else{switch(m.name){case`UpdateElementStyle`:case`UpdateBoundaryStyle`:{let e=mt(m,n,[`elementName`,`bgColor`,`fontColor`,`borderColor`],wt),t=Et(e,`elementName`,m,n);u.push({id:t,s:n,boundary:m.name===`UpdateBoundaryStyle`,style:{fill:Dt(e.get(`bgColor`),`fill`,n),text:Dt(e.get(`fontColor`),`color`,n),stroke:Dt(e.get(`borderColor`),`stroke`,n)}});continue}case`UpdateRelStyle`:{let e=mt(m,n,[`from`,`to`,`textColor`,`lineColor`,`offsetX`,`offsetY`]);d.push({from:Et(e,`from`,m,n),to:Et(e,`to`,m,n),s:n,style:{text:Dt(e.get(`textColor`),`color`,n),line:Dt(e.get(`lineColor`),`stroke`,n)}});continue}case`UpdateLayoutConfig`:{let e=mt(m,n,[`c4ShapeInRow`,`c4BoundaryInRow`]);i.shapeInRow=Ot(e.get(`c4ShapeInRow`),n)??i.shapeInRow,i.boundaryInRow=Ot(e.get(`c4BoundaryInRow`),n)??i.boundaryInRow;continue}case`LAYOUT_TOP_DOWN`:case`LAYOUT_LEFT_RIGHT`:case`LAYOUT_LANDSCAPE`:if(m.args.length>0)throw new L(`${m.name}() takes no arguments`,n.line,n.column);i.direction=m.name===`LAYOUT_TOP_DOWN`?`TB`:`LR`;continue}throw bt.has(m.name)?new L(`${m.name} is a C4-PlantUML feature that is not supported`,n.line,n.column,`Remove the statement; see the C4 page of the documentation for what is supported.`):new L(`"${m.name}" is not a C4 macro`,n.line,n.column,`Elements: Person, System, SystemDb, SystemQueue, Container…, Component… (with _Ext); boundaries: Boundary, Enterprise_Boundary, System_Boundary, Container_Boundary, Deployment_Node, Node; relations: Rel, BiRel, Rel_U/D/L/R, Rel_Back, RelIndex.`)}}if(o)throw new L(`"${o.id}" needs a body`,o.s.line,o.s.column,`Add "{" … "}" after it.`);if(a.length>0){let e=a[a.length-1];throw new L(`Boundary "${e}" is not closed`,0,0,`Add "}".`)}let f=e=>{let t=new Set,n=i.elements.get(e)?.parent??i.boundaries.get(e)?.parent;for(;n!==void 0;)t.add(n),n=i.boundaries.get(n)?.parent;return t};for(let e of i.relations){for(let t of[e.from,e.to])if(!i.elements.has(t)&&!i.boundaries.has(t))throw new L(`A relation refers to an unknown element "${t}"`,e.line,e.column);if(f(e.from).has(e.to)||f(e.to).has(e.from))throw new L(`A relation cannot connect "${e.from}" and "${e.to}": one is inside the other`,e.line,e.column)}for(let e of u){let t=e.boundary?i.boundaries.get(e.id):i.elements.get(e.id)??i.boundaries.get(e.id);if(!t)throw new L(`A style refers to an unknown ${e.boundary?`boundary`:`element`} "${e.id}"`,e.s.line,e.s.column);t.style={...t.style,...At(e.style)}}for(let e of d){let t=i.relations.filter(t=>!t.hidden&&t.from===e.from&&t.to===e.to);if(t.length===0)throw new L(`UpdateRelStyle: there is no relation from "${e.from}" to "${e.to}"`,e.s.line,e.s.column);for(let n of t)n.style={...n.style,...At(e.style)}}return i}function At(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}var jt=class{constructor(e){this.lines=[{text:e,from:null}]}add(e,t){this.lines.push({text:e,from:t})}get source(){return this.lines.map(e=>e.text).join(`
16
+ `)}parse(e){try{return e(this.source)}catch(e){if(!(e instanceof L))throw e;let t=e.line>0?this.lines[e.line-1]?.from:null;throw new L(e.message.replace(/ \(line \d+(, column \d+)?\)$/,``),t?.line??0,t?.column??0,e.hint)}}};function Mt(e){return e.replace(/\s+##?(?:\[[^\]]*\])?[\w;:,.#-]*(?=\s*\{?\s*$)/,``)}function Nt(e){return e.replace(/\[[^\]]*\]/g,``).replace(/(up|down|left|right|le|ri|do|u|d|l|r)(?=[-.])/gi,``)}var Pt=/^(SHOW_\w+|HIDE_\w+|LAYOUT_WITH_LEGEND|LAYOUT_AS_SKETCH|Add\w*Tag|Update\w*Tag|Update(Container|System|Enterprise)BoundaryStyle|SetPropertyHeader|WithoutPropertyHeader|AddProperty|Lay_\w+|SetSketchStyle|SET_SKETCH_STYLE|AddRelTag)\s*\(/;function Ft(e){return e.c4!==void 0||e.statements.some(e=>/^(Person|System|Container|Component|Rel|BiRel|Boundary|System_Boundary|Container_Boundary|Enterprise_Boundary|Deployment_Node)(_\w+)?\s*\(/.test(e.text))}function It(e){let t=new jt(e.c4??`C4Context`);e.title&&t.add(`title ${e.title.replace(/\n/g,` `)}`,e.statements[0]);for(let n of e.statements)Pt.test(n.text)||t.add(n.text.replace(/^(Bi)?Rel(_Back)?_Neighbor\s*\(/,(e,t,n)=>`${t??``}Rel${n??``}(`),n);return t.parse(kt)}var Lt=1.25,Rt=[278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584],zt=1.06,Bt=new Set(`гзтэсеё`.split(``)),Vt=new Set(`жмшщюыЖМШЩЮЫФф`.split(``));function Ht(e){let t=e.codePointAt(0)??0;return t>=32&&t<=126?Rt[t-32]??556:t>=1024&&t<=1279?Vt.has(e)?800:Bt.has(e)?470:e===e.toUpperCase()?690:545:t>=11904&&t<=40959||t>=44032&&t<=55215||t>=63744&&t<=64255||t>=65280&&t<=65519||t>=127744&&t<=129791||t===8212||t===8230?1e3:t===8211?556:t===160?278:600}var Ut=(e,t)=>{let n=0;for(let t of e)n+=Ht(t);let r=n/1e3*t.size*zt;return t.weight===`bold`&&(r*=1.07),{width:r,height:t.size*Lt}},Wt;function Gt(){if(Wt!==void 0)return Wt;Wt=null;try{let e=globalThis;if(e.navigator?.userAgent?.includes(`jsdom`))return Wt;typeof e.OffscreenCanvas==`function`?Wt=new e.OffscreenCanvas(1,1).getContext(`2d`):e.document&&typeof e.document.createElement==`function`&&(Wt=e.document.createElement(`canvas`).getContext(`2d`)),Wt&&Wt.measureText(`M`).width<=0&&(Wt=null)}catch{Wt=null}return Wt}function Kt(e){return`${e.style===`italic`?`italic `:``}${e.weight===`bold`?`bold `:``}${e.size}px ${e.family}`}function qt(e){let t=new Map;return(n,r)=>{let i=`${Kt(r)}\u0000${n}`,a=t.get(i);return a||(a=e(n,r),t.size>5e3&&t.clear(),t.set(i,a)),a}}function Jt(){let e=Gt();return e?qt((t,n)=>(e.font=Kt(n),{width:e.measureText(t).width,height:n.size*Lt})):Ut}var Yt={quot:`"`,amp:`&`,lt:`<`,gt:`>`,apos:`'`,nbsp:`\xA0`,semi:`;`,colon:`:`,num:`#`,hash:`#`};function Xt(e){return e.replace(/#(x[0-9a-fA-F]+|[0-9]+|[a-zA-Z]+);/g,(e,t)=>{if(t[0]===`x`||t[0]===`X`){let n=parseInt(t.slice(1),16);return Zt(n)?String.fromCodePoint(n):e}if(/^[0-9]+$/.test(t)){let n=parseInt(t,10);return Zt(n)?String.fromCodePoint(n):e}return Yt[t.toLowerCase()]??e})}function Zt(e){return e>0&&e<=1114111&&!(e>=55296&&e<=57343)}var Qt=/<br\s*\/?>/gi;function $t(e){let t=[],n=/(\*\*|__)(.+?)\1|(\*|_)(.+?)\3/g,r=0;for(let i of e.matchAll(n)){let n=i.index??0;if(n>r&&t.push({text:e.slice(r,n)}),i[2]!==void 0)for(let e of $t(i[2]))t.push({...e,bold:!0});else if(i[4]!==void 0)for(let e of $t(i[4]))t.push({...e,italic:!0});r=n+i[0].length}return r<e.length&&t.push({text:e.slice(r)}),t.filter(e=>e.text.length>0)}function Y(e,t={}){let n=Xt(e),r=(t.markdown?n.split(/\r?\n|<br\s*\/?>/i).map(e=>e.trim()):n.split(Qt)).map(e=>t.markdown?$t(e):e.length>0?[{text:e}]:[]);return{lines:r.length>0?r:[[]]}}function en(e){return{lines:e.split(`
17
+ `).map(e=>e.length>0?[{text:e}]:[])}}function tn(e){return e.lines.every(e=>e.every(e=>e.text.trim()===``))}function nn(e,t){return{...t,weight:e.bold?`bold`:t.weight,style:e.italic?`italic`:t.style}}function rn(e,t,n){let r=0;for(let i of e)r+=n(i.text,nn(i,t)).width;return r}function an(e,t,n,r){let i=[];for(let a of e.lines){if(rn(a,n,r)<=t){i.push(a);continue}let e=[[]];for(let t of a){let n=t.text.split(/( +)/);for(let r of n)/^ +$/.test(r)?e.push([]):r.length>0&&e[e.length-1].push({...t,text:r})}let o=[],s=0,c=r(` `,n).width;for(let a of e){if(a.length===0)continue;let e=rn(a,n,r);o.length>0&&s+c+e>t&&(i.push(o),o=[],s=0),o.length>0&&(o.push({...a[0],text:` `}),s+=c),o.push(...a),s+=e}i.push(o)}return{lines:i}}function X(e,t,n){let r=t.size*Lt,i=0;for(let r of e.lines)i=Math.max(i,rn(r,t,n));return{label:e,width:i,height:r*e.lines.length,lineHeight:r}}function Z(e,t,n,r={}){let{label:i,lineHeight:a}=e,o=n-a*i.lines.length/2,s=i.lines.map((e,n)=>{let r=o+a*n+a/2,i=e.map(e=>e.bold||e.italic?B(`tspan`,{"font-weight":e.bold?`bold`:void 0,"font-style":e.italic?`italic`:void 0,"dominant-baseline":`central`},[je(e.text)]):je(e.text));return B(`tspan`,{x:t,y:r,"dominant-baseline":`central`},i.length>0?i:[je(``)])});return B(`text`,{class:r.className??`dg-label`,"text-anchor":r.anchor??`middle`,"dominant-baseline":`central`,style:r.style},s)}var on=1e3,sn=60*on,cn=60*sn,ln=24*cn,un=7*ln,dn=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],fn=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],pn=Object.fromEntries(fn.map((e,t)=>[e.toLowerCase(),t])),mn=[[`YYYY`,`year`,`(\\d{4})`],[`SSS`,`ms`,`(\\d{3})`],[`YY`,`year2`,`(\\d{2})`],[`MM`,`month`,`(\\d{2})`],[`DD`,`day`,`(\\d{2})`],[`HH`,`hour`,`(\\d{2})`],[`mm`,`minute`,`(\\d{2})`],[`ss`,`second`,`(\\d{2})`],[`M`,`month`,`(\\d{1,2})`],[`D`,`day`,`(\\d{1,2})`],[`H`,`hour`,`(\\d{1,2})`],[`m`,`minute`,`(\\d{1,2})`],[`s`,`second`,`(\\d{1,2})`],[`X`,`unix`,`(\\d+(?:\\.\\d+)?)`],[`x`,`unixMs`,`(\\d+)`]],hn=[`MMMM`,`MMM`,`dddd`,`ddd`,`dd`,`Do`,`hh`,`A`,`a`,`ZZ`,`Z`,`Q`,`w`,`W`,`k`,`h`,`d`],gn=class extends Error{};function _n(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function vn(e){let t=[],n=0;outer:for(;n<e.length;){if(e[n]===`[`){let r=e.indexOf(`]`,n);if(r>n){t.push({pattern:_n(e.slice(n+1,r)),literal:``}),n=r+1;continue}}for(let t of hn)if(e.startsWith(t,n))throw new gn(`The date token "${t}" is not supported`);for(let[r,i,a]of mn)if(e.startsWith(r,n)){t.push({field:i,pattern:a}),n+=r.length;continue outer}t.push({pattern:_n(e[n]),literal:e[n]}),n++}return{source:e,regex:RegExp(`^${t.map(e=>e.pattern).join(``)}$`),fields:t.filter(e=>e.field).map(e=>e.field)}}function yn(e,t){return new Date(Date.UTC(e,t+1,0)).getUTCDate()}function bn(e,t){let n=t.regex.exec(e.trim());if(!n)return null;let r=1970,i=1,a=1,o=0,s=0,c=0,l=0;for(let e=0;e<t.fields.length;e++){let u=n[e+1],d=Number(u);switch(t.fields[e]){case`unix`:return Math.round(d*1e3);case`unixMs`:return d;case`year`:r=d;break;case`year2`:r=2e3+d;break;case`month`:i=d;break;case`day`:a=d;break;case`hour`:o=d;break;case`minute`:s=d;break;case`second`:c=d;break;case`ms`:l=d}}return i<1||i>12||a<1||a>yn(r,i-1)||o>23||s>59||c>59?null:Date.UTC(r,i-1,a,o,s,c,l)}var xn=/^(\d+(?:\.\d+)?)(ms|[smhdwMy])$/;function Sn(e){let t=xn.exec(e.trim());return t?{amount:Number(t[1]),unit:t[2]}:null}function Cn(e,t){let{amount:n,unit:r}=t;switch(r){case`ms`:return e+n;case`s`:return e+n*on;case`m`:return e+n*sn;case`h`:return e+n*cn;case`d`:return e+n*ln;case`w`:return e+n*un;case`M`:return wn(e,n);case`y`:return wn(e,n*12)}}function wn(e,t){let n=Math.trunc(t),r=new Date(e),i=r.getUTCMonth()+n,a=r.getUTCFullYear()+Math.floor(i/12),o=(i%12+12)%12,s=Math.min(r.getUTCDate(),yn(a,o));return Date.UTC(a,o,s,r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds(),r.getUTCMilliseconds())+(t-n)*30*ln}function Tn(e){return Math.floor(e/ln)*ln}function En(e){return new Date(e).getUTCDay()}function Dn(e){return new Date(Tn(e)).toISOString().slice(0,10)}function On(e,t,n){let r=String(e);return r.length>=t?r:n.repeat(t-r.length)+r}var kn=`aAbBdeHIjLmMpSuwyY%`;function An(e){for(let t=0;t<e.length;t++){if(e[t]!==`%`)continue;let n=t+1;`-_0`.includes(e[n]??``)&&n++;let r=e[n];if(!r||!kn.includes(r))return e.slice(t,n+1);t=n}return null}function jn(e,t){let n=new Date(e),r=``;for(let i=0;i<t.length;i++){let a=t[i];if(a!==`%`){r+=a;continue}let o=null,s=t[i+1]??``;`-_0`.includes(s)&&s!==``&&(o=s,s=t[i+2]??``,i++),i++;let c=(e,t,n)=>o===`-`?String(e):On(e,t,o===`_`?` `:o===`0`?`0`:n);switch(s){case`Y`:r+=String(n.getUTCFullYear());break;case`y`:r+=c(n.getUTCFullYear()%100,2,`0`);break;case`m`:r+=c(n.getUTCMonth()+1,2,`0`);break;case`d`:r+=c(n.getUTCDate(),2,`0`);break;case`e`:r+=c(n.getUTCDate(),2,` `);break;case`H`:r+=c(n.getUTCHours(),2,`0`);break;case`I`:r+=c(n.getUTCHours()%12||12,2,`0`);break;case`M`:r+=c(n.getUTCMinutes(),2,`0`);break;case`S`:r+=c(n.getUTCSeconds(),2,`0`);break;case`L`:r+=c(n.getUTCMilliseconds(),3,`0`);break;case`p`:r+=n.getUTCHours()<12?`AM`:`PM`;break;case`j`:{let t=Date.UTC(n.getUTCFullYear(),0,1);r+=c(Math.floor((Tn(e)-t)/ln)+1,3,`0`);break}case`a`:r+=fn[n.getUTCDay()].slice(0,3);break;case`A`:r+=fn[n.getUTCDay()];break;case`b`:r+=dn[n.getUTCMonth()].slice(0,3);break;case`B`:r+=dn[n.getUTCMonth()];break;case`w`:r+=String(n.getUTCDay());break;case`u`:r+=String(n.getUTCDay()||7);break;case`%`:r+=`%`;break;default:r+=`%${s}`}}return r}var Mn={millisecond:`ms`,second:`s`,minute:`m`,hour:`h`,day:`d`,week:`w`,month:`M`};function Nn(e){let t=/^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/.exec(e.trim());return t?{step:Number(t[1]),unit:Mn[t[2]]}:null}var Pn={ms:1,s:on,m:sn,h:cn,d:ln,w:un};function Fn(e){return e.unit===`M`?e.step*30*ln:e.step*Pn[e.unit]}function In(e,t,n,r=1e3){let i=[];if(n.unit===`M`){let a=new Date(e),o=a.getUTCFullYear(),s=a.getUTCMonth();s-=s%n.step;let c=Date.UTC(o,s,1);for(;c<=t&&i.length<r;)c>=e&&i.push(c),s+=n.step,o+=Math.floor(s/12),s%=12,c=Date.UTC(o,s,1);return i}let a=Pn[n.unit]*n.step,o;if(n.unit===`w`){let t=Tn(e);o=t-En(t)*ln}else o=n.unit===`d`?Tn(e):Math.floor(e/a)*a;for(;o<e;)o+=a;for(;o<=t&&i.length<r;)i.push(o),o+=a;return i}var Ln=[{unit:`s`,step:1},{unit:`s`,step:5},{unit:`s`,step:15},{unit:`s`,step:30},{unit:`m`,step:1},{unit:`m`,step:5},{unit:`m`,step:15},{unit:`m`,step:30},{unit:`h`,step:1},{unit:`h`,step:3},{unit:`h`,step:6},{unit:`h`,step:12},{unit:`d`,step:1},{unit:`d`,step:2},{unit:`w`,step:1},{unit:`w`,step:2},{unit:`M`,step:1},{unit:`M`,step:3},{unit:`M`,step:6},{unit:`M`,step:12},{unit:`M`,step:24},{unit:`M`,step:60}],Rn=[`done`,`active`,`crit`,`milestone`],zn=new Set([`title`,`dateFormat`,`axisFormat`,`tickInterval`,`excludes`,`includes`,`weekend`,`todayMarker`,`topAxis`,`inclusiveEndDates`,`section`,`click`,`displayMode`]);function Bn(e){let t=q(e),n=t[0];if(!n||!/^gantt$/.test(n.text))throw new L(`A gantt chart starts with "gantt"`,n?.line??1,n?.column??1);let r={type:`gantt`,dateFormat:`YYYY-MM-DD`,axisFormat:`%Y-%m-%d`,axisFormatSet:!1,excludes:[],includes:[],todayMarker:`on`,topAxis:!1,inclusiveEndDates:!1,sections:[],tasks:[],excludedRanges:[],accessibility:{}},i=[6,0],a=n,o=[],s=[],c=``,l=0,u=new Map;for(let e=1;e<t.length;e++){let n=t[e],d=J(t,e,r.accessibility);if(d>0){e+=d-1;continue}let f=/^([A-Za-z]+)(?:\s+(.*))?$/.exec(n.text),p=f?.[1]??``,m=(f?.[2]??``).trim();if(zn.has(p)||!n.text.includes(`:`))switch(p){case`title`:r.title=Xt(m);continue;case`dateFormat`:r.dateFormat=m,a=n;continue;case`axisFormat`:if(An(m))throw new L(`The axis format directive "${An(m)}" is not supported`,n.line,n.column,`Supported: %Y %y %m %d %e %H %I %M %S %L %p %j %a %A %b %B %w %u %%.`);r.axisFormat=m,r.axisFormatSet=!0;continue;case`tickInterval`:{let e=Nn(m);if(!e)throw new L(`"${m}" is not a tick interval`,n.line,n.column,`Write e.g. 1day, 2week, 1month.`);r.tickInterval=e;continue}case`excludes`:for(let e of Vn(m))r.excludes.push(e),u.set(e,n);continue;case`includes`:r.includes.push(...Vn(m));continue;case`weekend`:if(m===`friday`)i=[5,6];else if(m===`saturday`)i=[6,0];else throw new L(`"${m}" cannot start a weekend`,n.line,n.column,`Write friday or saturday.`);continue;case`todayMarker`:r.todayMarker=m===``?`on`:m;continue;case`topAxis`:r.topAxis=!0;continue;case`inclusiveEndDates`:r.inclusiveEndDates=!0;continue;case`section`:c=Xt(m);continue;case`click`:{let e=/^(\S+)\s+href\s+("[^"]*"|\S+)\s*$/.exec(m);if(!e)throw new L(`Only "click <id> href <url>" is supported`,n.line,n.column,`Callbacks are not run: a diagram cannot execute code.`);let t=Ke(dt(e[2]));if(t===null)throw new L(`The link "${dt(e[2])}" is not allowed`,n.line,n.column,`Use http(s), mailto or a relative link.`);for(let r of e[1].split(`,`))s.push({id:r.trim(),href:t,statement:n});continue}case`displayMode`:throw new L(`displayMode is not supported`,n.line,n.column,`Remove the line; every task gets its own row.`);default:throw new L(`"${n.text}" is not a task`,n.line,n.column,`Write: Task name : 2024-01-01, 3d`)}let h=n.text.indexOf(`:`),g=Xt(n.text.slice(0,h).trim());if(g===``)throw new L(`The task has no name`,n.line,n.column);let _=n.text.slice(h+1).split(`,`).map(e=>e.trim()),v={done:!1,active:!1,crit:!1,milestone:!1};for(;_.length>0&&Rn.includes(_[0]);)v[_.shift()]=!0;if(_.some(e=>e===``))throw new L(`The task has an empty item`,n.line,n.column+h+1);let y=`task${++l}`,b=null,x;if(_.length===1)x=_[0];else if(_.length===2)b=_[0],x=_[1];else if(_.length===3)y=_[0],b=_[1],x=_[2];else throw new L(_.length===0?`The task has no dates`:`The task has too many items`,n.line,n.column+h+1,`Write: [tags,] [id,] [start,] end or duration`);if(/\s/.test(y))throw new L(`"${y}" cannot be a task id: it contains a space`,n.line,n.column+h+1);if(o.some(e=>e.id===y))throw new L(`The task id "${y}" is used twice`,n.line,n.column+h+1);if(b===null&&o.length===0)throw new L(`The first task needs a start date`,n.line,n.column+h+1,`Write: Task : 2024-01-01, 3d`);o.push({id:y,name:g,section:c,tags:v,startSpec:b,endSpec:x,statement:n})}let d;try{d=vn(r.dateFormat)}catch(e){throw e instanceof gn?new L(e.message,a.line,a.column):e}let f=Hn(r,d,i,u),p=new Map(o.map(e=>[e.id,e]));o.forEach((e,t)=>Wn(e,t,o,p,d,r,f));for(let e of s){let t=p.get(e.id);if(!t)throw new L(`No task has the id "${e.id}"`,e.statement.line,e.statement.column);t.href=e.href}for(let e of o)r.sections.includes(e.section)||r.sections.push(e.section),r.tasks.push({id:e.id,name:e.name,section:e.section,tags:e.tags,start:e.start,end:e.end,renderEnd:e.renderEnd,href:e.href,line:e.statement.line});if(f&&r.tasks.length>0){let e=Tn(Math.min(...r.tasks.map(e=>e.start))),t=Math.max(...r.tasks.map(e=>e.end));for(let n=e;n<t&&n<e+316224e6;n+=ln){if(!f(n))continue;let e=r.excludedRanges[r.excludedRanges.length-1];e&&e.end===n?e.end=n+ln:r.excludedRanges.push({start:n,end:n+ln})}}return r}function Vn(e){return e.split(/[\s,]+/).map(e=>e.trim().toLowerCase()).filter(Boolean)}function Hn(e,t,n,r){if(e.excludes.length===0)return null;let i=new Set,a=new Set,o=vn(`YYYY-MM-DD`),s=e=>{let n=bn(e,t)??bn(e,o);return n===null?null:Dn(n)};for(let t of e.excludes)if(t===`weekends`)i.add(n[0]),i.add(n[1]);else if(t in pn)i.add(pn[t]);else{let e=s(t);if(e===null){let e=r.get(t);throw new L(`"${t}" in excludes is neither a weekday nor a date`,e?.line??0,e?.column??0)}a.add(e)}let c=new Set(e.includes.map(s).filter(e=>e!==null));return e=>{let t=Dn(e);return c.has(t)?!1:i.has(En(e))||a.has(t)}}function Un(e,t,n,r){let i=e.statement.text.indexOf(`:`),a=r?e.statement.text.indexOf(r,i):-1;return new L(t,e.statement.line,e.statement.column+(a>=0?a:i+1),n)}function Wn(e,t,n,r,i,a,o){if(e.end!==void 0)return;if(e.resolving)throw Un(e,`The task "${e.name}" depends on itself through "after" or "until"`);e.resolving=!0;let s=t=>{let s=r.get(t);if(!s)throw Un(e,`No task has the id "${t}"`,void 0,t);return Wn(s,n.indexOf(s),n,r,i,a,o),s},c;if(e.startSpec===null){let e=n[t-1];Wn(e,t-1,n,r,i,a,o),c=e.end}else if(/^after\s/.test(e.startSpec)){let t=e.startSpec.slice(5).trim().split(/\s+/);c=Math.max(...t.map(e=>s(e).end))}else{let t=bn(e.startSpec,i);if(t===null)throw Un(e,`"${e.startSpec}" is not a date in the format ${i.source}`,void 0,e.startSpec);c=t}let l,u=!1,d=Sn(e.endSpec);if(d)l=Cn(c,d);else if(/^until\s/.test(e.endSpec)){let t=e.endSpec.slice(5).trim().split(/\s+/);l=Math.min(...t.map(e=>s(e).start)),u=!0}else{let t=bn(e.endSpec,i);if(t===null)throw Un(e,`"${e.endSpec}" is neither a duration nor a date in the format ${i.source}`,`Durations: 3d, 2w, 4h, 30m, 1M.`,e.endSpec);l=a.inclusiveEndDates?t+ln:t,u=!0}if(l<c)throw Un(e,`The task "${e.name}" ends before it starts`);let f=l;if(o&&!u&&!e.tags.milestone){let e=c,t=!1,n=0;for(;e<=l&&n++<1e5;)t||(f=l),t=o(e),t&&(l+=ln),e+=ln}e.start=c,e.end=l,e.renderEnd=Math.max(c,Math.min(f,l)),e.manualEnd=u,e.resolving=!1}var Gn=String.raw`\d{4}-\d{2}-\d{2}`,Kn=[`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`,`sunday`];function qn(e,t){return Number(e)*(/^week/i.test(t)?7:1)}function Jn(e){let t=new Map,n=new Map,r=[],i,a=``,o=null,s=(e,r)=>{let i=n.get(e);if(i)return t.get(i);let o={id:`t${t.size+1}`,name:e,section:a,milestone:!1,s:r};return t.set(o.id,o),n.set(e,o.id),o},c=(e,t)=>{let r=n.get(e);if(!r)throw new L(`"[${e}]" is not a task`,t.line,t.column,`Declare the task before referring to it.`);return r};for(let t of e.statements){let e=t.text,l;if(l=RegExp(`^project\\s+starts\\s+(?:the\\s+)?(${Gn})$`,`i`).exec(e)){i=l[1];continue}if(l=/^--\s*(.*?)\s*--$/.exec(e)){a=l[1];continue}if(l=RegExp(`^(${Kn.join(`|`)})s?\\s+(?:are|is)\\s+closed$`,`i`).exec(e)){r.push(l[1].toLowerCase());continue}if(l=RegExp(`^(${Gn})(?:\\s+to\\s+(${Gn}))?\\s+(?:are|is)\\s+closed$`,`i`).exec(e)){r.push(l[1]);continue}if(/^(printscale|projectscale|language|today|hide|show|saturday|sunday|\d{4}-\d{2}-\d{2}.*\bopen\b|.*\bare\s+open$|.*\bis\s+open$|<style>|separator)/i.test(e))continue;if(l=/^\[([^\]]+)\]\s*->\s*\[([^\]]+)\]$/.exec(e)){let e=c(l[1],t),n=s(l[2],t);n.start={after:e};continue}let u=!1;if(/^then\s+/i.test(e)&&(u=!0,e=e.replace(/^then\s+/i,``)),l=/^\[([^\]]+)\](?:\s+as\s+\[([^\]]+)\])?\s*(.*)$/.exec(e),!l)throw new L(`"${t.text}" is not a Gantt statement`,t.line,t.column,`[Task] lasts 5 days`);let d=s(l[1],t);l[2]&&n.set(l[2],d.id),u&&o&&(d.start={after:o.id});for(let e of l[3].split(/\s+and\s+/i)){let n=e.trim().replace(/\s+on\s+\{[^}]*\}.*$/i,``);if(n===``)continue;let r;if(r=/^(?:lasts|requires)\s+(\d+)\s+(days?|weeks?)$/i.exec(n))d.days=qn(r[1],r[2]);else if(r=RegExp(`^starts\\s+(?:the\\s+)?(${Gn})$`,`i`).exec(n))d.start={date:r[1]};else if(/^starts\s+\d+\s+days?\s+(after|before)\s/i.test(n))throw new L(`A start offset ("N days after") is not supported yet`,t.line,t.column,`Start at [X]'s end, or give the task a date.`);else if(r=/^starts\s+(?:at\s+)?\[([^\]]+)\]'s\s+end$/i.exec(n))d.start={after:c(r[1],t)};else if(r=/^starts\s+at\s+\[([^\]]+)\]'s\s+start$/i.exec(n))d.start={after:`start:${c(r[1],t)}`};else if(r=RegExp(`^ends\\s+(?:the\\s+)?(${Gn})$`,`i`).exec(n))d.end={date:r[1]};else if(r=/^ends\s+at\s+\[([^\]]+)\]'s\s+start$/i.exec(n))d.end={until:c(r[1],t)};else if(r=/^happens\s+at\s+\[([^\]]+)\]'s\s+end$/i.exec(n))d.milestone=!0,d.start={after:c(r[1],t)};else if(r=RegExp(`^happens\\s+(?:the\\s+)?(${Gn})$`,`i`).exec(n))d.milestone=!0,d.start={date:r[1]};else if(r=/^is\s+(\d+)%\s+(?:completed|complete)$/i.exec(n))d.progress=Number(r[1]);else if(/^is\s+completed$/i.test(n))d.progress=100;else if(/^is\s+colou?red\b|^is\s+deleted$|^displays\s/i.test(n))continue;else throw new L(`"${n}" is not something a task can do here`,t.line,t.column,`lasts 5 days, starts at [X]'s end, is 40% completed, happens at [X]'s end`)}o=d}if(t.size===0)throw new L(`The chart has no tasks`,0,0,`[Task] lasts 5 days`);if([...t.values()].some(e=>!e.start||!e.start.date&&!e.start.after)&&!i){let e=[...t.values()].find(e=>!e.start);throw new L(`The chart needs a start date`,e.s.line,e.s.column,`Project starts 2026-01-05, or give the first task a date.`)}let l=[],u=new Map,d=e=>{if(u.get(e.id)===`done`)return;if(u.get(e.id)===`visiting`)throw new L(`"[${e.name}]" depends on itself`,e.s.line,e.s.column);u.set(e.id,`visiting`);let n=e.start?.after?.replace(/^start:/,``);for(let r of[n,e.end?.until])r&&d(t.get(r));u.set(e.id,`done`),l.push(e)};for(let e of t.values())d(e);let f=new jt(`gantt`),p=e.statements[0];f.add(`dateFormat YYYY-MM-DD`,p),e.title&&f.add(`title ${e.title.replace(/\n/g,` `)}`,p);let m=r.filter(e=>Kn.includes(e)),h=m.includes(`saturday`)&&m.includes(`sunday`),g=[...h?[`weekends`]:[],...m.filter(e=>!h||e!==`saturday`&&e!==`sunday`),...r.filter(e=>!Kn.includes(e))];g.length>0&&f.add(`excludes ${g.join(` `)}`,p);let _=null;for(let e of l){e.section!==_&&(_=e.section,e.section&&f.add(`section ${e.section}`,e.s));let n=[];e.milestone&&n.push(`milestone`),e.progress!==void 0&&n.push(e.progress>=100?`done`:e.progress>0?`active`:``);let r;r=e.start?.date?e.start.date:e.start?.after?.startsWith(`start:`)?t.get(e.start.after.slice(6)).start?.date??i:e.start?.after?`after ${e.start.after}`:i;let a;a=e.milestone?`0d`:e.end?.date?e.end.date:e.end?.until?`until ${e.end.until}`:`${e.days??1}d`;let o=e.name.replace(/[:#;]/g,` `).trim()+(e.progress!==void 0&&e.progress>0&&e.progress<100?` (${e.progress}%)`:``);f.add(`${o} :${[...n.filter(Boolean),e.id,r,a].join(`, `)}`,e.s)}return f.parse(Bn)}var Yn={"..":`dotted`,"==":`double`,"~~":`dashed`,"--":`solid`};function Xn(e){let t=/<b>/i.test(e);return{text:K(e.replace(/<&[\w-]+>/g,``).replace(/<\/?[a-z][^>]*>/gi,``).trim()),bold:t}}function Zn(e){let t=e.trim();if(t===``||t===`.`||t===`*`)return{kind:`empty`};let n;if(n=/^\^([^^]*)\^/.exec(t))return{kind:`droplist`,text:Xn(n[1]).text};if(n=/^"(.*)"$/.exec(e.trim()))return{kind:`input`,text:n[1]};if(n=/^\[([Xx ]?)\]\s*(.*)$/.exec(t))return{kind:`checkbox`,checked:/x/i.test(n[1]),text:Xn(n[2]).text};if(n=/^\(([Xx ]?)\)\s*(.*)$/.exec(t))return{kind:`radio`,checked:/x/i.test(n[1]),text:Xn(n[2]).text};if(n=/^\[(.+)\]$/.exec(t))return{kind:`button`,text:Xn(n[1]).text};let r=Xn(t);return{kind:`text`,text:r.text,bold:r.bold}}var Qn=class{constructor(e){this.list=e,this.pos=0,this.lineAt=[];let t=[];for(let n of e){t.push(n.text);for(let e=0;e<=n.text.length;e++)this.lineAt.push(n.line)}this.text=t.join(`
18
+ `)}error(e,t){return new L(e,this.lineAt[Math.min(this.pos,this.lineAt.length-1)]??0,0,t)}run(){if(this.skipSpace(),this.text[this.pos]!==`{`)throw this.error(`A wireframe starts with "{"`,`{ Login | "name" }`);this.pos++;let e=this.block();if(this.skipSpace(),this.pos<this.text.length)throw this.error(`Text after the closing "}"`);return e}skipSpace(){for(;this.pos<this.text.length&&/\s/.test(this.text[this.pos]);)this.pos++}block(){let e=/^(\^"[^"]*"|SI|S-|[+#!\-/*TS^])?/.exec(this.text.slice(this.pos))[0];this.pos+=e.length;let t=[[]],n=``,r=()=>{let e=t[t.length-1];(n.trim()!==``||e.length>0||n.includes(`"`))&&e.push(n),n=``};for(;;){if(this.pos>=this.text.length)throw this.error(`A "{" is never closed`,`Close it with "}".`);let e=this.text[this.pos];if(e===`"`){let e=this.text.indexOf(`"`,this.pos+1);if(e<0)throw this.error(`A text field is never closed`,`End it with ".`);n+=this.text.slice(this.pos,e+1),this.pos=e+1}else if(e===`{`){this.pos++;let e=this.block();for(n=``,t[t.length-1].push(e);this.pos<this.text.length&&!/[|\n}]/.test(this.text[this.pos]);)this.pos++;this.text[this.pos]===`|`&&this.pos++}else{if(e===`}`){this.pos++,r();break}e===`|`?(this.pos++,r()):e===`
19
+ `?(this.pos++,r(),t.push([])):(n+=e,this.pos++)}}let i=t.filter(e=>e.some(e=>typeof e!=`string`||e.trim()!==``)),a=e=>e.map(e=>typeof e==`string`?e.trim():``).filter(e=>e!==``);if(e===`/`){if(i.length>1&&i.every(e=>a(e).length===1)){let e=i.map(e=>a(e)[0]);return{kind:`tabs`,tabs:e.map(e=>Xn(e).text),selected:Math.max(0,e.findIndex(e=>/<b>/i.test(e))),vertical:!0}}let e=i.flatMap(a);return{kind:`tabs`,tabs:e.map(e=>Xn(e).text),selected:Math.max(0,e.findIndex(e=>/<b>/i.test(e))),vertical:!1}}if(e===`*`)return{kind:`menu`,items:a(i[0]??[]).map(e=>Xn(e).text)};if(e===`T`)return{kind:`tree`,items:i.map(e=>{let t=a(e)[0]??``,n=/^(\++)\s*(.*)$/.exec(t);return{depth:n?n[1].length:1,text:Xn(n?n[2]:t).text}})};let o=e===`+`?`outer`:e===`#`?`all`:e===`!`?`columns`:e===`-`?`rows`:`none`,s=e.startsWith(`^`)&&Xn(e.slice(2,-1)).text||void 0;return{kind:`grid`,border:s!==void 0||e===`^`?`outer`:o,title:s,scroll:e.startsWith(`S`),rows:i.map(e=>e.length===1&&typeof e[0]==`string`&&Yn[e[0].trim()]?[{kind:`separator`,style:Yn[e[0].trim()]}]:e.map(e=>typeof e==`string`?Zn(e):e))}}};function $n(e){return/^salt$/i.test(e.statements[0]?.text??``)}function er(e){let t=$n(e)?e.statements.slice(1):e.statements;if(t.length===0)throw new L(`The wireframe is empty`,0,0,`{ Login | "name" }`);return{type:`salt`,root:new Qn(t).run(),title:e.title?K(e.title):void 0,accessibility:{}}}function tr(e){return e.statements.some(e=>/^(robust|concise|binary|clock)\s+\S/i.test(e.text))}function nr(e){let t={type:`timing`,title:e.title?K(e.title):void 0,signals:[],messages:[],highlights:[],accessibility:{}},n=new Map,r=new Set,i=0,a=null,o=(e,t,r)=>{let i=n.get(tt(e));if(!i)throw new L(`"${e}" is not a signal`,t,r,`Declare it first: robust "Name" as N`);return i},s=(e,t)=>{let n=e.trim();return n.startsWith(`+`)?t+Number(n.slice(1)):Number(n)},c=(e,t,n)=>{let i=tt(n.replace(/\s*:.*$/,``).trim());e.kind!==`robust`||r.has(e.id)||e.states.includes(i)||/^\{.*\}$/.test(i)||e.states.unshift(i);let a=e.changes[e.changes.length-1];if(a&&a.at>t)throw new L(`"${e.label}" changes at ${t}, before its previous change at ${a.at}`);a&&a.at===t?a.state=i:e.changes.push({at:t,state:i})};for(let l of e.statements){let e=l.text,u;if(u=/^(robust|concise|binary|clock)\s+("[^"]+"|\S+)(?:\s+as\s+(\S+))?(?:\s+with\s+period\s+(\d+)(?:\s+pulse\s+(\d+))?(?:\s+offset\s+(\d+))?)?(?:\s*<<.*>>)?$/i.exec(e)){let e=u[1].toLowerCase(),r=tt(u[2]),i=u[3]??r,a={id:i,label:K(r),kind:e,states:[],changes:[]};if(e===`clock`){let e=Number(u[4]??100);a.clock={period:e,pulse:u[5]?Number(u[5]):e/2,offset:u[6]?Number(u[6]):0}}n.set(i,a),n.set(r,a),t.signals.push(a)}else if(u=/^("[^"]+"|\S+)\s+has\s+(.+)$/i.exec(e)){let e=o(u[1],l.line,l.column);e.states=u[2].split(`,`).map(e=>tt(e.trim())).reverse(),r.add(e.id)}else if(u=/^@(\+?-?[\d.]+)$/.exec(e))i=s(u[1],i),a=null;else if(u=/^@("[^"]+"|[^\s@]+)$/.exec(e))a=o(u[1],l.line,l.column),i=0;else if(a&&(u=/^(\+?-?[\d.]+)\s+is\s+(.+)$/i.exec(e)))i=s(u[1],i),c(a,i,u[2]);else if(u=/^("[^"]+"|\S+)\s+is\s+(.+)$/i.exec(e))c(o(u[1],l.line,l.column),i,u[2]);else if(u=/^("[^"]+"|[^\s-]+)\s*-+>\s*("[^"]+"|[^\s@:]+)(?:@(\+?-?[\d.]+))?\s*(?::\s*(.*))?$/.exec(e)){let e=o(u[1],l.line,l.column),n=o(u[2],l.line,l.column);t.messages.push({from:e.id,to:n.id,at:i,until:u[3]?s(u[3],i):i,text:K(u[4]?.trim()??``)})}else if(u=/^highlight\s+(\+?-?[\d.]+)\s+to\s+(\+?-?[\d.]+)\s*(#[\w;:.-]+)?\s*(?::\s*(.*))?$/i.exec(e)){let e=u[3]?.split(`;`)[0]?.slice(1),n=e?W(`fill:${/^[0-9a-fA-F]{3,8}$/.test(e)?`#${e}`:e}`,l.line,l.column).shape.fill:void 0;t.highlights.push({from:s(u[1],i),to:s(u[2],i),text:K(u[4]?.trim()??``),color:n})}else if(!/^(hide|show|scale|mode|manual|compact)\b/i.test(e))throw new L(`"${e}" is not a timing diagram statement`,l.line,l.column)}if(t.signals.length===0)throw new L(`The diagram has no signals`,0,0,`robust "Name" as N`);return t}var rr=/^([*+#-])\1*(?=[_[:\s])/,ir=500;function ar(e){let t=e.statements,n=[],r=null,i=0;for(let e=0;e<t.length;e++){let a=t[e];if(/^(left|right)\s+side$/i.test(a.text))continue;let o=rr.exec(a.text);if(!o)throw new L(`"${a.text}" is not a node`,a.line,a.column,`Start each node with stars: * root, ** child.`);let s=o[0].length,c=a.text.slice(s),l=c.startsWith(`_`);l&&(c=c.slice(1)),c=c.replace(/^\[[^\]]*\]/,``);let u=c.trim();if(u.startsWith(`:`)){let n=[u.slice(1)];for(;!n[n.length-1].trimEnd().endsWith(`;`);){if(e++,e>=t.length)throw new L(`This node is never closed`,a.line,a.column,`End it with ";".`);n.push(t[e].text)}n[n.length-1]=n[n.length-1].trimEnd().slice(0,-1),u=n.join(`<br>`)}if(++i>ir)throw we(`nodes`,i,ir);let d={id:`n${i}`,label:K(u),markdown:!1,shape:l?`default`:`rounded`,classes:[],children:[],line:a.line,column:a.column};if(!r){if(s!==1)throw new L(`The first node is the root, with one star`,a.line,a.column);r=d,n.push({depth:s,node:d});continue}if(s===1)throw new L(`A mind map has one root`,a.line,a.column,`Give the other top-level nodes two stars.`);for(;n.length>0&&n[n.length-1].depth>=s;)n.pop();let f=n[n.length-1];if(!f)throw new L(`This node has no parent`,a.line,a.column);f.node.children.push(d),n.push({depth:s,node:d})}if(!r)throw new L(`The mind map is empty`,0,0);return{type:`mindmap`,root:r,accessibility:e.title?{title:e.title}:{}}}var or={TB:`TB`,TD:`TB`,BT:`BT`,LR:`LR`,RL:`RL`},sr=`[\\p{L}\\p{N}_](?:[\\p{L}\\p{N}_]|-(?=[\\p{L}\\p{N}_]))*`,cr=`~([^~\\s{]+(?:~[^~\\s{]*~)?[^~\\s{]*)~`,lr={"<|":`inheritance`,"*":`composition`,o:`aggregation`,"<":`arrow`},ur={"|>":`inheritance`,"*":`composition`,o:`aggregation`,">":`arrow`},dr=RegExp(`^(${sr})\\s*(?:"([^"]*)"\\s*)?(<\\||\\*|o|<)?(--|\\.\\.)(\\|>|\\*|o|>)?\\s*(?:"([^"]*)"\\s*)?(${sr})\\s*(?::\\s*(.*))?$`,`u`),fr=RegExp(`^class\\s+(${sr})(?:${cr})?(?:\\s*\\[\\s*"([^"]*)"\\s*\\])?(?::::([\\w-]+))?(?:\\s*<<\\s*([^>]+?)\\s*>>)?\\s*(\\{\\s*\\}?)?$`,`u`),pr=RegExp(`^<<\\s*([^>]+?)\\s*>>\\s*(${sr})$`,`u`),mr=RegExp(`^(${sr})\\s*:\\s*(.+)$`,`u`),hr=`(_blank|_self|_parent|_top)`;function gr(e){let t=``,n=0;for(let r=0;r<e.length;r++){let i=e[r];if(i!==`~`){t+=i;continue}let a=e[r-1]??``,o=e[r+1]??``;/[\p{L}\p{N}_\]]/u.test(a)&&/[\p{L}\p{N}_[(]/u.test(o)||n===0?(t+=`<`,n++):(t+=`>`,n--)}return t+`>`.repeat(Math.max(0,n))}function _r(e){let t=e.trim(),n;/^[+\-#~]/.test(t)&&(n=t[0],t=t.slice(1).trim());let r=n??``,i=e=>e===`$`?`static`:`abstract`,a=t.indexOf(`(`),o=t.lastIndexOf(`)`);if(a>=0&&o>a){let e=t.slice(0,a).trim(),s=t.slice(a+1,o).trim(),c=t.slice(o+1).trim(),l;/^[$*]/.test(c)?(l=i(c[0]),c=c.slice(1).trim()):/[$*]$/.test(c)&&(l=i(c[c.length-1]),c=c.slice(0,-1).trim());let u=c.replace(/^:\s*/,``);return{kind:`method`,text:`${r}${gr(e)}(${gr(s)})${u?` : ${gr(u)}`:``}`,visibility:n,classifier:l}}let s;return/[$*]$/.test(t)&&(s=i(t[t.length-1]),t=t.slice(0,-1).trim()),{kind:`attribute`,text:`${r}${gr(t)}`,visibility:n,classifier:s}}function vr(e){let t=q(e),n=t[0];if(!n||!/^classDiagram(-v2)?$/.test(n.text))throw new L(`A class diagram starts with "classDiagram"`,n?.line??1,n?.column??1);let r={type:`class`,direction:`TB`,classes:new Map,relations:[],notes:[],namespaces:new Map,classDefs:new Map,accessibility:{}},i=[],a=[],o=[],s=[],c=null,l=e=>{let t=r.classes.get(e);return t||(t={id:e,label:e,annotations:[],attributes:[],methods:[],classes:[]},r.classes.set(e,t)),c&&!t.namespace&&(t.namespace=c.id),t},u=(e,t,n)=>{let r=/^<<\s*([^>]+?)\s*>>$/.exec(t);if(r){e.annotations.push(r[1]);return}if(t.startsWith(`<<`))throw new L(`"${t}" is not an annotation`,n.line,n.column,`Write <<interface>> on its own line.`);let i=_r(t);i.kind===`method`?e.methods.push(i):e.attributes.push(i)};for(let e=1;e<t.length;e++){let n=t[e],d=n.text,f=J(t,e,r.accessibility);if(f>0){e+=f-1;continue}if(d===`}`){if(!c)throw new L(`"}" without an open class or namespace`,n.line,n.column);c=null;continue}let p=/^namespace\s+(\S+?)\s*\{$/u.exec(d);if(p){if(c)throw new L(`Namespaces do not nest`,n.line,n.column,`Close the namespace before opening another, or use a dotted name: namespace A.B {`);if(!/^[\p{L}\p{N}_][\p{L}\p{N}_.-]*$/u.test(p[1]))throw new L(`"${p[1]}" is not a namespace name`,n.line,n.column+10);c={id:p[1],s:n},r.namespaces.has(p[1])||r.namespaces.set(p[1],{id:p[1]});continue}if(p=/^direction\s+(\w+)$/.exec(d),p){let e=or[p[1].toUpperCase()];if(!e)throw new L(`"${p[1]}" is not a direction`,n.line,n.column+10,`Use TB, BT, LR or RL.`);r.direction=e;continue}if(/^class\s+`/.test(d))throw new L(`Class names in backquotes are not supported`,n.line,n.column+6,`Give the class an id and a label: class Animal["Animal Class!"].`);if(p=fr.exec(d),p){let r=l(p[1]);if(p[2]!==void 0&&(r.generic=p[2],r.label=`${r.id}<${gr(p[2])}>`),p[3]!==void 0&&(r.label=p[3]),p[4]&&r.classes.push(p[4]),p[5]&&r.annotations.push(p[5]),p[6]!==void 0&&!p[6].endsWith(`}`)){let i=e+1;for(;i<t.length&&t[i].text!==`}`;i++)u(r,t[i].text,t[i]);if(i>=t.length)throw new L(`The body of class "${r.id}" is not closed`,n.line,n.column,`Add "}" on its own line.`);e=i}continue}if(/^class\s/.test(d))throw new L(`"${d}" is not a class declaration`,n.line,n.column,`Write class Name, class Name~T~, class Name["Label"] or class Name {.`);if(p=pr.exec(d),p){l(p[2]).annotations.push(p[1]);continue}if(c)throw new L(`Only class declarations go inside a namespace`,n.line,n.column,`Write relationships, notes and members ("Class : member") after the namespace block.`);if(p=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(d),p){let e=W(p[2],n.line,n.column);for(let t of p[1].split(`,`))r.classDefs.set(t.trim(),e);continue}if(p=/^cssClass\s+("[^"]*"|\S+)\s+([\w-]+)$/.exec(d),p){let e=p[1].replace(/^"|"$/g,``).split(`,`).map(e=>e.trim()).filter(Boolean);i.push({ids:e,cls:p[2],s:n});continue}if(p=RegExp(`^style\\s+(${sr})\\s+(.+)$`,`u`).exec(d),p){a.push({id:p[1],style:W(p[2],n.line,n.column),s:n});continue}if(p=RegExp(`^(?:click\\s+(${sr})\\s+href|link\\s+(${sr}))\\s+"([^"]*)"(?:\\s+"([^"]*)")?(?:\\s+${hr})?$`,`u`).exec(d),p){o.push({id:p[1]??p[2],href:p[3],tooltip:p[4],target:p[5],s:n});continue}if(/^callback\s/.test(d)||RegExp(`^click\\s+${sr}\\s+call\\s`,`u`).test(d))continue;if(/^(click|link)\s/.test(d))throw new L(`"${d}" is not a link`,n.line,n.column,`Write click Name href "url" or link Name "url".`);if(p=/^note\s+for\s+(\S+)\s+"(.*)"$/u.exec(d),p){r.notes.push({target:p[1],text:p[2].replace(/\\n/g,`
20
20
  `)}),s.push({target:p[1],s:n});continue}if(p=/^note\s+"(.*)"$/u.exec(d),p){r.notes.push({text:p[1].replace(/\\n/g,`
21
- `)});continue}if(/^note\b/.test(d))throw new I(`"${d}" is not a note`,n.line,n.column,`Write note "text" or note for Class "text".`);if(p=fr.exec(d),p){let e=l(p[1]).id,t=l(p[7]).id,n=p[8]?.trim();r.relations.push({from:e,to:t,fromEnd:p[3]?ur[p[3]]:`none`,toEnd:p[5]?dr[p[5]]:`none`,dashed:p[4]===`..`,fromCardinality:p[2],toCardinality:p[6],label:n?n.replace(/^"(.*)"$/,`$1`):void 0});continue}if(/\(\)\s*(--|\.\.)|(--|\.\.)\s*\(\)/.test(d))throw new I(`Lollipop interfaces are not supported`,n.line,n.column+Math.max(0,d.search(/\(\)|--\(|\.\.\(/)),`Draw the interface as a class: class IShape { <<interface>> } and Shape ..|> IShape.`);if(p=hr.exec(d),p){u(l(p[1]),p[2].trim(),n);continue}let m=RegExp(`^(${cr})~`,`u`).exec(d);if(m)throw new I(`A generic parameter goes on the class declaration`,n.line,n.column+m[1].length,`Declare it with class ${m[1]}~T~ and refer to the class as ${m[1]}.`);let h=RegExp(`^(${cr})\\s*(?:"[^"]*"\\s*)?([^\\p{L}\\p{N}_\\s":]{2,})`,`u`).exec(d);throw h?new I(`"${h[2]}" is not a relationship`,n.line,n.column+d.indexOf(h[2],h[1].length),`Use <|--, *--, o--, -->, --, ..>, ..|> or .. (heads at either end).`):RegExp(`^${cr}$`,`u`).test(d)?new I(`"${d}" alone is not a statement`,n.line,n.column,`Declare a class with "class ${d}".`):new I(`"${d}" is not a class diagram statement`,n.line,n.column)}if(c)throw new I(`Namespace "${c.id}" is not closed`,c.s.line,c.s.column,`Add "}".`);for(let e of i)for(let t of e.ids){let n=r.classes.get(t);if(!n)throw new I(`cssClass refers to an unknown class "${t}"`,e.s.line,e.s.column);n.classes.push(e.cls)}for(let e of a){let t=r.classes.get(e.id);if(!t)throw new I(`style refers to an unknown class "${e.id}"`,e.s.line,e.s.column);t.style=e.style}for(let e of o){let t=r.classes.get(e.id);if(!t)throw new I(`A link refers to an unknown class "${e.id}"`,e.s.line,e.s.column);let n=qe(e.href);if(n===null)throw new I(`The link "${e.href}" is not allowed`,e.s.line,e.s.column,`Use http(s), mailto or a relative address.`);t.link={href:n,tooltip:e.tooltip,target:e.target}}for(let e of s)if(!r.classes.has(e.target))throw new I(`A note refers to an unknown class "${e.target}"`,e.s.line,e.s.column);return r}var br=RegExp(`^(abstract\\s+class|abstract|class|interface|enum|annotation|entity|struct|record|exception|protocol|metaclass|stereotype|object|map|circle|diamond)\\s+(.+)$`,`i`),xr={abstract:`abstract`,"abstract class":`abstract`,interface:`interface`,enum:`enumeration`,annotation:`annotation`,entity:`entity`,struct:`struct`,record:`record`,exception:`exception`,protocol:`protocol`,metaclass:`metaclass`,stereotype:`stereotype`},Sr=String.raw`"[^"]+"|[\p{L}\p{N}_$][\p{L}\p{N}_.$]*(?:<[^>]*>)?`,Cr=String.raw`<\||\*|o|<|#|x|\}|\+|\^`,wr=String.raw`\|>|\*|o|>|#|x|\{|\+|\^`,Tr=RegExp(`^(${Sr})\\s*(?:"([^"]*)")?\\s*(${Cr})?([-.]+(?:\\[[^\\]]*\\])?(?:(?:up|down|left|right|le|ri|do|u|d|l|r)(?=[-.]))?[-.]*(?:\\[[^\\]]*\\])?[-.]*)(${wr})?\\s*(?:"([^"]*)")?\\s*(${Sr})\\s*(?::\\s*(.*))?$`,`u`);function Er(e){return nt(e).replace(/<.*$/,``).replace(/[^\p{L}\p{N}_]/gu,`_`).replace(/^_+|_+$/g,``)||`Class`}function Dr(e){return e.replace(/"/g,`#quot;`)}function Or(e){let t=e.trim();if(/^(--|\.\.|==|__)(.*(--|\.\.|==|__))?$/.test(t))return null;let n=``;return t=t.replace(/\{(static|classifier)\}\s*/i,()=>(n=`$`,``)),t=t.replace(/\{abstract\}\s*/i,()=>(n=`*`,``)),t=t.replace(/\{(field|method)\}\s*/i,``),t=t.replace(/<([^<>]*)>/g,`~$1~`),t+n}var kr=class{constructor(e){this.list=e,this.t=new Mt(`classDiagram`),this.ids=new Map,this.annotations=new Map,this.packages=new Map,this.open=[],this.floating=new Map}ref(e){let t=nt(e);return this.ids.get(t)??this.ids.get(t.replace(/<.*$/,``))??this.declare(t,void 0)}declare(e,t){let n=Er(e);return this.ids.set(e,n),this.ids.set(n,n),t&&this.ids.set(t,n),n}package(){let e=this.open.filter(e=>e.kind===`package`).map(e=>e.name);return e.length>0?e.join(`.`):void 0}run(){for(let e=0;e<this.list.length;e++)e=this.statement(e);if(this.open.length>0)throw new I(`A "{" is never closed`,0,0,`Close it with "}".`);let e=this.t.parse(yr);for(let[t,n]of this.annotations){let r=e.classes.get(t);if(r)for(let e of n)r.annotations.includes(e)||r.annotations.push(e)}for(let[t,n]of this.packages){let r=e.classes.get(t);r&&(r.namespace=n,e.namespaces.has(n)||e.namespaces.set(n,{id:n}))}for(let t of this.floating.values())t.used||e.notes.push({text:t.text.replace(/\\n/g,`
22
- `).replace(/#quot;/g,`"`)});return e}statement(e){let t=this.list[e],n=t.text,r=this.open[this.open.length-1],i;if(n===`}`){let n=this.open.pop();if(!n)throw new I(`"}" without a "{" to close`,t.line,t.column);if(n.kind===`class`){this.t.add(`}`,t);for(let e of n.after)this.t.add(e,t)}return e}if(r?.kind===`class`){let r=Or(n);return r!==null&&this.t.add(r,t),e}if(i=/^(package|namespace|together|rectangle|folder|frame|node|cloud|database)\b\s*(.*?)\s*\{$/i.exec(n)){let t=i[1].toLowerCase();return t===`together`?this.open.push({kind:`group`}):this.open.push({kind:`package`,name:nt(Nt(i[2]).replace(/\s+as\s+\S+$/i,``).replace(/<<.*>>/,``).trim())||t}),e}if(/^(package|namespace)\b/i.test(n))throw new I(`A package needs a body`,t.line,t.column,`package Name { … }`);if(i=/^[hr]?note\s+(left|right|top|bottom)\s+of\s+(.+?)\s*(?:#\S+)?\s*(?::\s*(.*))?$/i.exec(n)){let n=this.ref(i[2]),r=i[3],a=e;return r===void 0&&({body:r,end:a}=this.multiline(e)),this.t.add(`note for ${n} "${Dr(r)}"`,t),a}if((i=/^[hr]?note\s+"([^"]*)"\s+as\s+(\S+)$/i.exec(n))||(i=/^[hr]?note\s+as\s+(\S+)$/i.exec(n))){let n=i[2]??i[1],r=i[2]?i[1]:void 0,a=e;return r===void 0&&({body:r,end:a}=this.multiline(e)),this.floating.set(n,{text:Dr(r),s:t,used:!1}),a}if(i=/^[hr]?note\s+"([^"]*)"$/i.exec(n))return this.t.add(`note "${Dr(i[1])}"`,t),e;if(/^note\s+on\s+link\b/i.test(n))return/:/.test(n)?e:this.multiline(e).end;if((i=br.exec(n))&&!Tr.test(n))return this.declaration(i[1].toLowerCase().replace(/\s+/g,` `),i[2],t),e;if(i=Tr.exec(n))return this.relation(i,t),e;if(i=/^("[^"]+"|[\p{L}\p{N}_$][\p{L}\p{N}_.$]*)\s*:\s*(.*)$/u.exec(n)){let n=Or(i[2]);return n!==null&&this.t.add(`${this.ref(i[1])} : ${n}`,t),e}throw new I(`"${n}" is not a class diagram statement`,t.line,t.column)}declaration(e,t,n){let r=Nt(t.trim()),i=r.endsWith(`{`);i&&(r=r.slice(0,-1).trim()),r.endsWith(`{}`)&&(r=r.slice(0,-2).trim());let a=[];r=r.replace(/\s*<<\s*([^>]*?)\s*>>/g,(e,t)=>(a.push(t),``)).trim();let o=[],s=/\s+(extends|implements)\s+(.+?)(?=\s+(?:extends|implements)\s+|$)/gi,c=/\s+(extends|implements)\s+.*$/i.exec(r);if(c){for(let e of c[0].matchAll(s))for(let t of e[2].split(`,`))o.push({name:t.trim(),dotted:e[1].toLowerCase()===`implements`});r=r.slice(0,c.index)}let l=r,u,d=/^"([^"]+)"\s+as\s+(\S+)$/.exec(r);d?(u=d[1],l=d[2]):(d=/^(\S+)\s+as\s+"([^"]+)"$/.exec(r))?(l=d[1],u=d[2]):/^"[^"]+"$/.test(r)&&(u=nt(r),l=u);let f=/<([^>]*)>$/.exec(l)?.[1],p=this.declare(l.replace(/<.*$/,``),u);u===void 0&&p!==l.replace(/<.*$/,``)&&(u=l.replace(/<.*$/,``));let m=u===void 0?``:`["${G(u).replace(/"/g,`#quot;`)}"]`;this.t.add(`class ${p}${f?`~${f.replace(/\s/g,``)}~`:``}${m}${i?` {`:``}`,n);let h=xr[e],g=this.annotations.get(p)??[];h&&g.push(h),g.push(...a),this.annotations.set(p,g);let _=this.package();_&&!this.packages.has(p)&&this.packages.set(p,_);let v=o.map(e=>`${this.ref(e.name)} <|${e.dotted?`..`:`--`} ${p}`);if(i)this.open.push({kind:`class`,id:p,after:v});else for(let e of v)this.t.add(e,n)}relation(e,t){let[,n,r,i,a,o,s,c,l]=e;for(let[e,r]of[[n,c],[c,n]]){let n=this.floating.get(e);if(n){n.used=!0,this.t.add(`note for ${this.ref(r)} "${n.text}"`,t);return}}let u=Pt(a).includes(`.`)?`..`:`--`,d=(e,t)=>e&&t.includes(e)?e:``,f=d(i,[`<|`,`*`,`o`,`<`]),p=d(o,[`|>`,`*`,`o`,`>`]),m=this.ref(n),h=this.ref(c),g=this.package();for(let e of[m,h])g&&!this.packages.has(e)&&this.packages.set(e,g);let _=l?.replace(/\s*[<>]\s*$/,``).replace(/^\s*[<>]\s*/,``).trim();this.t.add(`${m} ${r===void 0?``:`"${r}" `}${f}${u}${p} ${s===void 0?``:`"${s}" `}${h}${_?` : ${G(_)}`:``}`,t)}multiline(e){let t=[],n=e+1;for(;n<this.list.length&&!/^end\s*[hr]?note$/i.test(this.list[n].text);n++)t.push(this.list[n].text);if(n>=this.list.length){let t=this.list[e];throw new I(`This note is never closed`,t.line,t.column,`Close it with "end note".`)}return{body:t.join(`\\n`),end:n}}};function Ar(e){let t=new kr(e.statements).run();return e.direction===`LR`&&(t.direction=`LR`),e.title&&(t.accessibility.title=e.title),t}var jr={actor:`actor`,usecase:`usecase`,component:`component`,interface:`interface`,node:`node`,cloud:`cloud`,database:`cylinder`,queue:`queue`,storage:`storage`,artifact:`artifact`,card:`rect`,file:`file`,folder:`folder`,frame:`frame`,package:`folder`,rectangle:`rect`,agent:`rect`,stack:`stack`,hexagon:`hexagon`,person:`person`,label:`text`,circle:`circle`,collections:`collections`,boundary:`boundary`,control:`control`,entity:`entity`},Mr=/^(\[[^\]]+\]|\([^)]+\)|:[^:]+:|\(\)\s*("[^"]+"|\S+))(\s+as\s+("[^"]+"|\S+))?(\s*<<[^>]*>>)?(\s*#\S+)?\s*\{?$/,Nr=RegExp(`^(${Object.keys(jr).join(`|`)})/?\\s+(.*)$`,`i`),Pr=String.raw`\[[^\]]+\]|\(\)\s*"[^"]+"|\(\)\s*[\p{L}\p{N}_.$]+|\([^)]+\)|:[^:]+:|"[^"]+"|[\p{L}\p{N}_.$@]+`,Fr=String.raw`<\||<<|<|\*|o|\+|#|\^`,Ir=String.raw`\|>|>>|>|\*|o|\+|#|\^`,Lr=String.raw`[-.=~]+(?:\[[^\]]*\])?(?:(?:up|down|left|right|le|ri|do|u|d|l|r)(?=[-.=~]))?[-.=~]*(?:\[[^\]]*\])?[-.=~]*`,Rr=RegExp(`^(?<a>${Pr})\\s*(?:"(?<ma>[^"]*)")?\\s*(?<lh>${Fr})?(?<body>${Lr})(?<rh>${Ir})?\\s*(?:"(?<mb>[^"]*)")?\\s*(?<b>${Pr})\\s*(?::\\s*(?<text>.*))?$`,`u`);function zr(e){switch(e){case void 0:case``:case`#`:return`none`;case`>`:case`<`:return`arrow`;case`>>`:case`<<`:case`^`:return`open-arrow`;case`|>`:case`<|`:return`triangle`;case`*`:return`diamond`;case`o`:return`diamond-open`;case`+`:return`circle`;default:return`arrow`}}function Br(e){let t=e.replace(/^#/,``);return/^[0-9a-fA-F]{3,8}$/.test(t)?`#${t}`:t}function Vr(e){let t=e.trim(),n={name:``,opens:!1,description:!1};t.endsWith(`{`)?(n.opens=!0,t=t.slice(0,-1).trim()):t.endsWith(`[`)&&!/\[[^\]]*$/.test(t.slice(0,-1))&&(n.description=!0,t=t.slice(0,-1).trim());let r=/\s*(#[\w]+)\s*$/.exec(t);if(r&&(n.color=Br(r[1]),t=t.slice(0,r.index).trim()),r=/\s*<<\s*(.*?)\s*>>\s*$/.exec(t),r&&(n.stereotype=r[1],t=t.slice(0,r.index).trim()),r=/^(.+?)\s+\[([^\]]*)\]$/.exec(t),r)return n.alias=nt(r[1]),n.name=r[2].trim(),n;if(r=/^(.+?)\s+as\s+(.+)$/i.exec(t),r){let e=r[1].trim(),t=r[2].trim();return/^["[(:]/.test(e)?(n.name=Hr(e),n.alias=nt(t)):(n.alias=e,n.name=Hr(t)),n}return n.name=Hr(t),n}function Hr(e){let t=e.trim();return/^\[.*\]$/.test(t)||/^\(.*\)$/.test(t)||/^:.*:$/.test(t)?t.slice(1,-1).trim():nt(t)}var Ur=class{constructor(e){this.list=e,this.chart={type:`flowchart`,direction:`TB`,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},this.byName=new Map,this.containers=[],this.notes=0,this.hasUseCases=!1,this.hasUseCases=e.some(e=>/^usecase\b|\([^)]+\)/i.test(e.text))}run(){for(let e=0;e<this.list.length;e++)e=this.statement(e);if(this.containers.length>0){let e=this.containers[this.containers.length-1];throw new I(`"${this.chart.subgraphs.get(e).title||e}" is never closed`,0,0,`Close it with "}".`)}return this.chart}statement(e){let t=this.list[e],n=t.text,r;if(n===`}`){if(this.containers.length===0)throw new I(`"}" without a container to close`,t.line,t.column);return this.containers.pop(),e}if(/^together\s*\{$/i.test(n))return this.containers.push(this.containers[this.containers.length-1]??``),e;if(/^(note|hnote|rnote)\b/i.test(n))return this.note(e);if((r=Nr.exec(n))&&!Rr.test(n))return this.element(e,jr[r[1].toLowerCase()],r[2]);if(r=Rr.exec(n))return this.link(r.groups,t),e;if(Mr.test(n)){let t=n.startsWith(`[`)?`component`:n.startsWith(`()`)?`interface`:n.startsWith(`(`)?`usecase`:`actor`;return this.element(e,t,n.startsWith(`()`)?n.slice(2):n)}throw new I(`"${n}" is not an element, a link or a note`,t.line,t.column)}element(e,t,n){let r=this.list[e],i=Vr(n),a=e;if(i.description){let t=[];for(a=e+1;a<this.list.length&&this.list[a].text!==`]`;a++)t.push(this.list[a].text);if(a>=this.list.length)throw new I(`This description is never closed`,r.line,r.column,`Close it with "]".`);i.alias=i.alias??i.name,i.name=t.join(`<br>`)}if(i.name===``&&!i.alias)throw new I(`An element needs a name`,r.line,r.column);let o=i.alias??i.name,s=G(i.name||o)+(i.stereotype?`<br>«${i.stereotype}»`:``),c=i.color?U(`fill:${i.color}`,r.line,r.column):void 0,l=this.containers[this.containers.length-1]||void 0;if(i.opens){let e={id:o,title:s,markdown:!1,parent:l,classes:[],style:c,kind:t===`cylinder`?`rect`:t};return this.chart.subgraphs.set(o,e),this.byName.set(o,o),i.name&&this.byName.set(i.name,o),this.containers.push(o),a}let u={id:o,text:s,markdown:!1,shape:t,classes:[],style:c,subgraph:l},d=this.chart.nodes.get(o);return d?Object.assign(d,{text:s,shape:t,style:c??d.style}):this.chart.nodes.set(o,u),this.byName.set(o,o),i.name&&this.byName.set(i.name,o),a}endpoint(e){let t=e.trim(),n=this.hasUseCases?`actor`:`rect`,r;t.startsWith(`[`)?(n=`component`,r=t.slice(1,-1).trim()):t.startsWith(`()`)?(n=`interface`,r=nt(t.slice(2))):t.startsWith(`(`)?(n=`usecase`,r=t.slice(1,-1).trim()):t.startsWith(`:`)&&t.endsWith(`:`)&&t.length>1?(n=`actor`,r=t.slice(1,-1).trim()):r=nt(t);let i=this.byName.get(r);return i===void 0?(this.chart.subgraphs.has(r)||(this.chart.nodes.set(r,{id:r,text:G(r),markdown:!1,shape:n,classes:[],subgraph:this.containers[this.containers.length-1]||void 0}),this.byName.set(r,r)),r):i}link(e,t){let n=this.endpoint(e.a),r=this.endpoint(e.b),i=e.body,a=(/\[([^\]]*)\]/.exec(i)?.[1]??``).split(/[,;]/).map(e=>e.trim().toLowerCase()).filter(Boolean),o=/^[.~]/.test(i)||/\.\.|~~/.test(i)?`dotted`:/=/.test(i)?`thick`:`normal`;a.includes(`hidden`)?o=`invisible`:a.includes(`dashed`)||a.includes(`dotted`)?o=`dotted`:(a.includes(`bold`)||a.includes(`thickness=2`)||a.includes(`thickness=3`))&&(o=`thick`);let s=zr(e.lh),c=zr(e.rh);/(?:^|[-.=~\]])(up|u)(?=[-.=~[])/i.test(i)&&([n,r]=[r,n],[s,c]=[c,s]);let l,u=a.find(e=>e.startsWith(`#`));u&&(l=U(`stroke:${Br(u)}`,t.line,t.column));let d=[e.ma,e.text?.trim(),e.mb].filter(e=>e!==void 0&&e!==``),f=e.text?.trim()?G(e.text.trim()):d.length>0?d.join(` … `):void 0,p={from:n,to:r,stroke:o,start:s,end:c,length:1,text:f,markdown:!1,style:l};this.chart.edges.push(p)}note(e){let t=this.list[e],n=t.text,r,i,a,o=/^[hr]?note\s+"([^"]*)"\s+as\s+(\S+)$/i.exec(n);if(o)r=o[1],a=o[2];else if(o=/^[hr]?note\s+as\s+(\S+)$/i.exec(n))a=o[1];else if(o=/^[hr]?note\s+(left|right|top|bottom)(?:\s+of)?\s+(.+?)\s*(?:#\S+)?\s*(?::\s?(.*))?$/i.exec(n))i=this.endpoint(o[2]),r=o[3];else throw new I(`"${n}" is not a note`,t.line,t.column,`note right of X : text, note "text" as N`);let s=e;if(r===void 0){let n=[];for(s=e+1;s<this.list.length&&!/^end\s*[hr]?note$/i.test(this.list[s].text);s++)n.push(this.list[s].text);if(s>=this.list.length)throw new I(`This note is never closed`,t.line,t.column,`Close it with "end note".`);r=n.join(`<br>`)}let c=a??`note-${++this.notes}`;return this.chart.nodes.set(c,{id:c,text:G(r),markdown:!1,shape:`note`,classes:[],subgraph:this.containers[this.containers.length-1]||void 0}),this.byName.set(c,c),i&&this.chart.edges.push({from:i,to:c,stroke:`dotted`,start:`none`,end:`none`,length:1,markdown:!1}),s}};function Wr(e){let t=new Ur(e.statements).run();return e.direction===`LR`&&(t.direction=`LR`),e.title&&(t.title=e.title.replace(/\n/g,`<br>`)),t}var Gr={"||":`one`,"|o":`zero-one`,"}|":`one-many`,"}o":`zero-many`,"|":`one`},Kr={"||":`one`,"o|":`zero-one`,"|{":`one-many`,"o{":`zero-many`,"|":`one`},qr=String.raw`"[^"]+"|[\p{L}\p{N}_][\p{L}\p{N}_.]*`,Jr=RegExp(`^(${qr})\\s*(\\|\\||\\|o|\\}\\||\\}o|\\|)([-.]+(?:\\[[^\\]]*\\])?(?:(?:up|down|left|right|u|d|l|r)(?=[-.]))?[-.]*)(\\|\\||o\\||\\|\\{|o\\{|\\|)\\s*(${qr})\\s*(?::\\s*(.*))?$`,`u`);function Yr(e){return e.some(e=>Jr.test(e.text))||e.some(e=>/^entity\s+.*\{$/i.test(e.text))}function Xr(e){let t={type:`er`,direction:e.direction===`LR`?`LR`:`TB`,entities:new Map,relationships:[],classDefs:new Map,accessibility:{}};e.title&&(t.accessibility.title=e.title);let n=new Map,r=(e,r)=>{let i=nt(e),a=n.get(i);if(a)return a;let o=i.replace(/[^\p{L}\p{N}_-]/gu,`_`);return n.set(i,o),r&&n.set(r,o),t.entities.has(o)||t.entities.set(o,{id:o,label:G(r??i),attributes:[],classes:[]}),o},i=e.statements;for(let e=0;e<i.length;e++){let n=i[e],a;if(a=/^entity\s+(.+?)\s*(\{)?$/i.exec(Nt(n.text))){let o=a[1].replace(/\s*<<[^>]*>>/g,``).trim(),s,c=/^"([^"]+)"\s+as\s+(\S+)$/.exec(o)??/^(\S+)\s+as\s+"([^"]+)"$/.exec(o);if(c){let e=o.startsWith(`"`);s=e?c[1]:c[2],o=e?c[2]:c[1]}let l=r(o,s);if(a[2]){let r=e+1;for(;r<i.length&&i[r].text!==`}`;r++){let e=Zr(i[r].text);e&&t.entities.get(l).attributes.push(e)}if(r>=i.length)throw new I(`Entity "${o}" is never closed`,n.line,n.column,`Close it with "}".`);e=r}}else if(a=Jr.exec(n.text)){let[,e,n,i,o,s,c]=a;t.relationships.push({from:r(e),to:r(s),fromCardinality:Gr[n],toCardinality:Kr[o],identifying:!Pt(i).includes(`.`),label:c?G(c.trim()):``})}else if(!/^(note|hide|show)\b/i.test(n.text))throw new I(`"${n.text}" is not an entity or a relationship`,n.line,n.column,`entity Name { … }, A ||--o{ B : label`)}return t}function Zr(e){let t=e.trim();if(/^(--|\.\.|==|__)(.*(--|\.\.|==|__))?$/.test(t))return null;let n=[],r=[];t=t.replace(/\s*<<\s*([^>]*?)\s*>>/g,(e,t)=>{let i=t.toUpperCase();return i===`PK`||i===`FK`||i===`UK`?n.push(i):r.push(t),``}),t=t.replace(/^\*\s*/,``).trim();let i=/^(.+?)\s*:\s*(.+)$/.exec(t),a=(i?i[1]:t).trim();return{type:i?i[2].trim():``,name:a,keys:n,comment:r.length>0?r.join(`, `):void 0}}var Qr=RegExp(`^(create\\s+)?(participant|actor|boundary|control|entity|database|collections|queue)\\s+(.+)$`,`i`),$r=String.raw`"[^"]+"|[\p{L}\p{N}_.@$]+`,ei=String.raw`[ox]?(?:<<|<|\\\\|/)?-+(?:\[[^\]]*\])?-*(?:>>|>|\\\\|/)?[ox]?`,ti=RegExp(`^(?<from>${$r}|\\[)?\\s*(?<arrow>${ei})\\s*(?<to>${$r}|\\])\\s*(?<mods>(?:\\+\\+|--|\\*\\*|!!|\\s)*)\\s*(?::\\s?(?<text>.*))?$`,`u`);function ni(e){let t=e.replace(/\[[^\]]*\]/,``),n=/^[ox]?(<<|<|\\|\/)/.test(t),r=/(>>|>|\\|\/)[ox]?$/.test(t),i=/--/.test(t),a=`arrow`;return/>>|<</.test(t)&&(a=`open`),/x$|^x/.test(t)&&(a=`cross`),{dotted:i,head:a,left:n,right:r}}var ri=class{constructor(e){this.list=e,this.diagram={type:`sequence`,participants:[],boxes:[],events:[],accessibility:{}},this.byId=new Map,this.stack=[],this.calls=[],this.numbering=null,this.paused=null,this.currentBox=null,this.last=null}run(){for(let e=0;e<this.list.length;e++)e=this.statement(e);let e=this.stack[this.stack.length-1];if(e)throw new I(`The "${e.block}" opened here is never closed`,e.line,0,e.block===`box`?`Close it with "end box".`:`Close it with "end".`);return this.diagram}statement(e){let t=this.list[e],n=t.text,r;if(r=Qr.exec(n))return this.declare(r[3],r[2].toLowerCase(),!!r[1],t),e;if(r=/^create\s+(.+)$/i.exec(n))return this.declare(r[1],`participant`,!0,t),e;if(r=/^autonumber\b\s*(.*)$/i.exec(n))return this.autonumber(r[1].trim(),t),e;if(r=/^(activate|deactivate)\s+(.+?)(?:\s+#\S+)?$/i.exec(n)){let n=this.use(r[2],t);return r[1].toLowerCase()===`activate`?(this.last&&this.last.to===n&&this.calls.push({caller:this.last.from,callee:n}),this.diagram.events.push({kind:`activate`,actor:n,sourceLine:t.line})):(this.dropCall(n),this.diagram.events.push({kind:`deactivate`,actor:n,sourceLine:t.line})),e}if(r=/^destroy\s+(.+)$/i.exec(n))return this.diagram.events.push({kind:`destroy`,actor:this.use(r[1],t),sourceLine:t.line}),e;if(r=/^return\b\s*(.*)$/i.exec(n)){let n=this.calls.pop();if(!n)throw new I(`"return" without a call to return from`,t.line,t.column,`Activate the callee first: A -> B ++ : call`);return this.message(n.callee,n.caller,G(r[1].trim()),{dotted:!0,head:`arrow`,both:!1},{deactivateSource:!0},t),e}if(r=/^box\b\s*(.*)$/i.exec(n)){if(this.stack.length>0)throw new I(`A box cannot be nested inside a block or another box`,t.line,t.column);let n=r[1].trim(),i,a=/\s*(#[0-9a-fA-F]{3,8}|#[a-zA-Z]+)\s*$/.exec(n);a&&(i=a[1].startsWith(`#`)&&/^#[0-9a-fA-F]+$/.test(a[1])?a[1]:a[1].slice(1),n=n.slice(0,a.index).trim());let o=nt(n);return this.diagram.boxes.push({label:o===``?void 0:G(o),color:i}),this.currentBox=this.diagram.boxes.length-1,this.stack.push({block:`box`,line:t.line}),e}if(/^end\s*box$/i.test(n)){let n=this.stack.pop();if(!n||n.block!==`box`)throw new I(`"end box" without a box to close`,t.line,t.column);return this.currentBox=null,e}if(r=/^(alt|opt|loop|par|break|critical|group)\b\s*(.*)$/i.exec(n)){let n=r[1].toLowerCase();return this.stack.push({block:n,line:t.line}),this.diagram.events.push({kind:`block-start`,block:n,text:G(r[2].replace(/^#\S+\s*/,``).trim()),sourceLine:t.line}),this.last=null,e}if(r=/^else\b\s*(.*)$/i.exec(n)){let n=this.stack[this.stack.length-1];if(!n||n.block===`box`)throw new I(`"else" belongs inside a block (alt, par, …)`,t.line,t.column);let i=n.block===`par`?`and`:n.block===`critical`?`option`:`else`;return this.diagram.events.push({kind:`block-section`,keyword:i,text:G(r[1].replace(/^#\S+\s*/,``).trim()),sourceLine:t.line}),e}if(/^end$/i.test(n)){let n=this.stack.pop();if(!n)throw new I(`"end" without a block to close`,t.line,t.column);return n.block===`box`?this.currentBox=null:this.diagram.events.push({kind:`block-end`,sourceLine:t.line}),e}if(r=/^==\s*(.*?)\s*==$/.exec(n))return this.diagram.events.push({kind:`divider`,text:G(r[1]),sourceLine:t.line}),e;if(r=/^\.\.\.\s*(.*?)\s*(?:\.\.\.)?$/.exec(n))return this.diagram.events.push({kind:`delay`,text:G(r[1]),sourceLine:t.line}),e;if(r=/^\|\|(\d*)\|\|?$/.exec(n))return this.diagram.events.push({kind:`space`,height:r[1]?Number(r[1]):20,sourceLine:t.line}),e;if(/^(note|hnote|rnote|ref)\b/i.test(n))return this.note(e);if(r=ti.exec(n)){let i=r.groups;if(!i.from||i.from===`[`||i.to===`]`)throw new I(`Messages from or to outside the diagram ([-> and ->]) are not supported`,t.line,t.column,`Add a participant for the outside party.`);let a=ni(i.arrow);if(!a.left&&!a.right)throw new I(`"${i.arrow}" is not an arrow`,t.line,t.column+n.indexOf(i.arrow),`A -> B, A --> B, A ->> B, A <- B`);let o=this.use(i.from,t),s=this.use(i.to,t);a.left&&!a.right&&([o,s]=[s,o]);let c=i.mods??``;return this.message(o,s,G((i.text??``).trim()),{dotted:a.dotted,head:a.head,both:a.left&&a.right},{activateTarget:c.includes(`++`),deactivateSource:c.includes(`--`),create:c.includes(`**`),destroy:c.includes(`!!`)},t),e}throw new I(`"${n}" is not a sequence diagram statement`,t.line,t.column)}message(e,t,n,r,i,a){if(i.create){let e=this.byId.get(t);this.diagram.events.some(e=>e.kind===`message`&&(e.from===t||e.to===t))||(e.created=!0)}let o;this.numbering&&(o=this.numbering.next,this.numbering.next+=this.numbering.step),this.diagram.events.push({kind:`message`,from:e,to:t,line:r.dotted?`dotted`:`solid`,head:r.head,bidirectional:r.both,text:n,activateTarget:!!i.activateTarget,deactivateSource:!!i.deactivateSource,number:o,sourceLine:a.line}),i.activateTarget&&this.calls.push({caller:e,callee:t}),i.deactivateSource&&this.dropCall(e),i.destroy&&this.diagram.events.push({kind:`destroy`,actor:t,sourceLine:a.line}),this.last={from:e,to:t}}dropCall(e){for(let t=this.calls.length-1;t>=0;t--)if(this.calls[t].callee===e){this.calls.splice(t,1);return}}note(e){let t=this.list[e],n=t.text,r=/^ref\s+over\s+(.+?)(?:\s*:\s*(.*))?$/i.exec(n);if(r){let n=r[1].split(`,`).map(e=>this.use(e,t)),i=r[2],a=e;return i===void 0&&({text:i,end:a}=this.multiline(e,/^end\s*ref$/i,`end ref`)),this.diagram.events.push({kind:`note`,placement:`over`,actors:[n[0],n[n.length-1]].filter((e,t,n)=>n.indexOf(e)===t),text:`ref: ${G(i)}`,sourceLine:t.line}),a}if(r=/^[hr]?note\s+(left|right|over|across)(?:\s+of)?\s*([^:#]*?)\s*(?:#\S+)?\s*(?::\s?(.*))?$/i.exec(n),!r)throw new I(`"${n}" is not a note`,t.line,t.column,`note left of A : text, note over A, B : text`);let i=r[1].toLowerCase(),a;if(i===`across`){let e=this.diagram.participants.map(e=>e.id);if(e.length===0)throw new I(`"note across" needs participants before it`,t.line,t.column);a=e.length>1?[e[0],e[e.length-1]]:[e[0]]}else if(r[2].trim()!==``)a=r[2].split(`,`).map(e=>this.use(e,t));else{if(!this.last)throw new I(`A note without "of" belongs after a message`,t.line,t.column,`note left of A : text`);a=[i===`right`?this.last.to:this.last.from]}let o=i===`across`?`over`:i;if(o!==`over`&&a.length>1)throw new I(`Only "over" spans two participants`,t.line,t.column);let s=r[3],c=e;return s===void 0&&({text:s,end:c}=this.multiline(e,/^end\s*[hr]?note$/i,`end note`)),this.diagram.events.push({kind:`note`,placement:o,actors:a.slice(0,2),text:G(s),sourceLine:t.line}),c}multiline(e,t,n){let r=[];for(let n=e+1;n<this.list.length;n++){if(t.test(this.list[n].text))return{text:r.join(`<br>`),end:n};r.push(this.list[n].text)}let i=this.list[e];throw new I(`This block is never closed`,i.line,i.column,`Close it with "${n}".`)}autonumber(e,t){if(/^stop$/i.test(e)){this.paused=this.numbering,this.numbering=null;return}if(/^resume\b/i.test(e)){this.numbering=this.paused??{next:1,step:1};return}let n=/^(\d+)?\s*(\d+)?\s*(?:"[^"]*")?$/.exec(e);if(!n)throw new I(`"${e}" is not a valid autonumber`,t.line,t.column,`autonumber [start [step]]`);this.numbering={next:n[1]?Number(n[1]):1,step:n[2]?Number(n[2]):1}}declare(e,t,n,r){let i=e.trim();i=i.replace(/\s+order\s+-?\d+\s*$/i,``),i=i.replace(/\s+#[\w]+\s*$/,``);let a,o=/\s*<<\s*(.*?)\s*>>\s*$/.exec(i);o&&(a=o[1],i=i.slice(0,o.index));let s,c,l=/^"([^"]+)"\s+as\s+(\S+)$/i.exec(i);if(l?(c=l[1],s=l[2]):(l=/^(\S+)\s+as\s+"?([^"]+)"?$/i.exec(i))?(s=l[1],c=l[2]):(s=nt(i),c=s),s===``)throw new I(`A participant needs a name`,r.line,r.column);c=G(c)+(a?`<br>«${a}»`:``);let u=this.byId.get(s);if(u){u.label=c,u.kind=t,n&&(u.created=!0),this.currentBox!==null&&(u.box=this.currentBox);return}let d={id:s,label:c,kind:t,created:n};this.currentBox!==null&&(d.box=this.currentBox),this.byId.set(s,d),this.diagram.participants.push(d)}use(e,t){let n=nt(e.trim());if(n===``)throw new I(`A participant needs a name`,t.line,t.column);if(!this.byId.has(n)){let e={id:n,label:G(n),kind:`participant`,created:!1};this.currentBox!==null&&(e.box=this.currentBox),this.byId.set(n,e),this.diagram.participants.push(e)}return n}};function ii(e){let t=new ri(e.statements).run();return e.title&&(t.title=G(e.title.replace(/\n/g,`\\n`))),e.hideFootbox&&(t.hideFootbox=!0),t}var ai={TB:`TB`,TD:`TB`,BT:`BT`,LR:`LR`,RL:`RL`},oi=`[\\p{L}\\p{N}_][\\p{L}\\p{N}_.-]*`,si=`(\\[\\*\\]|${oi})`;function ci(e){let t=K(e),n=t[0];if(!n||!/^stateDiagram(-v2)?$/.test(n.text))throw new I(`A state diagram starts with "stateDiagram-v2"`,n?.line??1,1);let r={type:`state`,direction:`TB`,states:new Map,composites:new Map,transitions:[],notes:[],classDefs:new Map,accessibility:{}},i=[],a=new Map,o=[],s=[],c=()=>i[i.length-1]?.id,l=e=>{let t=c()??`root`,n=`\u0000${e?`start`:`end`}:${t}`;return r.states.has(n)||r.states.set(n,{id:n,kind:e?`start`:`end`,name:``,descriptions:[],parent:c(),classes:[]}),n},u=(e,t)=>{let n=r.composites.get(e);if(n)return n;let i=r.states.get(e);return i||(i={id:e,kind:`state`,name:e,descriptions:[],parent:c(),classes:[]},r.states.set(e,i)),i},d=e=>{let t=/^(.*?):::([\w-]+)$/.exec(e);return t?{id:t[1],cls:t[2]}:{id:e}};for(let e=1;e<t.length;e++){let n=t[e],f=n.text,p=q(t,e,r.accessibility);if(p>0){e+=p-1;continue}let m=/^direction\s+(\w+)$/.exec(f);if(m){let e=ai[m[1].toUpperCase()];if(!e)throw new I(`"${m[1]}" is not a direction`,n.line,n.column+10);let t=i[i.length-1];t?t.direction=e:r.direction=e;continue}if(m=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(f),m){let e=U(m[2],n.line,n.column);for(let t of m[1].split(`,`))r.classDefs.set(t.trim(),e);continue}if(m=/^class\s+(.+?)\s+([\w-]+)$/.exec(f),m){o.push({ids:m[1].split(`,`).map(e=>e.trim()),cls:m[2],s:n});continue}if(m=/^style\s+(\S+)\s+(.+)$/.exec(f),m){s.push({id:m[1],style:U(m[2],n.line,n.column),s:n});continue}if(m=RegExp(`^note\\s+(left|right)\\s+of\\s+(${oi})\\s*(?::\\s*(.*))?$`,`u`).exec(f),m){let i=m[1],a=m[2],o=m[3];if(o===void 0){let r=[],i=e+1;for(;i<t.length&&t[i].text!==`end note`;i++)r.push(t[i].text);if(i>=t.length)throw new I(`The note is not closed`,n.line,n.column,`Add "end note".`);o=r.join(`
23
- `),e=i}r.notes.push({target:a,side:i,text:o});continue}if(m=RegExp(`^state\\s+(?:"([^"]*)"\\s+as\\s+)?(${oi})\\s*\\{$`,`u`).exec(f),m){let e=m[2];if(r.composites.has(e))throw new I(`State "${e}" is defined twice`,n.line,n.column);let t=r.states.get(e),a={id:e,name:m[1]??t?.name??e,parent:c(),region:!1,classes:t?.classes??[]};t&&(r.states.delete(e),a.parent=t.parent),r.composites.set(e,a),i.push(a);continue}if(f===`}`){for(;i.length>0&&i[i.length-1].region;)i.pop();if(i.length===0)throw new I(`"}" without an open state`,n.line,n.column);i.pop();continue}if(f===`--`){for(;i.length>0&&i[i.length-1].region;)i.pop();let e=i[i.length-1];if(!e)throw new I(`"--" separates regions inside a composite state`,n.line,n.column);let t=a.get(e.id)??0;if(t===0){let t={id:`${e.id}\u0000r0`,name:``,parent:e.id,region:!0,classes:[]};r.composites.set(t.id,t);for(let n of r.states.values())n.parent===e.id&&(n.parent=t.id);for(let n of r.composites.values())n.parent===e.id&&n.id!==t.id&&(n.parent=t.id)}let o={id:`${e.id}\u0000r${t+1}`,name:``,parent:e.id,region:!0,classes:[]};a.set(e.id,t+1),r.composites.set(o.id,o),i.push(o);continue}if(m=RegExp(`^state\\s+"([^"]*)"\\s+as\\s+(${oi})$`,`u`).exec(f),m){let e=u(m[2],n);e.name=m[1];continue}if(m=RegExp(`^state\\s+(${oi})\\s*<<(choice|fork|join)>>$`,`u`).exec(f),m){let e=u(m[1],n);`kind`in e&&(e.kind=m[2]);continue}if(m=RegExp(`^state\\s+(${oi})(?:\\s*:\\s*(.*))?$`,`u`).exec(f),m){let e=u(m[1],n);m[2]!==void 0&&`descriptions`in e&&e.descriptions.push(m[2].trim());continue}if(m=RegExp(`^${si}(?::::([\\w-]+))?\\s*-->\\s*${si}(?::::([\\w-]+))?\\s*(?::\\s*(.*))?$`,`u`).exec(f),m){let e=m[1]===`[*]`?l(!0):u(m[1],n).id,t=m[3]===`[*]`?l(!1):u(m[3],n).id;m[2]&&u(e,n).classes.push(m[2]),m[4]&&u(t,n).classes.push(m[4]),r.transitions.push({from:e,to:t,label:m[5]?.trim()||void 0});continue}if(m=RegExp(`^(${oi})\\s*:\\s*(.*)$`,`u`).exec(f),m){let e=u(m[1],n);`descriptions`in e&&e.descriptions.push(m[2].trim());continue}let h=d(f);if(RegExp(`^${oi}$`,`u`).test(h.id)){let e=u(h.id,n);h.cls&&e.classes.push(h.cls)}else throw new I(`"${f}" is not a state diagram statement`,n.line,n.column)}if(i.some(e=>!e.region))throw new I(`State "${i.filter(e=>!e.region).pop().id}" is not closed`,0,0,`Add "}".`);for(let e of o)for(let t of e.ids){let n=r.states.get(t)??r.composites.get(t);if(!n)throw new I(`class refers to an unknown state "${t}"`,e.s.line,e.s.column);n.classes.push(e.cls)}for(let e of s){let t=r.states.get(e.id)??r.composites.get(e.id);if(!t)throw new I(`style refers to an unknown state "${e.id}"`,e.s.line,e.s.column);t.style=e.style}for(let e of r.notes)if(!r.states.has(e.target)&&!r.composites.has(e.target))throw new I(`A note refers to an unknown state "${e.target}"`);return r}var li=String.raw`\[\*\]|\[H\*?\]|"[^"]+"|[\p{L}\p{N}_][\p{L}\p{N}_.]*`,ui=RegExp(`^(${li})\\s*(-[-\\w\\[\\]#,.;:]*>|<-[-\\w\\[\\]#,.;:]*-?)\\s*(${li})\\s*(?::\\s*(.*))?$`,`u`);function di(e){return e===`[*]`?`[*]`:/^\[H\*?\]$/.test(e)?`H`:e.replace(/^"|"$/g,``).replace(/[^\p{L}\p{N}_.]/gu,`_`)}function fi(e){let t=new Mt(`stateDiagram-v2`),n=e.statements;for(let e=0;e<n.length;e++){let r=n[e],i=/^state\s/i.test(r.text)?Nt(r.text):r.text,a;if(a=ui.exec(i)){let[e,n]=Pt(a[2]).startsWith(`<`)?[a[3],a[1]]:[a[1],a[3]];t.add(`${di(e)} --> ${di(n)}${a[4]?` : ${G(a[4].trim())}`:``}`,r)}else if(i===`||`||i===`--`)t.add(`--`,r);else if(a=/^state\s+(.+?)\s*<<\s*(\w+)\s*>>\s*(\{)?$/i.exec(i)){let e=a[2].toLowerCase(),n=di(a[1]);t.add([`choice`,`fork`,`join`].includes(e)?`state ${n} <<${e}>>`:`state ${n}${a[3]?` {`:``}`,r)}else if(a=/^state\s+"([^"]+)"\s+as\s+(\S+?)\s*(\{)?$/i.exec(i))t.add(`state "${G(a[1])}" as ${di(a[2])}${a[3]?` {`:``}`,r);else if(a=/^state\s+(\S+?)\s+as\s+"([^"]+)"\s*(\{)?$/i.exec(i))t.add(`state "${G(a[2])}" as ${di(a[1])}${a[3]?` {`:``}`,r);else if(a=/^state\s+(\S+?)\s*:\s*(.*)$/i.exec(i))t.add(`state ${di(a[1])} : ${G(a[2])}`,r);else if(a=/^state\s+(\S+?)\s*(\{)?$/i.exec(i))t.add(`state ${di(a[1])}${a[2]?` {`:``}`,r);else if(i===`}`)t.add(`}`,r);else if(a=/^note\s+(left|right|top|bottom)\s+of\s+(\S+)\s*(?::\s*(.*))?$/i.exec(i)){let i=/right|bottom/i.test(a[1])?`right`:`left`,o=a[3];if(o!==void 0){t.add(`note ${i} of ${di(a[2])} : ${G(o)}`,r);continue}t.add(`note ${i} of ${di(a[2])}`,r);let s=e+1;for(;s<n.length&&!/^end\s*note$/i.test(n[s].text);s++)t.add(n[s].text,n[s]);if(s>=n.length)throw new I(`This note is never closed`,r.line,r.column,`Close it with "end note".`);t.add(`end note`,n[s]),e=s}else{if(/^note\b/i.test(i))throw new I(`Only notes on a state are supported here`,r.line,r.column,`note right of State : text`);(a=/^(\S+?)\s*:\s*(.*)$/.exec(i))?t.add(`${di(a[1])} : ${G(a[2])}`,r):t.add(i,r)}}let r=t.parse(ci);return e.direction===`LR`&&(r.direction=`LR`),e.title&&(r.accessibility.title=e.title),r}var pi={timing:`timing`,salt:`salt`,c4:`c4`,mindmap:`mindmap`,wbs:`mindmap`,gantt:`gantt`,sequence:`sequence`,activity:`flowchart`,description:`flowchart`,class:`class`,state:`state`,er:`er`},mi=/^((#\S+\s*)?:.*|start|stop|if\s*\(.*|while\s*\(.*|repeat\b.*|fork\b.*|split\b.*|partition\b.*|\|[^|]+\|.*)$/i,hi=/^\[\*\]|\[\*\]$|^state\s/i,gi=/^((abstract\s+)?class|abstract|enum|annotation|struct|record|exception|protocol|metaclass|object|map)\s|^interface\s+\S+.*\{$/i,_i=/<\|--|--\|>|<\|\.\.|\.\.\|>/,vi=/^(usecase|component|interface|node|cloud|package|rectangle|folder|frame|artifact|storage|card|file|agent|stack|hexagon|person|label|circle|port|portin|portout)\b|^\[[^\]]+\]|^\([^)]+\)|^:[^:]+:(\s|$)|^actor\/?\s|^"[^"]*"\s+as\s+\(|\(\s*[^)]+\)\s*(-|\.)|(-|\.)>?\s*\(\s*[^)]+\)/i,yi=/^((participant|activate|deactivate|autonumber|return|alt|opt|loop|par|break|critical|group)\b|ref\s+over\b|==|\.\.\.|\|\|)/i;function bi(e){return e.some(e=>mi.test(e.text)&&!/^:[^:]+:(\s|$)/.test(e.text))?`activity`:e.some(e=>yi.test(e.text))?`sequence`:e.some(e=>hi.test(e.text))?`state`:e.some(e=>gi.test(e.text))?`class`:Yr(e)?`er`:e.some(e=>vi.test(e.text))?`description`:e.some(e=>_i.test(e.text))?`class`:`sequence`}function xi(e){let t=tt(e);if(t.frame===`mindmap`||t.frame===`wbs`)return{kind:t.frame,model:or(t)};if(t.frame===`gantt`)return{kind:`gantt`,model:Yn(t)};if(t.frame===`salt`||t.frame===`uml`&&er(t))return{kind:`salt`,model:tr(t)};if(t.frame!==`uml`)throw new I(`PlantUML "@start${t.frame}" diagrams are not supported yet`,1,1,`Supported: @startuml sequence, use case, component, deployment, activity, class, object, state and ER diagrams.`);if(t.statements.length===0)throw new I(`The diagram is empty`,0,0);let n=It(t)?`c4`:nr(t)?`timing`:bi(t.statements);switch(n){case`c4`:return{kind:n,model:Lt(t)};case`timing`:return{kind:n,model:rr(t)};case`sequence`:return{kind:n,model:ii(t)};case`activity`:return{kind:n,model:st(t)};case`description`:return{kind:n,model:Wr(t)};case`class`:return{kind:n,model:Ar(t)};case`state`:return{kind:n,model:fi(t)};case`er`:return{kind:n,model:Xr(t)};default:throw new I(`"${n}" diagrams start with their own @start line or keyword`,1,1)}}var Si={rectangle:`rect`,square:`rect`,page:`file`,parallelogram:`parallelogram`,document:`file`,cylinder:`cylinder`,queue:`queue`,package:`folder`,step:`asymmetric`,callout:`note`,stored_data:`storage`,person:`actor`,diamond:`rhombus`,oval:`usecase`,circle:`circle`,hexagon:`hexagon`,cloud:`cloud`,text:`text`,code:`rect`,class:`rect`,sql_table:`rect`,image:`rect`},Ci={down:`TB`,up:`BT`,right:`LR`,left:`RL`},wi={triangle:`triangle`,arrow:`arrow`,diamond:`diamond-open`,"filled-diamond":`diamond`,circle:`circle`,"filled-circle":`circle`,box:`arrow`,"filled-box":`arrow`,"cf-one":`arrow`,"cf-many":`open-arrow`,"cf-one-required":`arrow`,"cf-many-required":`open-arrow`,cross:`cross`},Ti=500,Ei=`›`;function Di(e){let t=0,n=1,r=1,i=()=>{e[t]===`
21
+ `)});continue}if(/^note\b/.test(d))throw new L(`"${d}" is not a note`,n.line,n.column,`Write note "text" or note for Class "text".`);if(p=dr.exec(d),p){let e=l(p[1]).id,t=l(p[7]).id,n=p[8]?.trim();r.relations.push({from:e,to:t,fromEnd:p[3]?lr[p[3]]:`none`,toEnd:p[5]?ur[p[5]]:`none`,dashed:p[4]===`..`,fromCardinality:p[2],toCardinality:p[6],label:n?n.replace(/^"(.*)"$/,`$1`):void 0});continue}if(/\(\)\s*(--|\.\.)|(--|\.\.)\s*\(\)/.test(d))throw new L(`Lollipop interfaces are not supported`,n.line,n.column+Math.max(0,d.search(/\(\)|--\(|\.\.\(/)),`Draw the interface as a class: class IShape { <<interface>> } and Shape ..|> IShape.`);if(p=mr.exec(d),p){u(l(p[1]),p[2].trim(),n);continue}let m=RegExp(`^(${sr})~`,`u`).exec(d);if(m)throw new L(`A generic parameter goes on the class declaration`,n.line,n.column+m[1].length,`Declare it with class ${m[1]}~T~ and refer to the class as ${m[1]}.`);let h=RegExp(`^(${sr})\\s*(?:"[^"]*"\\s*)?([^\\p{L}\\p{N}_\\s":]{2,})`,`u`).exec(d);throw h?new L(`"${h[2]}" is not a relationship`,n.line,n.column+d.indexOf(h[2],h[1].length),`Use <|--, *--, o--, -->, --, ..>, ..|> or .. (heads at either end).`):RegExp(`^${sr}$`,`u`).test(d)?new L(`"${d}" alone is not a statement`,n.line,n.column,`Declare a class with "class ${d}".`):new L(`"${d}" is not a class diagram statement`,n.line,n.column)}if(c)throw new L(`Namespace "${c.id}" is not closed`,c.s.line,c.s.column,`Add "}".`);for(let e of i)for(let t of e.ids){let n=r.classes.get(t);if(!n)throw new L(`cssClass refers to an unknown class "${t}"`,e.s.line,e.s.column);n.classes.push(e.cls)}for(let e of a){let t=r.classes.get(e.id);if(!t)throw new L(`style refers to an unknown class "${e.id}"`,e.s.line,e.s.column);t.style=e.style}for(let e of o){let t=r.classes.get(e.id);if(!t)throw new L(`A link refers to an unknown class "${e.id}"`,e.s.line,e.s.column);let n=Ke(e.href);if(n===null)throw new L(`The link "${e.href}" is not allowed`,e.s.line,e.s.column,`Use http(s), mailto or a relative address.`);t.link={href:n,tooltip:e.tooltip,target:e.target}}for(let e of s)if(!r.classes.has(e.target))throw new L(`A note refers to an unknown class "${e.target}"`,e.s.line,e.s.column);return r}var yr=RegExp(`^(abstract\\s+class|abstract|class|interface|enum|annotation|entity|struct|record|exception|protocol|metaclass|stereotype|object|map|circle|diamond)\\s+(.+)$`,`i`),br={abstract:`abstract`,"abstract class":`abstract`,interface:`interface`,enum:`enumeration`,annotation:`annotation`,entity:`entity`,struct:`struct`,record:`record`,exception:`exception`,protocol:`protocol`,metaclass:`metaclass`,stereotype:`stereotype`},xr=String.raw`"[^"]+"|[\p{L}\p{N}_$][\p{L}\p{N}_.$]*(?:<[^>]*>)?`,Sr=String.raw`<\||\*|o|<|#|x|\}|\+|\^`,Cr=String.raw`\|>|\*|o|>|#|x|\{|\+|\^`,wr=RegExp(`^(${xr})\\s*(?:"([^"]*)")?\\s*(${Sr})?([-.]+(?:\\[[^\\]]*\\])?(?:(?:up|down|left|right|le|ri|do|u|d|l|r)(?=[-.]))?[-.]*(?:\\[[^\\]]*\\])?[-.]*)(${Cr})?\\s*(?:"([^"]*)")?\\s*(${xr})\\s*(?::\\s*(.*))?$`,`u`);function Tr(e){return tt(e).replace(/<.*$/,``).replace(/[^\p{L}\p{N}_]/gu,`_`).replace(/^_+|_+$/g,``)||`Class`}function Er(e){return e.replace(/"/g,`#quot;`)}function Dr(e){let t=e.trim();if(/^(--|\.\.|==|__)(.*(--|\.\.|==|__))?$/.test(t))return null;let n=``;return t=t.replace(/\{(static|classifier)\}\s*/i,()=>(n=`$`,``)),t=t.replace(/\{abstract\}\s*/i,()=>(n=`*`,``)),t=t.replace(/\{(field|method)\}\s*/i,``),t=t.replace(/<([^<>]*)>/g,`~$1~`),t+n}var Or=class{constructor(e){this.list=e,this.t=new jt(`classDiagram`),this.ids=new Map,this.annotations=new Map,this.packages=new Map,this.open=[],this.floating=new Map}ref(e){let t=tt(e);return this.ids.get(t)??this.ids.get(t.replace(/<.*$/,``))??this.declare(t,void 0)}declare(e,t){let n=Tr(e);return this.ids.set(e,n),this.ids.set(n,n),t&&this.ids.set(t,n),n}package(){let e=this.open.filter(e=>e.kind===`package`).map(e=>e.name);return e.length>0?e.join(`.`):void 0}run(){for(let e=0;e<this.list.length;e++)e=this.statement(e);if(this.open.length>0)throw new L(`A "{" is never closed`,0,0,`Close it with "}".`);let e=this.t.parse(vr);for(let[t,n]of this.annotations){let r=e.classes.get(t);if(r)for(let e of n)r.annotations.includes(e)||r.annotations.push(e)}for(let[t,n]of this.packages){let r=e.classes.get(t);r&&(r.namespace=n,e.namespaces.has(n)||e.namespaces.set(n,{id:n}))}for(let t of this.floating.values())t.used||e.notes.push({text:t.text.replace(/\\n/g,`
22
+ `).replace(/#quot;/g,`"`)});return e}statement(e){let t=this.list[e],n=t.text,r=this.open[this.open.length-1],i;if(n===`}`){let n=this.open.pop();if(!n)throw new L(`"}" without a "{" to close`,t.line,t.column);if(n.kind===`class`){this.t.add(`}`,t);for(let e of n.after)this.t.add(e,t)}return e}if(r?.kind===`class`){let r=Dr(n);return r!==null&&this.t.add(r,t),e}if(i=/^(package|namespace|together|rectangle|folder|frame|node|cloud|database)\b\s*(.*?)\s*\{$/i.exec(n)){let t=i[1].toLowerCase();return t===`together`?this.open.push({kind:`group`}):this.open.push({kind:`package`,name:tt(Mt(i[2]).replace(/\s+as\s+\S+$/i,``).replace(/<<.*>>/,``).trim())||t}),e}if(/^(package|namespace)\b/i.test(n))throw new L(`A package needs a body`,t.line,t.column,`package Name { … }`);if(i=/^[hr]?note\s+(left|right|top|bottom)\s+of\s+(.+?)\s*(?:#\S+)?\s*(?::\s*(.*))?$/i.exec(n)){let n=this.ref(i[2]),r=i[3],a=e;return r===void 0&&({body:r,end:a}=this.multiline(e)),this.t.add(`note for ${n} "${Er(r)}"`,t),a}if((i=/^[hr]?note\s+"([^"]*)"\s+as\s+(\S+)$/i.exec(n))||(i=/^[hr]?note\s+as\s+(\S+)$/i.exec(n))){let n=i[2]??i[1],r=i[2]?i[1]:void 0,a=e;return r===void 0&&({body:r,end:a}=this.multiline(e)),this.floating.set(n,{text:Er(r),s:t,used:!1}),a}if(i=/^[hr]?note\s+"([^"]*)"$/i.exec(n))return this.t.add(`note "${Er(i[1])}"`,t),e;if(/^note\s+on\s+link\b/i.test(n))return/:/.test(n)?e:this.multiline(e).end;if((i=yr.exec(n))&&!wr.test(n))return this.declaration(i[1].toLowerCase().replace(/\s+/g,` `),i[2],t),e;if(i=wr.exec(n))return this.relation(i,t),e;if(i=/^("[^"]+"|[\p{L}\p{N}_$][\p{L}\p{N}_.$]*)\s*:\s*(.*)$/u.exec(n)){let n=Dr(i[2]);return n!==null&&this.t.add(`${this.ref(i[1])} : ${n}`,t),e}throw new L(`"${n}" is not a class diagram statement`,t.line,t.column)}declaration(e,t,n){let r=Mt(t.trim()),i=r.endsWith(`{`);i&&(r=r.slice(0,-1).trim()),r.endsWith(`{}`)&&(r=r.slice(0,-2).trim());let a=[];r=r.replace(/\s*<<\s*([^>]*?)\s*>>/g,(e,t)=>(a.push(t),``)).trim();let o=[],s=/\s+(extends|implements)\s+(.+?)(?=\s+(?:extends|implements)\s+|$)/gi,c=/\s+(extends|implements)\s+.*$/i.exec(r);if(c){for(let e of c[0].matchAll(s))for(let t of e[2].split(`,`))o.push({name:t.trim(),dotted:e[1].toLowerCase()===`implements`});r=r.slice(0,c.index)}let l=r,u,d=/^"([^"]+)"\s+as\s+(\S+)$/.exec(r);d?(u=d[1],l=d[2]):(d=/^(\S+)\s+as\s+"([^"]+)"$/.exec(r))?(l=d[1],u=d[2]):/^"[^"]+"$/.test(r)&&(u=tt(r),l=u);let f=/<([^>]*)>$/.exec(l)?.[1],p=this.declare(l.replace(/<.*$/,``),u);u===void 0&&p!==l.replace(/<.*$/,``)&&(u=l.replace(/<.*$/,``));let m=u===void 0?``:`["${K(u).replace(/"/g,`#quot;`)}"]`;this.t.add(`class ${p}${f?`~${f.replace(/\s/g,``)}~`:``}${m}${i?` {`:``}`,n);let h=br[e],g=this.annotations.get(p)??[];h&&g.push(h),g.push(...a),this.annotations.set(p,g);let _=this.package();_&&!this.packages.has(p)&&this.packages.set(p,_);let v=o.map(e=>`${this.ref(e.name)} <|${e.dotted?`..`:`--`} ${p}`);if(i)this.open.push({kind:`class`,id:p,after:v});else for(let e of v)this.t.add(e,n)}relation(e,t){let[,n,r,i,a,o,s,c,l]=e;for(let[e,r]of[[n,c],[c,n]]){let n=this.floating.get(e);if(n){n.used=!0,this.t.add(`note for ${this.ref(r)} "${n.text}"`,t);return}}let u=Nt(a).includes(`.`)?`..`:`--`,d=(e,t)=>e&&t.includes(e)?e:``,f=d(i,[`<|`,`*`,`o`,`<`]),p=d(o,[`|>`,`*`,`o`,`>`]),m=this.ref(n),h=this.ref(c),g=this.package();for(let e of[m,h])g&&!this.packages.has(e)&&this.packages.set(e,g);let _=l?.replace(/\s*[<>]\s*$/,``).replace(/^\s*[<>]\s*/,``).trim();this.t.add(`${m} ${r===void 0?``:`"${r}" `}${f}${u}${p} ${s===void 0?``:`"${s}" `}${h}${_?` : ${K(_)}`:``}`,t)}multiline(e){let t=[],n=e+1;for(;n<this.list.length&&!/^end\s*[hr]?note$/i.test(this.list[n].text);n++)t.push(this.list[n].text);if(n>=this.list.length){let t=this.list[e];throw new L(`This note is never closed`,t.line,t.column,`Close it with "end note".`)}return{body:t.join(`\\n`),end:n}}};function kr(e){let t=new Or(e.statements).run();return e.direction===`LR`&&(t.direction=`LR`),e.title&&(t.accessibility.title=e.title),t}var Ar={actor:`actor`,usecase:`usecase`,component:`component`,interface:`interface`,node:`node`,cloud:`cloud`,database:`cylinder`,queue:`queue`,storage:`storage`,artifact:`artifact`,card:`rect`,file:`file`,folder:`folder`,frame:`frame`,package:`folder`,rectangle:`rect`,agent:`rect`,stack:`stack`,hexagon:`hexagon`,person:`person`,label:`text`,circle:`circle`,collections:`collections`,boundary:`boundary`,control:`control`,entity:`entity`},jr=/^(\[[^\]]+\]|\([^)]+\)|:[^:]+:|\(\)\s*("[^"]+"|\S+))(\s+as\s+("[^"]+"|\S+))?(\s*<<[^>]*>>)?(\s*#\S+)?\s*\{?$/,Mr=RegExp(`^(${Object.keys(Ar).join(`|`)})/?\\s+(.*)$`,`i`),Nr=String.raw`\[[^\]]+\]|\(\)\s*"[^"]+"|\(\)\s*[\p{L}\p{N}_.$]+|\([^)]+\)|:[^:]+:|"[^"]+"|[\p{L}\p{N}_.$@]+`,Pr=String.raw`<\||<<|<|\*|o|\+|#|\^`,Fr=String.raw`\|>|>>|>|\*|o|\+|#|\^`,Ir=String.raw`[-.=~]+(?:\[[^\]]*\])?(?:(?:up|down|left|right|le|ri|do|u|d|l|r)(?=[-.=~]))?[-.=~]*(?:\[[^\]]*\])?[-.=~]*`,Lr=RegExp(`^(?<a>${Nr})\\s*(?:"(?<ma>[^"]*)")?\\s*(?<lh>${Pr})?(?<body>${Ir})(?<rh>${Fr})?\\s*(?:"(?<mb>[^"]*)")?\\s*(?<b>${Nr})\\s*(?::\\s*(?<text>.*))?$`,`u`);function Rr(e){switch(e){case void 0:case``:case`#`:return`none`;case`>`:case`<`:return`arrow`;case`>>`:case`<<`:case`^`:return`open-arrow`;case`|>`:case`<|`:return`triangle`;case`*`:return`diamond`;case`o`:return`diamond-open`;case`+`:return`circle`;default:return`arrow`}}function zr(e){let t=e.replace(/^#/,``);return/^[0-9a-fA-F]{3,8}$/.test(t)?`#${t}`:t}function Br(e){let t=e.trim(),n={name:``,opens:!1,description:!1};t.endsWith(`{`)?(n.opens=!0,t=t.slice(0,-1).trim()):t.endsWith(`[`)&&!/\[[^\]]*$/.test(t.slice(0,-1))&&(n.description=!0,t=t.slice(0,-1).trim());let r=/\s*(#[\w]+)\s*$/.exec(t);if(r&&(n.color=zr(r[1]),t=t.slice(0,r.index).trim()),r=/\s*<<\s*(.*?)\s*>>\s*$/.exec(t),r&&(n.stereotype=r[1],t=t.slice(0,r.index).trim()),r=/^(.+?)\s+\[([^\]]*)\]$/.exec(t),r)return n.alias=tt(r[1]),n.name=r[2].trim(),n;if(r=/^(.+?)\s+as\s+(.+)$/i.exec(t),r){let e=r[1].trim(),t=r[2].trim();return/^["[(:]/.test(e)?(n.name=Vr(e),n.alias=tt(t)):(n.alias=e,n.name=Vr(t)),n}return n.name=Vr(t),n}function Vr(e){let t=e.trim();return/^\[.*\]$/.test(t)||/^\(.*\)$/.test(t)||/^:.*:$/.test(t)?t.slice(1,-1).trim():tt(t)}var Hr=class{constructor(e){this.list=e,this.chart={type:`flowchart`,direction:`TB`,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},this.byName=new Map,this.containers=[],this.notes=0,this.hasUseCases=!1,this.hasUseCases=e.some(e=>/^usecase\b|\([^)]+\)/i.test(e.text))}run(){for(let e=0;e<this.list.length;e++)e=this.statement(e);if(this.containers.length>0){let e=this.containers[this.containers.length-1];throw new L(`"${this.chart.subgraphs.get(e).title||e}" is never closed`,0,0,`Close it with "}".`)}return this.chart}statement(e){let t=this.list[e],n=t.text,r;if(n===`}`){if(this.containers.length===0)throw new L(`"}" without a container to close`,t.line,t.column);return this.containers.pop(),e}if(/^together\s*\{$/i.test(n))return this.containers.push(this.containers[this.containers.length-1]??``),e;if(/^(note|hnote|rnote)\b/i.test(n))return this.note(e);if((r=Mr.exec(n))&&!Lr.test(n))return this.element(e,Ar[r[1].toLowerCase()],r[2]);if(r=Lr.exec(n))return this.link(r.groups,t),e;if(jr.test(n)){let t=n.startsWith(`[`)?`component`:n.startsWith(`()`)?`interface`:n.startsWith(`(`)?`usecase`:`actor`;return this.element(e,t,n.startsWith(`()`)?n.slice(2):n)}throw new L(`"${n}" is not an element, a link or a note`,t.line,t.column)}element(e,t,n){let r=this.list[e],i=Br(n),a=e;if(i.description){let t=[];for(a=e+1;a<this.list.length&&this.list[a].text!==`]`;a++)t.push(this.list[a].text);if(a>=this.list.length)throw new L(`This description is never closed`,r.line,r.column,`Close it with "]".`);i.alias=i.alias??i.name,i.name=t.join(`<br>`)}if(i.name===``&&!i.alias)throw new L(`An element needs a name`,r.line,r.column);let o=i.alias??i.name,s=K(i.name||o)+(i.stereotype?`<br>«${i.stereotype}»`:``),c=i.color?W(`fill:${i.color}`,r.line,r.column):void 0,l=this.containers[this.containers.length-1]||void 0;if(i.opens){let e={id:o,title:s,markdown:!1,parent:l,classes:[],style:c,kind:t===`cylinder`?`rect`:t};return this.chart.subgraphs.set(o,e),this.byName.set(o,o),i.name&&this.byName.set(i.name,o),this.containers.push(o),a}let u={id:o,text:s,markdown:!1,shape:t,classes:[],style:c,subgraph:l},d=this.chart.nodes.get(o);return d?Object.assign(d,{text:s,shape:t,style:c??d.style}):this.chart.nodes.set(o,u),this.byName.set(o,o),i.name&&this.byName.set(i.name,o),a}endpoint(e){let t=e.trim(),n=this.hasUseCases?`actor`:`rect`,r;t.startsWith(`[`)?(n=`component`,r=t.slice(1,-1).trim()):t.startsWith(`()`)?(n=`interface`,r=tt(t.slice(2))):t.startsWith(`(`)?(n=`usecase`,r=t.slice(1,-1).trim()):t.startsWith(`:`)&&t.endsWith(`:`)&&t.length>1?(n=`actor`,r=t.slice(1,-1).trim()):r=tt(t);let i=this.byName.get(r);return i===void 0?(this.chart.subgraphs.has(r)||(this.chart.nodes.set(r,{id:r,text:K(r),markdown:!1,shape:n,classes:[],subgraph:this.containers[this.containers.length-1]||void 0}),this.byName.set(r,r)),r):i}link(e,t){let n=this.endpoint(e.a),r=this.endpoint(e.b),i=e.body,a=(/\[([^\]]*)\]/.exec(i)?.[1]??``).split(/[,;]/).map(e=>e.trim().toLowerCase()).filter(Boolean),o=/^[.~]/.test(i)||/\.\.|~~/.test(i)?`dotted`:/=/.test(i)?`thick`:`normal`;a.includes(`hidden`)?o=`invisible`:a.includes(`dashed`)||a.includes(`dotted`)?o=`dotted`:(a.includes(`bold`)||a.includes(`thickness=2`)||a.includes(`thickness=3`))&&(o=`thick`);let s=Rr(e.lh),c=Rr(e.rh);/(?:^|[-.=~\]])(up|u)(?=[-.=~[])/i.test(i)&&([n,r]=[r,n],[s,c]=[c,s]);let l,u=a.find(e=>e.startsWith(`#`));u&&(l=W(`stroke:${zr(u)}`,t.line,t.column));let d=[e.ma,e.text?.trim(),e.mb].filter(e=>e!==void 0&&e!==``),f=e.text?.trim()?K(e.text.trim()):d.length>0?d.join(` … `):void 0,p={from:n,to:r,stroke:o,start:s,end:c,length:1,text:f,markdown:!1,style:l};this.chart.edges.push(p)}note(e){let t=this.list[e],n=t.text,r,i,a,o=/^[hr]?note\s+"([^"]*)"\s+as\s+(\S+)$/i.exec(n);if(o)r=o[1],a=o[2];else if(o=/^[hr]?note\s+as\s+(\S+)$/i.exec(n))a=o[1];else if(o=/^[hr]?note\s+(left|right|top|bottom)(?:\s+of)?\s+(.+?)\s*(?:#\S+)?\s*(?::\s?(.*))?$/i.exec(n))i=this.endpoint(o[2]),r=o[3];else throw new L(`"${n}" is not a note`,t.line,t.column,`note right of X : text, note "text" as N`);let s=e;if(r===void 0){let n=[];for(s=e+1;s<this.list.length&&!/^end\s*[hr]?note$/i.test(this.list[s].text);s++)n.push(this.list[s].text);if(s>=this.list.length)throw new L(`This note is never closed`,t.line,t.column,`Close it with "end note".`);r=n.join(`<br>`)}let c=a??`note-${++this.notes}`;return this.chart.nodes.set(c,{id:c,text:K(r),markdown:!1,shape:`note`,classes:[],subgraph:this.containers[this.containers.length-1]||void 0}),this.byName.set(c,c),i&&this.chart.edges.push({from:i,to:c,stroke:`dotted`,start:`none`,end:`none`,length:1,markdown:!1}),s}};function Ur(e){let t=new Hr(e.statements).run();return e.direction===`LR`&&(t.direction=`LR`),e.title&&(t.title=e.title.replace(/\n/g,`<br>`)),t}var Wr={"||":`one`,"|o":`zero-one`,"}|":`one-many`,"}o":`zero-many`,"|":`one`},Gr={"||":`one`,"o|":`zero-one`,"|{":`one-many`,"o{":`zero-many`,"|":`one`},Kr=String.raw`"[^"]+"|[\p{L}\p{N}_][\p{L}\p{N}_.]*`,qr=RegExp(`^(${Kr})\\s*(\\|\\||\\|o|\\}\\||\\}o|\\|)([-.]+(?:\\[[^\\]]*\\])?(?:(?:up|down|left|right|u|d|l|r)(?=[-.]))?[-.]*)(\\|\\||o\\||\\|\\{|o\\{|\\|)\\s*(${Kr})\\s*(?::\\s*(.*))?$`,`u`);function Jr(e){return e.some(e=>qr.test(e.text))||e.some(e=>/^entity\s+.*\{$/i.test(e.text))}function Yr(e){let t={type:`er`,direction:e.direction===`LR`?`LR`:`TB`,entities:new Map,relationships:[],classDefs:new Map,accessibility:{}};e.title&&(t.accessibility.title=e.title);let n=new Map,r=(e,r)=>{let i=tt(e),a=n.get(i);if(a)return a;let o=i.replace(/[^\p{L}\p{N}_-]/gu,`_`);return n.set(i,o),r&&n.set(r,o),t.entities.has(o)||t.entities.set(o,{id:o,label:K(r??i),attributes:[],classes:[]}),o},i=e.statements;for(let e=0;e<i.length;e++){let n=i[e],a;if(a=/^entity\s+(.+?)\s*(\{)?$/i.exec(Mt(n.text))){let o=a[1].replace(/\s*<<[^>]*>>/g,``).trim(),s,c=/^"([^"]+)"\s+as\s+(\S+)$/.exec(o)??/^(\S+)\s+as\s+"([^"]+)"$/.exec(o);if(c){let e=o.startsWith(`"`);s=e?c[1]:c[2],o=e?c[2]:c[1]}let l=r(o,s);if(a[2]){let r=e+1;for(;r<i.length&&i[r].text!==`}`;r++){let e=Xr(i[r].text);e&&t.entities.get(l).attributes.push(e)}if(r>=i.length)throw new L(`Entity "${o}" is never closed`,n.line,n.column,`Close it with "}".`);e=r}}else if(a=qr.exec(n.text)){let[,e,n,i,o,s,c]=a;t.relationships.push({from:r(e),to:r(s),fromCardinality:Wr[n],toCardinality:Gr[o],identifying:!Nt(i).includes(`.`),label:c?K(c.trim()):``})}else if(!/^(note|hide|show)\b/i.test(n.text))throw new L(`"${n.text}" is not an entity or a relationship`,n.line,n.column,`entity Name { … }, A ||--o{ B : label`)}return t}function Xr(e){let t=e.trim();if(/^(--|\.\.|==|__)(.*(--|\.\.|==|__))?$/.test(t))return null;let n=[],r=[];t=t.replace(/\s*<<\s*([^>]*?)\s*>>/g,(e,t)=>{let i=t.toUpperCase();return i===`PK`||i===`FK`||i===`UK`?n.push(i):r.push(t),``}),t=t.replace(/^\*\s*/,``).trim();let i=/^(.+?)\s*:\s*(.+)$/.exec(t),a=(i?i[1]:t).trim();return{type:i?i[2].trim():``,name:a,keys:n,comment:r.length>0?r.join(`, `):void 0}}var Zr=RegExp(`^(create\\s+)?(participant|actor|boundary|control|entity|database|collections|queue)\\s+(.+)$`,`i`),Qr=String.raw`"[^"]+"|[\p{L}\p{N}_.@$]+`,$r=String.raw`[ox]?(?:<<|<|\\\\|/)?-+(?:\[[^\]]*\])?-*(?:>>|>|\\\\|/)?[ox]?`,ei=RegExp(`^(?<from>${Qr}|\\[)?\\s*(?<arrow>${$r})\\s*(?<to>${Qr}|\\])\\s*(?<mods>(?:\\+\\+|--|\\*\\*|!!|\\s)*)\\s*(?::\\s?(?<text>.*))?$`,`u`);function ti(e){let t=e.replace(/\[[^\]]*\]/,``),n=/^[ox]?(<<|<|\\|\/)/.test(t),r=/(>>|>|\\|\/)[ox]?$/.test(t),i=/--/.test(t),a=`arrow`;return/>>|<</.test(t)&&(a=`open`),/x$|^x/.test(t)&&(a=`cross`),{dotted:i,head:a,left:n,right:r}}var ni=class{constructor(e){this.list=e,this.diagram={type:`sequence`,participants:[],boxes:[],events:[],accessibility:{}},this.byId=new Map,this.stack=[],this.calls=[],this.numbering=null,this.paused=null,this.currentBox=null,this.last=null}run(){for(let e=0;e<this.list.length;e++)e=this.statement(e);let e=this.stack[this.stack.length-1];if(e)throw new L(`The "${e.block}" opened here is never closed`,e.line,0,e.block===`box`?`Close it with "end box".`:`Close it with "end".`);return this.diagram}statement(e){let t=this.list[e],n=t.text,r;if(r=Zr.exec(n))return this.declare(r[3],r[2].toLowerCase(),!!r[1],t),e;if(r=/^create\s+(.+)$/i.exec(n))return this.declare(r[1],`participant`,!0,t),e;if(r=/^autonumber\b\s*(.*)$/i.exec(n))return this.autonumber(r[1].trim(),t),e;if(r=/^(activate|deactivate)\s+(.+?)(?:\s+#\S+)?$/i.exec(n)){let n=this.use(r[2],t);return r[1].toLowerCase()===`activate`?(this.last&&this.last.to===n&&this.calls.push({caller:this.last.from,callee:n}),this.diagram.events.push({kind:`activate`,actor:n,sourceLine:t.line})):(this.dropCall(n),this.diagram.events.push({kind:`deactivate`,actor:n,sourceLine:t.line})),e}if(r=/^destroy\s+(.+)$/i.exec(n))return this.diagram.events.push({kind:`destroy`,actor:this.use(r[1],t),sourceLine:t.line}),e;if(r=/^return\b\s*(.*)$/i.exec(n)){let n=this.calls.pop();if(!n)throw new L(`"return" without a call to return from`,t.line,t.column,`Activate the callee first: A -> B ++ : call`);return this.message(n.callee,n.caller,K(r[1].trim()),{dotted:!0,head:`arrow`,both:!1},{deactivateSource:!0},t),e}if(r=/^box\b\s*(.*)$/i.exec(n)){if(this.stack.length>0)throw new L(`A box cannot be nested inside a block or another box`,t.line,t.column);let n=r[1].trim(),i,a=/\s*(#[0-9a-fA-F]{3,8}|#[a-zA-Z]+)\s*$/.exec(n);a&&(i=a[1].startsWith(`#`)&&/^#[0-9a-fA-F]+$/.test(a[1])?a[1]:a[1].slice(1),n=n.slice(0,a.index).trim());let o=tt(n);return this.diagram.boxes.push({label:o===``?void 0:K(o),color:i}),this.currentBox=this.diagram.boxes.length-1,this.stack.push({block:`box`,line:t.line}),e}if(/^end\s*box$/i.test(n)){let n=this.stack.pop();if(!n||n.block!==`box`)throw new L(`"end box" without a box to close`,t.line,t.column);return this.currentBox=null,e}if(r=/^(alt|opt|loop|par|break|critical|group)\b\s*(.*)$/i.exec(n)){let n=r[1].toLowerCase();return this.stack.push({block:n,line:t.line}),this.diagram.events.push({kind:`block-start`,block:n,text:K(r[2].replace(/^#\S+\s*/,``).trim()),sourceLine:t.line}),this.last=null,e}if(r=/^else\b\s*(.*)$/i.exec(n)){let n=this.stack[this.stack.length-1];if(!n||n.block===`box`)throw new L(`"else" belongs inside a block (alt, par, …)`,t.line,t.column);let i=n.block===`par`?`and`:n.block===`critical`?`option`:`else`;return this.diagram.events.push({kind:`block-section`,keyword:i,text:K(r[1].replace(/^#\S+\s*/,``).trim()),sourceLine:t.line}),e}if(/^end$/i.test(n)){let n=this.stack.pop();if(!n)throw new L(`"end" without a block to close`,t.line,t.column);return n.block===`box`?this.currentBox=null:this.diagram.events.push({kind:`block-end`,sourceLine:t.line}),e}if(r=/^==\s*(.*?)\s*==$/.exec(n))return this.diagram.events.push({kind:`divider`,text:K(r[1]),sourceLine:t.line}),e;if(r=/^\.\.\.\s*(.*?)\s*(?:\.\.\.)?$/.exec(n))return this.diagram.events.push({kind:`delay`,text:K(r[1]),sourceLine:t.line}),e;if(r=/^\|\|(\d*)\|\|?$/.exec(n))return this.diagram.events.push({kind:`space`,height:r[1]?Number(r[1]):20,sourceLine:t.line}),e;if(/^(note|hnote|rnote|ref)\b/i.test(n))return this.note(e);if(r=ei.exec(n)){let i=r.groups;if(!i.from||i.from===`[`||i.to===`]`)throw new L(`Messages from or to outside the diagram ([-> and ->]) are not supported`,t.line,t.column,`Add a participant for the outside party.`);let a=ti(i.arrow);if(!a.left&&!a.right)throw new L(`"${i.arrow}" is not an arrow`,t.line,t.column+n.indexOf(i.arrow),`A -> B, A --> B, A ->> B, A <- B`);let o=this.use(i.from,t),s=this.use(i.to,t);a.left&&!a.right&&([o,s]=[s,o]);let c=i.mods??``;return this.message(o,s,K((i.text??``).trim()),{dotted:a.dotted,head:a.head,both:a.left&&a.right},{activateTarget:c.includes(`++`),deactivateSource:c.includes(`--`),create:c.includes(`**`),destroy:c.includes(`!!`)},t),e}throw new L(`"${n}" is not a sequence diagram statement`,t.line,t.column)}message(e,t,n,r,i,a){if(i.create){let e=this.byId.get(t);this.diagram.events.some(e=>e.kind===`message`&&(e.from===t||e.to===t))||(e.created=!0)}let o;this.numbering&&(o=this.numbering.next,this.numbering.next+=this.numbering.step),this.diagram.events.push({kind:`message`,from:e,to:t,line:r.dotted?`dotted`:`solid`,head:r.head,bidirectional:r.both,text:n,activateTarget:!!i.activateTarget,deactivateSource:!!i.deactivateSource,number:o,sourceLine:a.line}),i.activateTarget&&this.calls.push({caller:e,callee:t}),i.deactivateSource&&this.dropCall(e),i.destroy&&this.diagram.events.push({kind:`destroy`,actor:t,sourceLine:a.line}),this.last={from:e,to:t}}dropCall(e){for(let t=this.calls.length-1;t>=0;t--)if(this.calls[t].callee===e){this.calls.splice(t,1);return}}note(e){let t=this.list[e],n=t.text,r=/^ref\s+over\s+(.+?)(?:\s*:\s*(.*))?$/i.exec(n);if(r){let n=r[1].split(`,`).map(e=>this.use(e,t)),i=r[2],a=e;return i===void 0&&({text:i,end:a}=this.multiline(e,/^end\s*ref$/i,`end ref`)),this.diagram.events.push({kind:`note`,placement:`over`,actors:[n[0],n[n.length-1]].filter((e,t,n)=>n.indexOf(e)===t),text:`ref: ${K(i)}`,sourceLine:t.line}),a}if(r=/^[hr]?note\s+(left|right|over|across)(?:\s+of)?\s*([^:#]*?)\s*(?:#\S+)?\s*(?::\s?(.*))?$/i.exec(n),!r)throw new L(`"${n}" is not a note`,t.line,t.column,`note left of A : text, note over A, B : text`);let i=r[1].toLowerCase(),a;if(i===`across`){let e=this.diagram.participants.map(e=>e.id);if(e.length===0)throw new L(`"note across" needs participants before it`,t.line,t.column);a=e.length>1?[e[0],e[e.length-1]]:[e[0]]}else if(r[2].trim()!==``)a=r[2].split(`,`).map(e=>this.use(e,t));else{if(!this.last)throw new L(`A note without "of" belongs after a message`,t.line,t.column,`note left of A : text`);a=[i===`right`?this.last.to:this.last.from]}let o=i===`across`?`over`:i;if(o!==`over`&&a.length>1)throw new L(`Only "over" spans two participants`,t.line,t.column);let s=r[3],c=e;return s===void 0&&({text:s,end:c}=this.multiline(e,/^end\s*[hr]?note$/i,`end note`)),this.diagram.events.push({kind:`note`,placement:o,actors:a.slice(0,2),text:K(s),sourceLine:t.line}),c}multiline(e,t,n){let r=[];for(let n=e+1;n<this.list.length;n++){if(t.test(this.list[n].text))return{text:r.join(`<br>`),end:n};r.push(this.list[n].text)}let i=this.list[e];throw new L(`This block is never closed`,i.line,i.column,`Close it with "${n}".`)}autonumber(e,t){if(/^stop$/i.test(e)){this.paused=this.numbering,this.numbering=null;return}if(/^resume\b/i.test(e)){this.numbering=this.paused??{next:1,step:1};return}let n=/^(\d+)?\s*(\d+)?\s*(?:"[^"]*")?$/.exec(e);if(!n)throw new L(`"${e}" is not a valid autonumber`,t.line,t.column,`autonumber [start [step]]`);this.numbering={next:n[1]?Number(n[1]):1,step:n[2]?Number(n[2]):1}}declare(e,t,n,r){let i=e.trim();i=i.replace(/\s+order\s+-?\d+\s*$/i,``),i=i.replace(/\s+#[\w]+\s*$/,``);let a,o=/\s*<<\s*(.*?)\s*>>\s*$/.exec(i);o&&(a=o[1],i=i.slice(0,o.index));let s,c,l=/^"([^"]+)"\s+as\s+(\S+)$/i.exec(i);if(l?(c=l[1],s=l[2]):(l=/^(\S+)\s+as\s+"?([^"]+)"?$/i.exec(i))?(s=l[1],c=l[2]):(s=tt(i),c=s),s===``)throw new L(`A participant needs a name`,r.line,r.column);c=K(c)+(a?`<br>«${a}»`:``);let u=this.byId.get(s);if(u){u.label=c,u.kind=t,n&&(u.created=!0),this.currentBox!==null&&(u.box=this.currentBox);return}let d={id:s,label:c,kind:t,created:n};this.currentBox!==null&&(d.box=this.currentBox),this.byId.set(s,d),this.diagram.participants.push(d)}use(e,t){let n=tt(e.trim());if(n===``)throw new L(`A participant needs a name`,t.line,t.column);if(!this.byId.has(n)){let e={id:n,label:K(n),kind:`participant`,created:!1};this.currentBox!==null&&(e.box=this.currentBox),this.byId.set(n,e),this.diagram.participants.push(e)}return n}};function ri(e){let t=new ni(e.statements).run();return e.title&&(t.title=K(e.title.replace(/\n/g,`\\n`))),e.hideFootbox&&(t.hideFootbox=!0),t}var ii={TB:`TB`,TD:`TB`,BT:`BT`,LR:`LR`,RL:`RL`},ai=`[\\p{L}\\p{N}_][\\p{L}\\p{N}_.-]*`,oi=`(\\[\\*\\]|${ai})`;function si(e){let t=q(e),n=t[0];if(!n||!/^stateDiagram(-v2)?$/.test(n.text))throw new L(`A state diagram starts with "stateDiagram-v2"`,n?.line??1,1);let r={type:`state`,direction:`TB`,states:new Map,composites:new Map,transitions:[],notes:[],classDefs:new Map,accessibility:{}},i=[],a=new Map,o=[],s=[],c=()=>i[i.length-1]?.id,l=e=>{let t=c()??`root`,n=`\u0000${e?`start`:`end`}:${t}`;return r.states.has(n)||r.states.set(n,{id:n,kind:e?`start`:`end`,name:``,descriptions:[],parent:c(),classes:[]}),n},u=(e,t)=>{let n=r.composites.get(e);if(n)return n;let i=r.states.get(e);return i||(i={id:e,kind:`state`,name:e,descriptions:[],parent:c(),classes:[]},r.states.set(e,i)),i},d=e=>{let t=/^(.*?):::([\w-]+)$/.exec(e);return t?{id:t[1],cls:t[2]}:{id:e}};for(let e=1;e<t.length;e++){let n=t[e],f=n.text,p=J(t,e,r.accessibility);if(p>0){e+=p-1;continue}let m=/^direction\s+(\w+)$/.exec(f);if(m){let e=ii[m[1].toUpperCase()];if(!e)throw new L(`"${m[1]}" is not a direction`,n.line,n.column+10);let t=i[i.length-1];t?t.direction=e:r.direction=e;continue}if(m=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(f),m){let e=W(m[2],n.line,n.column);for(let t of m[1].split(`,`))r.classDefs.set(t.trim(),e);continue}if(m=/^class\s+(.+?)\s+([\w-]+)$/.exec(f),m){o.push({ids:m[1].split(`,`).map(e=>e.trim()),cls:m[2],s:n});continue}if(m=/^style\s+(\S+)\s+(.+)$/.exec(f),m){s.push({id:m[1],style:W(m[2],n.line,n.column),s:n});continue}if(m=RegExp(`^note\\s+(left|right)\\s+of\\s+(${ai})\\s*(?::\\s*(.*))?$`,`u`).exec(f),m){let i=m[1],a=m[2],o=m[3];if(o===void 0){let r=[],i=e+1;for(;i<t.length&&t[i].text!==`end note`;i++)r.push(t[i].text);if(i>=t.length)throw new L(`The note is not closed`,n.line,n.column,`Add "end note".`);o=r.join(`
23
+ `),e=i}r.notes.push({target:a,side:i,text:o});continue}if(m=RegExp(`^state\\s+(?:"([^"]*)"\\s+as\\s+)?(${ai})\\s*\\{$`,`u`).exec(f),m){let e=m[2];if(r.composites.has(e))throw new L(`State "${e}" is defined twice`,n.line,n.column);let t=r.states.get(e),a={id:e,name:m[1]??t?.name??e,parent:c(),region:!1,classes:t?.classes??[]};t&&(r.states.delete(e),a.parent=t.parent),r.composites.set(e,a),i.push(a);continue}if(f===`}`){for(;i.length>0&&i[i.length-1].region;)i.pop();if(i.length===0)throw new L(`"}" without an open state`,n.line,n.column);i.pop();continue}if(f===`--`){for(;i.length>0&&i[i.length-1].region;)i.pop();let e=i[i.length-1];if(!e)throw new L(`"--" separates regions inside a composite state`,n.line,n.column);let t=a.get(e.id)??0;if(t===0){let t={id:`${e.id}\u0000r0`,name:``,parent:e.id,region:!0,classes:[]};r.composites.set(t.id,t);for(let n of r.states.values())n.parent===e.id&&(n.parent=t.id);for(let n of r.composites.values())n.parent===e.id&&n.id!==t.id&&(n.parent=t.id)}let o={id:`${e.id}\u0000r${t+1}`,name:``,parent:e.id,region:!0,classes:[]};a.set(e.id,t+1),r.composites.set(o.id,o),i.push(o);continue}if(m=RegExp(`^state\\s+"([^"]*)"\\s+as\\s+(${ai})$`,`u`).exec(f),m){let e=u(m[2],n);e.name=m[1];continue}if(m=RegExp(`^state\\s+(${ai})\\s*<<(choice|fork|join)>>$`,`u`).exec(f),m){let e=u(m[1],n);`kind`in e&&(e.kind=m[2]);continue}if(m=RegExp(`^state\\s+(${ai})(?:\\s*:\\s*(.*))?$`,`u`).exec(f),m){let e=u(m[1],n);m[2]!==void 0&&`descriptions`in e&&e.descriptions.push(m[2].trim());continue}if(m=RegExp(`^${oi}(?::::([\\w-]+))?\\s*-->\\s*${oi}(?::::([\\w-]+))?\\s*(?::\\s*(.*))?$`,`u`).exec(f),m){let e=m[1]===`[*]`?l(!0):u(m[1],n).id,t=m[3]===`[*]`?l(!1):u(m[3],n).id;m[2]&&u(e,n).classes.push(m[2]),m[4]&&u(t,n).classes.push(m[4]),r.transitions.push({from:e,to:t,label:m[5]?.trim()||void 0});continue}if(m=RegExp(`^(${ai})\\s*:\\s*(.*)$`,`u`).exec(f),m){let e=u(m[1],n);`descriptions`in e&&e.descriptions.push(m[2].trim());continue}let h=d(f);if(RegExp(`^${ai}$`,`u`).test(h.id)){let e=u(h.id,n);h.cls&&e.classes.push(h.cls)}else throw new L(`"${f}" is not a state diagram statement`,n.line,n.column)}if(i.some(e=>!e.region))throw new L(`State "${i.filter(e=>!e.region).pop().id}" is not closed`,0,0,`Add "}".`);for(let e of o)for(let t of e.ids){let n=r.states.get(t)??r.composites.get(t);if(!n)throw new L(`class refers to an unknown state "${t}"`,e.s.line,e.s.column);n.classes.push(e.cls)}for(let e of s){let t=r.states.get(e.id)??r.composites.get(e.id);if(!t)throw new L(`style refers to an unknown state "${e.id}"`,e.s.line,e.s.column);t.style=e.style}for(let e of r.notes)if(!r.states.has(e.target)&&!r.composites.has(e.target))throw new L(`A note refers to an unknown state "${e.target}"`);return r}var ci=String.raw`\[\*\]|\[H\*?\]|"[^"]+"|[\p{L}\p{N}_][\p{L}\p{N}_.]*`,li=RegExp(`^(${ci})\\s*(-[-\\w\\[\\]#,.;:]*>|<-[-\\w\\[\\]#,.;:]*-?)\\s*(${ci})\\s*(?::\\s*(.*))?$`,`u`);function ui(e){return e===`[*]`?`[*]`:/^\[H\*?\]$/.test(e)?`H`:e.replace(/^"|"$/g,``).replace(/[^\p{L}\p{N}_.]/gu,`_`)}function di(e){let t=new jt(`stateDiagram-v2`),n=e.statements;for(let e=0;e<n.length;e++){let r=n[e],i=/^state\s/i.test(r.text)?Mt(r.text):r.text,a;if(a=li.exec(i)){let[e,n]=Nt(a[2]).startsWith(`<`)?[a[3],a[1]]:[a[1],a[3]];t.add(`${ui(e)} --> ${ui(n)}${a[4]?` : ${K(a[4].trim())}`:``}`,r)}else if(i===`||`||i===`--`)t.add(`--`,r);else if(a=/^state\s+(.+?)\s*<<\s*(\w+)\s*>>\s*(\{)?$/i.exec(i)){let e=a[2].toLowerCase(),n=ui(a[1]);t.add([`choice`,`fork`,`join`].includes(e)?`state ${n} <<${e}>>`:`state ${n}${a[3]?` {`:``}`,r)}else if(a=/^state\s+"([^"]+)"\s+as\s+(\S+?)\s*(\{)?$/i.exec(i))t.add(`state "${K(a[1])}" as ${ui(a[2])}${a[3]?` {`:``}`,r);else if(a=/^state\s+(\S+?)\s+as\s+"([^"]+)"\s*(\{)?$/i.exec(i))t.add(`state "${K(a[2])}" as ${ui(a[1])}${a[3]?` {`:``}`,r);else if(a=/^state\s+(\S+?)\s*:\s*(.*)$/i.exec(i))t.add(`state ${ui(a[1])} : ${K(a[2])}`,r);else if(a=/^state\s+(\S+?)\s*(\{)?$/i.exec(i))t.add(`state ${ui(a[1])}${a[2]?` {`:``}`,r);else if(i===`}`)t.add(`}`,r);else if(a=/^note\s+(left|right|top|bottom)\s+of\s+(\S+)\s*(?::\s*(.*))?$/i.exec(i)){let i=/right|bottom/i.test(a[1])?`right`:`left`,o=a[3];if(o!==void 0){t.add(`note ${i} of ${ui(a[2])} : ${K(o)}`,r);continue}t.add(`note ${i} of ${ui(a[2])}`,r);let s=e+1;for(;s<n.length&&!/^end\s*note$/i.test(n[s].text);s++)t.add(n[s].text,n[s]);if(s>=n.length)throw new L(`This note is never closed`,r.line,r.column,`Close it with "end note".`);t.add(`end note`,n[s]),e=s}else{if(/^note\b/i.test(i))throw new L(`Only notes on a state are supported here`,r.line,r.column,`note right of State : text`);(a=/^(\S+?)\s*:\s*(.*)$/.exec(i))?t.add(`${ui(a[1])} : ${K(a[2])}`,r):t.add(i,r)}}let r=t.parse(si);return e.direction===`LR`&&(r.direction=`LR`),e.title&&(r.accessibility.title=e.title),r}var fi={timing:`timing`,salt:`salt`,c4:`c4`,mindmap:`mindmap`,wbs:`mindmap`,gantt:`gantt`,sequence:`sequence`,activity:`flowchart`,description:`flowchart`,class:`class`,state:`state`,er:`er`},pi=/^((#\S+\s*)?:.*|start|stop|if\s*\(.*|while\s*\(.*|repeat\b.*|fork\b.*|split\b.*|partition\b.*|\|[^|]+\|.*)$/i,mi=/^\[\*\]|\[\*\]$|^state\s/i,hi=/^((abstract\s+)?class|abstract|enum|annotation|struct|record|exception|protocol|metaclass|object|map)\s|^interface\s+\S+.*\{$/i,gi=/<\|--|--\|>|<\|\.\.|\.\.\|>/,_i=/^(usecase|component|interface|node|cloud|package|rectangle|folder|frame|artifact|storage|card|file|agent|stack|hexagon|person|label|circle|port|portin|portout)\b|^\[[^\]]+\]|^\([^)]+\)|^:[^:]+:(\s|$)|^actor\/?\s|^"[^"]*"\s+as\s+\(|\(\s*[^)]+\)\s*(-|\.)|(-|\.)>?\s*\(\s*[^)]+\)/i,vi=/^((participant|activate|deactivate|autonumber|return|alt|opt|loop|par|break|critical|group)\b|ref\s+over\b|==|\.\.\.|\|\|)/i;function yi(e){return e.some(e=>pi.test(e.text)&&!/^:[^:]+:(\s|$)/.test(e.text))?`activity`:e.some(e=>vi.test(e.text))?`sequence`:e.some(e=>mi.test(e.text))?`state`:e.some(e=>hi.test(e.text))?`class`:Jr(e)?`er`:e.some(e=>_i.test(e.text))?`description`:e.some(e=>gi.test(e.text))?`class`:`sequence`}function bi(e){let t=et(e);if(t.frame===`mindmap`||t.frame===`wbs`)return{kind:t.frame,model:ar(t)};if(t.frame===`gantt`)return{kind:`gantt`,model:Jn(t)};if(t.frame===`salt`||t.frame===`uml`&&$n(t))return{kind:`salt`,model:er(t)};if(t.frame!==`uml`)throw new L(`PlantUML "@start${t.frame}" diagrams are not supported yet`,1,1,`Supported: @startuml sequence, use case, component, deployment, activity, class, object, state and ER diagrams.`);if(t.statements.length===0)throw new L(`The diagram is empty`,0,0);let n=Ft(t)?`c4`:tr(t)?`timing`:yi(t.statements);switch(n){case`c4`:return{kind:n,model:It(t)};case`timing`:return{kind:n,model:nr(t)};case`sequence`:return{kind:n,model:ri(t)};case`activity`:return{kind:n,model:ot(t)};case`description`:return{kind:n,model:Ur(t)};case`class`:return{kind:n,model:kr(t)};case`state`:return{kind:n,model:di(t)};case`er`:return{kind:n,model:Yr(t)};default:throw new L(`"${n}" diagrams start with their own @start line or keyword`,1,1)}}var xi={rectangle:`rect`,square:`rect`,page:`file`,parallelogram:`parallelogram`,document:`file`,cylinder:`cylinder`,queue:`queue`,package:`folder`,step:`asymmetric`,callout:`note`,stored_data:`storage`,person:`actor`,diamond:`rhombus`,oval:`usecase`,circle:`circle`,hexagon:`hexagon`,cloud:`cloud`,text:`text`,code:`rect`,class:`rect`,sql_table:`rect`,image:`rect`},Si={down:`TB`,up:`BT`,right:`LR`,left:`RL`},Ci={triangle:`triangle`,arrow:`arrow`,diamond:`diamond-open`,"filled-diamond":`diamond`,circle:`circle`,"filled-circle":`circle`,box:`arrow`,"filled-box":`arrow`,"cf-one":`arrow`,"cf-many":`open-arrow`,"cf-one-required":`arrow`,"cf-many-required":`open-arrow`,cross:`cross`},wi=500,Ti=`›`;function Ei(e){let t=0,n=1,r=1,i=()=>{e[t]===`
24
24
  `?(n++,r=1):r++,t++},a=o=>{let s=[],c=``,l={line:n,column:r},u=e=>{let t=c.trim();(t||e)&&s.push({text:t,block:e,...l}),c=``};for(;t<e.length;){let d=e[t];if(d===`#`&&(c.trim()===``||/\s$/.test(c)))for(;t<e.length&&e[t]!==`
25
- `;)i();else if(d===`"`||d===`'`){let n=d;for(c+=d,i();t<e.length&&e[t]!==n;)e[t]===`\\`&&(c+=e[t],i()),c+=e[t],i();c+=n,i()}else if(d===`|`&&/:\s*$/.test(c)){let a=/^(\|+)(\w*)/.exec(e.slice(t)),o=a[1],s=t+a[0].length,l=e.indexOf(o,s);if(l<0)throw new I(`A block string is never closed`,n,r,`Close it with "${o}".`);let u=e.slice(s,l).split(`
26
- `).map(e=>e.replace(/^\s*#+\s*/,``).replace(/[*_`]/g,``).trim()).filter(Boolean).join(`<br>`);for(c+=JSON.stringify(u);t<l+o.length;)i()}else if(d===`{`)i(),u(a(!0)),l={line:n,column:r};else{if(d===`}`){if(!o)throw new I(`"}" without a "{"`,n,r);return u(),i(),s}d===`
27
- `||d===`;`?(u(),i(),l={line:n,column:r}):(c===``&&(l={line:n,column:r}),c+=d,i())}}if(o)throw new I(`A "{" is never closed`,n,r,`Close it with "}".`);return u(),s};return a(!1)}function Oi(e){let t=[],n=``,r=null;for(let i of e.trim())r?i===r?r=null:n+=i:i===`"`||i===`'`?r=i:i===`.`?(t.push(n.trim()),n=``):n+=i;return t.push(n.trim()),t}function ki(e){let t=e.trim();if(/^".*"$/.test(t))try{return JSON.parse(t)}catch{return t.slice(1,-1)}return/^'.*'$/.test(t)?t.slice(1,-1):t}function Ai(e){let t=[],n=[],r=``,i=null,a;for(let o=0;o<e.length;o++){let s=e[o];if(i){s===i&&(i=null),r+=s;continue}if(s===`"`||s===`'`){i=s,r+=s;continue}let c=/^(<->|<-|->|--)/.exec(e.slice(o));if(c)t.push(r),n.push(c[1]),r=``,o+=c[1].length-1;else{if(s===`:`&&n.length>0){a=e.slice(o+1);break}r+=s}}return t.push(r),n.length===0?null:{ends:t.map(e=>e.trim()),arrows:n,label:a===void 0?void 0:ki(a)}}var ji=class{constructor(){this.chart={type:`flowchart`,direction:`TB`,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},this.shapes=new Map,this.edges=[]}run(e){this.block(e,[]);let t=[...this.shapes.keys()],n=e=>e.includes(Ei)?e.slice(0,e.lastIndexOf(Ei)):void 0,r=new Set(t.map(n).filter(e=>e!==void 0));if(t.length>Ti)throw Te(`shapes`,t.length,Ti);for(let e of t){let t=this.shapes.get(e),i=e.split(Ei).pop(),a=t.style.length>0?U(t.style.join(`,`),t.line,t.column):void 0;r.has(e)?this.chart.subgraphs.set(e,{id:e,title:t.label??i,markdown:!1,parent:n(e),direction:t.direction,classes:[],style:a,kind:t.shape===`cloud`||t.shape===`folder`?t.shape:`rect`}):this.chart.nodes.set(e,{id:e,text:t.label??i,markdown:!1,shape:t.shape??`rect`,classes:[],subgraph:n(e),style:a})}for(let e of this.edges){let[t,n]=e.arrow===`<-`?[e.to,e.from]:[e.from,e.to],r=e.attrs.get(`style.stroke-dash`),i=Number(e.attrs.get(`style.opacity`)??1)===0?`invisible`:r&&Number(r)>0?`dotted`:Number(e.attrs.get(`style.stroke-width`)??2)>=4?`thick`:`normal`,a=(t,n)=>wi[e.attrs.get(`${t}.shape`)??``]??n,o=e.arrow===`<->`,s=e.attrs.get(`style.stroke`);this.chart.edges.push({from:t,to:n,stroke:i,start:o?a(`source-arrowhead`,`arrow`):`none`,end:e.arrow===`--`?`none`:a(`target-arrowhead`,`arrow`),length:1,text:e.label??e.attrs.get(`label`),markdown:!1,style:s?U(`stroke:${s}`,0,0):void 0})}return this.chart}id(e,t,n){let r=[...e,...t];for(let e of r)if(e===``)throw new I(`An empty name`,n.line,n.column);for(let e=1;e<=r.length;e++){let t=r.slice(0,e).join(Ei);this.shapes.has(t)||this.shapes.set(t,{style:[],line:n.line,column:n.column})}return r.join(Ei)}block(e,t){for(let n of e){if(/^(\.\.\.@|@)|:\s*(\.\.\.)?@|^vars\s*:|^classes\s*:|^imports?\s*:|\*|^\(/.test(n.text))throw new I(`"${n.text}" is not supported (imports, variables, classes, globs, edge references)`,n.line,n.column);let e=Ai(n.text);if(e){let r=e.ends.map(e=>{if(/^\(.*\)/.test(e))throw new I(`Edge references ("(a -> b)[0]") are not supported`,n.line,n.column);return this.id(t,Oi(e),n)}),i=new Map;for(let e of n.block??[]){let t=/^([^:]+):\s*(.*)$/.exec(e.text);t&&i.set(t[1].trim(),ki(t[2]))}for(let t=0;t<e.arrows.length;t++)this.edges.push({from:r[t],to:r[t+1],arrow:e.arrows[t],label:t===e.arrows.length-1?e.label:void 0,attrs:i});continue}let r=/^((?:"[^"]*"|'[^']*'|[^:])+?)\s*(?::\s*(.*))?$/.exec(n.text);if(!r)throw new I(`"${n.text}" is not a D2 statement`,n.line,n.column);let i=Oi(r[1]),a=r[2];if(i.length===1&&i[0]===`direction`&&a!==void 0){let e=Ci[ki(a).toLowerCase()];if(!e)throw new I(`"${a}" is not a direction`,n.line,n.column,`up, down, left, right`);t.length===0?this.chart.direction=e:this.shapes.get(t.join(Ei)).direction=e;continue}let o=i.findIndex(e=>[`shape`,`label`,`style`,`icon`,`tooltip`,`link`,`near`,`width`,`height`,`constraint`,`source-arrowhead`,`target-arrowhead`,`tooltip`].includes(e));if(o>=0){if(o===0&&t.length===0)throw new I(`"${i.join(`.`)}" needs a shape to belong to`,n.line,n.column);let e=o===0?t.join(Ei):this.id(t,i.slice(0,o),n);this.attribute(e,i.slice(o).join(`.`),a===void 0?``:ki(a),n);for(let t of n.block??[])this.blockAttr(e,i.slice(o).join(`.`),t);continue}let s=this.id(t,i,n);a!==void 0&&a.trim()!==``&&(this.shapes.get(s).label=ki(a)),n.block&&this.block(n.block,s.split(Ei))}}blockAttr(e,t,n){let r=/^([^:]+):\s*(.*)$/.exec(n.text);r&&this.attribute(e,`${t}.${r[1].trim()}`,ki(r[2]),n)}attribute(e,t,n,r){let i=this.shapes.get(e),a=e=>/^#[0-9a-fA-F]{3,8}$|^[a-zA-Z]+$/.test(e)?e:void 0;switch(t){case`shape`:{let e=n.toLowerCase();if(!Si[e])throw new I(`"${n}" is not a D2 shape`,r.line,r.column,Object.keys(Si).join(`, `));i.shape=Si[e];return}case`label`:i.label=n;return;case`style.fill`:a(n)&&i.style.push(`fill:${n}`);return;case`style.stroke`:a(n)&&i.style.push(`stroke:${n}`);return;case`style.font-color`:a(n)&&i.style.push(`color:${n}`);return;case`style.stroke-dash`:Number(n)>0&&i.style.push(`stroke-dasharray:5 4`);return;case`style.stroke-width`:Number(n)>0&&i.style.push(`stroke-width:${Math.min(10,Number(n))}px`);return;default:return}}};function Mi(e){let t=e.split(/\r?\n/).map(e=>e.trim()).find(e=>e!==``&&!e.startsWith(`#`));return t?/^(direction\s*:|[\w".-]+\s*(->|<-|<->|--)\s*[\w".-]|[\w".-]+\s*:\s*[^{]*\{?\s*$|[\w".-]+\s*\{\s*$)/.test(t):!1}function Ni(e){let t=Di(e);if(t.length===0)throw new I(`The diagram is empty`,0,0);return new ji().run(t)}function Pi(e,t={}){let n=[],r=!1;return e.replace(/\r\n?/g,`
25
+ `;)i();else if(d===`"`||d===`'`){let n=d;for(c+=d,i();t<e.length&&e[t]!==n;)e[t]===`\\`&&(c+=e[t],i()),c+=e[t],i();c+=n,i()}else if(d===`|`&&/:\s*$/.test(c)){let a=/^(\|+)(\w*)/.exec(e.slice(t)),o=a[1],s=t+a[0].length,l=e.indexOf(o,s);if(l<0)throw new L(`A block string is never closed`,n,r,`Close it with "${o}".`);let u=e.slice(s,l).split(`
26
+ `).map(e=>e.replace(/^\s*#+\s*/,``).replace(/[*_`]/g,``).trim()).filter(Boolean).join(`<br>`);for(c+=JSON.stringify(u);t<l+o.length;)i()}else if(d===`{`)i(),u(a(!0)),l={line:n,column:r};else{if(d===`}`){if(!o)throw new L(`"}" without a "{"`,n,r);return u(),i(),s}d===`
27
+ `||d===`;`?(u(),i(),l={line:n,column:r}):(c===``&&(l={line:n,column:r}),c+=d,i())}}if(o)throw new L(`A "{" is never closed`,n,r,`Close it with "}".`);return u(),s};return a(!1)}function Di(e){let t=[],n=``,r=null;for(let i of e.trim())r?i===r?r=null:n+=i:i===`"`||i===`'`?r=i:i===`.`?(t.push(n.trim()),n=``):n+=i;return t.push(n.trim()),t}function Oi(e){let t=e.trim();if(/^".*"$/.test(t))try{return JSON.parse(t)}catch{return t.slice(1,-1)}return/^'.*'$/.test(t)?t.slice(1,-1):t}function ki(e){let t=[],n=[],r=``,i=null,a;for(let o=0;o<e.length;o++){let s=e[o];if(i){s===i&&(i=null),r+=s;continue}if(s===`"`||s===`'`){i=s,r+=s;continue}let c=/^(<->|<-|->|--)/.exec(e.slice(o));if(c)t.push(r),n.push(c[1]),r=``,o+=c[1].length-1;else{if(s===`:`&&n.length>0){a=e.slice(o+1);break}r+=s}}return t.push(r),n.length===0?null:{ends:t.map(e=>e.trim()),arrows:n,label:a===void 0?void 0:Oi(a)}}var Ai=class{constructor(){this.chart={type:`flowchart`,direction:`TB`,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},this.shapes=new Map,this.edges=[]}run(e){this.block(e,[]);let t=[...this.shapes.keys()],n=e=>e.includes(Ti)?e.slice(0,e.lastIndexOf(Ti)):void 0,r=new Set(t.map(n).filter(e=>e!==void 0));if(t.length>wi)throw we(`shapes`,t.length,wi);for(let e of t){let t=this.shapes.get(e),i=e.split(Ti).pop(),a=t.style.length>0?W(t.style.join(`,`),t.line,t.column):void 0;r.has(e)?this.chart.subgraphs.set(e,{id:e,title:t.label??i,markdown:!1,parent:n(e),direction:t.direction,classes:[],style:a,kind:t.shape===`cloud`||t.shape===`folder`?t.shape:`rect`}):this.chart.nodes.set(e,{id:e,text:t.label??i,markdown:!1,shape:t.shape??`rect`,classes:[],subgraph:n(e),style:a})}for(let e of this.edges){let[t,n]=e.arrow===`<-`?[e.to,e.from]:[e.from,e.to],r=e.attrs.get(`style.stroke-dash`),i=Number(e.attrs.get(`style.opacity`)??1)===0?`invisible`:r&&Number(r)>0?`dotted`:Number(e.attrs.get(`style.stroke-width`)??2)>=4?`thick`:`normal`,a=(t,n)=>Ci[e.attrs.get(`${t}.shape`)??``]??n,o=e.arrow===`<->`,s=e.attrs.get(`style.stroke`);this.chart.edges.push({from:t,to:n,stroke:i,start:o?a(`source-arrowhead`,`arrow`):`none`,end:e.arrow===`--`?`none`:a(`target-arrowhead`,`arrow`),length:1,text:e.label??e.attrs.get(`label`),markdown:!1,style:s?W(`stroke:${s}`,0,0):void 0})}return this.chart}id(e,t,n){let r=[...e,...t];for(let e of r)if(e===``)throw new L(`An empty name`,n.line,n.column);for(let e=1;e<=r.length;e++){let t=r.slice(0,e).join(Ti);this.shapes.has(t)||this.shapes.set(t,{style:[],line:n.line,column:n.column})}return r.join(Ti)}block(e,t){for(let n of e){if(/^(\.\.\.@|@)|:\s*(\.\.\.)?@|^vars\s*:|^classes\s*:|^imports?\s*:|\*|^\(/.test(n.text))throw new L(`"${n.text}" is not supported (imports, variables, classes, globs, edge references)`,n.line,n.column);let e=ki(n.text);if(e){let r=e.ends.map(e=>{if(/^\(.*\)/.test(e))throw new L(`Edge references ("(a -> b)[0]") are not supported`,n.line,n.column);return this.id(t,Di(e),n)}),i=new Map;for(let e of n.block??[]){let t=/^([^:]+):\s*(.*)$/.exec(e.text);t&&i.set(t[1].trim(),Oi(t[2]))}for(let t=0;t<e.arrows.length;t++)this.edges.push({from:r[t],to:r[t+1],arrow:e.arrows[t],label:t===e.arrows.length-1?e.label:void 0,attrs:i});continue}let r=/^((?:"[^"]*"|'[^']*'|[^:])+?)\s*(?::\s*(.*))?$/.exec(n.text);if(!r)throw new L(`"${n.text}" is not a D2 statement`,n.line,n.column);let i=Di(r[1]),a=r[2];if(i.length===1&&i[0]===`direction`&&a!==void 0){let e=Si[Oi(a).toLowerCase()];if(!e)throw new L(`"${a}" is not a direction`,n.line,n.column,`up, down, left, right`);t.length===0?this.chart.direction=e:this.shapes.get(t.join(Ti)).direction=e;continue}let o=i.findIndex(e=>[`shape`,`label`,`style`,`icon`,`tooltip`,`link`,`near`,`width`,`height`,`constraint`,`source-arrowhead`,`target-arrowhead`,`tooltip`].includes(e));if(o>=0){if(o===0&&t.length===0)throw new L(`"${i.join(`.`)}" needs a shape to belong to`,n.line,n.column);let e=o===0?t.join(Ti):this.id(t,i.slice(0,o),n);this.attribute(e,i.slice(o).join(`.`),a===void 0?``:Oi(a),n);for(let t of n.block??[])this.blockAttr(e,i.slice(o).join(`.`),t);continue}let s=this.id(t,i,n);a!==void 0&&a.trim()!==``&&(this.shapes.get(s).label=Oi(a)),n.block&&this.block(n.block,s.split(Ti))}}blockAttr(e,t,n){let r=/^([^:]+):\s*(.*)$/.exec(n.text);r&&this.attribute(e,`${t}.${r[1].trim()}`,Oi(r[2]),n)}attribute(e,t,n,r){let i=this.shapes.get(e),a=e=>/^#[0-9a-fA-F]{3,8}$|^[a-zA-Z]+$/.test(e)?e:void 0;switch(t){case`shape`:{let e=n.toLowerCase();if(!xi[e])throw new L(`"${n}" is not a D2 shape`,r.line,r.column,Object.keys(xi).join(`, `));i.shape=xi[e];return}case`label`:i.label=n;return;case`style.fill`:a(n)&&i.style.push(`fill:${n}`);return;case`style.stroke`:a(n)&&i.style.push(`stroke:${n}`);return;case`style.font-color`:a(n)&&i.style.push(`color:${n}`);return;case`style.stroke-dash`:Number(n)>0&&i.style.push(`stroke-dasharray:5 4`);return;case`style.stroke-width`:Number(n)>0&&i.style.push(`stroke-width:${Math.min(10,Number(n))}px`);return;default:return}}};function ji(e){let t=e.split(/\r?\n/).map(e=>e.trim()).find(e=>e!==``&&!e.startsWith(`#`));return t?/^(direction\s*:|[\w".-]+\s*(->|<-|<->|--)\s*[\w".-]|[\w".-]+\s*:\s*[^{]*\{?\s*$|[\w".-]+\s*\{\s*$)/.test(t):!1}function Mi(e){let t=Ei(e);if(t.length===0)throw new L(`The diagram is empty`,0,0);return new Ai().run(t)}function Ni(e,t={}){let n=[],r=!1;return e.replace(/\r\n?/g,`
28
28
  `).split(`
29
- `).forEach((e,i)=>{let a=``,o=null;for(let n=0;n<e.length;n++){let i=e[n];if(r)i===`*`&&e[n+1]===`/`&&(r=!1,n++),a+=` `;else if(o){if(i===`\\`){a+=i+(e[n+1]??``),n++;continue}i===o&&(o=null),a+=i}else if(i===`"`||i===`'`||i==="`")o=i,a+=i;else{if(i===`/`&&e[n+1]===`/`||t.hash&&i===`#`)break;i===`/`&&e[n+1]===`*`?(r=!0,n++,a+=` `):a+=i}}let s=a.trim();s&&n.push({text:s,line:i+1,column:a.length-a.trimStart().length+1})}),n}function Fi(e){let t=e.trim();return t.length>=2&&/^["'`]/.test(t)&&t.endsWith(t[0])?t.slice(1,-1).replace(/\\(.)/g,`$1`):t}function Ii(e,t){let n=[],r=0,i=null,a=``;for(let o=0;o<e.length;o++){let s=e[o];i?(s===i&&(i=null),a+=s):(s===`"`||s===`'`||s==="`"?i=s:`[({`.includes(s)?r++:`)]}`.includes(s)&&r--,r===0&&e.startsWith(t,o)?(n.push(a),a=``,o+=t.length-1):a+=s)}return n.push(a),n.map(e=>e.trim()).filter(e=>e!==``)}function Li(e){let t=Pi(e)[0]?.text??``;return/^(Table|Ref|Enum|Project|TableGroup|TablePartial)\b/i.test(t)}var Ri=String.raw`(?:"[^"]+"|[\w$]+)(?:\.(?:"[^"]+"|[\w$]+))?`;function zi(e){return e.split(`.`).map(Fi).join(`.`)}function Bi(e){let t=new Map,n=/\s*\[([^\]]*)\]\s*$/.exec(e);if(!n||e.trimEnd().endsWith(`]`)===!1)return{rest:e,set:t};for(let e of Ii(n[1],`,`)){let n=/^([\w\s]+?)\s*:\s*([\s\S]+)$/.exec(e);n?t.set(n[1].trim().toLowerCase(),Fi(n[2].trim())):t.set(e.trim().toLowerCase(),``)}return{rest:e.slice(0,n.index).trim(),set:t}}function Vi(e,t){let n=e.trim(),r=/^(.+)\.\(([^)]*)\)$/.exec(n);if(r)return{table:zi(r[1]),columns:r[2].split(`,`).map(e=>Fi(e.trim()))};let i=n.split(`.`);if(i.length<2)throw new I(`"${n}" is not a column`,t.line,t.column,`table.column`);return{table:zi(i.slice(0,-1).join(`.`)),columns:[Fi(i[i.length-1])]}}var Hi={">":[`zero-many`,`one`],"<":[`one`,`zero-many`],"-":[`one`,`one`],"<>":[`zero-many`,`zero-many`]};function Ui(e){let t=Pi(e),n={type:`er`,direction:`LR`,entities:new Map,relationships:[],classDefs:new Map,accessibility:{}},r=new Map,i=[],a=e=>r.get(e)??e,o=(e,t)=>{let n=/^(.+?)\s*(<>|>|<|-)\s*(.+?)(?:\s*\[[^\]]*\])?$/.exec(e.trim());if(!n)throw new I(`"${e.trim()}" is not a reference`,t.line,t.column,`Ref: posts.user_id > users.id`);i.push({from:Vi(n[1],t),to:Vi(n[3],t),op:n[2],s:t})};for(let e=0;e<t.length;e++){let a=t[e],s,c=()=>{let n=[],r=1,i=e+1;for(;i<t.length;i++){let e=t[i].text;if(r+=(e.match(/\{/g)??[]).length-(e.match(/\}/g)??[]).length,r<=0)break;n.push(t[i])}if(i>=t.length)throw new I(`A "{" is never closed`,a.line,a.column,`Close it with "}".`);return{inner:n,end:i}};if(s=RegExp(`^Table\\s+(${Ri})(?:\\s+as\\s+(\\w+))?\\s*(\\[[^\\]]*\\])?\\s*\\{$`,`i`).exec(a.text)){let t=zi(s[1]);s[2]&&r.set(s[2],t);let a={id:t,label:t,attributes:[],classes:[]};n.entities.set(t,a);let{inner:o,end:l}=c(),u=0;for(let e of o){if(u>0){u+=(e.text.match(/\{/g)??[]).length-(e.text.match(/\}/g)??[]).length;continue}if(/^indexes\s*\{/i.test(e.text)){u=1;continue}if(/^note\s*[:{]/i.test(e.text))continue;let{rest:n,set:r}=Bi(e.text),o=/^("[^"]+"|[\w$]+)\s+(.+)$/.exec(n);if(!o)throw new I(`"${e.text}" is not a column`,e.line,e.column,`name type [pk, not null]`);let s=[];(r.has(`pk`)||r.has(`primary key`))&&s.push(`PK`),r.has(`ref`)&&s.push(`FK`),r.has(`unique`)&&s.push(`UK`);let c=[r.has(`not null`)?`not null`:``,r.has(`increment`)?`increment`:``,r.get(`note`)??``].filter(Boolean);a.attributes.push({type:Fi(o[2]),name:Fi(o[1]),keys:s,comment:c.length>0?c.join(`, `):void 0});let l=r.get(`ref`);if(l){let n=/^(<>|>|<|-)\s*(.+)$/.exec(l.trim());if(!n)throw new I(`"${l}" is not a reference`,e.line,e.column,`ref: > users.id`);i.push({from:{table:t,columns:[Fi(o[1])]},to:Vi(n[2],e),op:n[1],s:e})}}e=l}else if(s=RegExp(`^Enum\\s+(${Ri})\\s*\\{$`,`i`).exec(a.text)){let t=zi(s[1]),{inner:r,end:i}=c();n.entities.set(t,{id:t,label:`«enum» ${t}`,attributes:r.map(e=>{let{rest:t,set:n}=Bi(e.text);return{type:``,name:Fi(t),keys:[],comment:n.get(`note`)}}),classes:[]}),e=i}else if(s=/^Ref(?:\s+[\w"]+)?\s*:\s*(.+)$/i.exec(a.text))o(s[1],a);else if(/^Ref(?:\s+[\w"]+)?\s*\{$/i.test(a.text)){let{inner:t,end:n}=c();for(let e of t)o(e.text,e);e=n}else if(/^(Project|TableGroup|TablePartial|Note|Records)\b[^{]*\{$/i.test(a.text))e=c().end;else if(!/^Note\s*:/i.test(a.text))throw new I(`"${a.text}" is not a DBML statement`,a.line,a.column,`Table name { … }, Ref: a.b > c.d, Enum name { … }`)}for(let e of i){let t=a(e.from.table),r=a(e.to.table);for(let i of[t,r])if(!n.entities.has(i))throw new I(`"${i}" is not a table`,e.s.line,e.s.column);for(let r of e.from.columns){let e=n.entities.get(t).attributes.find(e=>e.name===r);e&&!e.keys.includes(`FK`)&&e.keys.push(`FK`)}let[i,o]=Hi[e.op];n.relationships.push({from:t,to:r,fromCardinality:i,toCardinality:o,identifying:!0,label:`${e.from.columns.join(`, `)} → ${e.to.columns.join(`, `)}`})}if(n.entities.size===0)throw new I(`The schema has no tables`,0,0,`Table users { id int [pk] }`);return n}function Wi(e){let t=e.replace(/^\s*(\/\/[^\n]*\n|#[^\n]*\n|\/\*[\s\S]*?\*\/)*/g,``).trimStart();return/^(strict\s+)?digraph\b/i.test(t)||/^(strict\s+)?graph\s*("[^"]*"|[\w.]+)?\s*\{/i.test(t)}function Gi(e){let t=[],n=0,r=1,i=1,a=t=>{for(let a=0;a<t;a++)e[n]===`
29
+ `).forEach((e,i)=>{let a=``,o=null;for(let n=0;n<e.length;n++){let i=e[n];if(r)i===`*`&&e[n+1]===`/`&&(r=!1,n++),a+=` `;else if(o){if(i===`\\`){a+=i+(e[n+1]??``),n++;continue}i===o&&(o=null),a+=i}else if(i===`"`||i===`'`||i==="`")o=i,a+=i;else{if(i===`/`&&e[n+1]===`/`||t.hash&&i===`#`)break;i===`/`&&e[n+1]===`*`?(r=!0,n++,a+=` `):a+=i}}let s=a.trim();s&&n.push({text:s,line:i+1,column:a.length-a.trimStart().length+1})}),n}function Pi(e){let t=e.trim();return t.length>=2&&/^["'`]/.test(t)&&t.endsWith(t[0])?t.slice(1,-1).replace(/\\(.)/g,`$1`):t}function Fi(e,t){let n=[],r=0,i=null,a=``;for(let o=0;o<e.length;o++){let s=e[o];i?(s===i&&(i=null),a+=s):(s===`"`||s===`'`||s==="`"?i=s:`[({`.includes(s)?r++:`)]}`.includes(s)&&r--,r===0&&e.startsWith(t,o)?(n.push(a),a=``,o+=t.length-1):a+=s)}return n.push(a),n.map(e=>e.trim()).filter(e=>e!==``)}function Ii(e){let t=Ni(e)[0]?.text??``;return/^(Table|Ref|Enum|Project|TableGroup|TablePartial)\b/i.test(t)}var Li=String.raw`(?:"[^"]+"|[\w$]+)(?:\.(?:"[^"]+"|[\w$]+))?`;function Ri(e){return e.split(`.`).map(Pi).join(`.`)}function zi(e){let t=new Map,n=/\s*\[([^\]]*)\]\s*$/.exec(e);if(!n||e.trimEnd().endsWith(`]`)===!1)return{rest:e,set:t};for(let e of Fi(n[1],`,`)){let n=/^([\w\s]+?)\s*:\s*([\s\S]+)$/.exec(e);n?t.set(n[1].trim().toLowerCase(),Pi(n[2].trim())):t.set(e.trim().toLowerCase(),``)}return{rest:e.slice(0,n.index).trim(),set:t}}function Bi(e,t){let n=e.trim(),r=/^(.+)\.\(([^)]*)\)$/.exec(n);if(r)return{table:Ri(r[1]),columns:r[2].split(`,`).map(e=>Pi(e.trim()))};let i=n.split(`.`);if(i.length<2)throw new L(`"${n}" is not a column`,t.line,t.column,`table.column`);return{table:Ri(i.slice(0,-1).join(`.`)),columns:[Pi(i[i.length-1])]}}var Vi={">":[`zero-many`,`one`],"<":[`one`,`zero-many`],"-":[`one`,`one`],"<>":[`zero-many`,`zero-many`]};function Hi(e){let t=Ni(e),n={type:`er`,direction:`LR`,entities:new Map,relationships:[],classDefs:new Map,accessibility:{}},r=new Map,i=[],a=e=>r.get(e)??e,o=(e,t)=>{let n=/^(.+?)\s*(<>|>|<|-)\s*(.+?)(?:\s*\[[^\]]*\])?$/.exec(e.trim());if(!n)throw new L(`"${e.trim()}" is not a reference`,t.line,t.column,`Ref: posts.user_id > users.id`);i.push({from:Bi(n[1],t),to:Bi(n[3],t),op:n[2],s:t})};for(let e=0;e<t.length;e++){let a=t[e],s,c=()=>{let n=[],r=1,i=e+1;for(;i<t.length;i++){let e=t[i].text;if(r+=(e.match(/\{/g)??[]).length-(e.match(/\}/g)??[]).length,r<=0)break;n.push(t[i])}if(i>=t.length)throw new L(`A "{" is never closed`,a.line,a.column,`Close it with "}".`);return{inner:n,end:i}};if(s=RegExp(`^Table\\s+(${Li})(?:\\s+as\\s+(\\w+))?\\s*(\\[[^\\]]*\\])?\\s*\\{$`,`i`).exec(a.text)){let t=Ri(s[1]);s[2]&&r.set(s[2],t);let a={id:t,label:t,attributes:[],classes:[]};n.entities.set(t,a);let{inner:o,end:l}=c(),u=0;for(let e of o){if(u>0){u+=(e.text.match(/\{/g)??[]).length-(e.text.match(/\}/g)??[]).length;continue}if(/^indexes\s*\{/i.test(e.text)){u=1;continue}if(/^note\s*[:{]/i.test(e.text))continue;let{rest:n,set:r}=zi(e.text),o=/^("[^"]+"|[\w$]+)\s+(.+)$/.exec(n);if(!o)throw new L(`"${e.text}" is not a column`,e.line,e.column,`name type [pk, not null]`);let s=[];(r.has(`pk`)||r.has(`primary key`))&&s.push(`PK`),r.has(`ref`)&&s.push(`FK`),r.has(`unique`)&&s.push(`UK`);let c=[r.has(`not null`)?`not null`:``,r.has(`increment`)?`increment`:``,r.get(`note`)??``].filter(Boolean);a.attributes.push({type:Pi(o[2]),name:Pi(o[1]),keys:s,comment:c.length>0?c.join(`, `):void 0});let l=r.get(`ref`);if(l){let n=/^(<>|>|<|-)\s*(.+)$/.exec(l.trim());if(!n)throw new L(`"${l}" is not a reference`,e.line,e.column,`ref: > users.id`);i.push({from:{table:t,columns:[Pi(o[1])]},to:Bi(n[2],e),op:n[1],s:e})}}e=l}else if(s=RegExp(`^Enum\\s+(${Li})\\s*\\{$`,`i`).exec(a.text)){let t=Ri(s[1]),{inner:r,end:i}=c();n.entities.set(t,{id:t,label:`«enum» ${t}`,attributes:r.map(e=>{let{rest:t,set:n}=zi(e.text);return{type:``,name:Pi(t),keys:[],comment:n.get(`note`)}}),classes:[]}),e=i}else if(s=/^Ref(?:\s+[\w"]+)?\s*:\s*(.+)$/i.exec(a.text))o(s[1],a);else if(/^Ref(?:\s+[\w"]+)?\s*\{$/i.test(a.text)){let{inner:t,end:n}=c();for(let e of t)o(e.text,e);e=n}else if(/^(Project|TableGroup|TablePartial|Note|Records)\b[^{]*\{$/i.test(a.text))e=c().end;else if(!/^Note\s*:/i.test(a.text))throw new L(`"${a.text}" is not a DBML statement`,a.line,a.column,`Table name { … }, Ref: a.b > c.d, Enum name { … }`)}for(let e of i){let t=a(e.from.table),r=a(e.to.table);for(let i of[t,r])if(!n.entities.has(i))throw new L(`"${i}" is not a table`,e.s.line,e.s.column);for(let r of e.from.columns){let e=n.entities.get(t).attributes.find(e=>e.name===r);e&&!e.keys.includes(`FK`)&&e.keys.push(`FK`)}let[i,o]=Vi[e.op];n.relationships.push({from:t,to:r,fromCardinality:i,toCardinality:o,identifying:!0,label:`${e.from.columns.join(`, `)} → ${e.to.columns.join(`, `)}`})}if(n.entities.size===0)throw new L(`The schema has no tables`,0,0,`Table users { id int [pk] }`);return n}function Ui(e){let t=e.replace(/^\s*(\/\/[^\n]*\n|#[^\n]*\n|\/\*[\s\S]*?\*\/)*/g,``).trimStart();return/^(strict\s+)?digraph\b/i.test(t)||/^(strict\s+)?graph\s*("[^"]*"|[\w.]+)?\s*\{/i.test(t)}function Wi(e){let t=[],n=0,r=1,i=1,a=t=>{for(let a=0;a<t;a++)e[n]===`
30
30
  `?(r++,i=1):i++,n++};for(;n<e.length;){let o=e[n];if(/\s/.test(o)){a(1);continue}if(e.startsWith(`//`,n)||o===`#`&&i===1){for(;n<e.length&&e[n]!==`
31
31
  `;)a(1);continue}if(e.startsWith(`/*`,n)){let t=e.indexOf(`*/`,n+2);a((t<0?e.length:t+2)-n);continue}let s={line:r,column:i};if(o===`"`){let r=n+1,i=``;for(;r<e.length&&e[r]!==`"`;)e[r]===`\\`&&e[r+1]===`"`?(i+=`"`,r+=2):e[r]===`\\`&&e[r+1]===`
32
- `?r+=2:(i+=e[r],r++);if(r>=e.length)throw new I(`A quoted string is never closed`,s.line,s.column);t.push({kind:`id`,value:i,quoted:!0,...s}),a(r+1-n);continue}if(o===`<`){let r=0,i=n;for(;i<e.length&&(e[i]===`<`?r++:e[i]===`>`&&r--,r!==0);i++);if(i>=e.length)throw new I(`An HTML label is never closed`,s.line,s.column);let o=e.slice(n+1,i).replace(/<br\s*\/?>/gi,`
33
- `).replace(/<[^>]*>/g,``).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&amp;/g,`&`);t.push({kind:`id`,value:o.trim(),quoted:!0,...s}),a(i+1-n);continue}if(e.startsWith(`->`,n)||e.startsWith(`--`,n)){t.push({kind:`punct`,value:e.slice(n,n+2),quoted:!1,...s}),a(2);continue}if(`{}[]=;,:`.includes(o)){t.push({kind:`punct`,value:o,quoted:!1,...s}),a(1);continue}let c=/^(-?(?:\.\d+|\d+(?:\.\d*)?)|[\p{L}_\u0080-￿][\p{L}\p{N}_\u0080-￿]*)/u.exec(e.slice(n));if(!c)throw new I(`Unexpected "${o}"`,s.line,s.column);t.push({kind:`id`,value:c[0],quoted:!1,...s}),a(c[0].length)}return t}var Ki={box:`rect`,rect:`rect`,rectangle:`rect`,square:`rect`,ellipse:`usecase`,oval:`usecase`,circle:`circle`,point:`start`,doublecircle:`doublecircle`,diamond:`rhombus`,hexagon:`hexagon`,parallelogram:`parallelogram`,trapezium:`trapezoid`,invtrapezium:`trapezoid-alt`,cylinder:`cylinder`,note:`note`,folder:`folder`,tab:`folder`,component:`component`,box3d:`node`,plaintext:`text`,plain:`text`,none:`text`,record:`rect`,mrecord:`round`,underline:`text`,cds:`asymmetric`},qi={normal:`arrow`,vee:`open-arrow`,open:`open-arrow`,empty:`triangle`,onormal:`triangle`,diamond:`diamond`,odiamond:`diamond-open`,ediamond:`diamond-open`,dot:`circle`,odot:`circle`,none:`none`,tee:`cross`,box:`arrow`,inv:`arrow`,crow:`open-arrow`},Ji=500,Yi=class{constructor(e){this.tokens=e,this.i=0,this.chart={type:`flowchart`,direction:`TB`,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},this.directed=!0}peek(e=0){return this.tokens[this.i+e]}error(e,t){let n=this.peek()??this.tokens[this.tokens.length-1];return new I(e,n?.line??0,n?.column??0,t)}is(e,t=0){let n=this.peek(t);return!!n&&n.kind===`punct`&&n.value===e}keyword(e,t=0){let n=this.peek(t);return!!n&&n.kind===`id`&&!n.quoted&&n.value.toLowerCase()===e}expect(e){if(!this.is(e))throw this.error(`"${e}" expected here`);this.i++}run(){if(this.keyword(`strict`)&&this.i++,this.keyword(`digraph`))this.directed=!0;else if(this.keyword(`graph`))this.directed=!1;else throw this.error(`A DOT graph starts with "graph" or "digraph"`);if(this.i++,this.peek()?.kind===`id`&&this.i++,this.expect(`{`),this.statements({node:new Map,edge:new Map},void 0),this.expect(`}`),this.i<this.tokens.length)throw this.error(`Text after the closing "}"`);return this.chart}statements(e,t,n){for(;this.peek()&&!this.is(`}`);){if(this.is(`;`)){this.i++;continue}if(this.peek()?.kind===`id`&&this.is(`=`,1)){let e=this.peek().value.toLowerCase(),n=this.peek(2)?.value??``;this.i+=3,this.graphAttr(e,n,t);continue}if(this.keyword(`graph`)||this.keyword(`node`)||this.keyword(`edge`)){let n=this.peek().value.toLowerCase();this.i++;let r=this.attrs();if(n===`node`)for(let[t,n]of r)e.node.set(t,n);else if(n===`edge`)for(let[t,n]of r)e.edge.set(t,n);else for(let[e,n]of r)this.graphAttr(e,n,t);continue}let r=this.operand(e,t,n);if(this.is(`->`)||this.is(`--`)){let i=[r];for(;this.is(`->`)||this.is(`--`);){if(this.is(`->`)!==this.directed)throw this.error(this.directed?`A digraph links with "->"`:`A graph links with "--"`);this.i++,i.push(this.operand(e,t,n))}let a=new Map([...e.edge,...this.attrs()]);for(let e=0;e+1<i.length;e++)for(let t of i[e])for(let n of i[e+1])this.edge(t,n,a);continue}let i=this.attrs();for(let e of r)this.nodeAttrs(e,i)}}operand(e,t,n){if(this.keyword(`subgraph`)||this.is(`{`)){let r;this.keyword(`subgraph`)&&(this.i++,this.peek()?.kind===`id`&&(r=this.peek().value),r!==void 0&&this.i++),this.expect(`{`);let i=!!r&&/^cluster/i.test(r),a=i?r:t;i&&!this.chart.subgraphs.has(r)&&this.chart.subgraphs.set(r,{id:r,title:``,markdown:!1,parent:t,classes:[]});let o=new Set;this.statements({node:new Map(e.node),edge:new Map(e.edge)},a,o),this.expect(`}`);for(let e of o)n?.add(e);return[...o]}let r=this.peek();if(!r||r.kind!==`id`)throw this.error(`A node name expected here`);for(this.i++;this.is(`:`)&&this.peek(1)?.kind===`id`;)this.i+=2;return this.node(r.value,e.node,t),n?.add(r.value),[r.value]}attrs(){let e=new Map;for(;this.is(`[`);){for(this.i++;!this.is(`]`);){let t=this.peek();if(!t||t.kind!==`id`)throw this.error(`An attribute name expected here`);this.i++;let n=`true`;if(this.is(`=`)){this.i++;let e=this.peek();if(!e||e.kind!==`id`)throw this.error(`An attribute value expected here`);n=e.value,this.i++}e.set(t.value.toLowerCase(),n),(this.is(`,`)||this.is(`;`))&&this.i++}this.i++}return e}node(e,t,n){if(!this.chart.nodes.has(e)){if(this.chart.nodes.size>=Ji)throw Te(`nodes`,this.chart.nodes.size+1,Ji);this.chart.nodes.set(e,{id:e,text:e,markdown:!1,shape:`usecase`,classes:[],subgraph:n}),this.nodeAttrs(e,t)}}nodeAttrs(e,t){let n=this.chart.nodes.get(e),r=t.get(`label`);r!==void 0&&r!==`\\N`&&(n.text=Xi(r));let i=t.get(`shape`)?.toLowerCase();i&&(n.shape=Ki[i]??`rect`);let a=(t.get(`style`)??``).toLowerCase().split(`,`).map(e=>e.trim());a.includes(`rounded`)&&n.shape===`rect`&&(n.shape=`round`),a.includes(`invis`)&&(n.shape=`text`);let o=[],s=t.get(`color`),c=t.get(`fillcolor`)??(a.includes(`filled`)?s:void 0),l=(e,t)=>{let n=t===void 0?void 0:Zi(t);n&&o.push(`${e}:${n}`)};l(`fill`,c),l(`stroke`,s),l(`color`,t.get(`fontcolor`)),a.includes(`dashed`)&&o.push(`stroke-dasharray:5 4`),a.includes(`dotted`)&&o.push(`stroke-dasharray:2 3`),o.length>0&&(n.style=U(o.join(`,`),0,0))}edge(e,t,n){let r=(n.get(`style`)??``).toLowerCase().split(`,`).map(e=>e.trim()),i=`normal`;r.includes(`invis`)?i=`invisible`:r.includes(`dashed`)||r.includes(`dotted`)?i=`dotted`:(r.includes(`bold`)||Number(n.get(`penwidth`)??1)>=2)&&(i=`thick`);let a=(n.get(`dir`)??(this.directed?`forward`:`none`)).toLowerCase(),o=qi[(n.get(`arrowhead`)??`normal`).toLowerCase()]??`arrow`,s=qi[(n.get(`arrowtail`)??`normal`).toLowerCase()]??`arrow`,c={from:e,to:t,stroke:i,start:a===`back`||a===`both`?s:`none`,end:a===`forward`||a===`both`?o:`none`,length:Math.max(1,Math.round(Number(n.get(`minlen`)??1))||1),text:n.get(`label`)??n.get(`xlabel`),markdown:!1},l=n.get(`color`)?Zi(n.get(`color`).split(`:`)[0]):void 0;l&&(c.style=U(`stroke:${l}`,0,0)),this.chart.edges.push(c)}graphAttr(e,t,n){if(n){let r=this.chart.subgraphs.get(n);if(!r)return;let i=Zi(t);e===`label`?r.title=Xi(t):(e===`bgcolor`||e===`fillcolor`)&&i?r.style=U(`fill:${i}`,0,0):(e===`color`||e===`pencolor`)&&i&&(r.style={...r.style??{shape:{},text:{}},shape:{...r.style?.shape??{},stroke:i}})}else if(e===`rankdir`){let e=t.toUpperCase();[`TB`,`LR`,`BT`,`RL`].includes(e)&&(this.chart.direction=e)}else e===`label`&&(this.chart.title=Xi(t))}};function Xi(e){let t=e;return/[{|}]/.test(t)&&/\|/.test(t)&&(t=t.replace(/[{}]/g,``).split(`|`).map(e=>e.replace(/<[^>]*>/g,``).trim()).join(`<br>`)),t.replace(/\\[nlr]/g,`<br>`).replace(/(<br>)+$/,``)}function Zi(e){let t=e.trim();return/^#[0-9a-fA-F]{3,8}$/.test(t)||/^[a-zA-Z]+$/.test(t)?t:void 0}function Qi(e){return new Yi(Gi(e)).run()}function $i(e){return/^workspace\b/i.test(Pi(e)[0]?.text??``)}function ea(e){return[...e.matchAll(/"((?:[^"\\]|\\.)*)"/g)].map(e=>e[1].replace(/\\(.)/g,`$1`))}var ta={person:`person`,softwaresystem:`system`,container:`container`,component:`component`};function na(e){let t=Pi(e),n=new Map,r=[],i=new Map,a=null,o=0,s=[],c=()=>[...s].reverse().find(e=>e.element)?.element,l=()=>[...s].reverse().find(e=>e.group!==void 0)?.group;for(let e of t){let t=e.text,u=t.endsWith(`{`),d=u?t.slice(0,-1).trim():t,f=s[s.length-1]?.what,p;if(t===`}`){if(!s.pop())throw new I(`"}" without a "{"`,e.line,e.column)}else{if(/^!(docs|adrs|include|constant|var|const|script|plugin|extend|ref)\b/i.test(t))throw new I(`"${t.split(/\s/)[0]}" is not supported`,e.line,e.column,`Write the model out in full.`);if(!/^!(identifiers|impliedrelationships|elements)\b/i.test(t)){if(f===`styles`||f===`style`||f===`skip`){if((p=/^element\s+"([^"]+)"$/i.exec(d))&&u)s.push({what:`style`,tag:p[1]});else if(u)s.push({what:`skip`});else if(f===`style`&&(p=/^shape\s+(\w+)$/i.exec(t))){let e=p[1].toLowerCase(),t=s[s.length-1].tag;e===`cylinder`?i.set(t,`db`):e===`pipe`?i.set(t,`queue`):/^person|robot$/.test(e)&&i.set(t,`person`)}}else if(f===`views`&&u){p=/^(systemLandscape|systemContext|container|component|deployment|dynamic|filtered|custom|image)\b\s*(\S+)?/i.exec(d);let t=p?.[1]?.toLowerCase();if(/^styles$/i.test(d)){s.push({what:`styles`});continue}!a&&t&&[`systemlandscape`,`systemcontext`,`container`,`component`].includes(t)?(a={kind:t,scope:p[2]&&!p[2].startsWith(`"`)?p[2]:void 0,s:e},s.push({what:`view`})):s.push({what:`skip`})}else if(f!==`views`&&f!==`workspace`||u){if(f===`view`)(p=/^autolayout(?:\s+(lr|rl|tb|bt))?(?:\s|$)/i.exec(t))&&a&&(a.direction=/lr|rl/i.test(p[1]??``)?`LR`:`TB`),u&&s.push({what:`skip`});else if(/^workspace\b/i.test(d)&&u)s.push({what:`workspace`});else if(/^model$/i.test(d)&&u)s.push({what:`model`});else if(/^views$/i.test(d)&&u)s.push({what:`views`});else if(/^(configuration|properties|perspectives|branding|terminology|users|deploymentEnvironment|deploymentNode|infrastructureNode|softwareSystemInstance|containerInstance|healthCheck|animation)\b/i.test(d))u&&s.push({what:`skip`});else if(f===`skip`)u&&s.push({what:`skip`});else if((p=/^group\s+"([^"]+)"$/i.exec(d))&&u)s.push({what:`group`,group:p[1]});else if(p=/^(?:([\w.-]+)\s*=\s*)?(person|softwareSystem|container|component)\b(.*)$/i.exec(d)){let t=p[2].toLowerCase(),r=ea(p[3]);if(r.length===0)throw new I(`A ${p[2]} needs a name`,e.line,e.column,`${p[2]} "Name"`);let i=p[1]??`${t}${++o}`,a={id:i,kind:t,name:r[0],description:r[1]||void 0,tags:[],parent:c(),group:l()};t===`container`||t===`component`?(a.technology=r[2]||void 0,r[3]&&a.tags.push(...r[3].split(`,`).map(e=>e.trim()))):r[2]&&a.tags.push(...r[2].split(`,`).map(e=>e.trim())),n.set(i,a),u&&s.push({what:`element`,element:i})}else if(p=/^(?:([\w.-]+)\s+)?->\s*([\w.-]+)(.*)$/.exec(d)){let t=p[1]??c();if(!t)throw new I(`A relationship without a source`,e.line,e.column,`a -> b "Uses"`);let n=ea(p[3]);r.push({from:t,to:p[2],description:n[0]||void 0,technology:n[1]||void 0,s:e}),u&&s.push({what:`skip`})}else if(f===`element`){let r=n.get(c());if(p=/^tags\s+(.*)$/i.exec(t))r.tags.push(...ea(p[1]).flatMap(e=>e.split(`,`).map(e=>e.trim())));else if(p=/^description\s+"(.*)"$/i.exec(t))r.description=p[1];else if(p=/^technology\s+"(.*)"$/i.exec(t))r.technology=p[1];else if(/^location\s+external$/i.test(t))r.tags.push(`External`);else if(u)s.push({what:`skip`});else if(!/^(url|properties|perspectives|location)\b/i.test(t))throw new I(`"${t}" is not an element statement`,e.line,e.column)}else if(u)s.push({what:`skip`});else throw new I(`"${t}" is not a Structurizr statement`,e.line,e.column)}}}}if(s.length>0)throw new I(`A "{" is never closed`,0,0,`Close it with "}".`);for(let e of r)for(let t of[e.from,e.to])if(!n.has(t))throw new I(`"${t}" is not an element`,e.s.line,e.s.column);if(n.size===0)throw new I(`The model has no elements`,0,0,`person "User"`);return ra(n,r,i,a)}function ra(e,t,n,r){let i={systemlandscape:`C4Context`,systemcontext:`C4Context`,container:`C4Container`,component:`C4Component`},a=r?.kind??`systemlandscape`,o=r?.scope?e.get(r.scope):void 0;if(r?.scope&&!o)throw new I(`"${r.scope}" is not an element`,r.s.line,r.s.column);let s=t=>{let n=[],r=e.get(t)?.parent;for(;r;)n.push(r),r=e.get(r)?.parent;return n},c=e=>e.kind===`person`||e.kind===`softwaresystem`?(a!==`container`||e.id!==o?.id)&&(a!==`component`||e.id!==o?.parent):e.kind===`container`?a===`container`&&e.parent===o?.id||a===`component`&&e.parent===o?.parent&&e.id!==o?.id:a===`component`&&e.parent===o?.id,l=t=>[t,...s(t)].find(t=>c(e.get(t))),u={type:`c4`,kind:i[a],direction:r?.direction??`TB`,elements:new Map,boundaries:new Map,children:new Map([[``,[]]]),relations:[],shapeInRow:4,boundaryInRow:2,accessibility:{}},d=(e,t)=>{u.children.has(e)||u.children.set(e,[]),u.children.get(e).push(t)},f=``;if(o&&a===`container`){let e={id:o.id,kind:`system`,label:o.name,description:o.description};u.boundaries.set(e.id,e),d(``,e.id),f=e.id}else if(o&&a===`component`){let t=o.parent?e.get(o.parent):void 0,n=``;t&&(u.boundaries.set(t.id,{id:t.id,kind:`system`,label:t.name,description:t.description}),d(``,t.id),n=t.id),u.boundaries.set(o.id,{id:o.id,kind:`container`,label:o.name,description:o.description,parent:n||void 0,type:o.technology?`Container: ${o.technology}`:void 0}),d(n,o.id),f=o.id}for(let t of e.values()){if(!c(t))continue;let e=t.tags.some(e=>e.toLowerCase()===`external`),r=t.tags.map(e=>n.get(e)).find(Boolean),i=t.kind===`person`?`person`:r??(t.tags.some(e=>/^database$/i.test(e))?`db`:t.tags.some(e=>/^queue$/i.test(e))?`queue`:`box`),s=t.kind===`component`&&a===`component`||t.kind===`container`&&a===`container`?f:t.kind===`container`&&a===`component`?o?.parent??``:``,l={id:t.id,level:ta[t.kind],shape:i,external:e,label:t.name,techn:t.technology,description:t.description,parent:s||void 0};u.elements.set(t.id,l),d(s,t.id)}let p=new Set;for(let e of t){let t=l(e.from),n=l(e.to);if(!t||!n||t===n)continue;let i=`${t}→${n}→${e.description??``}`;p.has(i)||(p.add(i),u.relations.push({from:t,to:n,label:e.description??``,techn:e.technology,arrows:`end`,hidden:!1,line:e.s.line,column:e.s.column,...r?.direction?{direction:r.direction===`LR`?`right`:`down`}:{}}))}return u}function ia(e,t,n=!1){return`${e}-m-${t}${n?`-start`:``}`}function aa(e,t){let n=[];for(let r of new Set(t))for(let t of[!1,!0])n.push(da(e,r,t));return n}var oa=`fill:${R(`--dg-edge-label-fill`)}`;function sa(e,t,n,r,i,a){return z(`marker`,{id:e,markerUnits:`userSpaceOnUse`,orient:`auto`,viewBox:`0 0 ${n} ${r}`,refX:t?n-i:i,refY:r/2,markerWidth:n,markerHeight:r},[z(`g`,{transform:t?`translate(${n},0) scale(-1,1)`:void 0},a)])}function ca(e,t,n,r){return z(`path`,{class:`dg-marker`,d:`M${e},${r-n} L${e-t},${r} L${e},${r+n}`,style:`fill:none`,"stroke-width":1.5})}function la(e,t,n){return z(`path`,{class:`dg-marker`,d:`M${e},${t-n} L${e},${t+n}`,style:`fill:none`,"stroke-width":1.5})}function ua(e,t,n){return z(`circle`,{class:`dg-marker`,cx:e,cy:t,r:n,style:oa,"stroke-width":1.5})}function da(e,t,n){let r=ia(e,t,n),i={id:r,markerUnits:`userSpaceOnUse`,orient:`auto`},a=n?`translate(10,0) scale(-1,1)`:void 0;switch(t){case`arrow`:return z(`marker`,{...i,viewBox:`0 0 10 10`,refX:n?1:9,refY:5,markerWidth:10,markerHeight:10},[z(`path`,{class:`dg-marker`,d:`M0,0 L10,5 L0,10 z`,transform:a,"stroke-width":1})]);case`open-arrow`:return z(`marker`,{...i,viewBox:`0 0 10 10`,refX:n?1:9,refY:5,markerWidth:10,markerHeight:10},[z(`path`,{class:`dg-marker dg-marker-open`,d:`M1,1 L9,5 L1,9`,transform:a,style:`fill:none`,"stroke-width":1.5})]);case`half-arrow`:return z(`marker`,{...i,viewBox:`0 0 10 10`,refX:n?1:9,refY:5,markerWidth:10,markerHeight:10},[z(`path`,{class:`dg-marker`,d:`M0,0 L10,5 L0,5 z`,transform:a,"stroke-width":1})]);case`circle`:return z(`marker`,{...i,viewBox:`0 0 10 10`,refX:n?1:9,refY:5,markerWidth:9,markerHeight:9},[z(`circle`,{class:`dg-marker`,cx:5,cy:5,r:4,"stroke-width":1})]);case`cross`:return z(`marker`,{...i,viewBox:`0 0 10 10`,refX:5,refY:5,markerWidth:11,markerHeight:11},[z(`path`,{class:`dg-marker`,d:`M1,1 L9,9 M1,9 L9,1`,"stroke-width":2,style:`fill:none`})]);case`er-one`:return sa(r,n,32,20,31,[la(23,10,7),la(17,10,7)]);case`er-zero-one`:return sa(r,n,32,20,31,[la(23,10,7),ua(12,10,5)]);case`er-one-many`:return sa(r,n,32,20,31,[ca(31,14,8,10),la(13,10,7)]);case`er-zero-many`:return sa(r,n,32,20,31,[ca(31,14,8,10),ua(10,10,5)]);case`triangle`:return sa(r,n,20,20,19,[z(`path`,{class:`dg-marker`,d:`M19,10 L3,2 L3,18 z`,style:oa,"stroke-width":1.5})]);case`diamond`:case`diamond-open`:return sa(r,n,22,16,21,[z(`path`,{class:`dg-marker`,d:`M21,8 L12,2 L3,8 L12,14 z`,style:t===`diamond-open`?oa:void 0,"stroke-width":1.5})])}}function fa(e){return/^\s*wardley(-beta)?\s*$/m.test(e.split(`
34
- `).find(e=>e.trim()!==``)??``)||/^\s*(component|anchor)\s+.+\[\s*-?[\d.]+\s*,\s*-?[\d.]+\s*\]/m.test(e)}var pa=String.raw`\[\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\]`,ma=500;function ha(e,t,n){if(!(e>=0&&e<=1))throw new I(`${e} is not between 0 and 1`,t,n);return e}function ga(e){let t=K(e),n={type:`wardley`,stages:[`Genesis`,`Custom-Built`,`Product (+rental)`,`Commodity (+utility)`],components:new Map,links:[],notes:[],annotations:[],accessibility:{}},r=[],i=[];for(let e=0;e<t.length;e++){let a=t[e];if(e===0&&/^wardley(-beta)?$/.test(a.text))continue;let o=q(t,e,n.accessibility);if(o>0){e+=o-1;continue}let s;if(s=/^title\s+(.*)$/.exec(a.text))n.title=s[1].trim();else if(s=RegExp(`^(component|anchor|market|ecosystem)\\s+(.+?)\\s*${pa}\\s*(.*)$`).exec(a.text)){let[,e,t,r,i,o]=s,c={name:t,visibility:ha(Number(r),a.line,a.column),evolution:ha(Number(i),a.line,a.column),kind:e,inertia:!1},l=RegExp(`label\\s*\\[\\s*(-?[\\d.]+)\\s*,\\s*(-?[\\d.]+)\\s*\\]`).exec(o);l&&(c.label=[Number(l[1]),Number(l[2])]);for(let e of o.matchAll(/\((\w+)\)/g)){let t=e[1].toLowerCase();t===`inertia`?c.inertia=!0:t===`build`||t===`buy`||t===`outsource`?c.method=t:(t===`market`||t===`ecosystem`)&&(c.kind=t)}if(n.components.has(c.name))throw new I(`"${c.name}" is declared twice`,a.line,a.column);if(n.components.set(c.name,c),n.components.size>ma)throw Te(`components`,n.components.size,ma)}else if(s=/^evolve\s+(.+?)\s+(-?[\d.]+)(?:\s+label\s*\[[^\]]*\])?\s*(.*)$/.exec(a.text))r.push({name:s[1].trim(),to:ha(Number(s[2]),a.line,a.column),label:s[3]?.trim()||void 0,line:a.line,column:a.column});else if(s=RegExp(`^pipeline\\s+(.+?)\\s*${pa}$`).exec(a.text))i.push({name:s[1].trim(),range:[ha(Number(s[2]),a.line,a.column),ha(Number(s[3]),a.line,a.column)],line:a.line,column:a.column});else if(s=RegExp(`^note\\s+(.+?)\\s*${pa}$`).exec(a.text))n.notes.push({text:s[1].trim(),visibility:ha(Number(s[2]),a.line,a.column),evolution:ha(Number(s[3]),a.line,a.column)});else if(s=/^annotation\s+(\d+)\s*(\[\s*\[.*\]\s*\]|\[[^\]]*\])\s*(.*)$/.exec(a.text)){let e=[...s[2].matchAll(/\[\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\]/g)].map(e=>[ha(Number(e[1]),a.line,a.column),ha(Number(e[2]),a.line,a.column)]);n.annotations.push({n:Number(s[1]),points:e,text:s[3].trim()})}else if(s=RegExp(`^annotations\\s*${pa}$`).exec(a.text))n.annotationsAt=[Number(s[1]),Number(s[2])];else if(s=/^evolution\s+(.+)$/.exec(a.text)){let e=s[1].split(`->`).map(e=>e.trim());if(e.length!==4)throw new I(`Evolution has four stages`,a.line,a.column,`evolution Genesis->Custom->Product->Commodity`);n.stages=e}else if(!/^(style|size|url|accelerator|deaccelerator|submap)\b/.test(a.text)){if(s=/^(.+?)\s*(\+<>|\+>|\+<|->)\s*(.+?)(?:\s*;\s*(.*))?$/.exec(a.text))n.links.push({from:s[1].trim(),to:s[3].trim(),flow:s[2]!==`->`,label:s[4]?.trim()||void 0});else throw new I(`"${a.text}" is not a Wardley map statement`,a.line,a.column,`component Name [0.5, 0.5], A->B`)}}for(let e of r){let t=n.components.get(e.name);if(!t)throw new I(`"${e.name}" is not a component`,e.line,e.column);t.evolve={to:e.to,label:e.label}}for(let e of i){let t=n.components.get(e.name);if(!t)throw new I(`"${e.name}" is not a component`,e.line,e.column);t.pipeline=e.range}for(let e of n.links)for(let t of[e.from,e.to])if(!n.components.has(t))throw new I(`"${t}" is not a component`);if(n.components.size===0)throw new I(`The map has no components`,0,0,`component Name [0.5, 0.5]`);return n}var _a=760,va=500,ya=30,ba=40,xa=786;function Sa(e,t,n,r){let i={...L,size:12},a=e.title?Y(J(e.title),{...L,size:18,weight:`bold`},t):null,o=a?a.height+14:0,s=e=>ya+e*_a,c=e=>o+(1-e)*va,l=[];a&&l.push(X(a,410,a.height/2,{className:`dg-title`})),l.push(z(`rect`,{class:`dg-wardley-frame`,x:ya,y:o,width:_a,height:va}));let u=[0,.174,.4,.7,1];for(let e of u.slice(1,-1))l.push(z(`line`,{class:`dg-wardley-stage`,x1:s(e),y1:o,x2:s(e),y2:o+va}));e.stages.forEach((e,n)=>{let r=Y(J(e),i,t);l.push(X(r,s((u[n]+u[n+1])/2),o+va+14,{className:`dg-wardley-axis`}))}),l.push(X(Y(J(`Evolution`),{...i,weight:`bold`},t),s(1)-34,o+va+32,{className:`dg-wardley-axis`}));let d=(e,n)=>z(`g`,{transform:`translate(18,${n}) rotate(-90)`},[X(Y(J(e),i,t),0,0,{className:`dg-wardley-axis`})]);l.push(d(`Visible`,o+40),d(`Invisible`,o+va-44),d(`Value chain`,o+va/2));for(let t of e.components.values())t.pipeline&&l.push(z(`rect`,{class:`dg-wardley-pipeline`,x:s(t.pipeline[0]),y:c(t.visibility)-9,width:(t.pipeline[1]-t.pipeline[0])*_a,height:18,rx:2}));let f=[];for(let n of e.links){let r=e.components.get(n.from),a=e.components.get(n.to);if(f.push(z(`line`,{class:n.flow?`dg-wardley-link dg-wardley-flow`:`dg-wardley-link`,x1:s(r.evolution),y1:c(r.visibility),x2:s(a.evolution),y2:c(a.visibility)})),n.label){let e=Y(J(n.label),i,t);f.push(X(e,(s(r.evolution)+s(a.evolution))/2,(c(r.visibility)+c(a.visibility))/2-8,{className:`dg-wardley-link-text`}))}}l.push(z(`g`,{class:`dg-wardley-links`},f));let p=[...e.components.values()].some(e=>e.evolve);for(let r of e.components.values()){if(!r.evolve)continue;l.push(z(`line`,{class:`dg-wardley-evolve`,x1:s(r.evolution)+7,y1:c(r.visibility),x2:s(r.evolve.to)-8,y2:c(r.visibility),"marker-end":`url(#${ia(n,`arrow`)})`})),l.push(z(`circle`,{class:`dg-wardley-ghost`,cx:s(r.evolve.to),cy:c(r.visibility),r:6}));let e=Y(J(r.evolve.label??r.name),i,t),a=s(r.evolve.to),o=a+10+e.width>xa;l.push(X(e,o?a-10:a+10,c(r.visibility)-10,{anchor:o?`end`:`start`,className:`dg-wardley-ghost-text`}))}for(let n of e.components.values()){let e=s(n.evolution),r=c(n.visibility),a=[];if(n.kind===`anchor`){let i=Y(J(n.name),{...L,weight:`bold`},t);a.push(X(i,e,r,{className:`dg-wardley-anchor`})),l.push(z(`g`,{class:`dg-wardley-component`,"data-id":n.name},a));continue}n.method&&a.push(z(`circle`,{class:`dg-wardley-method dg-wardley-${n.method}`,cx:e,cy:r,r:13})),n.inertia&&a.push(z(`rect`,{class:`dg-wardley-inertia`,x:e+11,y:r-10,width:5,height:20})),n.kind===`market`||n.kind===`ecosystem`?(a.push(z(`circle`,{class:`dg-wardley-dot`,cx:e,cy:r,r:9})),a.push(z(`circle`,{class:`dg-wardley-dot`,cx:e,cy:r,r:n.kind===`market`?3:5}))):a.push(z(`circle`,{class:`dg-wardley-dot`,cx:e,cy:r,r:6}));let[o,u]=n.label??(n.inertia?[24,-8]:[10,-8]),d=Y(on(J(n.name),160,i,t),i,t);!n.label&&e+o+d.width>xa?a.push(X(d,e-o,r+u,{anchor:`end`,className:`dg-wardley-text`})):a.push(X(d,e+o,r+u,{anchor:`start`,className:`dg-wardley-text`})),l.push(z(`g`,{class:`dg-wardley-component`,"data-id":n.name},a))}for(let n of e.notes){let e=Y(on(J(n.text),220,i,t),{...i,weight:`bold`},t);l.push(X(e,Math.min(s(n.evolution),xa-e.width),c(n.visibility),{anchor:`start`,className:`dg-wardley-note`}))}for(let n of e.annotations)for(let[e,r]of n.points)l.push(z(`circle`,{class:`dg-wardley-annotation`,cx:s(r),cy:c(e),r:9})),l.push(X(Y(J(String(n.n)),i,t),s(r),c(e),{className:`dg-wardley-annotation-n`}));if(e.annotations.length>0){let[n,r]=e.annotationsAt??[.98,.02],a=[...e.annotations].sort((e,t)=>e.n-t.n).map(e=>Y(J(`${e.n}. ${e.text}`),i,t)),o=Math.max(...a.map(e=>e.width))+16,u=a.reduce((e,t)=>e+t.height+4,8);l.push(z(`rect`,{class:`dg-wardley-annotations`,x:s(r),y:c(n),width:o,height:u,rx:3}));let d=c(n)+6;for(let e of a)l.push(X(e,s(r)+8,d+e.height/2,{anchor:`start`,className:`dg-wardley-text`})),d+=e.height+4}let m=`#${n}`,h=[`${m} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`,`${m} .dg-wardley-frame{fill:none;stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${m} .dg-wardley-stage{stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px;stroke-dasharray:4 4}`,`${m} .dg-wardley-axis{fill:${R(`--dg-text-muted`)};font-size:12px}`,`${m} .dg-wardley-link{stroke:${R(`--dg-line`)};stroke-width:1.2px}`,`${m} .dg-wardley-flow{stroke-dasharray:6 3;stroke-width:2px}`,`${m} .dg-wardley-link-text{fill:${R(`--dg-text-muted`)};font-size:12px}`,`${m} .dg-wardley-dot{fill:${R(`--dg-row-fill`)};stroke:${R(`--dg-text`)};stroke-width:1.5px}`,`${m} .dg-wardley-text{fill:${R(`--dg-text`)};font-size:12px}`,`${m} .dg-wardley-anchor{fill:${R(`--dg-text`)};font-weight:bold}`,`${m} .dg-wardley-inertia{fill:${R(`--dg-text`)}}`,`${m} .dg-wardley-method{stroke:none}`,`${m} .dg-wardley-build{fill:rgba(0,0,0,0.12)}`,`${m} .dg-wardley-buy{fill:rgba(99,102,241,0.25)}`,`${m} .dg-wardley-outsource{fill:rgba(234,88,12,0.25)}`,`${m} .dg-wardley-evolve{stroke:${R(`--dg-task-crit-stroke`)};stroke-width:1.5px;stroke-dasharray:5 3}`,`${m} .dg-wardley-ghost{fill:${R(`--dg-row-fill`)};stroke:${R(`--dg-task-crit-stroke`)};stroke-width:1.5px}`,`${m} .dg-wardley-ghost-text{fill:${R(`--dg-task-crit-stroke`)};font-size:12px}`,`${m} .dg-wardley-pipeline{fill:none;stroke:${R(`--dg-text`)};stroke-width:1px}`,`${m} .dg-wardley-note{fill:${R(`--dg-text`)};font-size:12px;font-weight:bold}`,`${m} .dg-wardley-annotation{fill:${R(`--dg-row-fill`)};stroke:${R(`--dg-line`)};stroke-width:1px}`,`${m} .dg-wardley-annotation-n{fill:${R(`--dg-text`)};font-size:12px}`,`${m} .dg-wardley-annotations{fill:${R(`--dg-row-fill`)};stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`].join(``);return H({id:n,type:`wardley`,width:794,height:o+va+ba,title:r??e.accessibility.title??e.title??`Wardley map`,description:e.accessibility.description,defs:p?aa(n,[`arrow`]):[],body:l,css:h})}function Ca(e){let t=K(e),n=t[0];if(!n||!/^pie\b/.test(n.text))throw new I(`A pie chart starts with "pie"`,n?.line??1,1);let r={type:`pie`,showData:!1,slices:[],accessibility:{}},i=n.text.slice(3).trim();if(/^showData\b/.test(i)&&(r.showData=!0,i=i.slice(8).trim()),/^title\b/.test(i))r.title=i.slice(5).trim();else if(i!==``)throw new I(`Unexpected "${i}" after "pie"`,n.line,n.column+4);for(let e=1;e<t.length;e++){let n=t[e],i=q(t,e,r.accessibility);if(i>0){e+=i-1;continue}if(/^title\b/.test(n.text)){r.title=n.text.slice(5).trim();continue}if(/^showData$/.test(n.text)){r.showData=!0;continue}let a=/^("(?:[^"]*)"|'(?:[^']*)')\s*:\s*(-?[0-9]+(?:\.[0-9]+)?)\s*$/.exec(n.text);if(!a)throw new I(`"${n.text}" is not a slice`,n.line,n.column,`Write "Label" : 42`);let o=Number(a[2]);if(o<0)throw new I(`A slice cannot be negative`,n.line,n.column);r.slices.push({label:ft(a[1].replace(/^'|'$/g,`"`)),value:o})}if(r.slices.length===0)throw new I(`The pie chart has no slices`,0,0,`Add lines like "Label" : 42`);return r}var wa=130,Ta=14;function Ea(e){return String(Number.isInteger(e)?e:Math.round(e*100)/100)}function Da(e,t,n,r){let i=e.slices.reduce((e,t)=>e+t.value,0);if(i<=0)throw new I(`All slices are zero`,0,0);let a={...L,size:18,weight:`bold`},o=e.title?Y(tn(e.title),a,t):null,s=o?o.height+16:0,c=wa,l=s+wa,u=[],d=[],f=[],p=-Math.PI/2,m=e.slices.filter(e=>e.value>0);e.slices.forEach((e,n)=>{if(e.value<=0)return;let r=e.value/i,a=r*Math.PI*2,o=ke(n);if(m.length===1)d.push(z(`circle`,{class:`dg-pie-slice`,cx:c,cy:l,r:wa,style:`fill:${o}`}));else{let e=p,t=p+a,n=new V().moveTo(c,l).lineTo(c+wa*Math.cos(e),l+wa*Math.sin(e)).arcTo(wa,wa,0,a>Math.PI,!0,c+wa*Math.cos(t),l+wa*Math.sin(t)).close();d.push(z(`path`,{class:`dg-pie-slice`,d:n.toString(),style:`fill:${o}`}))}if(r>=.03){let e=p+a/2,n=m.length===1?0:wa*.68,i=`${Math.round(r*1e3)/10}%`;f.push(X(Y(tn(i),L,t),c+n*Math.cos(e),l+n*Math.sin(e),{className:`dg-pie-percent`}))}p+=a});let h=e.slices.length*22,g=l-h/2,_=0,v=e.slices.map((n,r)=>{let i=Y(J(e.showData?`${n.label} [${Ea(n.value)}]`:n.label),L,t);_=Math.max(_,22+i.width);let a=g+r*22+11;return z(`g`,{class:`dg-pie-legend-item`},[z(`rect`,{x:288,y:a-Ta/2,width:Ta,height:Ta,rx:3,style:`fill:${ke(r)}`}),X(i,310,a,{anchor:`start`,className:`dg-pie-legend`})])}),y=288+_,b=Math.max(l+wa,g+h);o&&e.title&&u.push(X(o,y/2,o.height/2,{className:`dg-title`})),u.push(z(`g`,{class:`dg-pie-slices`},d),z(`g`,{},f),z(`g`,{},v));let x=[`#${n} .dg-pie-slice{stroke:${R(`--dg-pie-stroke`)};stroke-width:2px}`,`#${n} .dg-pie-percent{fill:${R(`--dg-pie-text`)};font-weight:600}`,`#${n} .dg-pie-legend{fill:${R(`--dg-text`)}}`,`#${n} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`].join(``);return H({id:n,type:`pie`,width:y,height:b,title:r??e.accessibility.title??e.title??`Pie chart`,description:e.accessibility.description,body:u,css:x})}var Oa=28,ka=20,Aa=24,ja=160,Ma=800,Na={...L,size:13},Pa={...L,size:12},Fa={...L,weight:`bold`},Ia={...L,size:18,weight:`bold`},La=1e3,Ra=1.12;function za(e){switch(e.unit){case`ms`:return`%H:%M:%S.%L`;case`s`:return`%H:%M:%S`;case`m`:case`h`:return`%H:%M`;case`M`:return e.step>=12?`%Y`:`%b %Y`;default:return`%Y-%m-%d`}}function Ba(e){return{lines:[J(e).lines.flatMap((e,t)=>t===0?e:[{text:` `},...e])]}}function Va(e){let t=[`dg-task`];return e.tags.milestone&&t.push(`dg-milestone`),e.tags.done&&t.push(`dg-task-done`),e.tags.active&&t.push(`dg-task-active`),e.tags.crit&&t.push(`dg-task-crit`),t.join(` `)}function Ha(e,t,n,r,i){let a=e.tasks;if(a.length===0)throw new I(`The gantt chart has no tasks`,0,0,`Add lines like: Task : 2024-01-01, 3d`);let o=Math.min(...a.map(e=>e.start)),s=Math.max(...a.map(e=>e.end));s<=o&&(o-=un/2,s+=un/2);let c=e.sections.filter(e=>e!==``),l=new Map(c.map(e=>[e,Y(on(J(e),ja,Fa,t),Fa,t)])),u=c.length>0?Math.min(ja,Math.max(...[...l.values()].map(e=>e.width)))+24:0,d=u,f=Math.min(Ma,Math.max(480,Ma-u)),p=d+f,m=e=>d+(e-o)/(s-o)*f,h=[],g=e.axisFormat,_=t=>e.axisFormatSet?e.axisFormat:za(t),v=(e,n)=>Math.max(0,...e.map(e=>t(Mn(e,n),Pa).width));if(e.tickInterval){if(h=Ln(o,s,e.tickInterval,1001),h.length>La)throw new I(`tickInterval puts more than 1000 ticks on the axis`,0,0,`Choose a longer interval.`);g=_(e.tickInterval)}else for(let e of Rn){if((s-o)/In(e)>80)continue;let t=Ln(o,s,e);if(h=t,g=_(e),t.length*(v(t,g)+16)<=f)break}let y=e.title?Y(tn(e.title),Ia,t):null,b=(y?y.height+14:0)+(e.topAxis?Aa:0)+4,x=b+a.length*Oa,S=x+Aa,C=[],w=[],T=0,E=p,D=0;a.forEach((t,n)=>{let r=a[n+1];if(r&&r.section===t.section)return;let i=e.sections.indexOf(t.section),o=b+D*Oa,s=(n-D+1)*Oa;C.push(z(`rect`,{class:`dg-gantt-section dg-gantt-section-${i%2}`,x:0,y:o,width:p,height:s}));let c=l.get(t.section);c&&w.push(X(c,12,o+s/2,{anchor:`start`,className:`dg-gantt-section-label`})),D=n+1});for(let t of e.excludedRanges){let e=Math.max(d,m(t.start)),n=Math.min(p,m(t.end));n>e&&C.push(z(`rect`,{class:`dg-gantt-exclude`,x:e,y:b,width:n-e,height:x-b}))}let ee=e=>h.map(n=>{let r=Y(tn(Mn(n,g)),Pa,t),i=m(n);return T=Math.min(T,i-r.width/2),E=Math.max(E,i+r.width/2),X(r,i,e,{className:`dg-gantt-axis`})});if(C.push(z(`g`,{class:`dg-gantt-grid`},h.map(e=>z(`line`,{x1:m(e),y1:b,x2:m(e),y2:x})))),w.push(z(`g`,{},ee(x+Aa/2))),e.topAxis&&w.push(z(`g`,{},ee(b-Aa/2))),a.forEach((e,n)=>{let r=b+n*Oa+Oa/2,i=Y(Ba(e.name),Na,t),a=[],o=Va(e),s,c,l=!1;if(e.tags.milestone){let t=(m(e.start)+m(e.renderEnd))/2,n=ka/2;a.push(z(`polygon`,{class:o,points:`${B(t)},${B(r-n)} ${B(t+n)},${B(r)} ${B(t)},${B(r+n)} ${B(t-n)},${B(r)}`})),s=t+n+6,c=`start`}else{let t=m(e.start),n=Math.max(2,m(e.renderEnd)-t),u=t+n;a.push(z(`rect`,{class:o,x:t,y:r-ka/2,width:n,height:ka,rx:3,ry:3})),i.width*Ra+12<=n?(l=!0,s=t+n/2,c=`middle`):u+6+i.width*Ra<=p||t-6-i.width*Ra<d?(s=u+6,c=`start`):(s=t-6,c=`end`)}l||(c===`start`&&(E=Math.max(E,s+i.width*Ra)),c===`end`&&(T=Math.min(T,s-i.width*Ra)));let u=l?`dg-task-text dg-task-text-inside${e.tags.done||e.tags.active?` dg-task-text-dark`:``}`:`dg-task-text`;a.push(X(i,s,r,{anchor:c,className:u}));let f=z(`g`,{class:`dg-gantt-task`,"data-id":e.id},a);w.push(e.href?z(`a`,{href:e.href},[f]):f)}),i&&e.todayMarker!==`off`){let t=i.getTime();if(t>=o&&t<=s){let n=e.todayMarker===`on`?void 0:W(U(e.todayMarker).shape);w.push(z(`line`,{class:`dg-gantt-today`,x1:m(t),y1:b-4,x2:m(t),y2:x+4,style:n}))}}let O=Math.ceil(-T),k=E-T,A=[];y&&A.push(X(y,k/2,y.height/2,{className:`dg-title`})),A.push(z(`g`,{transform:O>0?`translate(${O},0)`:void 0},[...C,...w]));let j=`#${n}`,M=[`${j} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`,`${j} .dg-gantt-section-0{fill:${R(`--dg-section-fill-0`)}}`,`${j} .dg-gantt-section-1{fill:${R(`--dg-section-fill-1`)}}`,`${j} .dg-gantt-section-label{fill:${R(`--dg-text`)};font-weight:bold}`,`${j} .dg-gantt-exclude{fill:${R(`--dg-exclude-fill`)}}`,`${j} .dg-gantt-grid line{stroke:${R(`--dg-grid`)};stroke-width:1px}`,`${j} .dg-gantt-axis{fill:${R(`--dg-text-muted`)};font-size:12px}`,`${j} .dg-task{fill:${R(`--dg-task-fill`)};stroke:${R(`--dg-task-stroke`)};stroke-width:1px}`,`${j} .dg-task-active{fill:${R(`--dg-task-active-fill`)}}`,`${j} .dg-task-done{fill:${R(`--dg-task-done-fill`)};stroke:${R(`--dg-task-done-stroke`)}}`,`${j} .dg-task-crit{fill:${R(`--dg-task-crit-fill`)};stroke:${R(`--dg-task-crit-stroke`)}}`,`${j} .dg-task-crit.dg-task-done{fill:${R(`--dg-task-done-fill`)};stroke:${R(`--dg-task-crit-stroke`)};stroke-width:2px}`,`${j} .dg-task-crit.dg-task-active{fill:${R(`--dg-task-active-fill`)};stroke:${R(`--dg-task-crit-stroke`)};stroke-width:2px}`,`${j} .dg-task-text{fill:${R(`--dg-text`)};font-size:13px}`,`${j} .dg-task-text-inside{fill:${R(`--dg-task-text`)}}`,`${j} .dg-task-text-dark{fill:${R(`--dg-task-text-dark`)}}`,`${j} .dg-gantt-today{stroke:${R(`--dg-today`)};stroke-width:2px}`].join(``);return H({id:n,type:`gantt`,width:k,height:S,title:r??e.accessibility.title??e.title??`Gantt chart`,description:e.accessibility.description,body:A,css:M})}var Ua={TB:`TB`,TD:`TB`,BT:`BT`,LR:`LR`,RL:`RL`},Wa=[{open:`(((`,close:`)))`,shape:`doublecircle`},{open:`((`,close:`))`,shape:`circle`},{open:`([`,close:`])`,shape:`stadium`},{open:`[[`,close:`]]`,shape:`subroutine`},{open:`[(`,close:`)]`,shape:`cylinder`},{open:`{{`,close:`}}`,shape:`hexagon`},{open:`[/`,close:[`/]`,`\\]`],shape:e=>e===`/]`?`parallelogram`:`trapezoid`},{open:`[\\`,close:[`\\]`,`/]`],shape:e=>e===`\\]`?`parallelogram-alt`:`trapezoid-alt`},{open:`>`,close:`]`,shape:`asymmetric`},{open:`[`,close:`]`,shape:`rect`},{open:`(`,close:`)`,shape:`round`},{open:`{`,close:`}`,shape:`rhombus`}],Ga=/[\p{L}\p{N}_](?:[\p{L}\p{N}_.$]|-(?=[\p{L}\p{N}_]))*/u;function Ka(e){return e===`>`||e===`<`?`arrow`:e===`x`?`cross`:e===`o`?`circle`:`none`}function qa(e){let t=e.peek();return t===``||/[\s|&"]/.test(t)||/[[({>]/.test(t)===!1&&!/[\p{L}\p{N}_]/u.test(t)}function Ja(e,t){let n=Array.isArray(t)?t:[t];if(e.skipSpaces(),e.peek()===`"`){let t=e.pos,r=e.text.indexOf(`"`,t+1);if(r<0)throw e.error(`The quoted text is not closed`,`Add the closing "`);let i=e.text.slice(t+1,r),a=!1;i.startsWith("`")&&i.endsWith("`")&&i.length>=2&&(i=i.slice(1,-1),a=!0),e.pos=r+1,e.skipSpaces();for(let t of n)if(e.eat(t))return{text:i,markdown:a,close:t};throw e.error(`Expected ${n.join(` or `)} after the text`)}let r=-1,i=``;for(let t of n){let n=e.text.indexOf(t,e.pos);n>=0&&(r<0||n<r)&&(r=n,i=t)}if(r<0)throw e.error(`The shape is not closed: expected ${n.join(` or `)}`);let a=e.text.slice(e.pos,r).trim();return e.pos=r+i.length,{text:a,markdown:!1,close:i}}function Ya(e){let t=e.pos;e.skipSpaces();for(let{re:t,stroke:n}of[{re:/([<xo])?--(?![->.])\s*("[^"]*"|[^-|]+?)\s*(-{2,})([>xo]?)/u,stroke:`normal`},{re:/([<xo])?==(?![=>])\s*("[^"]*"|[^=|]+?)\s*(={2,})([>xo]?)/u,stroke:`thick`},{re:/([<xo])?-\.(?![-.])\s*("[^"]*"|[^.|]+?)\s*(\.+)-([>xo]?)/u,stroke:`dotted`}]){let r=e.pos,i=e.match(t);if(!i)continue;let a=i[3],o=i[4]??``;if(n!==`dotted`&&o===``&&a.length<3||o&&/[xo]/.test(o)&&!qa(e)){e.pos=r;continue}let s=i[2].trim(),c=!1;s.startsWith(`"`)&&s.endsWith(`"`)&&(s=s.slice(1,-1)),s.startsWith("`")&&s.endsWith("`")&&s.length>=2&&(s=s.slice(1,-1),c=!0);let l=n===`dotted`?a.length:Math.max(1,a.length-(o?1:2));return{stroke:n,start:Ka(i[1]),end:Ka(o),length:l,text:s,markdown:c}}for(let{re:t,stroke:n}of[{re:/~{3,}/,stroke:`invisible`},{re:/([<xo])?-(\.+)-([>xo])?/,stroke:`dotted`},{re:/([<xo])?(={2,})([>xo])?/,stroke:`thick`},{re:/([<xo])?(-{2,})([>xo])?/,stroke:`normal`}]){let r=e.pos,i=e.match(t);if(!i)continue;if(n===`invisible`)return{stroke:n,start:`none`,end:`none`,length:Math.max(1,i[0].length-2),markdown:!1};let a=i[2],o=i[3];if(o&&/[xo]/.test(o)&&!qa(e)&&(--e.pos,o=void 0),!o&&n!==`dotted`&&a.length<3){e.pos=r;continue}let s=n===`dotted`?a.length:Math.max(1,a.length-(o?1:2)),c={stroke:n,start:Ka(i[1]),end:Ka(o),length:s,markdown:!1},l=e.match(/\s*\|\s*("[^"]*"|[^|]*?)\s*\|/);if(l){let e=l[1].trim();e.startsWith(`"`)&&e.endsWith(`"`)&&(e=e.slice(1,-1)),e.startsWith("`")&&e.endsWith("`")&&e.length>=2&&(e=e.slice(1,-1),c.markdown=!0),c.text=e}return c}return e.pos=t,null}function Xa(e){e.skipSpaces();let t=e.match(Ga);if(!t)return null;let n={id:t[0],classes:[]};if(e.startsWith(`@{`))throw e.error(`The @{ shape: … } node syntax is not supported`,`Use the bracket shapes, e.g. A([text]).`);for(let t of Wa){if(!e.startsWith(t.open))continue;if(t.open===`>`&&e.peek(-1)===`-`)break;e.pos+=t.open.length;let{text:r,markdown:i,close:a}=Ja(e,t.close);n.text=r,n.markdown=i,n.shape=typeof t.shape==`function`?t.shape(a):t.shape;break}let r=e.match(/:::([\w-]+)/);return r&&n.classes.push(r[1]),n}function Za(e){return e.split(`,`).map(e=>e.trim()).filter(Boolean)}function Qa(e){let t=K(e,{semicolons:!0}),n=t[0],r=n?/^(flowchart|graph|flowchart-elk)\b\s*(\S*)\s*$/.exec(n.text):null;if(!n||!r)throw new I(`A flowchart starts with "flowchart" or "graph"`,n?.line??1,1);let i=`TB`;if(r[2]){let e=Ua[r[2].toUpperCase()];if(!e)throw new I(`"${r[2]}" is not a direction`,n.line,n.column+r[1].length+1,`Use TB, TD, BT, LR or RL.`);i=e}let a={type:`flowchart`,direction:i,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},o=[],s=[],c=[],l=[],u=[],d=0,f=e=>{let t=a.nodes.get(e.id);t||(t={id:e.id,text:e.id,markdown:!1,shape:`rect`,classes:[]},a.nodes.set(e.id,t)),e.text!==void 0&&(t.text=e.text,t.markdown=e.markdown??!1),e.shape&&(t.shape=e.shape),t.classes.push(...e.classes);let n=o[o.length-1];return n&&t.subgraph===void 0&&!a.subgraphs.has(e.id)&&(t.subgraph=n.id),t};for(let e=1;e<t.length;e++){let n=t[e],r=n.text,i=q(t,e,a.accessibility);if(i>0){e+=i-1;continue}let p=/^subgraph\b\s*(.*)$/.exec(r);if(p){let e=p[1].trim(),t,r,i=!1,s=/^([\p{L}\p{N}_.-]+)\s*\[\s*(.*?)\s*\]$/u.exec(e);if(s?(t=s[1],r=s[2]):e.startsWith(`"`)?(r=e,t=`subgraph${d++}`):e===``?(t=`subgraph${d++}`,r=``):(t=e.replace(/\s+/g,`_`),r=e),r.startsWith(`"`)&&r.endsWith(`"`)&&r.length>=2&&(r=r.slice(1,-1)),r.startsWith("`")&&r.endsWith("`")&&r.length>=2&&(r=r.slice(1,-1),i=!0),a.subgraphs.has(t))throw new I(`Subgraph "${t}" is defined twice`,n.line,n.column);let c={id:t,title:r,markdown:i,parent:o[o.length-1]?.id,classes:[]};a.subgraphs.set(t,c),a.nodes.delete(t),o.push(c);continue}if(r===`end`){if(o.length===0)throw new I(`"end" without a subgraph`,n.line,n.column);o.pop();continue}if(p=/^direction\s+(\w+)$/.exec(r),p){let e=Ua[p[1].toUpperCase()];if(!e)throw new I(`"${p[1]}" is not a direction`,n.line,n.column+10);let t=o[o.length-1];t?t.direction=e:a.direction=e;continue}if(p=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(r),p){let e=U(p[2],n.line,n.column);for(let t of Za(p[1]))a.classDefs.set(t,e);continue}if(p=/^class\s+(.+?)\s+([\w-]+)$/.exec(r),p){s.push({ids:Za(p[1]),cls:p[2],s:n});continue}if(p=/^style\s+(\S+)\s+(.+)$/.exec(r),p){c.push({id:p[1],style:U(p[2],n.line,n.column),s:n});continue}if(p=/^linkStyle\s+(default|[\d\s,]+?)\s+(?:interpolate\s+\w+\s*)?(.*)$/.exec(r),p){let e=p[1]==="default"?`default`:Za(p[1]).map(Number);l.push({which:e,style:U(p[2]??``,n.line,n.column),s:n});continue}if(p=/^click\s+(\S+)\s+(.*)$/.exec(r),p){let e=p[2],t=/^(?:href\s+)?"([^"]*)"(?:\s+"([^"]*)")?(?:\s+(_blank|_self|_parent|_top))?\s*$/.exec(e);t&&u.push({id:p[1],href:t[1],tooltip:t[2],target:t[3],s:n});continue}let m=new dt(n),h=[],g=()=>{let e=[];for(;;){let t=Xa(m);if(!t)throw m.error(e.length===0?`Expected a node`:`Expected a node after "&"`);if(e.push(t),m.skipSpaces(),!m.eat(`&`))break}return e};h.push(g());let _=[];for(;m.skipSpaces(),!m.done;){let e=Ya(m);if(!e)throw m.error(`Unexpected "${m.rest()}"`,`Expected an edge such as --> or the end of the line.`);_.push(e),h.push(g())}let v=h.map(e=>e.map(e=>a.subgraphs.has(e.id)&&!e.shape?e.id:f(e).id));_.forEach((e,t)=>{for(let n of v[t])for(let r of v[t+1])a.edges.push({from:n,to:r,stroke:e.stroke,start:e.start,end:e.end,length:e.length,text:e.text,markdown:e.markdown})})}if(o.length>0)throw new I(`Subgraph "${o[o.length-1].id}" is not closed`,0,0,`Add "end".`);for(let e of s)for(let t of e.ids){let n=a.nodes.get(t)??a.subgraphs.get(t);if(!n)throw new I(`class refers to an unknown node "${t}"`,e.s.line,e.s.column);n.classes.push(e.cls)}for(let e of c){let t=a.nodes.get(e.id)??a.subgraphs.get(e.id);if(!t)throw new I(`style refers to an unknown node "${e.id}"`,e.s.line,e.s.column);t.style=e.style}for(let e of l)if(e.which==="default")for(let t of a.edges)t.style={shape:{...t.style?.shape,...e.style.shape},text:{...t.style?.text,...e.style.text}};else for(let t of e.which){let n=a.edges[t];if(!n)throw new I(`linkStyle refers to edge ${t}, but there are ${a.edges.length}`,e.s.line,e.s.column);n.style=e.style}for(let e of u){let t=a.nodes.get(e.id);if(!t)throw new I(`click refers to an unknown node "${e.id}"`,e.s.line,e.s.column);let n=qe(e.href);if(n===null)throw new I(`The link "${e.href}" is not allowed`,e.s.line,e.s.column,`Use http(s), mailto or a relative address.`);t.link={href:n,tooltip:e.tooltip,target:e.target}}return a}function $a(e,t){return Math.hypot(t.x-e.x,t.y-e.y)}function eo(e,t){let n=t.x-e.x,r=t.y-e.y,i=e.width/2,a=e.height/2;if(n===0&&r===0)return{x:e.x,y:e.y+a};let o,s;return Math.abs(r)*i>Math.abs(n)*a?(s=r<0?-a:a,o=s*n/r):(o=n<0?-i:i,s=o*r/n),{x:e.x+o,y:e.y+s}}function to(e,t,n,r){let i=r.x-e.x,a=r.y-e.y;if(i===0&&a===0)return{x:e.x,y:e.y+n};let o=1/Math.sqrt(i*i/(t*t)+a*a/(n*n));return{x:e.x+i*o,y:e.y+a*o}}function no(e,t,n){let r=null,i=1/0,a=n.x-e.x,o=n.y-e.y;for(let n=0;n<t.length;n++){let s=t[n],c=t[(n+1)%t.length],l=c.x-s.x,u=c.y-s.y,d=a*u-o*l;if(Math.abs(d)<1e-9)continue;let f=((s.x-e.x)*u-(s.y-e.y)*l)/d,p=((s.x-e.x)*o-(s.y-e.y)*a)/d;f>0&&p>=-1e-9&&p<=1+1e-9&&f<i&&(i=f,r={x:e.x+a*f,y:e.y+o*f})}return r??{x:e.x,y:e.y}}function ro(e,t=.5){let n=[];for(let r of e){let e=n[n.length-1];(!e||$a(e,r)>t)&&n.push(r)}return n}function io(e){let t=ro(e),n=new V;if(t.length===0)return``;if(t.length===1)return n.moveTo(t[0].x,t[0].y).toString();let r=0,i=0,a=0,o=0,s=(e,t)=>{n.curveTo((2*r+a)/3,(2*i+o)/3,(r+2*a)/3,(i+2*o)/3,(r+4*a+e)/6,(i+4*o+t)/6)},c=0;for(let e of t)c===0?(c=1,n.moveTo(e.x,e.y)):c===1?c=2:(c===2&&(c=3,n.lineTo((5*r+a)/6,(5*i+o)/6)),s(e.x,e.y)),r=a,a=e.x,i=o,o=e.y;return c===3&&s(a,o),n.lineTo(a,o),n.toString()}var ao={actor:40,interface:22,boundary:30,control:30,entity:30};function oo(e){return ao[e]!==void 0}function so(e,t,n){let r=ao[e];return r===void 0?{x:t.x,y:t.y+(e===`person`?8:0)}:{x:t.x,y:t.y-t.height/2+r+4+n/2}}function co(e){return e.map(e=>`${lo(e.x)},${lo(e.y)}`).join(` `)}function lo(e){return Math.round(e*100)/100}function uo(e,t){return t.map(t=>({x:e.x+t.x,y:e.y+t.y}))}function fo(e,t,n){let r=t/2,i=n/2;switch(e){case`rhombus`:case`choice`:return[{x:0,y:-i},{x:r,y:0},{x:0,y:i},{x:-r,y:0}];case`hexagon`:{let e=Math.min(n/2,t/4);return[{x:-r+e,y:-i},{x:r-e,y:-i},{x:r,y:0},{x:r-e,y:i},{x:-r+e,y:i},{x:-r,y:0}]}case`parallelogram`:{let e=n/2;return[{x:-r+e,y:-i},{x:r,y:-i},{x:r-e,y:i},{x:-r,y:i}]}case`parallelogram-alt`:{let e=n/2;return[{x:-r,y:-i},{x:r-e,y:-i},{x:r,y:i},{x:-r+e,y:i}]}case`trapezoid`:{let e=n/2;return[{x:-r+e,y:-i},{x:r-e,y:-i},{x:r,y:i},{x:-r,y:i}]}case`trapezoid-alt`:{let e=n/2;return[{x:-r,y:-i},{x:r,y:-i},{x:r-e,y:i},{x:-r+e,y:i}]}case`asymmetric`:{let e=n/2;return[{x:-r,y:-i},{x:r,y:-i},{x:r,y:i},{x:-r,y:i},{x:-r+e,y:0}]}default:return null}}function po(e,t,n){let r=t+32,i=n+18,a=ao[e];if(a!==void 0)return{width:Math.max(t+8,a+16),height:a+4+n};switch(e){case`usecase`:return{width:Math.max(t*1.42+20,80),height:Math.max(n*1.42+14,40)};case`component`:return{width:r+22,height:Math.max(i,40)};case`node`:return{width:r+10,height:i+10};case`cloud`:return{width:r+34,height:i+26};case`folder`:return{width:Math.max(r,60),height:i+10};case`frame`:return{width:r,height:i+18};case`artifact`:case`note`:case`file`:return{width:r+12,height:i};case`queue`:return{width:r+24,height:i};case`storage`:return{width:r+i/2,height:i};case`stack`:return{width:r,height:i+8};case`person`:return{width:Math.max(r,60),height:i+18};case`collections`:return{width:r+6,height:i+6};case`text`:return{width:t+8,height:n+4};case`start`:return{width:14,height:14};case`end`:return{width:18,height:18};case`fork`:return{width:70,height:8};case`choice`:return{width:28,height:28};case`circle`:{let e=Math.max(t,n)+18;return{width:e,height:e}}case`doublecircle`:{let e=Math.max(t,n)+18+10;return{width:e,height:e}}case`rhombus`:{let e=t+n+18;return{width:Math.max(e,40),height:Math.max(e*.75,40)}}case`hexagon`:return{width:r+i/2,height:i};case`parallelogram`:case`parallelogram-alt`:case`trapezoid`:case`trapezoid-alt`:return{width:r+i/2,height:i};case`asymmetric`:return{width:r+i/4,height:i};case`stadium`:return{width:r+i/2,height:i};case`subroutine`:return{width:r+16,height:i};case`cylinder`:return{width:r,height:i+16};default:return{width:r,height:i}}}function mo(e,t,n={}){let r=n.className??`dg-shape`,i=n.style,{x:a,y:o,width:s,height:c}=t,l=a-s/2,u=o-c/2,d=fo(e,s,c);if(d)return z(`polygon`,{class:r,style:i,points:co(uo(t,d))});switch(e){case`round`:return z(`rect`,{class:r,style:i,x:l,y:u,width:s,height:c,rx:6,ry:6});case`stadium`:return z(`rect`,{class:r,style:i,x:l,y:u,width:s,height:c,rx:c/2,ry:c/2});case`circle`:return z(`circle`,{class:r,style:i,cx:a,cy:o,r:s/2});case`doublecircle`:return z(`g`,{},[z(`circle`,{class:r,style:i,cx:a,cy:o,r:s/2}),z(`circle`,{class:r,style:i,cx:a,cy:o,r:s/2-5})]);case`subroutine`:return z(`g`,{},[z(`rect`,{class:r,style:i,x:l,y:u,width:s,height:c}),z(`line`,{class:r,style:i,x1:l+8,y1:u,x2:l+8,y2:u+c}),z(`line`,{class:r,style:i,x1:l+s-8,y1:u,x2:l+s-8,y2:u+c})]);case`cylinder`:{let e=s/2,t=new V().moveTo(l,u+8).arcTo(e,8,0,!1,!1,l+s,u+8).lineTo(l+s,u+c-8).arcTo(e,8,0,!1,!0,l,u+c-8).close(),n=new V().moveTo(l,u+8).arcTo(e,8,0,!1,!0,l+s,u+8);return z(`g`,{},[z(`path`,{class:r,style:i,d:t.toString()}),z(`path`,{class:r,style:i,d:n.toString(),"fill-opacity":0})])}case`start`:return z(`circle`,{class:`dg-state-start`,cx:a,cy:o,r:s/2});case`end`:return z(`g`,{},[z(`circle`,{class:`dg-state-end-ring`,cx:a,cy:o,r:s/2}),z(`circle`,{class:`dg-state-start`,cx:a,cy:o,r:s/2-4})]);case`fork`:return z(`rect`,{class:`dg-state-start`,x:l,y:u,width:s,height:c,rx:2});default:return ho(e,t,r,i)??z(`rect`,{class:r,style:i,x:l,y:u,width:s,height:c})}}function ho(e,t,n,r){let{x:i,y:a,width:o,height:s}=t,c=i-o/2,l=a-s/2,u=c+o,d=l+s,f=`${n} dg-shape-line`;switch(e){case`actor`:{let e=i,t=l+14+2,a=t+13,o=l+38;return z(`g`,{},[z(`circle`,{class:n,style:r,cx:e,cy:l+7+2,r:7}),z(`path`,{class:f,style:r,d:new V().moveTo(e,t).lineTo(e,a).moveTo(e-12,t+5).lineTo(e+12,t+5).moveTo(e,a).lineTo(e-10,o).moveTo(e,a).lineTo(e+10,o).toString()})])}case`interface`:return z(`circle`,{class:n,style:r,cx:i,cy:l+11,r:10});case`boundary`:return z(`g`,{},[z(`path`,{class:f,style:r,d:new V().moveTo(i-17,l+3).lineTo(i-17,l+27).moveTo(i-17,l+15).lineTo(i-8,l+15).toString()}),z(`circle`,{class:n,style:r,cx:i+4,cy:l+15,r:12})]);case`control`:return z(`g`,{},[z(`circle`,{class:n,style:r,cx:i,cy:l+17,r:12}),z(`path`,{class:f,style:r,d:new V().moveTo(i+5,l+1).lineTo(i-1,l+5).lineTo(i+5,l+9).toString()})]);case`entity`:return z(`g`,{},[z(`circle`,{class:n,style:r,cx:i,cy:l+13,r:12}),z(`line`,{class:f,style:r,x1:i-12,y1:l+28,x2:i+12,y2:l+28})]);case`usecase`:return z(`ellipse`,{class:n,style:r,cx:i,cy:a,rx:o/2,ry:s/2});case`component`:return z(`g`,{},[z(`rect`,{class:n,style:r,x:c,y:l,width:o,height:s,rx:2}),z(`rect`,{class:n,style:r,x:u-20,y:l+6,width:12,height:15,rx:1}),z(`rect`,{class:n,style:r,x:u-23,y:l+9,width:6,height:3}),z(`rect`,{class:n,style:r,x:u-23,y:l+15,width:6,height:3})]);case`node`:return z(`g`,{},[z(`path`,{class:n,style:r,d:new V().moveTo(c,l+10).lineTo(c+10,l).lineTo(u,l).lineTo(u,d-10).lineTo(u-10,d).lineTo(c,d).close().toString()}),z(`path`,{class:f,style:r,d:new V().moveTo(c,l+10).lineTo(u-10,l+10).lineTo(u,l).moveTo(u-10,l+10).lineTo(u-10,d).toString()})]);case`cloud`:{let e=new V().moveTo(c+o*.2,d-s*.1);return e.arcTo(o*.12,s*.18,0,!1,!0,c+o*.05,l+s*.55),e.arcTo(o*.14,s*.22,0,!1,!0,c+o*.25,l+s*.15),e.arcTo(o*.18,s*.22,0,!1,!0,c+o*.6,l+s*.1),e.arcTo(o*.16,s*.22,0,!1,!0,u-o*.05,l+s*.45),e.arcTo(o*.13,s*.2,0,!1,!0,u-o*.2,d-s*.1),e.close(),z(`path`,{class:n,style:r,d:e.toString()})}case`folder`:return z(`path`,{class:n,style:r,d:new V().moveTo(c,l+10).lineTo(c,d).lineTo(u,d).lineTo(u,l+10).lineTo(c+Math.min(o*.4,60)+6,l+10).lineTo(c+Math.min(o*.4,60),l).lineTo(c,l).close().toString()});case`frame`:return z(`g`,{},[z(`rect`,{class:n,style:r,x:c,y:l,width:o,height:s}),z(`path`,{class:f,style:r,d:new V().moveTo(c,l+14).lineTo(c+26,l+14).lineTo(c+32,l+8).lineTo(c+32,l).toString()})]);case`artifact`:case`file`:case`note`:return z(`g`,{},[z(`path`,{class:n,style:r,d:new V().moveTo(c,l).lineTo(u-10,l).lineTo(u,l+10).lineTo(u,d).lineTo(c,d).close().toString()}),z(`path`,{class:f,style:r,d:new V().moveTo(u-10,l).lineTo(u-10,l+10).lineTo(u,l+10).toString()})]);case`queue`:return z(`g`,{},[z(`path`,{class:n,style:r,d:new V().moveTo(c+8,l).lineTo(u-8,l).arcTo(8,s/2,0,!1,!0,u-8,d).lineTo(c+8,d).arcTo(8,s/2,0,!1,!0,c+8,l).close().toString()}),z(`path`,{class:f,style:r,d:new V().moveTo(u-8,l).arcTo(8,s/2,0,!1,!1,u-8,d).toString()})]);case`storage`:return z(`rect`,{class:n,style:r,x:c,y:l,width:o,height:s,rx:s/2,ry:s/2});case`stack`:return z(`g`,{},[z(`rect`,{class:n,style:r,x:c,y:l+8,width:o,height:s-8}),z(`path`,{class:f,style:r,d:new V().moveTo(c+4,l+8).lineTo(c+4,l+4).lineTo(u-4,l+4).lineTo(u-4,l+8).moveTo(c+8,l+4).lineTo(c+8,l).lineTo(u-8,l).lineTo(u-8,l+4).toString()})]);case`person`:return z(`g`,{},[z(`rect`,{class:n,style:r,x:c,y:l+16,width:o,height:s-16,rx:10}),z(`circle`,{class:n,style:r,cx:i,cy:l+9,r:9})]);case`collections`:return z(`g`,{},[z(`rect`,{class:n,style:r,x:c+6,y:l,width:o-6,height:s-6}),z(`rect`,{class:n,style:r,x:c,y:l+6,width:o-6,height:s-6})]);case`text`:return z(`g`,{});default:return null}}function go(e,t,n){let r=fo(e,t.width,t.height);if(r)return no(t,uo(t,r),n);switch(e){case`circle`:case`doublecircle`:case`start`:case`end`:case`usecase`:return to(t,t.width/2,t.height/2,n);default:return eo(t,n)}}var _o=class{constructor(){this.nodes=new Map,this.edges=[],this.outMap=new Map,this.inMap=new Map}addNode(e){let t={...e,rank:0,order:0,x:0,y:0};return this.nodes.set(t.id,t),this.outMap.set(t.id,[]),this.inMap.set(t.id,[]),t}node(e){let t=this.nodes.get(e);if(!t)throw Error(`Unknown node ${e}`);return t}addEdge(e){return this.edges.push(e),this.outMap.get(e.v).push(e),this.inMap.get(e.w).push(e),e}removeEdge(e){let t=t=>{let n=t.indexOf(e);n>=0&&t.splice(n,1)};t(this.edges),t(this.outMap.get(e.v)),t(this.inMap.get(e.w))}out(e){return this.outMap.get(e)??[]}in(e){return this.inMap.get(e)??[]}reindex(){for(let e of this.nodes.keys())this.outMap.set(e,[]),this.inMap.set(e,[]);for(let e of this.edges)this.outMap.get(e.v).push(e),this.inMap.get(e.w).push(e)}};function vo(e,t){let n=[],r=e;for(;r;)n.unshift(r),r=t.get(r)??null;return n}function yo(e){let t=[];for(let n of e.nodes.values())(t[n.rank]??=[]).push(n);for(let e=0;e<t.length;e++)t[e]??=[];return t}function bo(e,t){let n=new Set,r=t.map(()=>0),i=[...e.nodes.values()].sort((e,t)=>e.rank-t.rank);for(let t of i){if(n.has(t.id))continue;let i=[t];for(;i.length>0;){let t=i.pop();if(n.has(t.id))continue;n.add(t.id),t.order=r[t.rank]++;let a=e.out(t.id).map(t=>e.node(t.w));for(let e=a.length-1;e>=0;e--)n.has(a[e].id)||i.push(a[e])}}for(let e of t)e.sort((e,t)=>e.order-t.order)}function xo(e,t,n,r,i=!1){let a={cluster:null,nodes:[],children:new Map,items:[]};for(let t of e){let e=a;for(let r of vo(t.cluster,n)){let t=e.children.get(r);t||(t={cluster:r,nodes:[],children:new Map,items:[]},e.children.set(r,t),e.items.push(r)),e=t}e.nodes.push(t),e.items.push(t)}let o=new Map,s=e=>{let n=o.get(e);if(n!==void 0)return n;let r=0,i=0,a=e=>{for(let n of e.nodes)r+=t.get(n.id),i++;for(let t of e.children.values())a(t)};a(e);let s=i>0?r/i:0;return o.set(e,s),s},c=e=>{let n=e.items.map((n,r)=>({item:n,index:r,k:typeof n==`string`?s(e.children.get(n)):t.get(n.id)}));n.sort((e,t)=>e.k-t.k||(i?t.index-e.index:e.index-t.index));let a=n.flatMap((e,t)=>typeof e.item==`string`?[t]:[]),o=a.map(e=>n[e].item).sort((e,t)=>(r.get(e)??0)-(r.get(t)??0));a.forEach((e,t)=>{n[e].item=o[t]});let l=[];for(let t of n)typeof t.item==`string`?l.push(...c(e.children.get(t.item))):l.push(t.item);return l};return c(a)}function So(e,t,n){let r=new Map(n.map((e,t)=>[e.id,t])),i=[];t.forEach((t,n)=>{for(let a of e.out(t.id)){let e=r.get(a.w);e!==void 0&&i.push({u:n,l:e,w:a.weight||1})}}),i.sort((e,t)=>e.u-t.u||e.l-t.l);let a=1;for(;a<n.length;)a<<=1;let o=Array(2*a-1).fill(0);--a;let s=0;for(let e of i){let t=e.l+a;o[t]+=e.w;let n=0;for(;t>0;)t%2&&(n+=o[t+1]),t=t-1>>1,o[t]+=e.w;s+=e.w*n}return s}function Co(e,t,n,r){let i=e=>{let t=new Map;return e.forEach((e,n)=>{for(let i of vo(e.cluster,r)){let e=t.get(i);e?e.to=n:t.set(i,{from:n,to:n})}}),t},a=i(t),o=i(n);if(a.size===0||o.size===0)return 0;let s=new Map(n.map((e,t)=>[e.id,t])),c=0;return t.forEach((t,n)=>{for(let r of e.out(t.id)){let e=s.get(r.w);if(e!==void 0)for(let[t,r]of a){let i=o.get(t);i&&(n<r.from&&e>i.to||n>r.to&&e<i.from)&&(c+=2)}}}),c}function wo(e,t,n=new Map){let r=0;for(let i=0;i+1<t.length;i++)r+=So(e,t[i],t[i+1]),n.size>0&&(r+=Co(e,t[i],t[i+1],n));return r}function To(e,t){let n=new Map,r=new Map;for(let i of e)i.forEach((e,a)=>{let o=i.length>1?a/(i.length-1):.5;for(let i of vo(e.cluster,t))n.set(i,(n.get(i)??0)+o),r.set(i,(r.get(i)??0)+1)});let i=new Map;for(let[e,t]of n)i.set(e,t/r.get(e));return i}function Eo(e,t){let n=(e,t)=>{let n=0;for(let r of e)for(let e of t)r.order>e.order&&(n+=r.w*e.w);return n},r=t=>({up:e.in(t.id).map(t=>({order:e.node(t.v).order,w:t.weight||1})),down:e.out(t.id).map(t=>({order:e.node(t.w).order,w:t.weight||1}))}),i=(e,t)=>n(e.up,t.up)+n(e.down,t.down);for(let e=0;e<8;e++){let e=!1;for(let n of t)if(!(n.length<2)){for(let t=0;t+1<n.length;t++){let a=n[t],o=n[t+1];if(a.cluster!==o.cluster)continue;let s=r(a),c=r(o);i(c,s)<i(s,c)&&(n[t]=o,n[t+1]=a,e=!0)}n.forEach((e,t)=>e.order=t)}if(!e)break}}function Do(e,t,n=24,r=!1){let i=yo(e);bo(e,i);let a=To(i,t);for(let e=0;e<i.length;e++){let n=new Map(i[e].map((e,t)=>[e.id,t]));i[e]=xo(i[e],n,t,a)}let o=e=>e.forEach(e=>e.forEach((e,t)=>e.order=t));o(i),r&&Eo(e,i);let s=i.map(e=>e.slice()),c=wo(e,i,t),l=0;for(let o=0;o<n&&c>0&&l<4;o++){let n=o%2==0,u=r&&o%4>=2,d=n?Array.from({length:i.length-1},(e,t)=>t+1):Array.from({length:i.length-1},(e,t)=>i.length-2-t),f=n?0:i.length-1,p=new Map(i[f].map((e,t)=>[e.id,t]));i[f]=xo(i[f],p,t,a),i[f].forEach((e,t)=>e.order=t);for(let r of d){let o=i[r],s=new Map;for(let t of o){let r=n?e.in(t.id).map(t=>({order:e.node(t.v).order,w:t.weight||1})):e.out(t.id).map(t=>({order:e.node(t.w).order,w:t.weight||1}));if(r.length===0)s.set(t.id,t.order);else{let e=0,n=0;for(let t of r)e+=t.order*t.w,n+=t.w;s.set(t.id,e/n)}}i[r]=xo(o,s,t,a,u),i[r].forEach((e,t)=>e.order=t)}r&&Eo(e,i),a=To(i,t);let m=wo(e,i,t);m<c?(c=m,s=i.map(e=>e.slice()),l=0):l++}return o(s),s}function Oo(e){return e.dummy===`edge`||e.dummy===`label`||e.dummy===`spine`}function ko(e,t,n){let r=Oo(e)&&Oo(t)?n.edgeSep:Oo(e)||Oo(t)?(n.nodeSep+n.edgeSep)/2:n.nodeSep;return e.width/2+r+t.width/2}function Ao(e,t){let n=0;e.forEach((r,i)=>{n=i===0?r.width/2:n+ko(e[i-1],r,t),r.x=n})}function jo(e){let t=e.slice().sort((e,t)=>e-t),n=t.length>>1;return t.length%2?t[n]:(t[n-1]+t[n])/2}function Mo(e,t,n,r){let i=Array(e.length).fill(!1),a=e.map((e,t)=>t).sort((t,r)=>n.get(e[r].id)-n.get(e[t].id)||t-r);for(let n of a){let a=e[n],o=t.get(a.id);if(o===void 0)i[n]=!0;else{if(o>a.x){let t=1/0,s=0;for(let a=n+1;a<e.length;a++)if(s+=ko(e[a-1],e[a],r),i[a]){t=e[a].x-s;break}let c=Math.min(o,t);if(c>a.x){a.x=c;for(let t=n+1;t<e.length;t++){let n=e[t-1].x+ko(e[t-1],e[t],r);if(e[t].x>=n)break;e[t].x=n}}}else if(o<a.x){let t=-1/0,s=0;for(let a=n-1;a>=0;a--)if(s+=ko(e[a],e[a+1],r),i[a]){t=e[a].x+s;break}let c=Math.max(o,t);if(c<a.x){a.x=c;for(let t=n-1;t>=0;t--){let n=e[t+1].x-ko(e[t],e[t+1],r);if(e[t].x<=n)break;e[t].x=n}}}i[n]=!0}}}function No(e,t,n,r=4){for(let e of t)Ao(e,n);let i=r=>{let i=r?Array.from({length:t.length-1},(e,t)=>t+1):Array.from({length:t.length-1},(e,n)=>t.length-2-n);for(let a of i){let i=t[a],o=new Map,s=new Map;for(let t of i){let n=r?e.in(t.id).map(t=>e.node(t.v)):e.out(t.id).map(t=>e.node(t.w));n.length>0&&o.set(t.id,jo(n.map(e=>e.x)));let i=Oo(t)&&n.some(Oo)?1e6:n.length;s.set(t.id,i)}Mo(i,o,s,n)}};for(let e=0;e<r;e++)i(!0),i(!1);for(let r=0;r<t.length;r++){let i=t[r],a=new Map,o=new Map;for(let t of i){let n=[...e.in(t.id).map(t=>e.node(t.v)),...e.out(t.id).map(t=>e.node(t.w))];n.length>0&&a.set(t.id,jo(n.map(e=>e.x))),o.set(t.id,Oo(t)?1e6:n.length)}Mo(i,a,o,n)}}function Po(e,t,n,r){No(e,t,r),Ro(e,t,n,r);let i=1/0;for(let t of e.nodes.values())i=Math.min(i,t.x-t.width/2);if(Number.isFinite(i))for(let t of e.nodes.values())t.x-=i;let a=0;t.forEach((e,t)=>{let n=0;for(let t of e)n=Math.max(n,t.height);t>0&&(a+=r.rankSep/2);for(let t of e)t.y=a+n/2;a+=n})}function Fo(e,t){let n=new Map;for(let r of e.nodes.values()){let e=r.cluster;for(;;){let i=n.get(e)??[];if(i.push(r),n.set(e,i),e===null)break;e=t.get(e)??null}}return n}function Io(e){let t=new Map;for(let[n,r]of e){let e=t.get(r)??[];e.push(n),t.set(r,e)}return t}function Lo(e,t,n,r){let i=Io(t),a=new Map;for(let t of e.nodes.values()){if(t.cluster===null)continue;let e=a.get(t.cluster)??[];e.push(t),a.set(t.cluster,e)}let o=new Map,s=e=>{let t=o.get(e);if(t)return t;let c=1/0,l=-1/0;for(let t of a.get(e)??[])c=Math.min(c,t.x-t.width/2),l=Math.max(l,t.x+t.width/2);for(let t of i.get(e)??[]){let e=s(t);c=Math.min(c,e.left),l=Math.max(l,e.right)}Number.isFinite(c)||(c=0,l=0);let u={left:c-n-(r?.get(e)??0),right:l+n};return o.set(e,u),u};for(let e of t.keys())s(e);return o}function Ro(e,t,n,r){if(n.size===0)return;let i=Io(n),a=Fo(e,n),o=(e,t)=>{let r=e.cluster,i=null;for(;r!==t;){if(r===null)return null;i=r,r=n.get(r)??null}return i??e.id},s=c=>{for(let e of i.get(c)??[])s(e);let l=Lo(e,n,r.clusterPadding,r.frameLeft),u=new Map;for(let e of a.get(c)??[]){let t=o(e,c);if(!(t===null||u.has(t))){if(t===e.id)u.set(t,{cluster:!1,left:e.x-e.width/2,right:e.x+e.width/2,dummy:Oo(e)});else{let e=l.get(t);u.set(t,{cluster:!0,left:e.left,right:e.right,dummy:!1})}}}let d=new Map,f=new Map([...u.keys()].map(e=>[e,0]));for(let e of t){let t=null;for(let n of e){let e=o(n,c);if(e!==null&&e!==t){if(t!==null){let n=u.get(t),i=u.get(e),a=n.dummy&&i.dummy?r.edgeSep:n.dummy||i.dummy?(r.nodeSep+r.edgeSep)/2:r.nodeSep,o=d.get(t)??new Map;o.has(e)||f.set(e,f.get(e)+1),o.set(e,Math.max(o.get(e)??-1/0,n.right-n.left+a)),d.set(t,o)}t=e}}}let p=new Map([...u].map(([e,t])=>[e,t.left])),m=[...u.keys()].filter(e=>f.get(e)===0);for(;m.length>0;){let e=m.shift();for(let[t,n]of d.get(e)??[])p.set(t,Math.max(p.get(t),p.get(e)+n)),f.set(t,f.get(t)-1),f.get(t)===0&&m.push(t)}for(let[t,n]of u){let r=p.get(t)-n.left;if(r!==0){if(n.cluster)for(let e of a.get(t)??[])e.x+=r;else e.node(t).x+=r}}};s(null)}function zo(e){let t=new Map,n=[];for(let r of e.nodes.keys()){if(t.get(r))continue;let i=[{id:r,i:0}];for(t.set(r,1);i.length>0;){let r=i[i.length-1],a=e.out(r.id);if(r.i<a.length){let e=a[r.i++],o=t.get(e.w)??0;o===1?n.push(e):o===0&&(t.set(e.w,1),i.push({id:e.w,i:0}))}else t.set(r.id,2),i.pop()}}for(let e of n){let t=e.v;e.v=e.w,e.w=t,e.reversed=!e.reversed}n.length>0&&e.reindex()}function Bo(e,t){let n=new Set(t),r=new Map;for(let t of e.edges){if(!n.has(t.v)||t.v===t.w)continue;let e=`${t.v}\u0000${t.w}`,i=r.get(e);i?(i.weight+=t.weight,i.minlen=Math.max(i.minlen,t.minlen)):r.set(e,{v:t.v,w:t.w,minlen:t.minlen,weight:t.weight})}return{nodes:[...t],edges:[...r.values()]}}function Vo(e){let t=new Set,n=[];for(let r of e.nodes.keys()){if(t.has(r))continue;let i=[],a=[r];for(t.add(r);a.length>0;){let n=a.shift();i.push(n);for(let r of[...e.out(n),...e.in(n)]){let e=r.v===n?r.w:r.v;t.has(e)||(t.add(e),a.push(e))}}n.push(i)}return n}function Ho(e,t){let n=new Map(t.map(t=>[t,e.in(t).length])),r=t.filter(e=>n.get(e)===0);for(;r.length>0;){let t=r.shift(),i=e.in(t),a=e.out(t);if(i.length>0&&i.reduce((e,t)=>e+t.weight,0)>=a.reduce((e,t)=>e+t.weight,0)){let n=-1/0;for(let t of i)n=Math.max(n,e.node(t.v).rank+t.minlen);let r=e.node(t);n<r.rank&&(r.rank=n)}for(let e of a)n.set(e.w,n.get(e.w)-1),n.get(e.w)===0&&r.push(e.w)}}function Uo(e,t=2e3){for(let n of Vo(e)){let{nodes:r,edges:i}=Bo(e,n),a=Wo(r,i,t),o=1/0;for(let e of a.values())o=Math.min(o,e);for(let[t,n]of a)e.node(t).rank=n-o;Ho(e,n);let s=1/0;for(let t of n)s=Math.min(s,e.node(t).rank);for(let t of n)e.node(t).rank-=s}}function Wo(e,t,n){let r=new Map,i=new Map;for(let t of e)r.set(t,[]),i.set(t,[]);for(let e of t)r.get(e.v).push(e),i.get(e.w).push(e);let a=(e,t)=>`${e}\u0000${t}`,o=new Map(t.map(e=>[a(e.v,e.w),e])),s=(e,t)=>o.get(a(e,t)),c=new Map,l=e=>{let t=[{id:e,i:0}],n=new Set([e]);for(;t.length>0;){let e=t[t.length-1],i=r.get(e.id);if(e.i<i.length){let r=i[e.i++];!c.has(r.w)&&!n.has(r.w)&&(n.add(r.w),t.push({id:r.w,i:0}))}else{let n=1/0;for(let e of i)n=Math.min(n,c.get(e.w)-e.minlen);c.set(e.id,n===1/0?0:n),t.pop()}}};for(let t of e)c.has(t)||l(t);if(e.length<=1||t.length===0)return c;let u=e=>c.get(e.w)-c.get(e.v)-e.minlen,d=new Map,f=(e,t)=>{d.get(e).add(t),d.get(t).add(e)},p=()=>{let e=[...d.keys()];for(;e.length>0;){let t=e.pop();for(let n of[...r.get(t),...i.get(t)]){let r=n.v===t?n.w:n.v;!d.has(r)&&u(n)===0&&(d.set(r,new Set),f(t,r),e.push(r))}}return d.size};for(d.set(e[0],new Set);p()<e.length;){let e=null,n=1/0;for(let r of t)if(d.has(r.v)!==d.has(r.w)){let t=u(r);t<n&&(n=t,e=r)}if(!e)break;let r=d.has(e.v)?n:-n;for(let e of d.keys())c.set(e,c.get(e)+r)}let m=e[0],h=new Map,g=new Map,_=new Map,v=new Map,y=(e,t)=>e<t?a(e,t):a(t,e),b=()=>{h.clear(),g.clear(),_.clear();let e=1,t=[];_.set(m,void 0),t.push({id:m,it:d.get(m).values(),low:e});let n=new Set([m]);for(;t.length>0;){let r=t[t.length-1],i=r.it.next();if(i.done)h.set(r.id,r.low),g.set(r.id,e++),t.pop();else{let a=i.value;n.has(a)||(n.add(a),_.set(a,r.id),t.push({id:a,it:d.get(a).values(),low:e}))}}},x=()=>[...g.entries()].sort((e,t)=>e[1]-t[1]).map(([e])=>e),S=e=>{let t=_.get(e),n=!0,a=s(e,t);a||=(n=!1,s(t,e));let o=a.weight;for(let a of[...r.get(e),...i.get(e)]){let r=a.v===e,i=r?a.w:a.v;if(i===t)continue;let s=r===n;if(o+=s?a.weight:-a.weight,d.get(e).has(i)){let t=v.get(y(e,i))??0;o+=s?-t:t}}return o},C=()=>{v.clear();for(let e of x()){let t=_.get(e);t!==void 0&&v.set(y(e,t),S(e))}},w=()=>{let e=[...g.entries()].sort((e,t)=>t[1]-e[1]).map(([e])=>e);for(let t of e){let e=_.get(t);if(e===void 0)continue;let n=s(t,e);n?c.set(t,c.get(e)-n.minlen):c.set(t,c.get(e)+s(e,t).minlen)}},T=(e,t)=>h.get(t)<=g.get(e)&&g.get(e)<=g.get(t);b(),C();for(let e=0;e<n;e++){let e=null;for(let[t,n]of _)if(n!==void 0&&(v.get(y(t,n))??0)<0){e=s(t,n)?{v:t,w:n}:{v:n,w:t};break}if(!e)break;let n=e.v,r=!1;g.get(e.v)>g.get(e.w)&&(n=e.w,r=!0);let i=null,a=1/0;for(let e of t)if(r===T(e.v,n)&&r!==T(e.w,n)){let t=u(e);t<a&&(a=t,i=e)}if(!i)break;d.get(e.v).delete(e.w),d.get(e.w).delete(e.v),f(i.v,i.w),b(),C(),w()}return c}var Go=2e3,Ko=22;function qo(e){let t=e.direction??`TB`,n=t===`LR`||t===`RL`,r={nodeSep:e.nodeSep??50,rankSep:e.rankSep??50,edgeSep:e.edgeSep??20,clusterPadding:e.clusterPadding??12};if(e.nodes.length>500)throw Te(`nodes`,e.nodes.length,500);if(e.edges.length>2e3)throw Te(`edges`,e.edges.length,Go);let i=(e,t)=>n?{width:t,height:e}:{width:e,height:t},a=new _o,o=new Map((e.clusters??[]).map(e=>[e.id,e])),s=new Map;for(let e of o.values()){if(e.parent!==void 0&&!o.has(e.parent))throw new I(`Cluster "${e.id}" is inside an unknown cluster "${e.parent}"`);s.set(e.id,e.parent??null)}for(let e of o.keys()){let t=s.get(e)??null,n=0;for(;t!==null;){if(t===e||++n>o.size)throw new I(`Cluster "${e}" contains itself`);t=s.get(t)??null}}let c=e.edges.filter(e=>e.from===e.to&&!o.has(e.from)),l=new Map;for(let e of c){let t=e.label?(n?e.label.height:e.label.width)+6:0;l.set(e.from,Math.max(l.get(e.from)??0,Ko+t))}for(let t of e.nodes){if(a.nodes.has(t.id))continue;let e=i(t.width,t.height),n=l.get(t.id)??0;if(t.cluster!==void 0&&!o.has(t.cluster))throw new I(`Node "${t.id}" is inside an unknown cluster "${t.cluster}"`);a.addNode({id:t.id,width:e.width+n*2,height:e.height,cluster:t.cluster??null})}let u=e=>`\u0000top:${e}`,d=e=>`\u0000bottom:${e}`,f=new Map,p=new Map;r.frameLeft=p;for(let e of o.values()){let i=e.label??{width:0,height:0},o=i.height>0?i.height+6:0;f.set(e.id,o),n&&p.set(e.id,o);let s=t===`TB`?`top`:t===`BT`?`bottom`:null;a.addNode({id:u(e.id),width:s===`top`?i.width+2*r.clusterPadding:0,height:s===`top`?o:0,cluster:e.id,dummy:`border-top`}),a.addNode({id:d(e.id),width:s===`bottom`?i.width+2*r.clusterPadding:0,height:s===`bottom`?o:0,cluster:e.id,dummy:`border-bottom`})}let m=0,h=(e,t)=>a.addEdge({id:`\u0000s${m++}`,v:e,w:t,minlen:1,weight:1,original:``,reversed:!1,structural:!0});for(let e of o.keys()){let t=[...a.nodes.values()].filter(t=>t.cluster===e&&!t.dummy),n=[...o.values()].filter(t=>(t.parent??null)===e);for(let n of t)h(u(e),n.id),h(n.id,d(e));for(let t of n)h(u(e),u(t.id)),h(d(t.id),d(e));t.length===0&&n.length===0&&h(u(e),d(e))}let g=t=>{let n=[];for(let r of e.nodes)r.cluster===t&&n.push(r.id);for(let e of o.values())(e.parent??null)===t&&n.push(...g(e.id));return n},_=(e,t)=>{if(o.has(e)){let n=g(e);return n.length===0?t?d(e):u(e):t?n[n.length-1]:n[0]}if(!a.nodes.has(e))throw new I(`Edge refers to an unknown node "${e}"`);return e},v=new Map,y=e=>{let t=0;for(let n=e;n!==null;n=s.get(n)??null)t++;return t},b=(e,t)=>{if(!n)return 0;let r=a.node(e).cluster,i=a.node(t).cluster,o=Qo(r,i,s);return+(y(r)>y(o)&&y(i)>y(o))};for(let t of e.edges){if(t.from===t.to&&!o.has(t.from))continue;let e=_(t.from,!0),n=_(t.to,!1);e!==n&&(t.label&&v.set(t.id,i(t.label.width,t.label.height)),a.addEdge({id:t.id,v:e,w:n,minlen:Math.max(1,t.minlen??1)*2+b(e,n),weight:t.weight??1,original:t.id,reversed:!1}))}zo(a),Uo(a),$o(a,o.keys(),u,d);for(let e of a.edges.slice())e.structural&&a.node(e.w).rank-a.node(e.v).rank!==1&&a.removeEdge(e);let x=new Map,S=0,C=e=>{let t=a.node(e);return t.dummy===`border-top`||t.dummy===`border-bottom`?s.get(t.cluster)??null:t.cluster};for(let e of a.edges.slice()){if(e.structural)continue;let t=a.node(e.v),n=a.node(e.w),r=Qo(C(t.id),C(n.id),s),i=[t.id],o=n.rank-t.rank,c=v.get(e.original),l=t.rank+Math.floor(o/2);a.removeEdge(e);let u=t.id;for(let o=t.rank+1;o<n.rank;o++){let t=!!c&&o===l,n=a.addNode({id:`\u0000d${S++}`,width:t?c.width:0,height:t?c.height:0,cluster:r,dummy:t?`label`:`edge`,edge:e.original});n.rank=o,a.addEdge({id:`${e.id}#${o}`,v:u,w:n.id,minlen:1,weight:e.weight,original:e.original,reversed:e.reversed}),i.push(n.id),u=n.id}a.addEdge({id:`${e.id}#end`,v:u,w:n.id,minlen:1,weight:e.weight,original:e.original,reversed:e.reversed}),i.push(n.id),x.set(e.original,e.reversed?i.reverse():i)}es(a,o.keys(),s,u,d),Po(a,Do(a,s,24,e.transpose??!1),s,r);let w=Lo(a,s,r.clusterPadding,r.frameLeft),T=new Map,E=new Map;for(let e of a.nodes.values()){let t=e.cluster;for(;t!==null;){let n=E.get(t)??[];n.push(e),E.set(t,n),t=s.get(t)??null}}let D=e=>{let t=0,n=s.get(e)??null;for(;n!==null;)t++,n=s.get(n)??null;return t},ee=[...o.keys()].sort((e,t)=>D(t)-D(e)),O=new Map;for(let e of ee){let n=1/0,i=-1/0;for(let t of E.get(e)??[])n=Math.min(n,t.y-t.height/2),i=Math.max(i,t.y+t.height/2);for(let t of o.values()){if((t.parent??null)!==e)continue;let r=O.get(t.id);r&&(n=Math.min(n,r.top),i=Math.max(i,r.bottom))}let a=r.clusterPadding;O.set(e,{top:n-(t===`TB`?0:a),bottom:i+(t===`BT`?0:a)})}for(let e of o.keys()){let t=w.get(e),n=O.get(e),r=t.left;T.set(e,{x:(r+t.right)/2,y:(n.top+n.bottom)/2,width:t.right-r,height:n.bottom-n.top})}let k=0,A=0,j=0,M=0;for(let e of a.nodes.values())k=Math.max(k,e.x+e.width/2),A=Math.max(A,e.y+e.height/2);for(let e of T.values())j=Math.min(j,e.x-e.width/2),M=Math.min(M,e.y-e.height/2),k=Math.max(k,e.x+e.width/2),A=Math.max(A,e.y+e.height/2);let N=k-j,te=A-M,P=e=>{let n=e.x-j,r=e.y-M;switch(t){case`BT`:return{x:n,y:te-r};case`LR`:return{x:r,y:n};case`RL`:return{x:te-r,y:n};default:return{x:n,y:r}}},ne=e=>{let t=P(e);return n?{x:t.x,y:t.y,width:e.height,height:e.width}:{...t,width:e.width,height:e.height}},re=new Map;for(let t of e.nodes){let e=P(a.node(t.id));re.set(t.id,{x:e.x,y:e.y,width:t.width,height:t.height})}let F=new Map;for(let[e,t]of T)F.set(e,ne(t));let ie=new Map;for(let n of e.edges){if(n.from===n.to&&!o.has(n.from)){ie.set(n.id,ts(re.get(n.from),t,n.label));continue}let e=x.get(n.id);if(!e){ie.set(n.id,{points:[]});continue}let r=e.slice(1,-1).map(e=>a.node(e)),i={points:r.map(e=>P(e))},s=r.find(e=>e.dummy===`label`);s&&(i.label=P(s)),(o.has(n.from)||o.has(n.to))&&Xo(i,P(a.node(e[0])),P(a.node(e[e.length-1])),{from:o.has(n.from)?F.get(n.from):void 0,to:o.has(n.to)?F.get(n.to):void 0}),ie.set(n.id,i)}return{width:n?te:N,height:n?N:te,nodes:re,clusters:F,edges:ie}}function Jo(e,t){return Math.abs(t.x-e.x)<=e.width/2&&Math.abs(t.y-e.y)<=e.height/2}function Yo(e,t,n){let r=0,i=1;for(let a=0;a<30;a++){let a=(r+i)/2;Jo(e,{x:t.x+(n.x-t.x)*a,y:t.y+(n.y-t.y)*a})?i=a:r=a}return{x:t.x+(n.x-t.x)*i,y:t.y+(n.y-t.y)*i}}function Xo(e,t,n,r){let i=[t,...e.points,n];if(r.to&&!Jo(r.to,t)){for(let e=1;e<i.length;e++)if(Jo(r.to,i[e])){let t=Yo(r.to,i[e-1],i[e]);i=[...i.slice(0,e),t];break}e.end=i[i.length-1]}if(r.from&&!Jo(r.from,i[i.length-1])){for(let e=i.length-2;e>=0;e--)if(Jo(r.from,i[e])){i=[Yo(r.from,i[e+1],i[e]),...i.slice(e+1)];break}e.start=i[0]}e.points=i.slice(1,-1)}function Zo(e){let t=e.clusters??[];if(t.length===0)return qo(e);let n=new Map(t.map(e=>[e.id,e.parent??null])),r=(e,r)=>{let i=e??null,a=0;for(;i!==null&&a++<=t.length;){if(i===r)return!0;i=n.get(i)??null}return!1},i=new Map(e.nodes.map(e=>[e.id,e.cluster??null])),a=e=>n.has(e)?{cluster:e,isCluster:!0}:{cluster:i.get(e)??null,isCluster:!1},o=t=>{for(let n of e.edges){let e=a(n.from),i=a(n.to),o=e.isCluster?r(e.cluster,t)&&e.cluster!==t:r(e.cluster,t);if(o!==(i.isCluster?r(i.cluster,t)&&i.cluster!==t:r(i.cluster,t))){let n=o?i:e;if(!(n.isCluster&&n.cluster===t))return!1}}return!0},s=t.filter(e=>o(e.id)&&!t.some(t=>t.id!==e.id&&r(e.id,t.id)&&o(t.id)));if(s.length===0)return qo(e);let c=e.clusterPadding??12,l=e.direction??`TB`,u=new Map,d=new Set,f=new Set,p=new Set;for(let n of s){let i={...e,direction:n.direction??l,nodes:e.nodes.filter(e=>r(e.cluster,n.id)).map(e=>({...e,cluster:e.cluster===n.id?void 0:e.cluster})),clusters:t.filter(e=>e.id!==n.id&&r(e.id,n.id)).map(e=>({...e,parent:e.parent===n.id?void 0:e.parent})),edges:e.edges.filter(e=>{let t=a(e.from),i=a(e.to),o=r(t.cluster,n.id)&&!(t.isCluster&&t.cluster===n.id),s=r(i.cluster,n.id)&&!(i.isCluster&&i.cluster===n.id);return o&&s})};for(let e of i.nodes)d.add(e.id);for(let e of i.clusters??[])f.add(e.id);f.add(n.id);for(let e of i.edges)p.add(e.id);let o=Zo(i),s=n.label&&n.label.height>0?n.label.height+6:0,m=Math.max(o.width,n.label?.width??0)+c*2,h=o.height+c*2+s;u.set(n.id,{result:o,title:s,width:m,height:h})}let m=Zo({...e,nodes:[...e.nodes.filter(e=>!d.has(e.id)),...s.map(e=>({id:e.id,width:u.get(e.id).width,height:u.get(e.id).height,cluster:e.parent}))],clusters:t.filter(e=>!f.has(e.id)),edges:e.edges.filter(e=>!p.has(e.id))});for(let e of s){let t=m.nodes.get(e.id);m.nodes.delete(e.id),m.clusters.set(e.id,t);let{result:n,title:r}=u.get(e.id),i=t.x-t.width/2+(t.width-n.width)/2,a=t.y-t.height/2+c+r,o=e=>({x:e.x+i,y:e.y+a});for(let[e,t]of n.nodes)m.nodes.set(e,{...t,...o(t)});for(let[e,t]of n.clusters)m.clusters.set(e,{...t,...o(t)});for(let[e,t]of n.edges)m.edges.set(e,{...t,points:t.points.map(o),label:t.label&&o(t.label),start:t.start&&o(t.start),end:t.end&&o(t.end)})}return m}function Qo(e,t,n){let r=e=>{let t=[];for(;e!==null;)t.push(e),e=n.get(e)??null;return t},i=new Set(r(e));for(let e of r(t))if(i.has(e))return e;return null}function $o(e,t,n,r){let i=[...t];for(let t=0;t<i.length+1;t++){let t=!1;for(let a of i){let i=e.node(n(a)),o=e.node(r(a)),s=e.out(i.id).map(t=>e.node(t.w).rank),c=e.in(o.id).map(t=>e.node(t.v).rank),l=e.in(i.id).map(t=>e.node(t.v).rank+t.minlen),u=e.out(o.id).map(t=>e.node(t.w).rank-t.minlen);if(s.length>0){let e=Math.min(...s)-1,n=l.length>0?Math.max(...l):-1/0,r=Math.max(e,n);r!==i.rank&&r<=Math.min(...s)-1&&(i.rank=r,t=!0)}if(c.length>0){let e=Math.max(...c)+1,n=u.length>0?Math.min(...u):1/0,r=Math.min(e,n);r!==o.rank&&r>=Math.max(...c)+1&&(o.rank=r,t=!0)}}if(!t)break}}function es(e,t,n,r,i){let a=new Map;for(let t of e.nodes.values()){let e=t.cluster;for(;e!==null;){let r=a.get(e);r||a.set(e,r=new Set),r.add(t.rank),e=n.get(e)??null}}let o=0;for(let s of t){let t=e.node(r(s)).rank,c=e.node(i(s)).rank,l=a.get(s)??new Set;for(let r=t+1;r<c;r++){if(l.has(r))continue;let t=e.addNode({id:`\u0000spine${o++}`,width:0,height:0,cluster:s,dummy:`spine`});t.rank=r;let i=s;for(;i!==null;){let e=a.get(i);e||a.set(i,e=new Set),e.add(r),i=n.get(i)??null}}}}function ts(e,t,n){let r=t===`LR`||t===`RL`,i=Ko;if(!r){let t=e.x+e.width/2,r=e.y-e.height/4,a=e.y+e.height/4;return{selfLoop:!0,points:[{x:t,y:r},{x:t+i,y:r-4},{x:t+i,y:a+4},{x:t,y:a}],label:n?{x:t+i+4+n.width/2,y:e.y}:void 0}}let a=e.y+e.height/2,o=e.x-e.width/4,s=e.x+e.width/4;return{selfLoop:!0,points:[{x:o,y:a},{x:o-4,y:a+i},{x:s+4,y:a+i},{x:s,y:a}],label:n?{x:e.x,y:a+i+4+n.height/2}:void 0}}var ns=new Set([`actor`,`boundary`,`control`,`entity`,`node`,`frame`,`artifact`,`note`,`file`,`queue`,`stack`]),rs=200;function is(e,t,n,r=L){let i=J(e,{markdown:t});return t&&(i=on(i,rs,r,n)),Y(i,r,n)}function as(e){return e===`none`?null:e}function os(e,t,n){return Ke(n.get(`default`),...e.map(e=>n.get(e)),t)}function ss(e,t,n,r){let i=new Map,a=new Map;for(let n of e.nodes.values()){let e=is(n.text,n.markdown,t);i.set(n.id,e),a.set(n.id,po(n.shape,e.width,Math.max(e.height,L.size*1.25)))}let o={...L,weight:`bold`},s=new Map;for(let n of e.subgraphs.values())n.title.trim()!==``&&s.set(n.id,is(n.title,n.markdown,t,o));let c=new Map,l=e.edges.map((e,n)=>{let r;if(e.text!==void 0&&e.text!==``){let i=is(e.text,e.markdown,t);nn(i.label)||(c.set(n,i),r={width:i.width+8,height:i.height+4})}return{id:String(n),from:e.from,to:e.to,minlen:e.length,label:r}}),u=Zo({direction:e.direction,nodes:[...e.nodes.values()].map(e=>({id:e.id,...a.get(e.id),cluster:e.subgraph})),edges:l,clusters:[...e.subgraphs.values()].map(e=>{let t=s.get(e.id);return{id:e.id,parent:e.parent,direction:e.direction,label:t?{width:t.width,height:t.height}:void 0}}),nodeSep:50,rankSep:50,clusterPadding:14}),d=t=>{let n=0,r=e.subgraphs.get(t)?.parent;for(;r;)n++,r=e.subgraphs.get(r)?.parent;return n},f=[...e.subgraphs.values()].sort((e,t)=>d(e.id)-d(t.id)).map(t=>{let n=u.clusters.get(t.id),r=os(t.classes,t.style,e.classDefs),i=s.get(t.id),a=t.kind===`folder`||t.kind===`node`?14:t.kind===`cloud`?12:t.kind===`frame`?2:6;return z(`g`,{class:`dg-cluster`,"data-id":t.id},[t.kind&&t.kind!==`rect`?mo(t.kind,n,{className:`dg-cluster-box`,style:W(r.shape)}):z(`rect`,{class:`dg-cluster-box`,x:n.x-n.width/2,y:n.y-n.height/2,width:n.width,height:n.height,rx:4,style:W(r.shape)}),i?X(i,t.kind===`frame`?n.x-n.width/2+40+i.width/2:n.x,n.y-n.height/2+a+i.height/2,{className:`dg-cluster-label`,style:W(r.text)}):null])}),p=t=>{let n=e.nodes.get(t);if(n){let e=u.nodes.get(t);return{box:e,clip:t=>go(n.shape,e,t)}}let r=u.clusters.get(t);return{box:r,clip:e=>go(`rect`,r,e)}},m=[],h=[],g=[];e.edges.forEach((e,t)=>{let r=u.edges.get(String(t));if(!r||e.stroke===`invisible`)return;let i;if(r.selfLoop)i=r.points;else{let t=p(e.from),n=p(e.to),a=r.points[0]??n.box,o=r.points[r.points.length-1]??t.box;i=[r.start??t.clip(a),...r.points,r.end??n.clip(o)]}let a=e.style??{shape:{},text:{}},o=as(e.start),s=as(e.end);o&&m.push(o),s&&m.push(s);let l=[`dg-edge`,e.stroke===`thick`?`dg-edge-thick`:``,e.stroke===`dotted`?`dg-edge-dotted`:``].filter(Boolean).join(` `);h.push(z(`path`,{class:l,d:io(i),"marker-start":o?`url(#${ia(n,o,!0)})`:void 0,"marker-end":s?`url(#${ia(n,s)})`:void 0,style:W(a.shape),"data-from":e.from,"data-to":e.to}));let d=c.get(t);if(d&&r.label){let e=d.width+8,t=d.height+4;g.push(z(`g`,{class:`dg-edge-label-group`},[z(`rect`,{class:`dg-edge-label-box`,x:r.label.x-e/2,y:r.label.y-t/2,width:e,height:t,rx:3}),X(d,r.label.x,r.label.y,{className:`dg-edge-label`,style:W(a.text)})]))}});let _=[...e.nodes.values()].map(t=>{let n=u.nodes.get(t.id);if(!n)throw new I(`Node "${t.id}" was not laid out`);let r=os(t.classes,t.style,e.classDefs),a=[`dg-node`,...t.classes.map(e=>`dg-class-${e.replace(/[^\w-]/g,``)}`)].join(` `),o=i.get(t.id),s=so(t.shape,n,o.height),c=z(`g`,{class:a+(t.shape===`note`?` dg-node-note`:oo(t.shape)?` dg-node-figure`:``),"data-id":t.id},[t.tooltip||t.link?.tooltip?z(`title`,{},[{text:t.link?.tooltip??t.tooltip??``}]):null,mo(t.shape,n,{style:W(r.shape)}),X(o,s.x,s.y,{style:W(r.text)})]);return t.link?z(`a`,{href:t.link.href,target:t.link.target,rel:t.link.target===`_blank`?`noopener noreferrer`:void 0},[c]):c}),v=new Set([...e.nodes.values()].map(e=>e.shape)),y=[`#${n} .dg-edge-label-group text{fill:${R(`--dg-text`)}}`,v.has(`note`)?`#${n} .dg-node-note .dg-shape{fill:${R(`--dg-note-fill`)};stroke:${R(`--dg-note-stroke`)}}#${n} .dg-node-note .dg-label{fill:${R(`--dg-note-text`)}}`:``,[...v].some(e=>ns.has(e))?`#${n} .dg-shape-line{fill:none}`:``].join(``),b=[z(`g`,{class:`dg-clusters`},f),z(`g`,{class:`dg-edges`},h),z(`g`,{class:`dg-edge-labels`},g),z(`g`,{class:`dg-nodes`},_)],x=e.title?Y(J(e.title),{...L,size:18,weight:`bold`},t):null,S=x?x.height+14:0,C=Math.max(u.width,x?.width??0);return H({id:n,type:`flowchart`,width:C,height:u.height+S,title:r??e.accessibility.title??e.title??`Flowchart`,description:e.accessibility.description,defs:aa(n,m),body:x?[X(x,C/2,x.height/2,{className:`dg-title`}),z(`g`,{transform:`translate(${Math.round((C-u.width)/2*100)/100},${Math.round(S*100)/100})`},b)]:b,css:x?`${y}#${n} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`:y})}var cs={...L,size:13,weight:`bold`},ls={...L,size:13},us={...L,size:18,weight:`bold`},ds=90,fs=40,ps=40,ms=24,hs=28,gs=20,_s=240,vs=12,ys=6,bs=20,xs=10,Ss=18,Cs=12;function ws(e){let t=[],n=new Set;for(let r of e.participants)if(!n.has(r)){if(r.box===void 0)t.push(r),n.add(r);else for(let i of e.participants)i.box===r.box&&!n.has(i)&&(t.push(i),n.add(i))}return t}function Ts(e,t){let n=ws(e),r=new Map(n.map((e,t)=>[e.id,t])),i=e=>r.get(e),a=n.map(e=>Y(J(e.label),L,t)),o=e=>e.kind!==`participant`,s=n.map((e,t)=>o(e)?Math.max(a[t].width+8,50):Math.max(a[t].width+32,ds)),c=fs;n.forEach((e,t)=>{let n=o(e)?38+a[t].height:a[t].height+20;c=Math.max(c,n)});let l=e.events.map(e=>{if(e.kind===`message`){let n=J(e.text);return nn(n)?null:Y(n,L,t)}return e.kind===`note`?Y(on(J(e.text),_s,L,t),L,t):(e.kind===`divider`||e.kind===`delay`)&&e.text.trim()!==``?Y(J(e.text),e.kind===`divider`?cs:ls,t):null}),u=new Map,d=(e,t,r)=>{if(e===t||e<0||t<0||e>=n.length||t>=n.length)return;let i=`${Math.min(e,t)},${Math.max(e,t)}`;u.set(i,Math.max(u.get(i)??0,r))};e.events.forEach((e,t)=>{let n=l[t];if(e.kind===`message`){let t=i(e.from),r=i(e.to),a=(n?.width??0)+(e.number===void 0?0:gs);t===r?d(t,t+1,Math.max(a+28,62)):d(t,r,a+hs)}else if(e.kind===`note`&&n){let t=n.width+16,r=e.actors.map(i).sort((e,t)=>e-t),a=r[0],o=r[r.length-1];e.placement===`right`?d(a,a+1,t+vs+12):e.placement===`left`?d(a-1,a,t+vs+12):a===o?(d(a-1,a,t/2+16),d(a,a+1,t/2+16)):d(a,o,t-24)}});let f=[];n.forEach((e,t)=>{if(t===0){f.push(s[0]/2);return}let r=n[t-1],i=(r.box!==void 0||e.box!==void 0)&&r.box!==e.box,a=f[t-1]+s[t-1]/2+ps+(i?ms:0)+s[t]/2;for(let e=0;e<t;e++){let n=u.get(`${e},${t}`);n!==void 0&&(a=Math.max(a,f[e]+n))}f.push(a)});let p=e=>f[i(e)],m=e=>s[i(e)],h=0,g=null;if(e.title){let n=Y(J(e.title),us,t);g={label:n,x:0,y:n.height/2},h=n.height+14}let _=h;if(e.boxes.length>0){let n=Math.max(0,...e.boxes.map(e=>e.label?Y(J(e.label),L,t).height:0));h+=8+(n>0?n+6:0)}let v=h,y=[],b=new Map,x=new Map,S=new Set;n.forEach((e,t)=>{e.created?S.add(e.id):(y.push({id:e.id,kind:e.kind,label:a[t],x:f[t],top:v,width:s[t],height:c}),b.set(e.id,v+c))}),h=v+c+10;let C=new Map,w=[],T=[],E=[],D=[],ee=[],O=[],k=[],A=[],j=[],M=new Set,N=null,te=(e,t)=>{for(let n of O)n.min=Math.min(n.min,e),n.max=Math.max(n.max,t)},P=e=>te(p(e)-Ss,p(e)+Ss),ne=e=>{let t=C.get(e);return t||(t=[],C.set(e,t)),t},re=(e,t)=>p(e)-5+t*ys,F=(e,t)=>{let n=ne(e),r=n[n.length-1];if(!r)return p(e);let i=re(e,r.level);return t>0?i+10:i},ie=(e,t)=>{let n=ne(e);n.push({top:t,level:n.length})},ae=(e,t)=>{let n=ne(e).pop();n&&w.push({left:re(e,n.level),top:n.top,bottom:Math.max(t,n.top+8)})},oe=(e,t)=>{S.delete(e);let r=i(e),o=n[r];y.push({id:e,kind:o.kind,label:a[r],x:f[r],top:t-c/2,width:s[r],height:c}),b.set(e,t+c/2),te(f[r]-s[r]/2,f[r]+s[r]/2)},se=e=>{let t=e.filter(e=>S.has(e));if(t.length!==0){for(let e of t)oe(e,h+c/2);h+=c+10}},ce=(e,t)=>{for(M.delete(e);ne(e).length>0;)ae(e,t);x.set(e,t),k.push({x:p(e),y:t})};e.events.forEach((e,n)=>{let r=l[n]??null;switch(e.kind){case`message`:{let t=r?.height??0,n=h+6;if(e.from===e.to){se([e.from]);let n=p(e.from),i=F(e.from,1),a=r?h+6+t+4:h+12,o=a+bs;e.deactivateSource&&ae(e.from,a),e.activateTarget&&ie(e.to,o);let s=F(e.to,1),c=Math.max(i,s)+34,l=i+4+(e.number===void 0?0:12);T.push({x1:i,x2:s,y:a,y2:o,self:!0,loopRight:c,line:e.line,head:e.head,bidirectional:e.bidirectional,label:r,labelX:l,labelY:h+6+t/2,anchor:`start`,number:e.number}),te(n-Ss,Math.max(c,l+(r?.width??0))),M.has(e.from)&&ce(e.from,o),h=o+10,N=o;break}let i=S.has(e.from),a=S.has(e.to),o=r?n+t+4:h+14;(i||a)&&(o=Math.max(o,h+c/2+4)),i&&oe(e.from,o),a&&oe(e.to,o);let s=p(e.to)>p(e.from)?1:-1,l=i?p(e.from)+s*m(e.from)/2:F(e.from,s);e.deactivateSource&&ae(e.from,o),e.activateTarget&&ie(e.to,o);let u=a?p(e.to)-s*m(e.to)/2:F(e.to,s===1?-1:1);T.push({x1:l,x2:u,y:o,y2:o,self:!1,loopRight:0,line:e.line,head:e.head,bidirectional:e.bidirectional,label:r,labelX:(l+u)/2,labelY:o-4-t/2,anchor:`middle`,number:e.number}),P(e.from),P(e.to),r&&te((l+u)/2-r.width/2,(l+u)/2+r.width/2);for(let t of[e.from,e.to])M.has(t)&&ce(t,o);h=o+10,(i||a)&&(h=Math.max(h,o+c/2+10)),N=o;break}case`note`:{if(!r)break;se(e.actors);let t=r.width+16,n=r.height+16,i=h+6,a=Math.min(...e.actors.map(p)),o=Math.max(...e.actors.map(p)),s,c=t;e.placement===`right`?s=a+vs:e.placement===`left`?s=a-vs-t:(c=Math.max(t,o-a+(a===o?0:32)),s=(a+o)/2-c/2),E.push({left:s,top:i,width:c,height:n,label:r});for(let t of e.actors)P(t);te(s,s+c),h=i+n+8,N=null;break}case`activate`:se([e.actor]),ie(e.actor,N??h),P(e.actor),N===null&&(h+=4);break;case`deactivate`:ae(e.actor,N??h),N===null&&(h+=4);break;case`destroy`:M.add(e.actor);break;case`divider`:h+=10,A.push({y:h+(r?.height??14)/2,label:r}),h+=(r?.height??14)+10,N=null;break;case`delay`:{let e=Math.max(30,(r?.height??0)+16);j.push({y:h+e/2,label:r}),h+=e,N=null;break}case`space`:h+=e.height,N=null;break;case`block-start`:if(e.block===`rect`){h+=6;let t={block:`rect`,left:0,right:0,top:h,bottom:0,tab:null,tabWidth:0,guard:null,sections:[],color:e.color};O.push({frame:t,min:1/0,max:-1/0}),h+=6}else{h+=8;let n=e.block===`group`,r=Y(J(n?e.text||`group`:e.block),cs,t),i=!n&&e.text?Y(J(`[${e.text}]`),ls,t):null,a={block:e.block,left:0,right:0,top:h,bottom:0,tab:r,tabWidth:r.width+16,guard:i,sections:[]};O.push({frame:a,min:1/0,max:-1/0}),h+=Math.max(20,i?i.height+4:0)+6}N=null;break;case`block-section`:{let n=O[O.length-1];h+=6;let r=e.text?Y(J(`[${e.text}]`),ls,t):null;n.frame.sections.push({y:h,guard:r}),h+=(r?r.height+4:0)+6,N=null;break}case`block-end`:{let e=O.pop(),{frame:t}=e;h+=t.block===`rect`?6:8,t.bottom=h;let n=e.min,r=e.max;if(Number.isFinite(n)||(n=f[0]-40,r=f[0]+40),t.left=n-xs,t.right=r+xs,t.block!==`rect`){let e=[t.guard,...t.sections.map(e=>e.guard)],n=t.tabWidth+(t.guard?t.guard.width+8:0)+16;for(let t of e)t&&(n=Math.max(n,t.width+24));t.right-t.left<n&&(t.right=t.left+n),D.push(t)}else ee.push(t);te(t.left,t.right),h+=t.block===`rect`?4:6,N=null;break}}});for(let e of S)se([e]);for(let e of M)ce(e,h);for(let[e,t]of C)for(;t.length>0;)ae(e,h);h+=12;let le=h;e.hideFootbox||n.forEach((e,t)=>{x.has(e.id)||y.push({id:e.id,kind:e.kind,label:a[t],x:f[t],top:le,width:s[t],height:c})});let ue=e.hideFootbox?le:le+c,de=n.map((e,t)=>({x:f[t],y1:b.get(e.id)??le,y2:x.get(e.id)??le})),fe=[];e.boxes.length>0&&(ue+=8,e.boxes.forEach((e,r)=>{let i=n.map((e,t)=>({p:e,i:t})).filter(({p:e})=>e.box===r);if(i.length===0)return;let a=Math.min(...i.map(({i:e})=>f[e]-s[e]/2))-Cs,o=Math.max(...i.map(({i:e})=>f[e]+s[e]/2))+Cs,c=e.label?Y(J(e.label),L,t):null;if(c&&o-a<c.width+16){let e=(c.width+16-(o-a))/2;a-=e,o+=e}fe.push({left:a,right:o,top:_,bottom:ue,color:e.color,label:c})}));let pe=1/0,me=-1/0,he=(e,t)=>{pe=Math.min(pe,e,t),me=Math.max(me,e,t)};for(let e of y)he(e.x-e.width/2,e.x+e.width/2);for(let e of fe)he(e.left,e.right);for(let e of[...D,...ee])he(e.left,e.right);for(let e of E)he(e.left,e.left+e.width);let ge=Math.max(0,...[...A,...j].map(e=>e.label?e.label.width+40:0));if(me-pe<ge){let e=(ge-(me-pe))/2;pe-=e,me+=e}for(let e of T)he(e.x1,e.x2),e.self?he(e.loopRight,e.labelX+(e.label?.width??0)):e.label&&he(e.labelX-e.label.width/2,e.labelX+e.label.width/2),e.number!==void 0&&he(e.x1-10,e.x1+10);let _e=me-pe,ve=-pe;return g&&(g.label.width>_e&&(ve+=(g.label.width-_e)/2,_e=g.label.width),g.x=_e/2),{width:_e,height:ue,offsetX:ve,title:g,groups:fe,rects:ee,frames:D,lifelines:de,activations:w,messages:T,notes:E,actors:y,crosses:k,dividers:A,delays:j,span:{left:pe,right:me}}}var Es=new Set([`boundary`,`control`,`entity`,`database`,`collections`,`queue`]),Ds=[{token:`<<-->>`,line:`dotted`,head:`arrow`,both:!0},{token:`<<->>`,line:`solid`,head:`arrow`,both:!0},{token:`-->>`,line:`dotted`,head:`arrow`,both:!1},{token:`->>`,line:`solid`,head:`arrow`,both:!1},{token:`--x`,line:`dotted`,head:`cross`,both:!1},{token:`--)`,line:`dotted`,head:`open`,both:!1},{token:`-->`,line:`dotted`,head:`none`,both:!1},{token:`-x`,line:`solid`,head:`cross`,both:!1},{token:`-)`,line:`solid`,head:`open`,both:!1},{token:`->`,line:`solid`,head:`none`,both:!1}],Os=Ds.map(e=>e.token).join(`, `),ks=/[<>:,;+]|^-|-$/,As=new Set(`aliceblue antiquewhite aqua aquamarine azure beige bisque black blanchedalmond blue blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkgrey darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen darkslateblue darkslategray darkslategrey darkturquoise darkviolet deeppink deepskyblue dimgray dimgrey dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray green greenyellow grey honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan lightgoldenrodyellow lightgray lightgreen lightgrey lightpink lightsalmon lightseagreen lightskyblue lightslategray lightslategrey lightsteelblue lightyellow lime limegreen linen magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum powderblue purple rebeccapurple red rosybrown royalblue saddlebrown salmon sandybrown seagreen seashell sienna silver skyblue slateblue slategray slategrey snow springgreen steelblue tan teal thistle tomato turquoise violet wheat white whitesmoke yellow yellowgreen transparent`.split(` `));function js(e,t,n){return U(`fill:${e}`,t,n).shape.fill}function Ms(e){let t=[];for(let n of e){let e=0;for(let r=0;r<n.text.length;r++){if(n.text[r]!==`;`)continue;let i=n.text.slice(e,r);/#[a-zA-Z0-9]+$/.test(i)||(Ns(t,n,e,r),e=r+1)}Ns(t,n,e,n.text.length)}return t}function Ns(e,t,n,r){let i=t.text.slice(n,r),a=i.trim();if(a===``)return;let o=i.length-i.trimStart().length;e.push({text:a,line:t.line,column:t.column+n+o})}var Ps=class{constructor(e){this.list=e,this.diagram={type:`sequence`,participants:[],boxes:[],events:[],accessibility:{}},this.byId=new Map,this.stack=[],this.active=new Map,this.destroyed=new Set,this.pendingDestroy=new Set,this.numbering=null,this.currentBox=null}run(){let e=this.list[0];if(!e||!/^sequenceDiagram\s*$/.test(e.text))throw new I(`A sequence diagram starts with "sequenceDiagram"`,e?.line??1,e?.column??1);for(let e=1;e<this.list.length;e++){let t=q(this.list,e,this.diagram.accessibility);t>0?e+=t-1:this.statement(this.list[e])}let t=this.stack[this.stack.length-1];if(t)throw new I(`The "${t.block}" opened here is never closed`,t.line,0,`Add "end" after its last statement.`);return this.diagram}statement(e){let t=e.text,n;if(this.currentBox!==null&&!/^(create\s+)?(participant|actor)\b|^end$/i.test(t))throw new I(`Only participant and actor declarations belong inside a box`,e.line,e.column,`Close the box with "end" first.`);if(n=/^title(?:\s*:\s*|\s+)(.*)$/i.exec(t))this.diagram.title=n[1].trim();else if(n=/^autonumber(?:\s+(.*))?$/i.exec(t))this.autonumber(n[1]?.trim()??``,e);else if(n=/^(create\s+)?(participant|actor)\s+(.+)$/i.exec(t))this.declare(n[3],n[2].toLowerCase(),!!n[1],e,t.length-n[3].length);else if(n=/^destroy\s+(.+)$/i.exec(t)){let r=this.id(n[1],e,t.length-n[1].length);if(!this.byId.has(r))throw new I(`"${r}" is not a participant`,e.line,e.column);this.pendingDestroy.add(r),this.diagram.events.push({kind:`destroy`,actor:r,sourceLine:e.line})}else if(n=/^box(?:\s+(.*))?$/i.exec(t))this.box(n[1]?.trim()??``,e);else if(n=/^(activate|deactivate)\s+(.+)$/i.exec(t)){let r=n[1].toLowerCase(),i=this.use(n[2],e,t.length-n[2].length);r===`activate`?this.activate(i):this.deactivate(i,e),this.diagram.events.push({kind:r,actor:i,sourceLine:e.line})}else if(n=/^note\s+(left of|right of|over)\s+([^:]+?)\s*:\s?(.*)$/i.exec(t)){let r=n[1].toLowerCase().split(` `)[0],i=n[2].split(`,`).map(e=>e.trim());if(i.length>2||i.length===2&&r!==`over`)throw new I(`Only "over" spans two participants`,e.line,e.column,`Note over A,B: text`);let a=t.indexOf(n[2]),o=i.map(t=>this.use(t,e,a));this.diagram.events.push({kind:`note`,placement:r,actors:o,text:n[3].trim(),sourceLine:e.line})}else{if(/^note\b/i.test(t))throw new I(`"${t}" is not a note`,e.line,e.column,`Note left of A: text, Note right of A: text, Note over A,B: text`);if(n=/^(loop|alt|opt|par|critical|break)(?:\s+(.*))?$/i.exec(t)){let t=n[1].toLowerCase();this.stack.push({block:t,line:e.line}),this.diagram.events.push({kind:`block-start`,block:t,text:n[2]?.trim()??``,sourceLine:e.line})}else if(n=/^rect(?:\s+(.*))?$/i.exec(t)){let t=n[1]?.trim()??``;if(t===``)throw new I(`"rect" needs a colour`,e.line,e.column,`rect rgb(200, 220, 255)`);let r=js(t,e.line,e.column+5);this.stack.push({block:`rect`,line:e.line}),this.diagram.events.push({kind:`block-start`,block:`rect`,text:``,color:r,sourceLine:e.line})}else if(n=/^(else|and|option)(?:\s+(.*))?$/i.exec(t)){let t=n[1].toLowerCase(),r={else:`alt`,and:`par`,option:`critical`}[t],i=this.stack[this.stack.length-1];if(!i||i.block!==r)throw new I(`"${t}" belongs inside "${r}"`,e.line,e.column);this.diagram.events.push({kind:`block-section`,keyword:t,text:n[2]?.trim()??``,sourceLine:e.line})}else if(/^end$/i.test(t)){let t=this.stack.pop();if(!t)throw new I(`"end" without a block to close`,e.line,e.column);t.block===`box`?this.currentBox=null:this.diagram.events.push({kind:`block-end`,sourceLine:e.line})}else this.message(e)}}autonumber(e,t){if(e===``)this.numbering={next:1,step:1};else if(/^off$/i.test(e))this.numbering=null;else{let n=/^([0-9]+)(?:\s+([0-9]+))?$/.exec(e);if(!n)throw new I(`"${e}" is not a valid autonumber`,t.line,t.column,`autonumber [start [step]] or autonumber off`);this.numbering={next:Number(n[1]),step:n[2]?Number(n[2]):1}}}box(e,t){if(this.stack.length>0)throw new I(`A box cannot be nested inside a block or another box`,t.line,t.column);let n,r=e,i=/^((?:rgb|rgba|hsl|hsla)\([^)]*\))\s*(.*)$/i.exec(e),a=/^(#[0-9a-fA-F]{3,8}|[a-zA-Z]+)(?:\s+(.*))?$/.exec(e);i?(n=js(i[1],t.line,t.column+4),r=i[2].trim()):a&&(a[1].startsWith(`#`)||As.has(a[1].toLowerCase()))&&(n=js(a[1],t.line,t.column+4),r=a[2]?.trim()??``),this.diagram.boxes.push({label:r===``?void 0:r,color:n}),this.currentBox=this.diagram.boxes.length-1,this.stack.push({block:`box`,line:t.line})}id(e,t,n){let r=e.trim();if(r===``||ks.test(r))throw new I(`"${r}" is not a valid participant name`,t.line,t.column+n);return r}declare(e,t,n,r,i){let a=/^(.*?)@\{(.*)\}\s*(.*)$/.exec(e);if(a){let n=/["']?type["']?\s*:\s*["']?(\w+)["']?/.exec(a[2])?.[1]?.toLowerCase();if(!n||!(Es.has(n)||n===`participant`||n===`actor`))throw new I(`"${a[2].trim()}" is not a participant type`,r.line,r.column+i+e.indexOf(`@`),`participant A@{ "type": "boundary" } — boundary, control, entity, database, collections, queue, actor.`);t=n,e=`${a[1].trim()}${a[3]?` ${a[3].trim()}`:``}`}let o=/^(.+?)\s+as\s+(.+)$/.exec(e),s=this.id(o?o[1]:e,r,i),c=o?ft(o[2]):s,l=this.byId.get(s);if(n&&l)throw new I(`"${s}" already exists and cannot be created again`,r.line,r.column+i);if(l){l.label=c,l.kind=t,this.currentBox!==null&&(l.box=this.currentBox);return}let u={id:s,label:c,kind:t,created:n};this.currentBox!==null&&(u.box=this.currentBox),this.byId.set(s,u),this.diagram.participants.push(u)}use(e,t,n){let r=this.id(e,t,n);if(this.destroyed.has(r))throw new I(`"${r}" was destroyed earlier and cannot be used`,t.line,t.column+n);if(!this.byId.has(r)){let e={id:r,label:r,kind:`participant`,created:!1};this.byId.set(r,e),this.diagram.participants.push(e)}return r}activate(e){this.active.set(e,(this.active.get(e)??0)+1)}deactivate(e,t){let n=this.active.get(e)??0;if(n<=0)throw new I(`"${e}" is not active, so it cannot be deactivated`,t.line,t.column);this.active.set(e,n-1)}message(e){let t=e.text,n=t.indexOf(`:`),r=n>=0?t.slice(0,n):t,i=n>=0?t.slice(n+1).trim():``,a=[];for(let e=0;e<r.length;e++){let t=Ds.find(t=>r.startsWith(t.token,e));t&&(a.push({at:e,arrow:t}),e+=t.token.length-1)}if(a.length===0)throw new I(`"${t}" is not a statement`,e.line,e.column,`Messages are written A->>B: text, with one of ${Os}.`);let o=a.find(e=>this.byId.has(r.slice(0,e.at).trim()))??a.find(e=>e.arrow.head!==`cross`)??a[0],s=r.slice(0,o.at),c=r.slice(o.at+o.arrow.token.length),l=o.at,u=o.at+o.arrow.token.length,d=!1,f=!1,p=/^\s*([+-])/.exec(c);p&&(p[1]===`+`?d=!0:f=!0,c=c.slice(p[0].length));let m=(r,i)=>{if(/^[<>=)-]|[<>=-]$/.test(r.trim()))throw new I(`"${t.slice(0,n>=0?n:t.length).trim()}" does not use a known arrow`,e.line,e.column+i,`Arrows: ${Os}.`)};m(c,u),m(s,l);let h=this.use(s,e,0),g=this.use(c,e,u);f&&this.deactivate(h,e),d&&this.activate(g);for(let e of[h,g])this.pendingDestroy.has(e)&&(this.pendingDestroy.delete(e),this.destroyed.add(e));let _={kind:`message`,from:h,to:g,line:o.arrow.line,head:o.arrow.head,bidirectional:o.arrow.both,text:i,activateTarget:d,deactivateSource:f,sourceLine:e.line};this.numbering&&(_.number=this.numbering.next,this.numbering.next+=this.numbering.step),this.diagram.events.push(_)}};function Fs(e){let t=new Ps(Ms(K(e))).run();if(t.participants.length===0)throw new I(`The sequence diagram has no participants`,0,0,`Add a message such as A->>B: Hello`);return t}var Is=9;function Ls(e){switch(e){case`arrow`:return`arrow`;case`open`:return`open-arrow`;case`cross`:return`cross`;default:return null}}function Rs(e){let t=e.x,n=e.top,r=`dg-actor-figure`;switch(e.kind){case`boundary`:return[z(`path`,{class:`${r} dg-actor-limbs`,d:new V().moveTo(t-16,n+5).lineTo(t-16,n+29).moveTo(t-16,n+17).lineTo(t-7,n+17).toString()}),z(`circle`,{class:r,cx:t+5,cy:n+17,r:12})];case`control`:return[z(`circle`,{class:r,cx:t,cy:n+19,r:12}),z(`path`,{class:`${r} dg-actor-limbs`,d:new V().moveTo(t+5,n+3).lineTo(t-1,n+7).lineTo(t+5,n+11).toString()})];case`entity`:return[z(`circle`,{class:r,cx:t,cy:n+15,r:12}),z(`line`,{class:r,x1:t-12,y1:n+30,x2:t+12,y2:n+30})];case`database`:{let e=t-14,i=n+2;return[z(`path`,{class:r,d:new V().moveTo(e,i+5).arcTo(14,5,0,!1,!1,e+28,i+5).lineTo(e+28,i+30-5).arcTo(14,5,0,!1,!0,e,i+30-5).close().toString()}),z(`path`,{class:`${r} dg-actor-limbs`,d:new V().moveTo(e,i+5).arcTo(14,5,0,!1,!0,e+28,i+5).toString()})]}case`collections`:return[z(`rect`,{class:r,x:t-10,y:n+4,width:26,height:20}),z(`rect`,{class:r,x:t-16,y:n+10,width:26,height:20})];case`queue`:{let e=t-20,i=n+6;return[z(`path`,{class:r,d:new V().moveTo(e+5,i).lineTo(e+40-5,i).arcTo(5,11,0,!1,!0,e+40-5,i+22).lineTo(e+5,i+22).arcTo(5,11,0,!1,!0,e+5,i).close().toString()}),z(`path`,{class:`${r} dg-actor-limbs`,d:new V().moveTo(e+40-5,i).arcTo(5,11,0,!1,!1,e+40-5,i+22).toString()})]}default:return[]}}function zs(e){if(e.kind!==`actor`&&e.kind!==`participant`)return z(`g`,{class:`dg-actor dg-actor-${e.kind}`},[...Rs(e),X(e.label,e.x,e.top+34+4+e.label.height/2,{className:`dg-actor-label`})]);if(e.kind===`actor`){let t=e.x,n=e.top,r=n+14,i=r+13,a=n+34,o=new V().moveTo(t,r).lineTo(t,i).moveTo(t-12,r+5).lineTo(t+12,r+5).moveTo(t,i).lineTo(t-10,a).moveTo(t,i).lineTo(t+10,a);return z(`g`,{class:`dg-actor`},[z(`circle`,{class:`dg-actor-figure`,cx:t,cy:n+7,r:7}),z(`path`,{class:`dg-actor-figure dg-actor-limbs`,d:o.toString()}),X(e.label,t,a+4+e.label.height/2,{className:`dg-actor-label`})])}return z(`g`,{class:`dg-actor`},[z(`rect`,{class:`dg-actor-box`,x:e.x-e.width/2,y:e.top,width:e.width,height:e.height,rx:4,ry:4}),X(e.label,e.x,e.top+e.height/2,{className:`dg-actor-label`})])}function Bs(e){let t=[z(`rect`,{class:`dg-block`,x:e.left,y:e.top,width:e.right-e.left,height:e.bottom-e.top})];for(let n of e.sections)t.push(z(`line`,{class:`dg-block-sep`,x1:e.left,y1:n.y,x2:e.right,y2:n.y}));return z(`g`,{class:`dg-frame dg-frame-${e.block}`},t)}function Vs(e){let t=[];if(e.tab){let n=e.tabWidth,r=[[e.left,e.top],[e.left+n,e.top],[e.left+n,e.top+20-6],[e.left+n-6,e.top+20],[e.left,e.top+20]].map(([e,t])=>`${Math.round(e*100)/100},${Math.round(t*100)/100}`).join(` `);t.push(z(`polygon`,{class:`dg-block-tab`,points:r}),X(e.tab,e.left+n/2,e.top+10,{className:`dg-block-label`}))}e.guard&&t.push(X(e.guard,e.left+e.tabWidth+8,e.top+Math.max(20,e.guard.height)/2,{anchor:`start`,className:`dg-block-guard`}));for(let n of e.sections)n.guard&&t.push(X(n.guard,(e.left+e.right)/2,n.y+4+n.guard.height/2,{className:`dg-block-guard`}));return z(`g`,{class:`dg-frame-labels dg-frame-${e.block}`},t.filter(e=>!!e))}function Hs(e,t){let n=Ls(e.head),r=n?`url(#${ia(t,n)})`:void 0,i=n&&e.bidirectional?`url(#${ia(t,n,!0)})`:void 0,a=`dg-message${e.line===`dotted`?` dg-message-dotted`:``}`,o=[];if(e.self){let t=new V().moveTo(e.x1,e.y).lineTo(e.loopRight,e.y).lineTo(e.loopRight,e.y2).lineTo(e.x2,e.y2);o.push(z(`path`,{class:a,d:t.toString(),"marker-end":r,"marker-start":i}))}else o.push(z(`line`,{class:a,x1:e.x1,y1:e.y,x2:e.x2,y2:e.y,"marker-end":r,"marker-start":i}));return e.label&&o.push(X(e.label,e.labelX,e.labelY,{anchor:e.anchor,className:`dg-message-text`})),e.number!==void 0&&o.push(z(`circle`,{class:`dg-number`,cx:e.x1,cy:e.y,r:Is}),z(`text`,{class:`dg-number-text`,x:e.x1,y:e.y,"text-anchor":`middle`,"dominant-baseline":`central`},[Me(String(e.number))])),z(`g`,{class:`dg-message-group`},o)}function Us(e,t,n,r){let i=new Set;for(let t of e.messages){let e=Ls(t.head);e&&i.add(e)}let a=[z(`g`,{class:`dg-groups`},e.groups.map(e=>z(`g`,{class:`dg-group`},[z(`rect`,{class:`dg-group-box`,x:e.left,y:e.top,width:e.right-e.left,height:e.bottom-e.top,rx:4,style:e.color?`fill:${e.color}`:void 0}),e.label?X(e.label,(e.left+e.right)/2,e.top+4+e.label.height/2,{className:`dg-group-label`}):null]))),z(`g`,{class:`dg-rects`},e.rects.map(e=>z(`rect`,{class:`dg-rect`,x:e.left,y:e.top,width:e.right-e.left,height:e.bottom-e.top,style:e.color?`fill:${e.color}`:void 0}))),z(`g`,{class:`dg-lifelines`},e.lifelines.filter(e=>e.y2>e.y1).map(e=>z(`line`,{class:`dg-lifeline`,x1:e.x,y1:e.y1,x2:e.x,y2:e.y2}))),z(`g`,{class:`dg-frames`},e.frames.map(Bs)),z(`g`,{class:`dg-activations`},e.activations.map(e=>z(`rect`,{class:`dg-activation`,x:e.left,y:e.top,width:10,height:e.bottom-e.top}))),z(`g`,{class:`dg-frame-label-layer`},e.frames.map(Vs)),z(`g`,{class:`dg-messages`},e.messages.map(e=>Hs(e,t))),z(`g`,{class:`dg-notes`},e.notes.map(e=>z(`g`,{class:`dg-note-group`},[z(`rect`,{class:`dg-note`,x:e.left,y:e.top,width:e.width,height:e.height,rx:2}),X(e.label,e.left+e.width/2,e.top+e.height/2,{className:`dg-note-text`})]))),z(`g`,{class:`dg-crosses`},e.crosses.map(e=>z(`path`,{class:`dg-destroy`,d:new V().moveTo(e.x-9,e.y-9).lineTo(e.x+9,e.y+9).moveTo(e.x-9,e.y+9).lineTo(e.x+9,e.y-9).toString()}))),z(`g`,{class:`dg-actors`},e.actors.map(zs))];e.dividers.length>0&&a.push(z(`g`,{class:`dg-dividers`},e.dividers.map(t=>{let n=(e.span.left+e.span.right)/2,r=(t.label?.width??0)+20,i=(t.label?.height??0)+8;return z(`g`,{class:`dg-divider`},[z(`line`,{class:`dg-divider-line`,x1:e.span.left,y1:t.y-1.5,x2:e.span.right,y2:t.y-1.5}),z(`line`,{class:`dg-divider-line`,x1:e.span.left,y1:t.y+1.5,x2:e.span.right,y2:t.y+1.5}),t.label?z(`rect`,{class:`dg-divider-box`,x:n-r/2,y:t.y-i/2,width:r,height:i,rx:3}):null,t.label?X(t.label,n,t.y,{className:`dg-divider-text`}):null])}))),e.delays.some(e=>e.label)&&a.push(z(`g`,{class:`dg-delays`},e.delays.filter(e=>e.label).map(t=>X(t.label,(e.span.left+e.span.right)/2,t.y,{className:`dg-delay-text`}))));let o=[];e.title&&o.push(X(e.title.label,e.title.x,e.title.y,{className:`dg-title`})),o.push(z(`g`,{transform:`translate(${Math.round(e.offsetX*100)/100},0)`},a));let s=`#${t}`,c=[`${s} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`,`${s} .dg-actor-box{fill:${R(`--dg-actor-fill`)};stroke:${R(`--dg-actor-stroke`)};stroke-width:1.5px}`,`${s} .dg-actor-figure{fill:${R(`--dg-actor-fill`)};stroke:${R(`--dg-actor-stroke`)};stroke-width:1.5px}`,`${s} .dg-actor-limbs{fill:none}`,`${s} .dg-actor-label{fill:${R(`--dg-text`)}}`,`${s} .dg-lifeline{stroke:${R(`--dg-lifeline`)};stroke-width:1px;stroke-dasharray:4 3}`,`${s} .dg-activation{fill:${R(`--dg-activation-fill`)};stroke:${R(`--dg-actor-stroke`)};stroke-width:1px}`,`${s} .dg-message{fill:none;stroke:${R(`--dg-line`)};stroke-width:1.5px}`,`${s} .dg-message-dotted{stroke-dasharray:4 3}`,`${s} .dg-message-text{fill:${R(`--dg-text`)}}`,`${s} .dg-number{fill:${R(`--dg-line`)}}`,`${s} .dg-number-text{fill:${R(`--dg-number-text`)};font-size:11px;font-weight:bold}`,`${s} .dg-note{fill:${R(`--dg-note-fill`)};stroke:${R(`--dg-note-stroke`)};stroke-width:1px}`,`${s} .dg-note-text{fill:${R(`--dg-note-text`)}}`,`${s} .dg-block{fill:none;stroke:${R(`--dg-block-stroke`)};stroke-width:1.5px}`,`${s} .dg-block-tab{fill:${R(`--dg-block-label-fill`)};stroke:${R(`--dg-block-stroke`)};stroke-width:1px}`,`${s} .dg-block-label{fill:${R(`--dg-text`)};font-size:13px;font-weight:bold}`,`${s} .dg-block-guard{fill:${R(`--dg-text-muted`)};font-size:13px}`,`${s} .dg-block-sep{stroke:${R(`--dg-block-stroke`)};stroke-width:1px;stroke-dasharray:4 3}`,`${s} .dg-rect{fill:${R(`--dg-rect-fill`)}}`,`${s} .dg-group-box{fill:none;stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${s} .dg-group-label{fill:${R(`--dg-cluster-text`)};font-weight:600}`,`${s} .dg-destroy{fill:none;stroke:${R(`--dg-line`)};stroke-width:2px}`,...e.dividers.length>0?[`${s} .dg-divider-line{stroke:${R(`--dg-block-stroke`)};stroke-width:1px}`,`${s} .dg-divider-box{fill:${R(`--dg-block-label-fill`)};stroke:${R(`--dg-block-stroke`)};stroke-width:1px}`,`${s} .dg-divider-text{fill:${R(`--dg-text`)};font-size:13px;font-weight:bold}`]:[],...e.delays.some(e=>e.label)?[`${s} .dg-delay-text{fill:${R(`--dg-text-muted`)};font-size:13px;font-style:italic}`]:[]].join(``);return H({id:t,type:`sequence`,width:e.width,height:e.height,title:n,description:r,defs:aa(t,i),body:o,css:c})}function Ws(e,t,n,r){return Us(Ts(e,t),n,r??e.accessibility.title??e.title??`Sequence diagram`,e.accessibility.description)}var Gs=16;function Ks(e){switch(e){case`start`:return`start`;case`end`:return`end`;case`choice`:return`choice`;case`fork`:case`join`:return`fork`;default:return`round`}}function qs(e,t,n){return Ke(n.get(`default`),...e.map(e=>n.get(e)),t)}function Js(e,t,n,r){let i=e.direction===`LR`||e.direction===`RL`,a={...L,weight:`bold`},o=new Map;for(let n of e.states.values())if(n.kind===`state`){if(n.descriptions.length===0){let e=Y(J(n.name),L,t),r=po(`round`,e.width,e.height);o.set(n.id,{title:e,width:Math.max(r.width,60),height:r.height})}else{let e=Y(J(n.name),a,t),r=Y(J(n.descriptions.join(`<br>`)),L,t);o.set(n.id,{title:e,body:r,width:Math.max(e.width,r.width,40)+32,height:e.height+r.height+27})}}let s=e=>{if(e.kind===`state`)return o.get(e.id);let t=po(Ks(e.kind),0,0);return(e.kind===`fork`||e.kind===`join`)&&i?{width:t.height,height:t.width}:t},c=e.notes.map(e=>Y(tn(e.text),L,t)),l=new Map,u=[];e.notes.forEach((t,n)=>{if(e.composites.has(t.target)){u.push(n);return}let r=c[n],a=(i?r.height:r.width)+16+Gs;l.set(t.target,Math.max(l.get(t.target)??0,a))});let d=[...e.states.values()].map(t=>{let n=s(t),r=l.get(t.id)??0,a=Math.max(0,...e.notes.map((e,n)=>e.target===t.id?(i?c[n].width:c[n].height)+16:0));return i?{id:t.id,width:Math.max(n.width,a),height:n.height+r*2,cluster:t.parent}:{id:t.id,width:n.width+r*2,height:Math.max(n.height,a),cluster:t.parent}});for(let t of u){let n=c[t];d.push({id:`\u0000note${t}`,width:n.width+16,height:n.height+16,cluster:e.composites.get(e.notes[t].target).parent})}let f=new Map,p=[...e.composites.values()].map(e=>{!e.region&&e.name!==``&&f.set(e.id,Y(J(e.name),a,t));let n=f.get(e.id);return{id:e.id,parent:e.parent,direction:e.direction,label:n?{width:n.width,height:n.height}:void 0}}),m=new Map,h=e.transitions.map((e,n)=>{let r;if(e.label){let i=Y(J(e.label),L,t);m.set(n,i),r={width:i.width+8,height:i.height+4}}return{id:String(n),from:e.from,to:e.to,label:r}});for(let t of u)h.push({id:`note${t}`,from:`\u0000note${t}`,to:e.notes[t].target,weight:0});let g=Zo({direction:e.direction,nodes:d,edges:h,clusters:p,nodeSep:40,rankSep:40,clusterPadding:14}),_=e=>{let t=g.nodes.get(e.id),n=s(e);return{x:t.x,y:t.y,width:n.width,height:n.height}},v=t=>{let n=0,r=e.composites.get(t)?.parent;for(;r;)n++,r=e.composites.get(r)?.parent;return n},y=[...e.composites.values()].sort((e,t)=>v(e.id)-v(t.id)).map(t=>{let n=g.clusters.get(t.id),r=qs(t.classes,t.style,e.classDefs),i=n.x-n.width/2,a=n.y-n.height/2;if(t.region)return z(`rect`,{class:`dg-state-region`,x:i,y:a,width:n.width,height:n.height,rx:4});let o=f.get(t.id),s=o?o.height+10:0;return z(`g`,{class:`dg-cluster dg-state-composite`,"data-id":t.id},[z(`rect`,{class:`dg-cluster-box`,x:i,y:a,width:n.width,height:n.height,rx:8,style:W(r.shape)}),o?z(`line`,{class:`dg-state-divider`,x1:i,y1:a+s,x2:i+n.width,y2:a+s}):null,o?X(o,n.x,a+s/2,{className:`dg-cluster-label`,style:W(r.text)}):null])}),b=t=>{let n=e.states.get(t);if(n){let e=_(n);return{box:e,clip:t=>go(Ks(n.kind),e,t)}}let r=g.clusters.get(t)??g.nodes.get(t);return{box:r,clip:e=>eo(r,e)}},x=[],S=[];e.transitions.forEach((e,t)=>{let r=g.edges.get(String(t));if(!r)return;let i;if(r.selfLoop)i=r.points;else{let t=b(e.from),n=b(e.to);i=[r.start??t.clip(r.points[0]??n.box),...r.points,r.end??n.clip(r.points[r.points.length-1]??t.box)]}x.push(z(`path`,{class:`dg-edge`,d:io(i),"marker-end":`url(#${ia(n,`arrow`)})`}));let a=m.get(t);if(a&&r.label){let e=a.width+8,t=a.height+4;S.push(z(`g`,{},[z(`rect`,{class:`dg-edge-label-box`,x:r.label.x-e/2,y:r.label.y-t/2,width:e,height:t,rx:3}),X(a,r.label.x,r.label.y,{className:`dg-edge-label`})]))}});let C=[];e.notes.forEach((t,n)=>{let r=c[n],a=r.width+16,o=r.height+16,s,l,u=e.states.get(t.target);if(u){let e=_(u),n=t.side===`left`?-1:1;if(i){let t=e.height/2+Gs+o/2;s={x:e.x,y:e.y+n*t,width:a,height:o},l={x:e.x,y:e.y+n*e.height/2}}else{let t=e.width/2+Gs+a/2;s={x:e.x+n*t,y:e.y,width:a,height:o},l={x:e.x+n*e.width/2,y:e.y}}}else s=g.nodes.get(`\u0000note${n}`),l=eo(g.clusters.get(t.target),s);let d=eo(s,l);C.push(z(`g`,{class:`dg-note`},[z(`line`,{class:`dg-note-link`,x1:d.x,y1:d.y,x2:l.x,y2:l.y}),z(`rect`,{class:`dg-note-box`,x:s.x-a/2,y:s.y-o/2,width:a,height:o,rx:2}),X(r,s.x,s.y,{className:`dg-note-text`})]))});let w=[...e.states.values()].map(t=>{let n=_(t),r=qs(t.classes,t.style,e.classDefs);if(t.kind!==`state`)return z(`g`,{class:`dg-node dg-state-${t.kind}`,"data-id":t.kind===`start`||t.kind===`end`?void 0:t.id},[mo(Ks(t.kind),n,{style:W(r.shape)})]);let i=o.get(t.id),a=[mo(`round`,n,{style:W(r.shape)})];if(!i.body)a.push(X(i.title,n.x,n.y,{style:W(r.text)}));else{let e=n.y-n.height/2,t=e+9+i.title.height/2,o=e+13.5+i.title.height;a.push(X(i.title,n.x,t,{style:W(r.text)}),z(`line`,{class:`dg-state-divider`,x1:n.x-n.width/2,y1:o,x2:n.x+n.width/2,y2:o}),X(i.body,n.x,o+9/2+i.body.height/2+9/2,{style:W(r.text)}))}return z(`g`,{class:[`dg-node`,`dg-state`,...t.classes.map(e=>`dg-class-${e.replace(/[^\w-]/g,``)}`)].join(` `),"data-id":t.id},a)}),T=[`#${n} .dg-state-start{fill:${R(`--dg-state-start`)};stroke:none}`,`#${n} .dg-state-end-ring{fill:none;stroke:${R(`--dg-state-start`)};stroke-width:1.5px}`,`#${n} .dg-state-divider{stroke:${R(`--dg-node-stroke`)};stroke-width:1px}`,`#${n} .dg-state-composite .dg-state-divider{stroke:${R(`--dg-cluster-stroke`)}}`,`#${n} .dg-state-region{fill:none;stroke:${R(`--dg-cluster-stroke`)};stroke-dasharray:5 4}`,`#${n} .dg-state-choice .dg-shape{fill:${R(`--dg-node-fill`)};stroke:${R(`--dg-node-stroke`)}}`,`#${n} .dg-note-box{fill:${R(`--dg-note-fill`)};stroke:${R(`--dg-note-stroke`)}}`,`#${n} .dg-note-text{fill:${R(`--dg-note-text`)}}`,`#${n} .dg-note-link{stroke:${R(`--dg-note-stroke`)};stroke-dasharray:3 3}`].join(``);return H({id:n,type:`state`,width:g.width,height:g.height,title:r??e.accessibility.title??`State diagram`,description:e.accessibility.description,defs:aa(n,[`arrow`]),body:[z(`g`,{class:`dg-clusters`},y),z(`g`,{class:`dg-edges`},x),z(`g`,{class:`dg-edge-labels`},S),z(`g`,{class:`dg-notes`},C),z(`g`,{class:`dg-nodes`},w)],css:T})}var Ys=200,Xs=1e3;function Zs(e){let t=[],n=0;for(let r=0;r<=e.length;r++)if(r===e.length||e[r]===`:`&&(r+1===e.length||/\s/.test(e[r+1]))){let i=e.slice(n,r),a=i.trim();t.push({text:a,offset:a===``?Math.max(0,n-1):n+(i.length-i.trimStart().length)}),n=r+1}return t}function Qs(e,t,n){for(let r of t){if(r.text===``)throw new I(`An event is empty`,n.line,n.column+r.offset,`Write text after each ": "`);e.events.push(r.text)}}function $s(e){let t=K(e),n=t[0],r=n?/^timeline\b\s*(.*)$/.exec(n.text):null;if(!n||!r)throw new I(`A timeline starts with "timeline"`,n?.line??1,1);let i=r[1].trim();if(i===`TD`||i===`TB`)throw new I(`Vertical timelines are not supported`,n.line,n.column+9,`Write "timeline" or "timeline LR"`);if(i!==``&&i!==`LR`)throw new I(`Unexpected "${i}" after "timeline"`,n.line,n.column+9);let a={type:`timeline`,sections:[],periods:[],accessibility:{}},o=0;for(let e=1;e<t.length;e++){let n=t[e],r=q(t,e,a.accessibility);if(r>0)e+=r-1;else if(/^title(\s|$)/.test(n.text)){let e=n.text.slice(5).trim();a.title=e===``?void 0:e}else if(/^section(\s|$)/.test(n.text)){let e=n.text.slice(7).trim();if(e===``)throw new I(`A section needs a name`,n.line,n.column,`Write section 2020s`);a.sections.push({label:e,line:n.line})}else{if(n.text.startsWith(`:`)){let e=a.periods[a.periods.length-1];if(!e)throw new I(`Events without a time period`,n.line,n.column,`Start with a period: 2024 : Event`);let t=Zs(n.text.slice(1)).map(e=>({...e,offset:e.offset+1}));Qs(e,t,n),o+=t.length}else{if(a.periods.length>=Ys)throw new I(`The timeline has more than ${Ys} time periods`,n.line,n.column,`Split it into several timelines.`);let[e,...t]=Zs(n.text),r={label:e.text,events:[],section:a.sections.length>0?a.sections.length-1:null,line:n.line};Qs(r,t,n),a.periods.push(r),o+=t.length}if(o>Xs)throw new I(`The timeline has more than ${Xs} events`,n.line,n.column,`Split it into several timelines.`)}}if(a.periods.length===0&&a.sections.length===0)throw new I(`The timeline has no time periods`,0,0,`Add lines like: 2024 : Event`);return a}var ec=168,tc=16,nc={...L,size:18,weight:`bold`},rc={...L,weight:`bold`},ic={...L,weight:`bold`},ac={...L,size:13},oc=1.08;function sc(e,t,n){return Y(on(J(e),144/oc,t,n),t,n)}function cc(e,t,n,r){let i=[],a=0,o=new Map,s=e=>{if(e===null)return a++;let t=o.get(e);return t===void 0&&(t=a++,o.set(e,t)),t},c=0,l=e.periods;for(;c<l.length&&l[c].section===null;)i.push({period:l[c],section:null,colour:s(null)}),c++;e.sections.forEach((e,t)=>{let n=i.length;for(;c<l.length&&l[c].section===t;)i.push({period:l[c],section:t,colour:s(t)}),c++;i.length===n&&i.push({period:null,section:t,colour:s(t)})});let u=e.sections.length>0,d=e=>e*184,f=Math.max(i.length*184-tc,0),p=e.title?Y(J(e.title),nc,t):null,m=e.sections.map((e,n)=>{let r=i.flatMap((e,t)=>e.section===n?[t]:[]),a=r[0],s=r[r.length-1],c=d(s)+ec-d(a),l=Y(on(J(e.label),(c-24)/oc,rc,t),rc,t);return{x:d(a),width:c,label:l,colour:o.get(n)}}),h=i.map(e=>e.period?sc(e.period.label,ic,t):null),g=i.map(e=>e.period?e.period.events.map(e=>sc(e,ac,t)):[]),_=p?p.height+16:0,v=u?Math.max(34,...m.map(e=>e.label.height+16)):0,y=Math.max(40,...h.map(e=>e?e.height+20:0)),b=_,x=b+(u?v+12:0),S=x+y,C=S+24,w=C+24,T=[],E=[];for(let e of m)E.push(z(`g`,{class:`dg-node dg-tl-section`},[z(`rect`,{class:`dg-tl-section-box`,x:e.x,y:b,width:e.width,height:v,rx:6,style:`fill:${ke(e.colour)}`}),X(e.label,e.x+e.width/2,b+v/2,{className:`dg-tl-section-text`})]));let D=f+18;T.push(z(`line`,{class:`dg-tl-axis`,x1:-6,y1:C,x2:D-8,y2:C}),z(`polygon`,{class:`dg-tl-arrow`,points:`${B(D-10)},${B(C-6)} ${B(D)},${B(C)} ${B(D-10)},${B(C+6)}`}));let ee=C+8;i.forEach((e,t)=>{if(!e.period)return;let n=d(t),r=n+ec/2,i=ke(e.colour),a=h[t],o=!u;E.push(z(`g`,{class:`dg-node dg-tl-period`,"data-line":e.period.line},[z(`rect`,{class:o?`dg-tl-period-box dg-tl-solid`:`dg-tl-period-box`,x:n,y:x,width:ec,height:y,rx:6,style:o?`fill:${i}`:`fill:${i};stroke:${i}`}),X(a,r,x+y/2,{className:o?`dg-tl-period-text dg-tl-on-solid`:`dg-tl-period-text`})]));let s=g[t],c=s.length>0?w:C;T.push(z(`line`,{class:`dg-tl-connector`,x1:r,y1:S,x2:r,y2:c,style:`stroke:${i}`})),E.push(z(`circle`,{class:`dg-tl-dot`,cx:r,cy:C,r:5,style:`fill:${i}`}));let l=w;s.forEach((e,t)=>{let a=Math.max(32,e.height+14);t>0&&T.push(z(`line`,{class:`dg-tl-connector`,x1:r,y1:l-10,x2:r,y2:l,style:`stroke:${i}`})),E.push(z(`g`,{class:`dg-node dg-tl-event`},[z(`rect`,{class:`dg-tl-event-box`,x:n,y:l,width:ec,height:a,rx:6,style:`fill:${i};stroke:${i}`}),X(e,r,l+a/2,{className:`dg-tl-event-text`})])),l+=a+10}),ee=Math.max(ee,l-10)});let O=D+12,k=Math.max(O,p?p.width:0),A=6+(k-O)/2,j=[];p&&j.push(X(p,k/2,p.height/2,{className:`dg-title`})),j.push(z(`g`,{transform:`translate(${B(A)},0)`},[...T,...E]));let M=`#${n}`,N=[`${M} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`,`${M} .dg-tl-section-text{fill:${R(`--dg-pie-text`)};font-weight:bold}`,`${M} .dg-tl-period-box{fill-opacity:0.2;stroke-width:1.5px}`,`${M} .dg-tl-period-box.dg-tl-solid{fill-opacity:1;stroke:none}`,`${M} .dg-tl-period-text{fill:${R(`--dg-text`)};font-weight:bold}`,`${M} .dg-tl-on-solid{fill:${R(`--dg-pie-text`)}}`,`${M} .dg-tl-event-box{fill-opacity:0.08;stroke-opacity:0.6;stroke-width:1px}`,`${M} .dg-tl-event-text{fill:${R(`--dg-text`)};font-size:13px}`,`${M} .dg-tl-axis{stroke:${R(`--dg-line`)};stroke-width:2px}`,`${M} .dg-tl-arrow{fill:${R(`--dg-line`)}}`,`${M} .dg-tl-connector{stroke-width:1.5px;stroke-dasharray:4 3;stroke-opacity:0.8}`].join(``);return H({id:n,type:`timeline`,width:k,height:ee,title:r??e.accessibility.title??e.title??`Timeline`,description:e.accessibility.description,body:j,css:N})}var lc=/[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?/,uc=RegExp(`^(${lc.source})\\s*-->\\s*(${lc.source})$`),dc=1e3;function fc(e,t,n){let r=e.length-e.trimStart().length,i=e.trimStart();if(i.startsWith(`"`)){let e=i.indexOf(`"`,1);if(e<0)throw new I(`The quoted text is not closed`,t.line,t.column+n+r,`Add the closing "`);let a=i.slice(1,e);a.startsWith("`")&&a.endsWith("`")&&a.length>=2&&(a=a.slice(1,-1));let o=i.slice(e+1);return{title:a,rest:o,restOffset:n+r+e+1}}return{rest:e,restOffset:n}}function pc(e){let t=[],n=!1,r=0;for(let i=0;i<=e.length;i++){let a=e[i];if(a===`"`&&(n=!n),i===e.length||a===`,`&&!n){let n=e.slice(r,i);t.push({text:n.trim(),offset:r+(n.length-n.trimStart().length)}),r=i+1}}return t}function mc(e,t,n){let r=e.indexOf(`[`);if(r<0)return null;let i=e.trimEnd();if(!i.endsWith(`]`))throw new I(`The list is not closed`,t.line,t.column+n+r,`End it with "]"`);let a=i.slice(r+1,-1),o=a.trim()===``?[]:pc(a).map(e=>({...e,offset:n+r+1+e.offset}));return{before:e.slice(0,r),items:o}}function hc(e){if(!RegExp(`^${lc.source}$`).exec(e))return null;let t=Number(e);return Number.isFinite(t)?t:null}function gc(e){let t=e.trim();return t===``?void 0:t}function _c(e,t){let n=t.length,{title:r,rest:i,restOffset:a}=fc(e.text.slice(n),e,n),o=mc(i,e,a);if(o){if(t===`y-axis`)throw new I(`The y axis is numeric and has no categories`,e.line,e.column,`Write y-axis "Title" 0 --> 100`);let n=r??gc(o.before);if(r!==void 0&&o.before.trim()!==``)throw new I(`Unexpected "${o.before.trim()}"`,e.line,e.column+a);let i=o.items.map(t=>{if(t.text===``)throw new I(`A category is empty`,e.line,e.column+t.offset,`Remove the extra comma`);return t.text.length>=2&&t.text.startsWith(`"`)&&t.text.endsWith(`"`)?t.text.slice(1,-1):t.text});if(i.length===0)throw new I(`The x axis has no categories`,e.line,e.column,`List them: x-axis [a, b, c]`);return{kind:`band`,title:n,categories:i}}let s=i.trim(),c=/(\S+)\s*-->\s*(\S+)\s*$/.exec(s);if(c){let t=e.column+a+(i.length-i.trimStart().length)+c.index,n=uc.exec(c[0].trim());if(!n)throw new I(`"${c[0].trim()}" is not a range of numbers`,e.line,t,`Write min --> max, e.g. 0 --> 100`);let o=Number(n[1]),l=Number(n[2]);if(!(l>o))throw new I(`The end of the range must be greater than its start`,e.line,t);let u=s.slice(0,c.index);if(r!==void 0&&u.trim()!==``)throw new I(`Unexpected "${u.trim()}"`,e.line,e.column+a);return{kind:`linear`,title:r??gc(u),min:o,max:l}}if(r!==void 0&&s!==``)throw new I(`Unexpected "${s}"`,e.line,e.column+a+(i.length-i.trimStart().length));return{kind:`linear`,title:r??gc(s)}}function vc(e,t){let n=t.length,{title:r,rest:i,restOffset:a}=fc(e.text.slice(n),e,n),o=mc(i,e,a);if(!o)throw new I(`A ${t} series needs its values in brackets`,e.line,e.column,`Write ${t} [1, 2, 3]`);if(r!==void 0&&o.before.trim()!==``)throw new I(`Unexpected "${o.before.trim()}"`,e.line,e.column+a);let s=o.items.map(t=>{let n=hc(t.text);if(n===null)throw new I(`"${t.text}" is not a number`,e.line,e.column+t.offset,`Values are plain numbers: 12, -3.5, .25`);return n});if(s.length===0)throw new I(`The ${t} series has no values`,e.line,e.column,`Write ${t} [1, 2, 3]`);if(s.length>dc)throw new I(`The series has ${s.length} values; the limit is ${dc}`,e.line,e.column);return{kind:t,title:r??gc(o.before),values:s,line:e.line,column:e.column}}function yc(e){let t=K(e),n=t[0],r=n?/^(xychart-beta|xychart)\b\s*(.*)$/.exec(n.text):null;if(!n||!r)throw new I(`An XY chart starts with "xychart-beta"`,n?.line??1,1);let i={type:`xychart`,horizontal:!1,yAxis:{kind:`linear`},series:[],accessibility:{}},a=r[2].trim();if(a===`horizontal`)i.horizontal=!0;else if(a!==``&&a!==`vertical`)throw new I(`Unexpected "${a}" after "${r[1]}"`,n.line,n.column+r[1].length+1,`Write "horizontal", or nothing`);let o=null,s=null;for(let e=1;e<t.length;e++){let n=t[e],r=q(t,e,i.accessibility);if(r>0){e+=r-1;continue}let a=/^(title|x-axis|y-axis|bar|line)\b/.exec(n.text)?.[1];switch(a){case`title`:{let{title:e,rest:t}=fc(n.text.slice(5),n,5),r=e??t.trim();if(e!==void 0&&t.trim()!==``)throw new I(`Unexpected "${t.trim()}"`,n.line,n.column+n.text.indexOf(t.trim(),6));i.title=r===``?void 0:r;break}case`x-axis`:case`y-axis`:{let e=a===`x-axis`?o:s;if(e)throw new I(`The ${a} is already declared on line ${e.line}`,n.line,n.column,`Declare each axis once`);let t=_c(n,a);a===`x-axis`?(i.xAxis=t,o=n):(i.yAxis=t,s=n);break}case`bar`:case`line`:i.series.push(vc(n,a));break;default:throw new I(`"${n.text}" is not an XY chart statement`,n.line,n.column,`Expected title, x-axis, y-axis, bar or line`)}}if(i.series.length===0)throw new I(`The chart has no data`,0,0,`Add a series: bar [1, 2, 3] or line [1, 2, 3]`);let c=i.xAxis,l=c?.kind===`band`?c.categories.length:i.series[0].values.length;for(let e of i.series)if(e.values.length!==l){let t=c?.kind===`band`?`the x axis has ${l} categories`:`the first series has ${l}`;throw new I(`The ${e.kind} series has ${e.values.length} values, but ${t}`,e.line,e.column,`Give every series one value per point`)}return i}var bc=[1,2,2.5,5,10];function xc(e,t){let n=e/Math.max(1,t),r=10**Math.floor(Math.log10(n));for(let e of bc)if(e*r>=n*(1-1e-9))return e*r;return 10*r}function Sc(e){for(let t=0;t<12;t++){let n=e*10**t;if(Math.abs(n-Math.round(n))<1e-6*Math.max(1,n))return t}return 12}function Cc(e,t){return Number(e.toFixed(t))}function wc(e,t,n,r){let i=e,a=t;if(a<=i){let e=i===0?1:Math.abs(i)/2;i-=e,a+=e}let o=xc(a-i,n),s=Sc(o);r&&(i=Cc(Math.floor(i/o+1e-9)*o,s),a=Cc(Math.ceil(a/o-1e-9)*o,s));let c=[],l=Math.ceil(i/o-1e-9),u=Math.floor(a/o+1e-9);for(let e=l;e<=u&&c.length<=1e3;e++)c.push(Cc(e*o,s));return{min:i,max:a,step:o,values:c}}var Tc=[[0xe8d4a51000,`T`],[1e9,`B`],[1e6,`M`],[1e3,`k`]];function Ec(e,t){let n=Math.max(0,...e.map(Math.abs)),r=1,i=``;for(let[e,a]of Tc)if(n>=e*10&&t>=e/10){r=e,i=a;break}let a=Sc(t/r);return e=>e===0?`0`:Dc(e/r,a)+i}function Dc(e,t){let n=Math.abs(e).toFixed(t);return(e<0&&Number(n)!==0?`−`:``)+n}var Oc={...L,size:18,weight:`bold`},kc={...L,size:13,weight:`bold`},Ac={...L,size:12},jc={...L,size:13},Mc=8,Nc=12,Pc=Math.SQRT1_2;function Fc(e,t,n){let r=J(e);return Y(n?on(r,n,Ac,t):r,Ac,t)}function Ic(e,t,n,r){let i=e.horizontal,a=e.series[0].values.length,o=e.series.filter(e=>e.kind===`bar`),s=e.series.filter(e=>e.kind===`line`),c=e.xAxis,l=c?.kind===`linear`&&c.min!==void 0&&c.max!==void 0?{min:c.min,max:c.max}:null,u=c?.kind===`band`?c.categories:Array.from({length:a},(e,t)=>String(t+1)),d=l?[]:u.map(e=>Fc(e,t,i?160:void 0)),f;if(i){let e=Math.max(0,...d.map(e=>e.height)),t=l?0:Math.max(30,o.length*14+12,e+10);f=l?320:Math.min(Math.max(a*t,120),1600)}else f=l?600:Math.min(Math.max(a*60,400),800);let p=i?520:320,m=f/a,h=e.series.flatMap(e=>e.values),g=e.yAxis,_=g.min!==void 0&&g.max!==void 0,v=Math.min(...h),y=Math.max(...h);o.length>0&&(v=Math.min(v,0),y=Math.max(y,0));let b=i?Math.max(2,Math.floor(p/90)):Math.max(2,Math.floor(p/45)),x=_?wc(g.min,g.max,b,!1):wc(v,y,b,!0),S=_?g.min:x.min,C=_?g.max:x.max,w=Ec(x.values,x.step),T=e=>(e-S)/(C-S)*p,E=l&&o.length>0?m/2:0,D=e=>E+(e-l.min)/(l.max-l.min)*(f-E*2),ee=e=>{if(!l)return(e+.5)*m;let t=a===1?(l.min+l.max)/2:l.min+e*(l.max-l.min)/(a-1);return D(t)},O=l?(()=>{let e=wc(l.min,l.max,Math.max(2,Math.floor(f/(i?40:70))),!1),n=Ec(e.values,e.step);return e.values.map(e=>({measured:Y(tn(n(e)),Ac,t),at:D(e)}))})():d.map((e,t)=>({measured:e,at:ee(t)})),k=x.values.map(e=>({measured:Y(tn(w(e)),Ac,t),at:T(e)})),A=!i&&!l&&d.some(e=>e.width>m-6),j=e.title?Y(J(e.title),Oc,t):null,M=c?.title?Y(J(c.title),kc,t):null,N=g.title?Y(J(g.title),kc,t):null,te=e.series.map((e,t)=>({series:e,index:t})).filter(e=>e.series.title!==void 0).map(e=>({...e,measured:Y(J(e.series.title),jc,t)})),P,ne,re=0;if(i){let e=Math.max(0,...O.map(e=>e.measured.width));P=(M?M.height+Mc:0)+e+Mc,ne=Mc+Math.max(0,...k.map(e=>e.measured.height))+(N?Mc+N.height:0);let t=k[k.length-1];t&&(re=Math.max(0,t.at+t.measured.width/2-p))}else{let e=Math.max(0,...k.map(e=>e.measured.width));P=(N?N.height+Mc:0)+e+Mc;let t;if(A){t=Math.max(...d.map(e=>(e.width+e.height/2)*Pc))+Math.max(...d.map(e=>e.height))*Pc;let e=d[0];P=Math.max(P,(e.width+e.height/2)*Pc-m/2+4)}else{t=Math.max(0,...O.map(e=>e.measured.height));let e=O[O.length-1];e&&(re=Math.max(0,e.at+e.measured.width/2-f));let n=O[0];n&&(P=Math.max(P,n.measured.width/2-n.at))}ne=Mc+t+(M?Mc+M.height:0)}let F=i?p:f,ie=i?f:p,ae=[],oe=e=>18+e.measured.width,se=Math.max(F,200);for(let e of te){let t=ae[ae.length-1];t&&t.width+20+oe(e)<=se?(t.items.push(e),t.width+=20+oe(e)):ae.push({items:[e],width:oe(e)})}let ce=ae.length>0?ae.length*20+Mc:0,le=j?j.height+12:0,ue=P,de=le+ce+6,fe=ue+F,pe=de+ie,me=fe+re,he=pe+ne,ge=(e,t)=>i?{x:ue+t,y:de+e}:{x:ue+e,y:pe-t},_e=[],ve=[],ye=[];_e.push(z(`g`,{class:`dg-xy-grid`},k.map(e=>{let t=ge(0,e.at),n=ge(f,e.at);return z(`line`,{x1:t.x,y1:t.y,x2:n.x,y2:n.y})})));let be=T(Math.min(Math.max(0,S),C));{let e=ge(0,be),t=ge(f,be);ye.push(z(`line`,{class:`dg-xy-axis`,x1:e.x,y1:e.y,x2:t.x,y2:t.y}))}l&&ye.push(z(`g`,{class:`dg-xy-tick`},O.map(e=>{let t=ge(e.at,be);return i?z(`line`,{x1:t.x-4,y1:t.y,x2:t.x,y2:t.y}):z(`line`,{x1:t.x,y1:t.y,x2:t.x,y2:t.y+4})})));let xe=m*(o.length>1?.8:.66),Se=o.length>1?Math.min(4,xe/o.length*.15):0,Ce=(xe-Se*(o.length-1))/Math.max(1,o.length);o.forEach((t,n)=>{let r=e.series.indexOf(t);ve.push(z(`g`,{class:`dg-xy-bars dg-xy-series-${r}`},t.values.map((e,t)=>{let a=ee(t)-xe/2+n*(Ce+Se),o=Math.min(be,T(e)),s=Math.max(be,T(e)),c=i?ge(a,o):ge(a,s);return z(`rect`,{class:`dg-xy-bar`,x:c.x,y:c.y,width:i?s-o:Ce,height:i?Ce:s-o,style:`fill:${ke(r)}`})})))});for(let t of s){let n=e.series.indexOf(t),r=t.values.map((e,t)=>ge(ee(t),T(e))),i=new V;r.forEach((e,t)=>t===0?i.moveTo(e.x,e.y):i.lineTo(e.x,e.y));let a=r.length<=60&&m>=8;ve.push(z(`g`,{class:`dg-xy-line dg-xy-series-${n}`},[z(`path`,{class:`dg-xy-line-path`,d:i.toString(),style:`stroke:${ke(n)}`}),...a?r.map(e=>z(`circle`,{class:`dg-xy-dot`,cx:e.x,cy:e.y,r:3.5,style:`fill:${ke(n)}`})):[]]))}if(i){for(let e of O)ye.push(X(e.measured,ue-Mc,de+e.at,{anchor:`end`,className:`dg-xy-tick-label`}));for(let e of k)ye.push(X(e.measured,ue+e.at,pe+Mc+e.measured.height/2,{className:`dg-xy-tick-label`}))}else{for(let e of k)ye.push(X(e.measured,ue-Mc,pe-e.at,{anchor:`end`,className:`dg-xy-tick-label`}));for(let e of O){let t=ue+e.at;if(A){let n=pe+Mc+e.measured.height/2*Pc;ye.push(z(`g`,{transform:`rotate(-45 ${Lc(t)} ${Lc(n)})`},[X(e.measured,t,n,{anchor:`end`,className:`dg-xy-tick-label`})]))}else ye.push(X(e.measured,t,pe+Mc+e.measured.height/2,{className:`dg-xy-tick-label`}))}}let we=i?M:N,I=i?N:M;if(we){let e=we.height/2,t=de+ie/2;ye.push(z(`g`,{transform:`rotate(-90 ${Lc(e)} ${Lc(t)})`},[X(we,e,t,{className:`dg-xy-axis-title`})]))}I&&ye.push(X(I,ue+F/2,he-I.height/2,{className:`dg-xy-axis-title`}));let Te=ue+F/2;j&&ye.push(X(j,Te,j.height/2,{className:`dg-title`})),ae.forEach((e,t)=>{let n=Te-e.width/2,r=le+t*20+10;for(let t of e.items){let e=ke(t.index);ye.push(z(`g`,{class:`dg-xy-legend-item`},[t.series.kind===`bar`?z(`rect`,{x:n,y:r-Nc/2,width:Nc,height:Nc,rx:2,style:`fill:${e}`}):z(`line`,{class:`dg-xy-legend-line`,x1:n,y1:r,x2:n+Nc,y2:r,style:`stroke:${e}`}),X(t.measured,n+Nc+6,r,{anchor:`start`,className:`dg-xy-legend`})])),n+=oe(t)+20}});let Ee=`${n}-plot`,L=[z(`clipPath`,{id:Ee},[z(`rect`,{x:ue-4,y:de-4,width:F+8,height:ie+8})])],De=[..._e,z(`g`,{"clip-path":`url(#${Ee})`},ve),...ye],Oe=`#${n}`,Ae=[`${Oe} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`,`${Oe} .dg-xy-grid line{stroke:${R(`--dg-grid`)};stroke-width:1px}`,`${Oe} .dg-xy-axis,${Oe} .dg-xy-tick line{stroke:${R(`--dg-line`)};stroke-width:1px}`,`${Oe} .dg-xy-tick-label{fill:${R(`--dg-text-muted`)};font-size:12px}`,`${Oe} .dg-xy-axis-title{fill:${R(`--dg-text`)};font-size:13px;font-weight:bold}`,`${Oe} .dg-xy-line-path{fill:none;stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round}`,`${Oe} .dg-xy-legend-line{stroke-width:2.5px;stroke-linecap:round}`,`${Oe} .dg-xy-legend{fill:${R(`--dg-text`)};font-size:13px}`].join(``);return H({id:n,type:`xychart`,width:me,height:he,title:r??e.accessibility.title??e.title??`XY chart`,description:e.accessibility.description,defs:L,body:De,css:Ae})}function Lc(e){return Math.round(e*100)/100}var Rc=500,zc=[{open:`((`,close:`))`,shape:`circle`},{open:`))`,close:`((`,shape:`bang`},{open:`{{`,close:`}}`,shape:`hexagon`},{open:`(`,close:`)`,shape:`rounded`},{open:`)`,close:`(`,shape:`cloud`},{open:`[`,close:`]`,shape:`square`}];function Bc(e){let t=e.indexOf('"`');return t>=0&&e.indexOf('`"',t+2)<0}function Vc(e){let t=e.trim();if(t.length<2||!t.startsWith(`"`)||!t.endsWith(`"`))return null;let n=t.slice(1,-1);return n.length>=2&&n.startsWith("`")&&n.endsWith("`")?{label:n.slice(1,-1),markdown:!0}:{label:n,markdown:!1}}function Hc(e,t,n){let r=e,i,a=[];for(;;){let e=/\s*::icon\(([^)]*)\)\s*$/.exec(r);if(e&&!r.slice(0,e.index).endsWith(`:`)){i=e[1].trim(),r=r.slice(0,e.index);continue}let t=/\s*:::\s*([\w-]+(?:\s+[\w-]+)*)\s*$/.exec(r);if(t)a.unshift(...t[1].split(/\s+/)),r=r.slice(0,t.index);else break}r=r.trimEnd();let o=Vc(r);if(o)return{id:n(),...o,shape:`default`,icon:i,classes:a};let s=r.search(/[[(){}]/);if(s<0)return{id:r,label:r,markdown:!1,shape:`default`,icon:i,classes:a};let c=zc.find(e=>r.startsWith(e.open,s));if(!c)throw new I(`"${r[s]}" does not start a node shape`,t.line,t.column+s,`Shapes: [square], (rounded), ((circle)), ))bang((, )cloud(, {{hexagon}}`);if(!r.endsWith(c.close)||r.length<s+c.open.length+c.close.length)throw new I(`The "${c.open}" shape is not closed at the end of the line`,t.line,t.column+s,`End the node with "${c.close}", or put text with brackets in quotes: id["text (note)"]`);let l=r.slice(s+c.open.length,r.length-c.close.length),{label:u,markdown:d}=Vc(l)??{label:l.trim(),markdown:!1};if(u.trim()===``)throw new I(`The node has no text`,t.line,t.column+s,`Write id${c.open}text${c.close}`);let f=r.slice(0,s).trim();return{id:f===``?n():f,label:u,markdown:d,shape:c.shape,icon:i,classes:a}}function Uc(e){let t=K(e),n=t[0],r=n?/^mindmap\b\s*(.*)$/.exec(n.text):null;if(!n||!r)throw new I(`A mind map starts with "mindmap"`,n?.line??1,1);if(r[1].trim()!==``)throw new I(`Unexpected "${r[1].trim()}" after "mindmap"`,n.line,n.column+8,`Put the root on the next line`);let i={},a=null,o=null,s=0,c=[],l=()=>`node-${s}`;for(let e=1;e<t.length;e++){let n=t[e],r=q(t,e,i);if(r>0){e+=r-1;continue}let u=n.column-1,d=n.text;for(;Bc(d);){if(e+1>=t.length)throw new I(`The markdown string is not closed`,n.line,n.column+d.indexOf('"`'),'End it with `"');e++,d+=`
35
- `+t[e].text}let f=/^(::icon\(([^)]*)\)|:::\s*([\w-]+(?:\s+[\w-]+)*))$/.exec(d);if(f){if(!o)throw new I(`"${d}" comes before any node`,n.line,n.column,`Put it under the node it belongs to`);f[2]===void 0?o.classes.push(...f[3].split(/\s+/)):o.icon=f[2].trim();continue}let p=Hc(d,n,l),m={...p,children:[],line:n.line,column:n.column};for(;c.length>0&&c[c.length-1].indent>=u;)c.pop();let h=c[c.length-1];if(h)h.node.children.push(m);else{if(a)throw new I(`A mind map has one root; "${p.label}" is a second one`,n.line,n.column,`Indent it under "${a.label}" (line ${a.line})`);a=m}if(c.push({node:m,indent:u}),o=m,s++,s>Rc)throw Te(`nodes`,s,Rc)}if(!a)throw new I(`The mind map is empty`,0,0,`Add a root node on the line after "mindmap"`);return{type:`mindmap`,root:a,accessibility:i}}var Wc={...L,size:16,weight:`bold`},Gc={...L,weight:`bold`},Kc={...L,size:13},qc=200,Jc=1.06,Yc=56,Xc=36,Zc=22,Qc=10;function $c(e){return e===0?Wc:e===1?Gc:Kc}function el(e,t,n,r){let i=r===0?22:14,a=r===0?13:8;switch(e){case`circle`:{let e=Math.max(Math.hypot(t,n)+16,r===0?72:44);return{width:e,height:e}}case`bang`:{let e=(t/2+8)*Math.SQRT2*1.3,r=(n/2+6)*Math.SQRT2*1.3;return{width:e*2,height:r*2}}case`cloud`:return{width:t+i*2+18,height:n+a*2+16};case`hexagon`:{let e=n+a*2;return{width:t+i*2+e/2,height:e}}default:return{width:t+i*2,height:n+a*2}}}function tl(e,t,n,r){let i=$c(t),a=Y(on(J(e.label,{markdown:e.markdown}),qc,i,r),i,r),o=el(e.shape,a.width*Jc,a.height,t),s=e.children.map((e,i)=>tl(e,t+1,t===0?i:n,r)),c=t===0?Zc:Qc,l=s.reduce((e,t)=>e+t.block,0)+c*Math.max(0,s.length-1);return{node:e,depth:t,branch:n,label:a,...o,x:0,y:0,block:Math.max(o.height,l),children:s}}function nl(e,t,n,r){e.x=n+t*e.width/2,e.y=r+e.block/2;let i=e.depth===0?Zc:Qc,a=e.children.reduce((e,t)=>e+t.block,0)+i*Math.max(0,e.children.length-1),o=r+(e.block-a)/2,s=e.x+t*(e.width/2+Xc);for(let n of e.children)nl(n,t,s,o),o+=n.block+i}function rl(e){if(e.length<=1)return e.length;let t=e.reduce((e,t)=>e+t,0),n=1,r=1/0,i=0;for(let a=1;a<=e.length;a++){i+=e[a-1];let o=Math.abs(i-(t-i));o<r-1e-9&&(n=a,r=o)}return Math.min(n,e.length-1)}function il(e,t,n,r){let i=e-n/2+7,a=t-r/2+7,o=n-14,s=r-14,c=[{x:i,y:a},{x:i+o,y:a},{x:i+o,y:a+s},{x:i,y:a+s}],l=new V().moveTo(i,a);return c.forEach((e,t)=>{let n=c[(t+1)%4],r=Math.hypot(n.x-e.x,n.y-e.y),i=Math.max(1,Math.round(r/26)),a=r/i;for(let t=1;t<=i;t++){let r=e.x+(n.x-e.x)*t/i,o=e.y+(n.y-e.y)*t/i;l.arcTo(a*.6,a*.6,0,!1,!0,r,o)}}),l.close().toString()}function al(e,t,n,r){let i=n/2,a=r/2,o=Math.PI*(i+a),s=Math.max(10,Math.min(28,Math.round(o/30))),c=new V;for(let n=0;n<s*2;n++){let r=-Math.PI/2+n*Math.PI/s,o=n%2==0?1:.8,l=e+Math.cos(r)*i*o,u=t+Math.sin(r)*a*o;n===0?c.moveTo(l,u):c.lineTo(l,u)}return c.close().toString()}function ol(e,t,n,r){let i=e-n/2,a=t-r/2;return new V().moveTo(i,a+r).lineTo(i,a+6).quadTo(i,a,i+6,a).lineTo(i+n-6,a).quadTo(i+n,a,i+n,a+6).lineTo(i+n,a+r).close().toString()}function sl(e,t){let n=t?`fill:${t};stroke:${t}`:void 0,r={x:e.x,y:e.y,width:e.width,height:e.height},i=`dg-mm-shape`;switch(e.depth===0&&e.node.shape==="default"?`rounded`:e.node.shape){case`square`:return[mo(`rect`,r,{className:i,style:n})];case`rounded`:return[z(`rect`,{class:i,style:n,x:e.x-e.width/2,y:e.y-e.height/2,width:e.width,height:e.height,rx:10,ry:10})];case`circle`:return[mo(`circle`,r,{className:i,style:n})];case`hexagon`:return[mo(`hexagon`,r,{className:i,style:n})];case`cloud`:return[z(`path`,{class:i,style:n,d:il(e.x,e.y,e.width,e.height)})];case`bang`:return[z(`path`,{class:i,style:n,d:al(e.x,e.y,e.width,e.height)})];default:return[z(`path`,{class:`${i} dg-mm-default`,style:t?`fill:${t}`:void 0,d:ol(e.x,e.y,e.width,e.height)}),z(`line`,{class:`dg-mm-bar`,x1:e.x-e.width/2,y1:e.y+e.height/2,x2:e.x+e.width/2,y2:e.y+e.height/2,style:t?`stroke:${t}`:void 0})]}}function cl(e,t,n,r){let i=tl(e.root,0,-1,t),a=rl(i.children.map(e=>e.block)),o=i.children.slice(0,a),s=i.children.slice(a).reverse(),c=e=>e.reduce((e,t)=>e+t.block,0)+Zc*Math.max(0,e.length-1);i.x=0,i.y=0;let l=-c(o)/2;for(let e of o)nl(e,1,i.width/2+Yc,l),l+=e.block+Zc;l=-c(s)/2;for(let e of s)nl(e,-1,-i.width/2-Yc,l),l+=e.block+Zc;let u=[],d=e=>{u.push(e),e.children.forEach(d)};d(i);let f=Math.min(...u.map(e=>e.x-e.width/2)),p=Math.max(...u.map(e=>e.x+e.width/2)),m=Math.min(...u.map(e=>e.y-e.height/2)),h=Math.max(...u.map(e=>e.y+e.height/2)),g=[],_=[];for(let e of u){let t=e.depth===0?void 0:ke(e.branch);for(let t of e.children){let n=t.x>=e.x?1:-1,r=e.x+n*e.width/2,i=t.x-n*t.width/2,a=(i-r)/2,o=new V().moveTo(r,e.y).curveTo(r+a,e.y,i-a,t.y,i,t.y);g.push(z(`path`,{class:`dg-mm-edge dg-mm-edge-${Math.min(t.depth,3)}`,d:o.toString(),style:`stroke:${ke(t.branch)}`}))}let n=[`dg-node`,`dg-mm-node`,e.depth===0?`dg-mm-root`:`dg-mm-depth-${Math.min(e.depth,2)}`];_.push(z(`g`,{class:n.join(` `),"data-id":/^[\w.:-]+$/.test(e.node.id)?e.node.id:void 0},[...sl(e,t),X(e.label,e.x,e.y,{className:e.depth===0?`dg-mm-root-text`:`dg-mm-text`})]))}let v=`#${n}`,y=[`${v} .dg-mm-edge{fill:none;stroke-linecap:round}`,`${v} .dg-mm-edge-1{stroke-width:3px}`,`${v} .dg-mm-edge-2{stroke-width:2px}`,`${v} .dg-mm-edge-3{stroke-width:1.5px}`,`${v} .dg-mm-shape{stroke-width:1.5px}`,`${v} .dg-mm-root .dg-mm-shape{fill:${R(`--dg-node-fill`)};stroke:${R(`--dg-node-stroke`)};stroke-width:2px}`,`${v} .dg-mm-depth-1 .dg-mm-shape{fill-opacity:0.24;stroke-width:2px}`,`${v} .dg-mm-depth-2 .dg-mm-shape{fill-opacity:0.1}`,`${v} .dg-mm-bar{stroke-width:3px;stroke-linecap:round}`,`${v} .dg-mm-depth-2 .dg-mm-bar{stroke-width:2px}`,`${v} .dg-mm-text{fill:${R(`--dg-text`)}}`,`${v} .dg-mm-depth-2 .dg-mm-text{font-size:13px}`,`${v} .dg-mm-root-text{fill:${R(`--dg-node-text`)};font-size:16px;font-weight:bold}`,`${v} .dg-mm-depth-1 .dg-mm-text{font-weight:bold}`].join(``);return H({id:n,type:`mindmap`,width:p-f,height:h-m,title:r??e.accessibility.title??`Mind map`,description:e.accessibility.description,body:[z(`g`,{transform:`translate(${B(-f)},${B(-m)})`},[z(`g`,{class:`dg-mm-edges`},g),..._])],css:y})}var ll={TB:`TB`,TD:`TB`,BT:`BT`,LR:`LR`,RL:`RL`},ul=`(?:"[^"]*"|[\\p{L}_][\\p{L}\\p{N}_]*(?:-[\\p{L}\\p{N}_]+)*)`,dl={"||":`one`,"|o":`zero-one`,"}|":`one-many`,"}o":`zero-many`},fl={"||":`one`,"o|":`zero-one`,"|{":`one-many`,"o{":`zero-many`},pl={"--":!0,"..":!1,".-":!1,"-.":!1},ml=[[`only one`,`one`],[`zero or one`,`zero-one`],[`one or zero`,`zero-one`],[`one or more`,`one-many`],[`one or many`,`one-many`],[`many(1)`,`one-many`],[`1+`,`one-many`],[`zero or more`,`zero-many`],[`zero or many`,`zero-many`],[`many(0)`,`zero-many`],[`0+`,`zero-many`],[`1`,`one`]],hl=`(${ml.map(([e])=>e.replace(/[()+]/g,e=>`\\${e}`).replace(/ /g,`\\s+`)).join(`|`)})`,gl=RegExp(`^(${ul})\\s*(\\|\\||\\|o|\\}\\||\\}o)(--|\\.\\.|\\.-|-\\.)(\\|\\||o\\||\\|\\{|o\\{)\\s*(${ul})\\s*(?::\\s*(.*))?$`,`u`),_l=RegExp(`^(${ul})\\s+${hl}\\s+(to|optionally\\s+to)\\s+${hl}\\s+(${ul})\\s*(?::\\s*(.*))?$`,`iu`),vl=RegExp(`^(${ul})(?:\\[\\s*("[^"]*"|[^\\]"]*?)\\s*\\])?(?::::([\\w-]+))?\\s*(\\{\\s*\\}?)?$`,`u`);function yl(e){let t=e.toLowerCase().replace(/\s+/g,` `);return ml.find(([e])=>e===t)[1]}function bl(e){return e.startsWith(`"`)?e.slice(1,-1):e}function xl(e){let t=(e??``).trim();return t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`)?t.slice(1,-1):t}function Sl(e){let t=/^(\S+)\s+(\S+)(.*)$/u.exec(e.text);if(!t)throw new I(`"${e.text}" is not an attribute`,e.line,e.column,`Write a type and a name: string firstName.`);let[,n,r,i]=t;if(!/^[\p{L}_*][\p{L}\p{N}_\-[\]().,~]*$/u.test(n))throw new I(`"${n}" is not an attribute type`,e.line,e.column);let a=e.column+e.text.indexOf(r,n.length);if(!/^\*?[\p{L}_][\p{L}\p{N}_\-[\]().]*$/u.test(r))throw new I(`"${r}" is not an attribute name`,e.line,a);let o=a+r.length,s=/^\s*((?:PK|FK|UK)(?:\s*,\s*(?:PK|FK|UK))*)?\s*(?:"([^"]*)")?\s*$/.exec(i);if(!s){let t=o+(i.length-i.trimStart().length);throw new I(`"${i.trim()}" is not a key or a comment`,e.line,t,`After the name come keys (PK, FK, UK, comma-separated) and a "comment" in double quotes.`)}return{type:n,name:r,keys:s[1]?[...new Set(s[1].split(`,`).map(e=>e.trim()))]:[],comment:s[2]}}function Cl(e){let t=K(e),n=t[0];if(!n||n.text!==`erDiagram`)throw new I(`An entity relationship diagram starts with "erDiagram"`,n?.line??1,n?.column??1);let r={type:`er`,direction:`TB`,entities:new Map,relationships:[],classDefs:new Map,accessibility:{}},i=[],a=[],o=e=>{let t=bl(e),n=r.entities.get(t);return n||(n={id:t,label:t,attributes:[],classes:[]},r.entities.set(t,n)),n};for(let e=1;e<t.length;e++){let n=t[e],s=n.text,c=q(t,e,r.accessibility);if(c>0){e+=c-1;continue}let l=/^direction\s+(\w+)$/.exec(s);if(l){let e=ll[l[1].toUpperCase()];if(!e)throw new I(`"${l[1]}" is not a direction`,n.line,n.column+10,`Use TB, BT, LR or RL.`);r.direction=e;continue}if(l=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(s),l){let e=U(l[2],n.line,n.column);for(let t of l[1].split(`,`))r.classDefs.set(t.trim(),e);continue}if(l=/^class\s+(.+?)\s+([\w-]+)$/.exec(s),l){i.push({ids:l[1].split(`,`).map(e=>bl(e.trim())),cls:l[2],s:n});continue}if(l=/^style\s+("[^"]*"|\S+)\s+(.+)$/.exec(s),l){a.push({id:bl(l[1]),style:U(l[2],n.line,n.column),s:n});continue}if(l=gl.exec(s),l){r.relationships.push({from:o(l[1]).id,fromCardinality:dl[l[2]],identifying:pl[l[3]],toCardinality:fl[l[4]],to:o(l[5]).id,label:xl(l[6])});continue}if(l=_l.exec(s),l){r.relationships.push({from:o(l[1]).id,fromCardinality:yl(l[2]),identifying:l[3].toLowerCase()===`to`,toCardinality:yl(l[4]),to:o(l[5]).id,label:xl(l[6])});continue}if(l=vl.exec(s),l){let r=o(l[1]);l[2]!==void 0&&l[2]!==``&&(r.label=bl(l[2])),l[3]&&r.classes.push(l[3]);let i=l[4];if(i!==void 0&&!i.endsWith(`}`)){let i=e+1;for(;i<t.length&&t[i].text!==`}`;i++)r.attributes.push(Sl(t[i]));if(i>=t.length)throw new I(`The attributes of "${r.id}" are not closed`,n.line,n.column,`Add "}" on its own line.`);e=i}continue}let u=RegExp(`^(${ul})\\s*([|}{o.\\-=<>]{2,})`,`u`).exec(s);throw u?new I(`"${u[2]}" is not a relationship`,n.line,n.column+s.indexOf(u[2],u[1].length),`Write a cardinality on each side of -- or ..: ||, |o, }|, }o on the left; ||, o|, |{, o{ on the right.`):s===`}`?new I(`"}" without an open entity`,n.line,n.column):new I(`"${s}" is not an entity relationship statement`,n.line,n.column)}for(let e of i)for(let t of e.ids){let n=r.entities.get(t);if(!n)throw new I(`class refers to an unknown entity "${t}"`,e.s.line,e.s.column);n.classes.push(e.cls)}for(let e of a){let t=r.entities.get(e.id);if(!t)throw new I(`style refers to an unknown entity "${e.id}"`,e.s.line,e.s.column);t.style=e.style}return r}var wl=26,Tl=(e,t,n)=>t>n?(t+n)/2:Math.min(n,Math.max(t,e));function El(e,t,n){let r=e.width/2,i=e.height/2,a=Math.min(16,r),o=Math.min(16,i),s=n===`TB`||n===`BT`,c=t.x-e.x,l=t.y-e.y;if(s?Math.abs(l)>i+.5:Math.abs(c)<=r+.5){let n=l<0?-1:1;return{point:{x:Tl(t.x,e.x-r+a,e.x+r-a),y:e.y+n*i},normal:{x:0,y:n}}}let u=c<0?-1:1;return{point:{x:e.x+u*r,y:Tl(t.y,e.y-i+o,e.y+i-o)},normal:{x:u,y:0}}}var Dl=18,Ol=9;function kl(e){let t=new Map;for(let n of e){let e=`${n.id}\u0000${n.at.normal.x},${n.at.normal.y}`,r=t.get(e)??[];r.push(n),t.set(e,r)}for(let e of t.values()){if(e.length<2)continue;let t=e[0].box,n=e[0].at.normal.x===0?`x`:`y`,r=(n===`x`?t.width:t.height)/2,i=t[n],a=i-r+Math.min(Ol,r),o=i+r-Math.min(Ol,r),s=Math.min(Dl,(o-a)/(e.length-1));e.sort((e,t)=>e.at.point[n]-t.at.point[n]);let c=e.map(e=>e.at.point[n]);for(let e=1;e<c.length;e++)c[e]=Math.max(c[e],c[e-1]+s);c[c.length-1]=Math.min(c[c.length-1],o);for(let e=c.length-2;e>=0;e--)c[e]=Math.min(c[e],c[e+1]-s);c[0]=Math.max(c[0],a);for(let e=1;e<c.length;e++)c[e]=Math.max(c[e],c[e-1]+s);e.forEach((e,t)=>e.at.point={...e.at.point,[n]:c[t]})}}function Al(e,t){return{x:e.point.x+e.normal.x*t,y:e.point.y+e.normal.y*t}}function jl(e,t,n){let r=Math.hypot(n.point.x-e.point.x,n.point.y-e.point.y),i=Math.min(wl,r/3);return[e.point,Al(e,i/2),Al(e,i),...t,Al(n,i),Al(n,i/2),n.point]}var Ml=48,Nl=26;function Pl(e,t,n){let r=t===`TB`||t===`BT`,i=n%2==0?1:-1,a=Ml+Math.floor(n/2)*Nl,o=(r?e.height:e.width)/2,s=Math.max(10,Math.min(18,o-8)),c=(t,n)=>r?{x:e.x+i*t,y:e.y+n}:{x:e.x+n,y:e.y+i*t},l=(r?e.width:e.height)/2,u=r?{x:i,y:0}:{x:0,y:i},d=[c(l,-s),c(l+a/2,-s),c(l+a,-s),c(l+a,s),c(l+a/2,s),c(l,s)];return{points:d,start:{point:d[0],normal:u},end:{point:d[5],normal:u},label:c(l+a+6,0),outward:u}}function Fl(e,t){let n=t===`TB`||t===`BT`,r=new Map,i=new Map,a=new Map;return e.forEach((e,t)=>{if(e.from!==e.to)return;let o=a.get(e.from)??0;a.set(e.from,o+1),r.set(t,o);let s=Ml+Math.floor(o/2)*Nl,c=e.label?(n?e.label.width:e.label.height)+10:4;i.set(e.from,Math.max(i.get(e.from)??0,s+c))}),{loop:r,room:i}}function Il(e,t){return{x:e.label.x+e.outward.x*t.width/2,y:e.label.y+e.outward.y*t.height/2}}function Ll(e){let{direction:t}=e,n=t===`TB`||t===`BT`,r=Fl(e.edges,t),i=e.nodes.map(e=>{let t=r.room.get(e.id)??0;return n?{...e,width:e.width+t*2}:{...e,height:e.height+t*2}}),a=[];e.edges.forEach((e,t)=>{e.from!==e.to&&a.push({id:String(t),from:e.from,to:e.to,label:e.label})});let o=Zo({direction:t,nodes:i,edges:[...a,...e.extra??[]],clusters:e.clusters,nodeSep:e.nodeSep,rankSep:e.rankSep,clusterPadding:e.clusterPadding,transpose:!0});for(let t of e.nodes){let e=o.nodes.get(t.id);e&&o.nodes.set(t.id,{...e,width:t.width,height:t.height})}let s=[],c=e.edges.map((e,n)=>{let i=r.loop.get(n);if(i!==void 0){let n=Pl(o.nodes.get(e.from),t,i);return{points:n.points,start:n.start,end:n.end,label:e.label?Il(n,e.label):void 0}}let a=o.edges.get(String(n));if(!a)return;let c=o.nodes.get(e.from),l=o.nodes.get(e.to),u=El(c,a.points[0]??l,t),d=El(l,a.points[a.points.length-1]??c,t);return s.push({id:e.from,box:c,at:u},{id:e.to,box:l,at:d}),{points:a.points,start:u,end:d,label:a.label}});return kl(s),c.forEach((e,t)=>{e&&!r.loop.has(t)&&(e.points=jl(e.start,e.points,e.end))}),{result:o,routes:c}}function Rl(e,t){let n=e.width+8,r=e.height+4;return z(`g`,{class:`dg-edge-label-group`},[z(`rect`,{class:`dg-edge-label-box`,x:t.x-n/2,y:t.y-r/2,width:n,height:r,rx:3}),X(e,t.x,t.y,{className:`dg-edge-label`})])}function zl(e){let t={},n={};for(let[r,i]of Object.entries(e))r===`fill`||r===`fill-opacity`?t[r]=i:n[r]=i;return{frame:W(n),band:W(t)}}function Bl(e,t,n,r,i,a){let o=e+n,s=t+r,c=new V().moveTo(e+i,t).lineTo(o-i,t);return i>0&&c.arcTo(i,i,0,!1,!0,o,t+i),c.lineTo(o,s-a),a>0&&c.arcTo(a,a,0,!1,!0,o-a,s),c.lineTo(e+a,s),a>0&&c.arcTo(a,a,0,!1,!0,e,s-a),c.lineTo(e,t+i),i>0&&c.arcTo(i,i,0,!1,!0,e+i,t),c.close().toString()}var Vl={...L,size:13},Hl={...L,size:11,weight:`bold`},Ul={...L,weight:`bold`},Wl=12,Gl=5,Kl=110,ql={one:`er-one`,"zero-one":`er-zero-one`,"one-many":`er-one-many`,"zero-many":`er-zero-many`};function Jl(e,t,n){return Y(tn(Zt(e)),t,n)}function Yl(e,t){let n=Y(J(e.label),Ul,t),r=e.attributes.map(e=>{let n={type:Jl(e.type,Vl,t),name:Jl(e.name,Vl,t)};return e.keys.length>0&&(n.keys=Jl(e.keys.join(`, `),Hl,t)),e.comment&&(n.comment=Jl(e.comment,{...Vl,style:`italic`},t)),n}),i=n.height+18;if(r.length===0)return{header:n,rows:r,columns:{},headerHeight:i,rowHeight:0,width:Math.max(n.width+32,Kl),height:i};let a=Vl.size*1.25+10,o={},s=0;for(let e of[`type`,`name`,`keys`,`comment`]){let t=Math.max(0,...r.map(t=>t[e]?.width??-1));r.some(t=>t[e])&&(o[e]=s+Wl,s+=Wl+t)}return s+=Wl,{header:n,rows:r,columns:o,headerHeight:i,rowHeight:a,width:Math.max(s,n.width+32,Kl),height:i+a*r.length}}function Xl(e,t){return Ke(t.get(`default`),...e.classes.map(e=>t.get(e)),e.style)}function Zl(e,t,n,r){let i=n.x-n.width/2,a=n.y-n.height/2,o=W(r.shape),s=zl(r.shape),c=W(r.text),l=[`dg-node`,`dg-entity`,...e.classes.map(e=>`dg-class-${e.replace(/[^\w-]/g,``)}`)].join(` `);if(t.rows.length===0)return z(`g`,{class:l,"data-id":e.id},[z(`rect`,{class:`dg-shape`,x:i,y:a,width:n.width,height:n.height,rx:Gl,style:o}),X(t.header,n.x,n.y,{className:`dg-label dg-entity-title`,style:c})]);let u=.75,d=n.width-u*2,f=[z(`rect`,{class:`dg-shape dg-entity-box`,x:i,y:a,width:n.width,height:n.height,rx:Gl,style:s.frame}),z(`path`,{class:`dg-entity-header`,d:Bl(i+u,a+u,d,t.headerHeight-u,4.25,0),style:s.band})];t.rows.forEach((e,n)=>{let r=a+t.headerHeight+n*t.rowHeight,o=n===t.rows.length-1;n%2==1&&f.push(z(`path`,{class:`dg-entity-row-alt`,d:Bl(i+u,r,d,t.rowHeight-(o?u:0),0,o?4.25:0)}));let s=r+t.rowHeight/2;for(let n of[`type`,`name`,`keys`,`comment`]){let r=e[n],a=t.columns[n];r&&a!==void 0&&f.push(X(r,i+a,s,{anchor:`start`,className:`dg-entity-${n}`}))}});let p=a+t.headerHeight;return f.push(z(`line`,{class:`dg-entity-rule`,x1:i,y1:p,x2:i+n.width,y2:p,style:r.shape.stroke?`stroke:${r.shape.stroke}`:void 0}),X(t.header,n.x,a+t.headerHeight/2,{className:`dg-label dg-entity-title`,style:c})),z(`g`,{class:l,"data-id":e.id},f)}function Ql(e,t,n,r){let i=new Map;for(let n of e.entities.values())i.set(n.id,Yl(n,t));let a=new Map,o=e.relationships.map((e,n)=>{let r;if(e.label.trim()!==``){let i=Y(J(e.label),L,t);a.set(n,i),r={width:i.width+8,height:i.height+4}}return{from:e.from,to:e.to,label:r}}),s=[...e.entities.values()].map(e=>({id:e.id,width:i.get(e.id).width,height:i.get(e.id).height})),{result:c,routes:l}=Ll({direction:e.direction,nodes:s,edges:o,nodeSep:50,rankSep:84}),u=[],d=[],f=[];e.relationships.forEach((e,t)=>{let r=l[t];if(!r)return;let i=ql[e.fromCardinality],o=ql[e.toCardinality];u.push(i,o),d.push(z(`path`,{class:e.identifying?`dg-edge`:`dg-edge dg-edge-dashed`,d:io(r.points),"marker-start":`url(#${ia(n,i,!0)})`,"marker-end":`url(#${ia(n,o)})`,"data-from":e.from,"data-to":e.to}));let s=a.get(t);s&&r.label&&f.push(Rl(s,r.label))});let p=[...e.entities.values()].map(t=>Zl(t,i.get(t.id),c.nodes.get(t.id),Xl(t,e.classDefs))),m=`#${n}`,h=[`${m} .dg-entity .dg-entity-box{fill:${R(`--dg-row-fill`)}}`,`${m} .dg-entity-title{font-weight:bold}`,`${m} .dg-entity-header{fill:${R(`--dg-node-fill`)};stroke:none}`,`${m} .dg-entity-row-alt{fill:${R(`--dg-row-alt-fill`)};stroke:none}`,`${m} .dg-entity-rule{stroke:${R(`--dg-node-stroke`)};stroke-width:1px}`,`${m} .dg-entity-type,${m} .dg-entity-comment{fill:${R(`--dg-text-muted`)}}`,`${m} .dg-entity-type,${m} .dg-entity-name,${m} .dg-entity-comment{font-size:${Vl.size}px}`,`${m} .dg-entity-comment{font-style:italic}`,`${m} .dg-entity-keys{fill:${R(`--dg-node-stroke`)};font-size:${Hl.size}px;font-weight:bold}`,`${m} .dg-edge-dashed{stroke-dasharray:6 4}`].join(``);return H({id:n,type:`er`,width:c.width,height:c.height,title:r??e.accessibility.title??`Entity relationship diagram`,description:e.accessibility.description,defs:aa(n,u),body:[z(`g`,{class:`dg-edges`},d),z(`g`,{class:`dg-edge-labels`},f),z(`g`,{class:`dg-nodes`},p)],css:h})}var $l={...L,size:13},eu={...L,size:12},tu={...L,weight:`bold`},nu={...L,size:12},ru=6,iu=10,au=5,ou=100,su={none:null,inheritance:`triangle`,composition:`diamond`,aggregation:`diamond-open`,arrow:`open-arrow`};function cu(e){return e.classifier===`abstract`?{...$l,style:`italic`}:$l}function lu(e,t){let n=e.annotations.map(e=>Y(tn(`«${Zt(e)}»`),eu,t)),r=Y(J(e.label),tu,t),i=e=>({member:e,label:Y(tn(Zt(e.text)),cu(e),t)}),a=e.attributes.map(i),o=e.methods.map(i),s=n.reduce((e,t)=>e+t.height,0)+r.height+18,c=$l.size*1.25,l=e=>e.length===0?iu:e.length*c+12,u=a.length===0&&o.length===0,d=u?0:l(a),f=u?0:l(o),p=Math.max(r.width,...n.map(e=>e.width),...a.map(e=>e.label.width),...o.map(e=>e.label.width));return{annotations:n,name:r,attributes:a,methods:o,headerHeight:s,attributesHeight:d,methodsHeight:f,width:Math.max(p+32,ou),height:s+d+f}}function uu(e,t){return Ke(t.get(`default`),...e.classes.map(e=>t.get(e)),e.style)}function du(e,t,n,r){let i=n.x-n.width/2,a=n.y-n.height/2,o=W(r.shape),s=zl(r.shape),c=W(r.text),l=t.attributesHeight===0&&t.methodsHeight===0,u=.75,d=[z(`rect`,{class:l?`dg-shape`:`dg-shape dg-uml-box`,x:i,y:a,width:n.width,height:n.height,rx:au,style:l?o:s.frame})];l||d.push(z(`path`,{class:`dg-uml-header`,d:Bl(i+u,a+u,n.width-u*2,t.headerHeight-u,4.25,0),style:s.band}));let f=a+9;for(let e of t.annotations)d.push(X(e,n.x,f+e.height/2,{className:`dg-label dg-uml-annotation`,style:c})),f+=e.height;d.push(X(t.name,n.x,f+t.name.height/2,{className:`dg-label dg-uml-name`,style:c}));let p=r.shape.stroke?`stroke:${r.shape.stroke}`:void 0,m=(e,t)=>{d.push(z(`line`,{class:`dg-uml-rule`,x1:i,y1:t,x2:i+n.width,y2:t,style:p}));let r=t+ru;for(let{member:t,label:n}of e){let e=[t.classifier===`static`?`text-decoration:underline`:``,t.classifier===`abstract`?`font-style:italic`:``].filter(Boolean).join(`;`);d.push(X(n,i+10,r+n.height/2,{anchor:`start`,className:`dg-uml-member dg-uml-${t.kind}`,style:e||void 0})),r+=n.height}};l||(m(t.attributes,a+t.headerHeight),m(t.methods,a+t.headerHeight+t.attributesHeight));let h=z(`g`,{class:[`dg-node`,`dg-uml-class`,...e.classes.map(e=>`dg-class-${e.replace(/[^\w-]/g,``)}`)].join(` `),"data-id":e.id},[e.link?.tooltip?z(`title`,{},[{text:e.link.tooltip}]):null,...d]);return e.link?z(`a`,{href:e.link.href,target:e.link.target,rel:e.link.target===`_blank`?`noopener noreferrer`:void 0},[h]):h}function fu(e){let t=e=>e===`inheritance`||e===`composition`||e===`aggregation`;return t(e.toEnd)&&!t(e.fromEnd)?{from:e.to,to:e.from,fromEnd:e.toEnd,toEnd:e.fromEnd,dashed:e.dashed,fromCardinality:e.toCardinality,toCardinality:e.fromCardinality,label:e.label}:e}function pu(e,t,n){let{point:r,normal:i}=t;if(i.x===0){let t=n??1;return X(e,r.x+t*12,r.y+i.y*(e.height/2+4),{anchor:t>0?`start`:`end`,className:`dg-uml-cardinality`})}let a=n??-1;return X(e,r.x+i.x*(e.width/2+6),r.y+a*(e.height/2+7),{className:`dg-uml-cardinality`})}function mu(e,t,n,r){let i=new Map;for(let n of e.classes.values())i.set(n.id,lu(n,t));let a=e.relations.map(fu),o=new Map,s=a.map((e,n)=>{let r;if(e.label){let i=Y(J(e.label),L,t);o.set(n,i),r={width:i.width+8,height:i.height+4}}return{from:e.from,to:e.to,label:r}}),c=[...e.classes.values()].map(e=>({id:e.id,width:i.get(e.id).width,height:i.get(e.id).height,cluster:e.namespace})),l=e.notes.map(e=>Y(tn(Zt(e.text)),L,t)),u=[];e.notes.forEach((t,n)=>{let r=l[n];c.push({id:`\u0000note${n}`,width:r.width+16,height:r.height+16,cluster:t.target?e.classes.get(t.target).namespace:void 0}),t.target&&u.push({id:`note${n}`,from:`\u0000note${n}`,to:t.target,weight:0})});let d={...L,weight:`bold`},f=new Map,p=[...e.namespaces.values()].map(e=>{let n=Y(tn(e.id),d,t);return f.set(e.id,n),{id:e.id,label:{width:n.width,height:n.height}}}),{result:m,routes:h}=Ll({direction:e.direction,nodes:c,edges:s,extra:u,clusters:p,nodeSep:50,rankSep:70,clusterPadding:16}),g=[...e.namespaces.values()].map(e=>{let t=m.clusters.get(e.id),n=f.get(e.id);return z(`g`,{class:`dg-cluster dg-namespace`,"data-id":e.id},[z(`rect`,{class:`dg-cluster-box`,x:t.x-t.width/2,y:t.y-t.height/2,width:t.width,height:t.height,rx:6}),X(n,t.x,t.y-t.height/2+6+n.height/2,{className:`dg-cluster-label`})])}),_=[],v=[],y=[];a.forEach((e,r)=>{let i=h[r];if(!i)return;let a=su[e.fromEnd],s=su[e.toEnd];a&&_.push(a),s&&_.push(s),v.push(z(`path`,{class:e.dashed?`dg-edge dg-edge-dashed`:`dg-edge`,d:io(i.points),"marker-start":a?`url(#${ia(n,a,!0)})`:void 0,"marker-end":s?`url(#${ia(n,s)})`:void 0,"data-from":e.from,"data-to":e.to}));let c=o.get(r);c&&i.label&&y.push(Rl(c,i.label));let l=e.from===e.to,u=(e,n,r)=>y.push(pu(Y(tn(Zt(e)),nu,t),n,r));e.fromCardinality&&u(e.fromCardinality,i.start,l?-1:void 0),e.toCardinality&&u(e.toCardinality,i.end,l?1:void 0)});let b=e.notes.map((e,t)=>{let n=m.nodes.get(`\u0000note${t}`),r=l[t],i=null;if(e.target){let r=m.nodes.get(e.target),a=m.edges.get(`note${t}`),o=a?.points[a.points.length-1]??n,s=eo(n,a?.points[0]??r),c=eo(r,o);i=z(`path`,{class:`dg-note-link`,d:io([s,...a?.points??[],c])})}return z(`g`,{class:`dg-note`},[i,z(`rect`,{class:`dg-note-box`,x:n.x-n.width/2,y:n.y-n.height/2,width:n.width,height:n.height,rx:2}),X(r,n.x,n.y,{className:`dg-note-text`})])}),x=[...e.classes.values()].map(t=>du(t,i.get(t.id),m.nodes.get(t.id),uu(t,e.classDefs))),S=`#${n}`,C=[`${S} .dg-uml-class .dg-uml-box{fill:${R(`--dg-row-fill`)}}`,`${S} .dg-uml-name{font-weight:bold}`,`${S} .dg-uml-header{fill:${R(`--dg-node-fill`)};stroke:none}`,`${S} .dg-uml-rule{stroke:${R(`--dg-node-stroke`)};stroke-width:1px}`,`${S} .dg-uml-annotation{font-size:${eu.size}px}`,`${S} .dg-uml-member{font-size:${$l.size}px}`,`${S} .dg-uml-cardinality{fill:${R(`--dg-text-muted`)};font-size:${nu.size}px}`,`${S} .dg-edge-dashed{stroke-dasharray:6 4}`,`${S} .dg-note-box{fill:${R(`--dg-note-fill`)};stroke:${R(`--dg-note-stroke`)}}`,`${S} .dg-note-text{fill:${R(`--dg-note-text`)}}`,`${S} .dg-note-link{fill:none;stroke:${R(`--dg-note-stroke`)};stroke-dasharray:3 3}`].join(``);return H({id:n,type:`class`,width:m.width,height:m.height,title:r??e.accessibility.title??`Class diagram`,description:e.accessibility.description,defs:aa(n,_),body:[z(`g`,{class:`dg-clusters`},g),z(`g`,{class:`dg-edges`},v),z(`g`,{class:`dg-notes`},b),z(`g`,{class:`dg-edge-labels`},y),z(`g`,{class:`dg-nodes`},x)],css:C})}var hu=76,gu=76,_u=28,vu=16,yu=14,bu=36,xu=30,Su=4,Cu=e=>({l:e.x-e.width/2,t:e.y-e.height/2,r:e.x+e.width/2,b:e.y+e.height/2}),wu=(e,t)=>({l:e.l-t,t:e.t-t,r:e.r+t,b:e.b+t}),Tu=(e,t)=>e.l<t.r&&t.l<e.r&&e.t<t.b&&t.t<e.b,Eu=(e,t)=>Math.max(0,Math.min(e.r,t.r)-Math.max(e.l,t.l))*Math.max(0,Math.min(e.b,t.b)-Math.max(e.t,t.t)),Du={up:[-1,0],down:[1,0],left:[0,-1],right:[0,1]};function Ou(e){let t=hu,n=gu;e.diagram.relations.forEach((r,i)=>{let a=e.relLabel.get(i);a&&!r.hidden&&(n=Math.max(n,Math.min(a.height+28+24,160)),(r.direction===`left`||r.direction===`right`)&&(t=Math.max(t,a.width+28+16)))});let r=null;for(let i=0;i<Su;i++){let i=Lu(e,ku(e,t,n,ku(e,t,n)));if((!r||i.conflicts<r.conflicts)&&(r=i),i.conflicts===0)break;i.needs.x>0&&(t=Math.max(t+30,i.needs.x)),i.needs.y>0&&(n=Math.max(n+30,i.needs.y))}return r.result}function ku(e,t,n,r){let i=e.diagram,a=i.direction===`LR`,o=e=>i.elements.get(e)?.parent??i.boundaries.get(e)?.parent,s=(e,t)=>{let n=e;for(let e=0;e<1e3;e++){let e=o(n);if((e??``)===t)return n;if(e===void 0)return;n=e}},c=new Map,l=t=>{let n=p(t),r=e.boundaryLabel.get(t)??{width:0,height:0};return{width:Math.max(n.width+56,r.width+56,140),height:r.height+(n.height>0?vu+n.height+_u:_u/2)}},u=(e,t=i.children.get(e)??[],n)=>{let r=new Map,o=new Set,c=e=>`${e.r},${e.c}`,l=(e,t)=>{r.set(e,t),o.add(c(t))},u=t=>{for(let n of i.relations){if(!n.direction)continue;let i=s(n.from,e),a=s(n.to,e);if(!i||!a||i===a)continue;let l,u=1;if(a===t&&r.has(i)?l=r.get(i):i===t&&r.has(a)&&(l=r.get(a),u=-1),!l)continue;let[d,f]=Du[n.direction],p={r:l.r+d*u,c:l.c+f*u};for(;o.has(c(p));)p.r+=d*u,p.c+=f*u;return p}return null},d=t.filter(e=>i.elements.has(e)),f=t.filter(e=>i.boundaries.has(e)),p=0,m=(e,t)=>{for(;;){let n=Math.floor(p/e),r=p%e;p++;let i=a?{r,c:t+n}:{r:t+n,c:r};if(!o.has(c(i)))return i}},h=new Set;for(let e of d){let t=u(e);t?l(e,t):(l(e,m(i.shapeInRow,0)),h.add(e))}let g=e=>a?e.c:e.r,_=Math.max(-1,...d.map(e=>g(r.get(e)))),v=d.filter(e=>g(r.get(e))===_);if((d.length>0?Math.ceil(d.length/i.shapeInRow):0)>1&&v.length<i.shapeInRow&&v.every(e=>h.has(e))){let e=i.shapeInRow-v.length,t=Math.min(e,n??Math.floor(e/2));for(let e of v){let n=r.get(e);o.delete(c(n)),a?n.r+=t:n.c+=t,o.add(c(n))}}let y=0;for(let e of r.values())y=Math.max(y,(a?e.c:e.r)+1);p=0;for(let e of f)l(e,u(e)??m(i.boundaryInRow,y));let b=[...new Set([...r.values()].map(e=>e.r))].sort((e,t)=>e-t),x=[...new Set([...r.values()].map(e=>e.c))].sort((e,t)=>e-t);for(let e of r.values())e.r=b.indexOf(e.r),e.c=x.indexOf(e.c);return r},d=r=>{let a=new Map;for(let t of r.keys())a.set(t,i.elements.has(t)?e.elementSize.get(t):l(t));let o=e=>i.elements.has(e),s=0;for(let[e,t]of a)o(e)&&(s=Math.max(s,t.width));let c=Math.max(0,...[...r.values()].map(e=>e.r+1)),u=Array.from({length:c},()=>[]);for(let[e,t]of r)u[t.r].push(e);for(let e of u)e.sort((e,t)=>r.get(e).c-r.get(t).c);let d=u.map(e=>e.every(o)),f=1/0,p=-1/0;u.forEach((e,t)=>{if(d[t])for(let t of e)f=Math.min(f,r.get(t).c),p=Math.max(p,r.get(t).c)});let m=Number.isFinite(f)?(p-f+1)*s+(p-f)*t:0,h=u.map((e,n)=>d[n]?m:e.reduce((e,n,r)=>e+a.get(n).width+(r>0?t:0),0)),g=Math.max(0,...h),_=new Map,v=0;return u.forEach((e,i)=>{if(e.length===0)return;let o=Math.max(...e.map(e=>a.get(e).height));if(d[i]){let n=(g-m)/2;for(let i of e)_.set(i,{x:n+(r.get(i).c-f)*(s+t),y:v,width:s,height:o})}else{let n=(g-h[i])/2;for(let r of e){let e=a.get(r);_.set(r,{x:n,y:v,width:e.width,height:e.height}),n+=e.width+t}}v+=o+n}),{width:g,height:Math.max(0,v-n),items:_}},f=a=>{let o=[...i.children.get(a)??[]],c=[],l=[];for(let e of i.relations){if(e.hidden)continue;let t=s(e.from,a),n=s(e.to,a);if(t&&n&&t!==n)c.push([t,n]);else if(r&&(t||n)&&!(t&&n)){let i=r.elements.get(t?e.to:e.from)??r.boundaries.get(t?e.to:e.from);i&&l.push([t??n,i])}}let f=u(a,o);if(c.length===0&&l.length===0||o.length<2)return f;let p=a===``?void 0:r?.boundaries.get(a),m=e.boundaryLabel.get(a)?.height??0,h=e=>{let r=d(e),a=e=>{let t=r.items.get(e);return{l:t.x,t:t.y,r:t.x+t.width,b:t.y+t.height}},o=0;for(let[e,i]of c){let s=a(e),c=a(i);o+=Math.max(0,Math.max(s.l,c.l)-Math.min(s.r,c.r))+Math.max(0,Math.max(s.t,c.t)-Math.min(s.b,c.b));let l={x:(s.l+s.r)/2,y:(s.t+s.b)/2},u={x:(c.l+c.r)/2,y:(c.t+c.b)/2};for(let s of r.items.keys())s!==e&&s!==i&&Ru(l,u,a(s))&&(o+=t+n+120)}if(l.length>0){let e=p?p.x-r.width/2:0,t=p?p.y-p.height/2+m+vu:0;for(let[n,r]of l){let i=a(n);o+=.5*(Math.abs(e+(i.l+i.r)/2-r.x)+Math.abs(t+(i.t+i.b)/2-r.y))}}let s=new Map;for(let t of e.values())s.set(t.r,(s.get(t.r)??0)+1);for(let e of s.values())e>Math.max(i.shapeInRow,i.boundaryInRow)&&(o+=(e-Math.max(i.shapeInRow,i.boundaryInRow))*400);return o},g=h(f),_=o.filter(e=>i.elements.has(e)),v=o.filter(e=>i.boundaries.has(e)),y=Math.max(0,i.shapeInRow-(_.length%i.shapeInRow||i.shapeInRow)),b=[Math.floor(y/2),...Array.from({length:y+1},(e,t)=>t)];if(_.length<=6&&v.length<=3){for(let e of zu(_))for(let t of zu(v))for(let n of b){let r=u(a,[...e,...t],n),i=h(r);i<g-1e-6&&(g=i,f=r)}return f}for(let e=0;e<4;e++){let e=!1;for(let t=0;t<o.length;t++)for(let n=t+1;n<o.length;n++){if(i.elements.has(o[t])!==i.elements.has(o[n]))continue;[o[t],o[n]]=[o[n],o[t]];let r=u(a,o),s=h(r);s<g-1e-6?(g=s,f=r,e=!0):[o[t],o[n]]=[o[n],o[t]]}if(!e)break}return f};function p(e){let t=c.get(e);if(t)return t;let n=d(f(e));return c.set(e,n),n}let m=new Map,h=new Map,g=(t,n,r)=>{let a=p(t);for(let[t,o]of a.items){let a={x:n+o.x+o.width/2,y:r+o.y+o.height/2,width:o.width,height:o.height};if(i.elements.has(t)){m.set(t,a);continue}h.set(t,a);let s=p(t),c=e.boundaryLabel.get(t)??{width:0,height:0};g(t,n+o.x+(o.width-s.width)/2,r+o.y+c.height+vu)}};g(``,0,0);let _=p(``);return{elements:m,boundaries:h,width:_.width,height:_.height}}var Au=[1,0,-1,0],ju=[0,1,0,-1];function Mu(e,t,n,r){let i=Cu(t),a=[],o=n?i.t+40:i.t,s=(t,n,r)=>{let s;s=t===0||t===2?{x:t===0?i.r:i.l,y:o+(i.b-o)*n}:{x:i.l+(i.r-i.l)*n,y:t===1?i.b:i.t},a.push({at:s,stub:{x:s.x+Au[t]*yu,y:s.y+ju[t]*yu},out:t,key:`${e}:${t}:${n}`,cost:r})},c=Cu(r),l=Math.max(i.l+16,c.l+16),u=Math.min(i.r-16,c.r-16);if(l<=u&&!(n&&c.b<=i.t)){let e=((l+u)/2-i.l)/(i.r-i.l);s(c.t>=i.b?1:3,e,0)}let d=Math.max(o+16,c.t+16),f=Math.min(i.b-16,c.b-16);if(d<=f){let e=((d+f)/2-o)/(i.b-o);s(c.l>=i.r?0:2,e,0)}for(let e of[0,1,2,3])s(e,.5,0),!(n&&e===3)&&(s(e,.35,6),s(e,.65,6),s(e,.2,14),s(e,.8,14));return a}var Nu=class{constructor(){this.items=[],this.seq=0}get size(){return this.items.length}push(e,t){let n=this.items;n.push({f:e,n:this.seq++,s:t});let r=n.length-1;for(;r>0;){let e=r-1>>1;if(Pu(n[e],n[r]))break;[n[e],n[r]]=[n[r],n[e]],r=e}}pop(){let e=this.items,t=e[0],n=e.pop();if(e.length>0){e[0]=n;let t=0;for(;;){let n=2*t+1,r=n+1,i=t;if(n<e.length&&Pu(e[n],e[i])&&(i=n),r<e.length&&Pu(e[r],e[i])&&(i=r),i===t)break;[e[i],e[t]]=[e[t],e[i]],t=i}}return t.s}},Pu=(e,t)=>e.f<t.f||e.f===t.f&&e.n<t.n,Fu=class{constructor(){this.h=new Map,this.v=new Map}add(e,t){e.y===t.y?Iu(this.h,e.y,e.x,t.x):e.x===t.x&&Iu(this.v,e.x,e.y,t.y)}shared(e,t){let n=e.y===t.y?this.h.get(e.y):this.v.get(e.x);if(!n)return 0;let[r,i]=e.y===t.y?[Math.min(e.x,t.x),Math.max(e.x,t.x)]:[Math.min(e.y,t.y),Math.max(e.y,t.y)],a=0;for(let[e,t]of n)a+=Math.max(0,Math.min(i,t)-Math.max(r,e));return a}crosses(e,t){let n=t?this.v.get(e.x):this.h.get(e.y),r=t?e.y:e.x;return!!n&&n.some(([e,t])=>r>e&&r<t)}};function Iu(e,t,n,r){let i=e.get(t)??[];i.push([Math.min(n,r),Math.max(n,r)]),e.set(t,i)}function Lu(e,t){let n=e.diagram,{elements:r,boundaries:i}=t,a=(e,t)=>{let r=e;for(;r!==void 0;){if(r===t)return!0;r=n.elements.get(r)?.parent??n.boundaries.get(r)?.parent}return!1},o=t=>{let n=Cu(i.get(t)),r=e.boundaryLabel.get(t)??{width:0,height:0};return{l:n.l,t:n.t,r:Math.min(n.r,n.l+12+r.width),b:n.t+r.height-4}},s=[...i.keys()].map(o),c={l:0,t:0,r:t.width,b:t.height},l=e=>c={l:Math.min(c.l,e.l),t:Math.min(c.t,e.t),r:Math.max(c.r,e.r),b:Math.max(c.b,e.b)};for(let e of[...r.values(),...i.values()])l(Cu(e));let u=wu(c,bu),d=new Fu,f=new Set,p=new Map,m=n.relations.map((e,t)=>({r:e,i:t})).filter(({r:e})=>!e.hidden),h=e=>r.get(e)??i.get(e),g=e=>{let t=h(e.from),n=h(e.to);return Math.abs(t.x-n.x)+Math.abs(t.y-n.y)};m.sort((e,t)=>g(e.r)-g(t.r)||e.i-t.i);for(let{r:e,i:t}of m){let s=h(e.from),c=h(e.to);if(e.from===e.to){let e=Cu(s),n=s.y-14,r=s.y+14,i=e.r+28;p.set(t,{points:[{x:e.r,y:n},{x:i,y:n},{x:i,y:r},{x:e.r,y:r}]});continue}let l=[];for(let[t,n]of r)l.push(t===e.from||t===e.to?Cu(n):wu(Cu(n),yu));let m=[];for(let[t,n]of i){if(t===e.from||t===e.to){l.push(Cu(n));continue}let r=a(e.from,t)||a(e.to,t);l.push(r?wu(o(t),4):wu(Cu(n),yu/2)),r&&m.push(Cu(n))}let g=e=>n.elements.get(e)?.shape===`person`,_=Mu(e.from,s,g(e.from),c),v=Mu(e.to,c,g(e.to),s),y=new Set([u.l,u.r]),b=new Set([u.t,u.b]);for(let e of l)y.add(e.l).add(e.r),b.add(e.t).add(e.b);for(let e of m)y.add(e.l-yu).add(e.l+yu).add(e.r-yu).add(e.r+yu),b.add(e.t-yu).add(e.b-yu).add(e.b+yu);for(let e of[..._,...v])y.add(e.stub.x),b.add(e.stub.y);let x=e=>{let t=[...e].map(e=>Math.round(e*100)/100).sort((e,t)=>e-t),n=[];return t.forEach((e,r)=>{r>0&&e-t[r-1]>8&&n.push(Math.round((e+t[r-1])/2*100)/100),n.push(e)}),[...new Set(n)].sort((e,t)=>e-t)},S=x(y),C=x(b),w=S.length,T=new Map(S.map((e,t)=>[e,t])),E=new Map(C.map((e,t)=>[e,t])),D=e=>Math.round(e*100)/100,ee=(e,t)=>{let n=(e.x+t.x)/2,r=(e.y+t.y)/2;for(let e of l)if(n>e.l&&n<e.r&&r>e.t&&r<e.b)return!0;return!1},O=(e,t,n)=>(t*w+e)*4+n,k=new Map;for(let e of v){let t=T.get(D(e.stub.x)),n=E.get(D(e.stub.y));t!==void 0&&n!==void 0&&k.set(n*w+t,e)}let A=new Map,j=new Map,M=new Nu,N=(e,t)=>{let n=1/0;for(let r of v)n=Math.min(n,Math.abs(S[e]-r.stub.x)+Math.abs(C[t]-r.stub.y));return n},te=new Map;for(let e of _){let t=T.get(D(e.stub.x)),n=E.get(D(e.stub.y));if(t===void 0||n===void 0)continue;let r=O(t,n,e.out),i=e.cost+(f.has(e.key)?60:0);i<(A.get(r)??1/0)&&(A.set(r,i),te.set(r,e),M.push(i+N(t,n),r))}let P=-1,ne=null,re=new Set;for(;M.size>0;){let e=M.pop();if(re.has(e))continue;if(re.add(e),e<0){P=e,ne=k.get((-1-e)/4);break}let t=e%4,n=(e-t)/4,r=n%w,i=(n-r)/w,a=k.get(n);if(a&&t===(a.out+2)%4){let t=A.get(e)+a.cost+(f.has(a.key)?60:0),r=-1-n*4;t<(A.get(r)??1/0)&&(A.set(r,t),j.set(r,e),M.push(t,r))}for(let n=0;n<4;n++){if(n===(t+2)%4)continue;let a=r+Au[n],o=i+ju[n];if(a<0||o<0||a>=w||o>=C.length)continue;let s={x:S[r],y:C[i]},c={x:S[a],y:C[o]};if(ee(s,c))continue;let l=Math.abs(c.x-s.x)+Math.abs(c.y-s.y);if(n!==t&&te.has(e))continue;let u=l+(n===t?0:xu),f=d.shared(s,c);f>0&&(u+=40+f*3),d.crosses(c,n%2==0)&&(u+=12),u+=Bu(s,c,m);let p=O(a,o,n),h=A.get(e)+u;h<(A.get(p)??1/0)&&(A.set(p,h),j.set(p,e),M.push(h+N(a,o),p))}}let F;if(P!==-1&&ne){let e=[],t=j.get(P),n;for(;t!==void 0;){let r=(t-t%4)/4,i=r%w;e.push({x:S[i],y:C[(r-i)/w]}),n=t,t=j.get(t)}e.reverse();let r=te.get(n);F=Vu([r.at,...e,ne.at]),f.add(r.key),f.add(ne.key)}else F=[{x:s.x,y:s.y},{x:c.x,y:c.y}];for(let e=1;e<F.length;e++)d.add(F[e-1],F[e]);p.set(t,{points:F})}let{conflicts:_,needs:v}=Hu(e,r,s,[...i.values()].map(Cu),p),y=1/0,b=1/0,x=-1/0,S=-1/0,C=e=>{y=Math.min(y,e.l),b=Math.min(b,e.t),x=Math.max(x,e.r),S=Math.max(S,e.b)};for(let e of[...r.values(),...i.values()])C(Cu(e));for(let[t,n]of p){for(let e of n.points)C({l:e.x,t:e.y,r:e.x,b:e.y});let r=e.relLabel.get(t);n.label&&r&&C(Cu({...n.label,...r}))}Number.isFinite(y)||(y=0,b=0,x=0,S=0);let w=e=>({x:e.x-y,y:e.y-b});for(let e of[r,i])for(let[t,n]of e)e.set(t,{...n,...w(n)});for(let e of p.values())e.points=e.points.map(w),e.label&&=w(e.label);return{result:{width:x-y,height:S-b,elements:r,boundaries:i,rels:p},conflicts:_,needs:v}}function Ru(e,t,n){let r=0,i=1,a=t.x-e.x,o=t.y-e.y;for(let[t,s]of[[-a,e.x-n.l],[a,n.r-e.x],[-o,e.y-n.t],[o,n.b-e.y]]){if(t===0){if(s<0)return!1;continue}let e=s/t;if(t<0?r=Math.max(r,e):i=Math.min(i,e),r>i)return!1}return r<i}function zu(e){if(e.length<=1)return[e.slice()];let t=[];return e.forEach((n,r)=>{for(let i of zu([...e.slice(0,r),...e.slice(r+1)]))t.push([n,...i])}),t}function Bu(e,t,n){let r=0,i=e.y===t.y;for(let a of n)if(i){let n=Math.min(e.x,t.x),i=Math.max(e.x,t.x),o=Math.min(i,a.r)-Math.max(n,a.l);o>0&&(Math.abs(e.y-a.t)<yu||Math.abs(e.y-a.b)<yu)&&(r+=o*2),e.y>a.t&&e.y<a.b&&(n<a.l&&i>a.l&&(r+=60),n<a.r&&i>a.r&&(r+=60))}else{let n=Math.min(e.y,t.y),i=Math.max(e.y,t.y),o=Math.min(i,a.b)-Math.max(n,a.t);o>0&&(Math.abs(e.x-a.l)<yu||Math.abs(e.x-a.r)<yu)&&(r+=o*2),e.x>a.l&&e.x<a.r&&(n<a.t&&i>a.t&&(r+=60),n<a.b&&i>a.b&&(r+=60))}return r}function Vu(e){let t=[];for(let n of e){let e=t[t.length-1];if(!(e&&Math.abs(e.x-n.x)<.01&&Math.abs(e.y-n.y)<.01))for(t.push(n);t.length>=3;){let[e,n,r]=t.slice(-3);if(!(Math.abs(e.x-n.x)<.01&&Math.abs(n.x-r.x)<.01||Math.abs(e.y-n.y)<.01&&Math.abs(n.y-r.y)<.01))break;t.splice(t.length-2,1)}}return t}function Hu(e,t,n,r,i){let a=[],o=[...t.values()].map(Cu),s=[];for(let[e,t]of i)for(let n=1;n<t.points.length;n++)s.push({a:t.points[n-1],b:t.points[n],rel:e});let c=0,l={x:0,y:0},u=[...i.keys()].filter(t=>e.relLabel.has(t)),d=e=>{let t=i.get(e).points,n=0;for(let e=1;e<t.length;e++)n+=Math.abs(t[e].x-t[e-1].x)+Math.abs(t[e].y-t[e-1].y);return n};u.sort((e,t)=>d(e)-d(t)||e-t);for(let t of u){let u=e.relLabel.get(t),f=i.get(t).points,p=d(t),m=null,h=0;for(let e=1;e<f.length;e++){let i=f[e-1],c=f[e],l=Math.abs(c.x-i.x)+Math.abs(c.y-i.y),d=Math.abs(i.y-c.y)<.01;for(let e of[.5,.3,.7,.15,.85]){let g={x:i.x+(c.x-i.x)*e,y:i.y+(c.y-i.y)*e};(d?[{x:0,y:0},{x:0,y:-(u.height/2+4)},{x:0,y:u.height/2+4}]:[{x:0,y:0},{x:u.width/2+6,y:0},{x:-(u.width/2+6),y:0}]).forEach((i,c)=>{let _={x:g.x+i.x,y:g.y+i.y},v={l:_.x-u.width/2,t:_.y-u.height/2,r:_.x+u.width/2,b:_.y+u.height/2},y=Math.abs(h+l*e-p/2)*.3+(c>0?60:0)+(l<(d?u.width:u.height)?20:0);for(let e of o)Tu(v,wu(e,2))&&(y+=1e3+Eu(v,e));for(let e of a)Tu(v,wu(e,3))&&(y+=1e3+Eu(v,e));for(let e of n)Tu(v,e)&&(y+=500);for(let e=1;e+1<f.length;e++){let t=f[e];t.x>v.l-4&&t.x<v.r+4&&t.y>v.t-4&&t.y<v.b+4&&(y+=80)}for(let e of r){let t=v.l>=e.l+6&&v.r<=e.r-6&&v.t>=e.t+6&&v.b<=e.b-6;Tu(v,wu(e,6))&&!t&&(y+=150)}for(let e of s)e.rel!==t&&Tu(v,wu({l:Math.min(e.a.x,e.b.x),t:Math.min(e.a.y,e.b.y),r:Math.max(e.a.x,e.b.x),b:Math.max(e.a.y,e.b.y)},.5))&&(y+=200);(!m||y<m.score)&&(m={p:_,score:y,horizontal:d})})}h+=l}if(!m)continue;let g=m;g.score>=500&&(c++,g.horizontal?l.x=Math.max(l.x,u.width+28+12):l.y=Math.max(l.y,u.height+28+12)),i.get(t).label=g.p,a.push({l:g.p.x-u.width/2,t:g.p.y-u.height/2,r:g.p.x+u.width/2,b:g.p.y+u.height/2})}return{conflicts:c,needs:l}}var Uu={...L,size:14,weight:`bold`},Wu={...L,size:12},Gu={...L,size:13},Ku={...L,size:11},qu={...L,size:18,weight:`bold`},Ju=216,Yu=14,Xu=70,Z=9,Zu=180,Qu=320,$u=9,ed=14;function td(e,t,n,r){return Y(on(J(e),t,n,r),n,r)}function nd(e){let t=e.external?`External `:``;if(e.type)return`[${e.type}]`;switch(e.level){case`person`:return`[${t}Person]`;case`system`:return`[${t}${e.external?`System`:`Software System`}]`;case`container`:return`[${t}Container${e.techn?`: ${e.techn}`:``}]`;case`component`:return`[${t}Component${e.techn?`: ${e.techn}`:``}]`}}function rd(e){if(e.type)return`[${e.type}]`;switch(e.kind){case`enterprise`:return`[Enterprise]`;case`system`:return`[Software System]`;case`container`:return`[Container]`;default:return}}function id(e,t){if(!e)return;if(t===`text`)return e.text?`fill:${e.text}`:void 0;let n=[e.fill?`fill:${e.fill}`:``,e.stroke?`stroke:${e.stroke}`:``].filter(Boolean);return n.length>0?n.join(`;`):void 0}function ad(e,t,n){let r=t.x-t.width/2,i=t.y-t.height/2,a=t.width,o=t.height;switch(e.shape){case`person`:return[z(`rect`,{class:`dg-shape`,style:n,x:r,y:i+40,width:a,height:o-40,rx:22,ry:22}),z(`circle`,{class:`dg-c4-head`,style:n,cx:t.x,cy:i+21,r:21})];case`db`:{let e=new V().moveTo(r,i+Z).arcTo(a/2,Z,0,!1,!1,r+a,i+Z).lineTo(r+a,i+o-Z).arcTo(a/2,Z,0,!1,!0,r,i+o-Z).close(),t=new V().moveTo(r,i+Z).arcTo(a/2,Z,0,!1,!0,r+a,i+Z);return[z(`path`,{class:`dg-shape`,style:n,d:e.toString()}),z(`path`,{class:`dg-c4-lid`,style:n,d:t.toString()})]}case`queue`:{let e=new V().moveTo(r+Z,i).lineTo(r+a-Z,i).arcTo(Z,o/2,0,!1,!0,r+a-Z,i+o).lineTo(r+Z,i+o).arcTo(Z,o/2,0,!1,!0,r+Z,i).close(),t=new V().moveTo(r+a-Z,i).arcTo(Z,o/2,0,!1,!1,r+a-Z,i+o);return[z(`path`,{class:`dg-shape`,style:n,d:e.toString()}),z(`path`,{class:`dg-c4-lid`,style:n,d:t.toString()})]}default:return[z(`rect`,{class:`dg-shape`,style:n,x:r,y:i,width:a,height:o,rx:10,ry:10})]}}function od(e){let t=ro(e,1),n=new V;if(t.length===0)return``;n.moveTo(t[0].x,t[0].y);for(let e=1;e+1<t.length;e++){let r=t[e-1],i=t[e],a=t[e+1],o=Math.hypot(i.x-r.x,i.y-r.y),s=Math.hypot(a.x-i.x,a.y-i.y),c=Math.min(10,o/2,s/2),l={x:i.x+(r.x-i.x)*c/o,y:i.y+(r.y-i.y)*c/o},u={x:i.x+(a.x-i.x)*c/s,y:i.y+(a.y-i.y)*c/s};n.lineTo(l.x,l.y).quadTo(i.x,i.y,u.x,u.y)}let r=t[t.length-1];return n.lineTo(r.x,r.y),n.toString()}function sd(e){switch(e.shape){case`person`:return{top:40+Yu,bottom:Yu,width:0,shift:0};case`db`:return{top:30,bottom:19,width:0,shift:0};case`queue`:return{top:Yu,bottom:Yu,width:27,shift:-9/2};default:return{top:Yu,bottom:Yu,width:0,shift:0}}}function cd(e,t,n,r){let i=new Map,a=new Map;for(let n of e.elements.values()){let e=sd(n),r=188-e.width,o=td(n.label,r,Uu,t),s=td(nd(n),r,Wu,t),c=n.description?td(n.description,r,Wu,t):void 0,l=o.height+2+s.height+(c?8+c.height:0);i.set(n.id,{name:o,type:s,description:c,height:l});let u=Math.max(o.width,s.width,c?.width??0);a.set(n.id,{width:Math.max(Ju,u+28+e.width),height:Math.max(Xu+(n.shape===`person`?40:0),l+e.top+e.bottom)})}let o=new Map,s=new Map;for(let n of e.boundaries.values()){let e=td(n.label,Qu,Uu,t),r=rd(n),i=r?td(r,Qu,Wu,t):void 0,a=n.description?td(n.description,Qu,Wu,t):void 0,c=Math.max(e.width,i?.width??0,a?.width??0),l=e.height+(i?i.height:0)+(a?4+a.height:0);o.set(n.id,{name:e,type:i,description:a,width:c,height:l}),s.set(n.id,{width:c+8,height:l+14})}let c=new Map,l=new Map;e.relations.forEach((e,n)=>{if(e.hidden)return;let r=e.label?td(e.label,Zu,Gu,t):void 0,i=e.techn?td(`[${e.techn}]`,Zu,Ku,t):void 0,a=e.description?td(e.description,Zu,Ku,t):void 0,o=e.index?Y(J(e.index),{...Ku,weight:`bold`},t):void 0,s=[r,i,a].filter(e=>!!e&&!nn(e.label));if(s.length===0&&!o)return;let u=o?Math.max(18,o.width+8)+(s.length>0?5:0):0,d=Math.max(0,...s.map(e=>e.width)),f=s.reduce((e,t)=>e+t.height,0),p=u+d+10,m=Math.max(f,o?18:0)+6;c.set(n,{label:r,techn:i,description:a,index:o,width:p,height:m}),l.set(n,{width:p,height:m})});let u=Ou({diagram:e,elementSize:a,boundaryLabel:s,relLabel:l}),d=e.title?Y(J(e.title),qu,t):void 0,f=Math.max(u.width,d?.width??0),p=d?d.height+ed:0,m=(f-u.width)/2,h=t=>{let n=0,r=e.boundaries.get(t)?.parent;for(;r!==void 0;)n++,r=e.boundaries.get(r)?.parent;return n},g=[],_=[...e.boundaries.values()].sort((e,t)=>h(e.id)-h(t.id)).map(e=>{let t=u.boundaries.get(e.id),n=o.get(e.id),r=t.x-t.width/2,i=t.y-t.height/2,a=e.kind===`node`,s=id(e.style,`text`),c=r+12,l=i+8,d=[],f=(e,t,n=0)=>{e&&(l+=n,d.push(X(e,c,l+e.height/2,{anchor:`start`,className:t,style:s})),l+=e.height)};return f(n.name,`dg-c4-boundary-name`),f(n.type,`dg-c4-boundary-type`),f(n.description,`dg-c4-boundary-type`,4),g.push(z(`g`,{class:`dg-c4-frame-title dg-c4-${a?`node`:`boundary`}-title`,"data-id":e.id},d)),z(`g`,{class:`dg-cluster dg-c4-${a?`node`:`boundary`}`,"data-id":e.id,"data-parent":e.parent},[z(`rect`,{class:a?`dg-c4-node-box`:`dg-c4-boundary-box`,x:r,y:i,width:t.width,height:t.height,rx:a?6:10,style:id(e.style,`shape`)})])}),v=[],y=(e,t)=>{if(!e)return`url(#${ia(n,`arrow`,t)})`;let r=v.indexOf(e);return r<0&&(r=v.push(e)-1),`url(#${n}-m-c4-${r}${t?`-start`:``})`},b=(t,n)=>[...e.boundaries.values()].filter(e=>{if(e.kind!==`node`)return!1;let r=u.boundaries.get(e.id);return Math.abs(t-r.x)<r.width/2&&Math.abs(n-r.y)<r.height/2}),x=[],S=[];e.relations.forEach((e,t)=>{let n=u.rels.get(t);if(!n)return;let r=e.style?.line;x.push(z(`path`,{class:`dg-edge dg-c4-rel`,d:od(n.points),style:r?`stroke:${r}`:void 0,"marker-start":e.arrows===`end`?void 0:y(r,!0),"marker-end":e.arrows===`start`?void 0:y(r,!1),"data-from":e.from,"data-to":e.to}));let i=c.get(t);if(!i||!n.label)return;let{x:a,y:o}=n.label,s=a-i.width/2,l=o-i.height/2,d=e.style?.text?`fill:${e.style.text}`:void 0,f=[z(`rect`,{class:`dg-edge-label-box`,x:s,y:l,width:i.width,height:i.height,rx:3}),...b(a,o).map(()=>z(`rect`,{class:`dg-c4-label-tint`,x:s,y:l,width:i.width,height:i.height,rx:3}))],p=[[i.label,`dg-edge-label dg-c4-rel-label`],[i.techn,`dg-c4-rel-techn`],[i.description,`dg-c4-rel-descr`]],m=0;i.index&&(m=Math.max(18,i.index.width+8));let h=p.filter(([e])=>e&&!nn(e.label)),g=h.reduce((e,[t])=>e+t.height,0),_=s+5+(m>0?m+(h.length>0?5:0):0),v=Math.max(0,...h.map(([e])=>e.width)),C=o-g/2;for(let[e,t]of h)f.push(X(e,_+v/2,C+e.height/2,{className:t,style:d})),C+=e.height;if(i.index){let e=s+5+m/2,t=h[0]?.[0],n=t?o-g/2+t.lineHeight/2:o;f.push(z(`rect`,{class:`dg-c4-index`,x:e-m/2,y:n-$u,width:m,height:18,rx:$u,style:r?`fill:${r}`:void 0}),X(i.index,e,n,{className:`dg-c4-index-text`}))}S.push(z(`g`,{class:`dg-edge-label-group dg-c4-rel-label-group`},f))});let C=[...e.elements.values()].map(e=>{let t=u.elements.get(e.id),n=i.get(e.id),r=sd(e),a=id(e.style,`shape`),o=id(e.style,`text`),s=t.y-t.height/2,c=t.height-r.top-r.bottom,l=s+r.top+Math.max(0,(c-n.height)/2),d=t.x+r.shift,f=[...ad(e,t,a)];return f.push(X(n.name,d,l+n.name.height/2,{className:`dg-c4-name`,style:o})),l+=n.name.height+2,f.push(X(n.type,d,l+n.type.height/2,{className:`dg-c4-type`,style:o})),l+=n.type.height,n.description&&(l+=8,f.push(X(n.description,d,l+n.description.height/2,{className:`dg-c4-descr`,style:o}))),z(`g`,{class:[`dg-node`,`dg-c4-element`,`dg-c4-${e.level}`,`dg-c4-${e.shape}`,e.external?`dg-c4-external`:``].filter(Boolean).join(` `),"data-id":e.id,"data-parent":e.parent},f)}),w=`#${n}`,T=(e,t)=>`${w} ${e} .dg-shape,${w} ${e} .dg-c4-head,${w} ${e} .dg-c4-lid{fill:${R(`--dg-c4-${t}-fill`)};stroke:${R(`--dg-c4-${t}-stroke`)}}${w} ${e} text{fill:${R(`--dg-c4-${t}-text`)}}`,E=[`${w} .dg-c4-element .dg-shape,${w} .dg-c4-head,${w} .dg-c4-lid{stroke-width:1.5px}`,T(`.dg-c4-person`,`person`),T(`.dg-c4-system`,`system`),T(`.dg-c4-container`,`container`),T(`.dg-c4-component`,`component`),T(`.dg-c4-element.dg-c4-external`,`external`),`${w} .dg-c4-lid{fill:none !important}`,`${w} .dg-c4-name{font-weight:bold;font-size:14px}`,`${w} .dg-c4-type{font-size:12px;opacity:0.85}`,`${w} .dg-c4-descr{font-size:12px}`,`${w} .dg-c4-boundary-box{fill:none;stroke:var(--dg-c4-boundary-stroke, var(--dg-text-muted, #6b7280));stroke-width:1.5px;stroke-dasharray:8 5}`,`${w} .dg-c4-node-box{fill:${R(`--dg-c4-node-fill`)};stroke:var(--dg-c4-node-stroke, var(--dg-text-muted, #6b7280));stroke-width:1.25px}`,`${w} .dg-c4-boundary-title text{fill:var(--dg-c4-boundary-text, var(--dg-text, #1f2937))}`,`${w} .dg-c4-node-title text{fill:var(--dg-c4-node-text, var(--dg-text, #1f2937))}`,`${w} .dg-c4-frame-title text{paint-order:stroke;stroke:${R(`--dg-edge-label-fill`)};stroke-width:4px;stroke-linejoin:round}`,`${w} .dg-c4-boundary-name{font-weight:bold;font-size:14px}`,`${w} .dg-c4-boundary-type{font-size:12px;opacity:0.8}`,`${w} .dg-c4-rel{stroke-dasharray:6 4}`,`${w} .dg-c4-rel-label-group text{fill:${R(`--dg-text`)}}`,`${w} .dg-c4-rel-label-group .dg-edge-label-box{opacity:1}`,`${w} .dg-c4-label-tint{fill:${R(`--dg-c4-node-fill`)}}`,`${w} .dg-c4-rel-label{font-size:13px}`,`${w} .dg-c4-rel-label-group .dg-c4-rel-techn,${w} .dg-c4-rel-label-group .dg-c4-rel-descr{font-size:11px;fill:${R(`--dg-text-muted`)}}`,`${w} .dg-c4-rel-descr{font-style:italic}`,`${w} .dg-c4-index{fill:${R(`--dg-line`)}}`,`${w} .dg-c4-rel-label-group .dg-c4-index-text{font-size:11px;font-weight:bold;fill:${R(`--dg-number-text`)}}`,`${w} .dg-c4-title{font-weight:bold;font-size:18px}`].join(``),D=v.flatMap((e,t)=>[!1,!0].map(r=>z(`marker`,{id:`${n}-m-c4-${t}${r?`-start`:``}`,markerUnits:`userSpaceOnUse`,orient:`auto`,viewBox:`0 0 10 10`,refX:r?1:9,refY:5,markerWidth:10,markerHeight:10},[z(`path`,{d:`M0,0 L10,5 L0,10 z`,transform:r?`translate(10,0) scale(-1,1)`:void 0,style:`fill:${e};stroke:${e}`,"stroke-width":1})]))),ee=[];return d&&ee.push(X(d,f/2,d.height/2,{className:`dg-c4-title`})),ee.push(z(`g`,{transform:m!==0||p!==0?`translate(${B(m)},${B(p)})`:void 0},[z(`g`,{class:`dg-clusters`},_),z(`g`,{class:`dg-edges`},x),z(`g`,{class:`dg-c4-frame-titles`},g),z(`g`,{class:`dg-edge-labels`},S),z(`g`,{class:`dg-nodes`},C)])),H({id:n,type:`c4`,width:f,height:u.height+p,title:r??e.accessibility.title??e.title??`C4 diagram`,description:e.accessibility.description,defs:[...aa(n,[`arrow`]),...D],body:ee,css:E})}var ld={...L,size:13},ud={...ld,weight:`bold`},dd=6,fd=26,pd=6,Q=e=>Math.round(e*100)/100;function md(e,t){let n=(e,n=ld)=>Y(J(e||` `),n,t),r=(e,t,n,r=`dg-salt-text`)=>X(e,Q(t),Q(n),{anchor:`start`,className:r});switch(e.kind){case`empty`:return{width:0,height:0,draw:()=>[]};case`text`:{let t=n(e.text,e.bold?ud:ld),i=Math.max(fd,t.height);return{width:t.width,height:i,draw:(n,a)=>[r(t,n,a+i/2,e.bold?`dg-salt-text dg-salt-bold`:`dg-salt-text`)]}}case`button`:{let t=n(e.text.trim()),r=t.width+24;return{width:r,height:26,draw:(e,n)=>[z(`rect`,{class:`dg-salt-button`,x:Q(e),y:Q(n),width:Q(r),height:26,rx:5}),X(t,Q(e+r/2),Q(n+13),{className:`dg-salt-button-text`})]}}case`input`:{let t=n(e.text.trimEnd()),i=Math.max(60,n(e.text.replace(/ /g,`\xA0`)).width+16);return{width:i,height:26,draw:(e,n,a)=>[z(`rect`,{class:`dg-salt-input`,x:Q(e),y:Q(n),width:Q(Math.max(i,a)),height:26,rx:2}),r(t,e+8,n+13)]}}case`checkbox`:case`radio`:{let t=n(e.text);return{width:20+t.width,height:fd,draw:(n,i)=>[...e.kind===`checkbox`?[z(`rect`,{class:`dg-salt-box`,x:Q(n),y:Q(i+7),width:12,height:12,rx:2}),e.checked?z(`path`,{class:`dg-salt-check`,d:new V().moveTo(Q(n+2.5),Q(i+13)).lineTo(Q(n+5.5),Q(i+16)).lineTo(Q(n+10),Q(i+10)).toString()}):null].filter(e=>e!==null):[z(`circle`,{class:`dg-salt-box`,cx:Q(n+6),cy:Q(i+13),r:6}),...e.checked?[z(`circle`,{class:`dg-salt-dot`,cx:Q(n+6),cy:Q(i+13),r:3})]:[]],r(t,n+18,i+13)]}}case`droplist`:{let t=n(e.text),i=t.width+36;return{width:i,height:26,draw:(e,n,a)=>{let o=Math.max(i,a);return[z(`rect`,{class:`dg-salt-input`,x:Q(e),y:Q(n),width:Q(o),height:26,rx:2}),r(t,e+8,n+13),z(`path`,{class:`dg-salt-arrow`,d:new V().moveTo(Q(e+o-16),Q(n+10)).lineTo(Q(e+o-8),Q(n+10)).lineTo(Q(e+o-12),Q(n+16)).close().toString()})]}}}case`separator`:return{width:0,height:10,draw:(t,n,r)=>hd(e.style,t,n+5,r)};case`tabs`:{let t=e.tabs.map((t,r)=>n(t,r===e.selected?ud:ld));if(e.vertical){let n=Math.max(...t.map(e=>e.width))+20;return{width:n,height:t.length*26,draw:(i,a)=>t.flatMap((t,o)=>[z(`rect`,{class:o===e.selected?`dg-salt-tab dg-salt-tab-selected`:`dg-salt-tab`,x:Q(i),y:Q(a+o*26),width:Q(n),height:26}),r(t,i+10,a+o*26+13)])}}let i=t.map(e=>e.width+20);return{width:i.reduce((e,t)=>e+t,0),height:26,draw:(n,a,o)=>{let s=n,c=[z(`line`,{class:`dg-salt-line`,x1:Q(n),y1:Q(a+26),x2:Q(n+Math.max(o,i.reduce((e,t)=>e+t,0))),y2:Q(a+26)})];return t.forEach((t,n)=>{c.push(z(`path`,{class:n===e.selected?`dg-salt-tab dg-salt-tab-selected`:`dg-salt-tab`,d:new V().moveTo(Q(s),Q(a+26)).lineTo(Q(s),Q(a+3)).lineTo(Q(s+i[n]),Q(a+3)).lineTo(Q(s+i[n]),Q(a+26)).toString()})),c.push(r(t,s+10,a+15)),s+=i[n]}),c}}}case`menu`:{let t=e.items.map(e=>n(e)),i=t.reduce((e,t)=>e+t.width+20,0);return{width:i,height:26,draw:(e,n,a)=>{let o=[z(`rect`,{class:`dg-salt-menu`,x:Q(e),y:Q(n),width:Q(Math.max(i,a)),height:26})],s=e;for(let e of t)o.push(r(e,s+10,n+13)),s+=e.width+20;return o}}}case`tree`:{let t=e.items.map(e=>n(e.text));return{width:Math.max(0,...t.map((t,n)=>t.width+e.items[n].depth*16))+8,height:t.length*22,draw:(n,i)=>t.flatMap((t,a)=>{let o=e.items[a].depth,s=i+a*22+11;return[...o>1?[z(`path`,{class:`dg-salt-tree`,d:new V().moveTo(Q(n+(o-2)*16+6),Q(s-11)).lineTo(Q(n+(o-2)*16+6),Q(s)).lineTo(Q(n+(o-1)*16-2),Q(s)).toString()})]:[],r(t,n+(o-1)*16,s)]})}}case`grid`:return gd(e,t)}}function hd(e,t,n,r){return e===`double`?[z(`line`,{class:`dg-salt-line`,x1:Q(t),y1:Q(n-1.5),x2:Q(t+r),y2:Q(n-1.5)}),z(`line`,{class:`dg-salt-line`,x1:Q(t),y1:Q(n+1.5),x2:Q(t+r),y2:Q(n+1.5)})]:[z(`line`,{class:`dg-salt-line dg-salt-${e}`,x1:Q(t),y1:Q(n),x2:Q(t+r),y2:Q(n)})]}function gd(e,t){let n=e.rows.map(e=>e.map(e=>md(e,t))),r=Math.max(1,...e.rows.map(e=>e.length===1&&e[0].kind===`separator`?1:e.length)),i=Array.from({length:r},(t,r)=>Math.max(0,...n.map((t,n)=>e.rows[n].length===1&&e.rows[n][0].kind===`separator`?0:t[r]?.width??0))),a=n.map(e=>Math.max(0,...e.map(e=>e.height))),o=e.border!==`none`||e.title!==void 0,s=o?pd:0,c=e.title?Y(J(e.title),ud,t):null,l=s+(c?c.height/2:0),u=i.reduce((e,t)=>e+t,0)+dd*(r-1),d=a.reduce((e,t)=>e+t,0)+dd*Math.max(0,a.length-1),f=e.scroll?14:0,p=Math.max(u,c?c.width+20:0)+s*2+f,m=d+l+s;return{width:p,height:m,draw:(t,d,h)=>{let g=Math.max(p,h),_=[],v={x:Q(t),y:Q(d+(c?c.height/2:0)),width:Q(g),height:Q(m-(c?c.height/2:0))};o&&_.push(z(`rect`,{class:`dg-salt-frame`,...v,rx:e.title?4:0})),c&&(_.push(z(`rect`,{class:`dg-salt-title-bg`,x:Q(t+8),y:Q(d),width:Q(c.width+8),height:Q(c.height)})),_.push(X(c,Q(t+12),Q(d+c.height/2),{anchor:`start`,className:`dg-salt-text dg-salt-bold`}))),e.scroll&&(_.push(z(`rect`,{class:`dg-salt-scroll`,x:Q(t+g-f),y:v.y,width:f,height:v.height})),_.push(z(`rect`,{class:`dg-salt-thumb`,x:Q(t+g-f+3),y:Q(v.y+4),width:f-6,height:Q(Math.min(40,v.height/3)),rx:3})));let y=g-p,b=d+l;if(e.rows.forEach((o,c)=>{let l=t+s,d=o.length===1&&(o[0].kind===`separator`||r===1);o.forEach((e,t)=>{let a=d?u+y:i[t]+(t===r-1?y:0);_.push(...n[c][t].draw(l,b,a)),l+=i[t]+dd}),b+=a[c]+dd,c<e.rows.length-1&&(e.border===`all`||e.border===`rows`)&&_.push(z(`line`,{class:`dg-salt-grid`,x1:Q(t),y1:Q(b-dd/2),x2:Q(t+g-f),y2:Q(b-dd/2)}))}),e.border===`all`||e.border===`columns`){let e=t+s;for(let t=0;t<r-1;t++)e+=i[t]+dd,_.push(z(`line`,{class:`dg-salt-grid`,x1:Q(e-dd/2),y1:v.y,x2:Q(e-dd/2),y2:Q(v.y+v.height)}))}return _}}}function _d(e,t,n,r){let i=md(e.root,t),a=e.title?Y(J(e.title),{...L,size:18,weight:`bold`},t):null,o=a?a.height+12:0,s=Math.max(i.width,a?.width??0),c=[];a&&c.push(X(a,s/2,a.height/2,{className:`dg-title`})),c.push(z(`g`,{class:`dg-salt`},i.draw(0,o,i.width)));let l=`#${n}`,u=[`${l} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`,`${l} .dg-salt-text{fill:${R(`--dg-text`)};font-size:13px}`,`${l} .dg-salt-bold{font-weight:bold}`,`${l} .dg-salt-button{fill:${R(`--dg-node-fill`)};stroke:${R(`--dg-node-stroke`)};stroke-width:1.5px}`,`${l} .dg-salt-button-text{fill:${R(`--dg-node-text`)};font-size:13px}`,`${l} .dg-salt-input,${l} .dg-salt-menu{fill:${R(`--dg-row-fill`)};stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${l} .dg-salt-box{fill:${R(`--dg-row-fill`)};stroke:${R(`--dg-line`)};stroke-width:1.2px}`,`${l} .dg-salt-check{fill:none;stroke:${R(`--dg-node-stroke`)};stroke-width:2px}`,`${l} .dg-salt-dot,${l} .dg-salt-arrow{fill:${R(`--dg-line`)}}`,`${l} .dg-salt-frame{fill:none;stroke:${R(`--dg-line`)};stroke-width:1px}`,`${l} .dg-salt-title-bg{fill:${R(`--dg-row-fill`)}}`,`${l} .dg-salt-grid,${l} .dg-salt-line,${l} .dg-salt-tree{fill:none;stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${l} .dg-salt-dotted{stroke-dasharray:2 3}`,`${l} .dg-salt-dashed{stroke-dasharray:6 4}`,`${l} .dg-salt-tab{fill:${R(`--dg-row-alt-fill`)};stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${l} .dg-salt-tab-selected{fill:${R(`--dg-row-fill`)}}`,`${l} .dg-salt-scroll{fill:${R(`--dg-row-alt-fill`)};stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${l} .dg-salt-thumb{fill:${R(`--dg-cluster-stroke`)}}`].join(``);return H({id:n,type:`salt`,width:s,height:o+i.height,title:r??e.accessibility.title??e.title??`Wireframe`,description:e.accessibility.description,body:c,css:u})}function vd(e){let t=K(e),n=t[0];if(!n||n.text!==`journey`)throw new I(`A user journey starts with "journey"`,n?.line??1,1);let r={type:`journey`,sections:[],tasks:[],actors:[],accessibility:{}},i=``;for(let e=1;e<t.length;e++){let n=t[e],a=q(t,e,r.accessibility);if(a>0){e+=a-1;continue}let o=/^title\s+(.*)$/.exec(n.text);if(o){r.title=o[1].trim();continue}if(o=/^section\s+(.*)$/.exec(n.text),o){i=o[1].trim(),r.sections.push(i);continue}if(o=/^([^:]+):\s*([0-9]+)\s*(?::\s*(.*))?$/.exec(n.text),!o)throw new I(`"${n.text}" is not a task`,n.line,n.column,`Task name: 5: Actor, Other actor`);let s=Number(o[2]);if(s<1||s>5)throw new I(`A score is from 1 to 5`,n.line,n.column+n.text.indexOf(o[2]));let c=(o[3]??``).split(`,`).map(e=>e.trim()).filter(Boolean);for(let e of c)r.actors.includes(e)||r.actors.push(e);r.tasks.push({name:o[1].trim(),score:s,actors:c,section:i})}if(r.tasks.length===0)throw new I(`The journey has no tasks`,0,0,`section Morning
36
- Make tea: 5: Me`);return r}var yd=150,bd=14,xd=64,Sd=120;function Cd(e,t,n){let r=n>3?new V().moveTo(e-6,t+3).quadTo(e,t+9,e+6,t+3):n<3?new V().moveTo(e-6,t+7).quadTo(e,t+1,e+6,t+7):new V().moveTo(e-6,t+5).lineTo(e+6,t+5);return z(`g`,{class:`dg-journey-face dg-journey-score-${n}`},[z(`circle`,{class:`dg-journey-face-ring`,cx:e,cy:t,r:14}),z(`circle`,{class:`dg-journey-eye`,cx:e-5,cy:t-4,r:1.6}),z(`circle`,{class:`dg-journey-eye`,cx:e+5,cy:t-4,r:1.6}),z(`path`,{class:`dg-journey-mouth`,d:r.toString()})])}function wd(e,t,n,r){let i=e.actors.map(e=>Y(J(e),L,t)),a=e.actors.length>0?Math.max(...i.map(e=>e.width))+36:0,o=e.title?Y(J(e.title),{...L,size:18,weight:`bold`},t):null,s=o?o.height+14:0,c=a+(a>0?16:0),l=e=>c+e*164,u=[],d=l(e.tasks.length)-bd;o&&u.push(X(o,d/2,o.height/2,{className:`dg-title`})),e.actors.forEach((e,t)=>{let n=s+40+t*24;u.push(z(`circle`,{class:`dg-journey-actor`,cx:10,cy:n,r:7,style:`fill:${ke(t)}`})),u.push(X(i[t],24,n,{anchor:`start`,className:`dg-journey-legend`}))});let f=s,p=f+40;(e.sections.length>0?e.sections:[``]).forEach((n,r)=>{let i=e.tasks.filter(e=>e.section===n);if(i.length===0)return;let a=e.tasks.indexOf(i[0]),o=l(a),s=l(a+i.length)-bd;if(n){let e=Y(on(J(n),s-o-12,{...L,weight:`bold`},t),{...L,weight:`bold`},t);u.push(z(`rect`,{class:`dg-journey-section`,x:o,y:f,width:s-o,height:30,rx:4,style:`fill:${ke(r)}`})),u.push(X(e,(o+s)/2,f+15,{className:`dg-journey-section-text`}))}}),e.tasks.forEach((n,r)=>{let i=l(r),a=Y(on(J(n.name),134,L,t),L,t),o=p+xd+24+(5-n.score)/4*80,s=i+yd/2,c=[z(`line`,{class:`dg-journey-stem`,x1:s,y1:p+xd,x2:s,y2:p+xd+Sd}),z(`rect`,{class:`dg-journey-card`,x:i,y:p,width:yd,height:xd,rx:6}),X(a,s,p+xd/2+4,{className:`dg-journey-task`})];n.actors.forEach((t,n)=>{c.push(z(`circle`,{class:`dg-journey-actor`,cx:i+12+n*14,cy:p+10,r:5,style:`fill:${ke(e.actors.indexOf(t))}`},[z(`title`,{},[{text:t}])]))}),c.push(Cd(s,o,n.score)),u.push(z(`g`,{class:`dg-journey-step`,"data-score":n.score},c))});let m=Math.max(p+xd+Sd+6,s+40+e.actors.length*24),h=`#${n}`,g=[`${h} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`,`${h} .dg-journey-section{fill-opacity:0.25;stroke:none}`,`${h} .dg-journey-section-text{fill:${R(`--dg-text`)};font-weight:bold}`,`${h} .dg-journey-card{fill:${R(`--dg-node-fill`)};stroke:${R(`--dg-node-stroke`)};stroke-width:1.5px}`,`${h} .dg-journey-task{fill:${R(`--dg-node-text`)}}`,`${h} .dg-journey-legend{fill:${R(`--dg-text`)}}`,`${h} .dg-journey-stem{stroke:${R(`--dg-grid`)};stroke-width:1.5px;stroke-dasharray:4 3}`,`${h} .dg-journey-face-ring{fill:${R(`--dg-journey-face`)};stroke:${R(`--dg-line`)};stroke-width:1.5px}`,`${h} .dg-journey-score-1 .dg-journey-face-ring,${h} .dg-journey-score-2 .dg-journey-face-ring{fill:${R(`--dg-journey-face-sad`)}}`,`${h} .dg-journey-score-4 .dg-journey-face-ring,${h} .dg-journey-score-5 .dg-journey-face-ring{fill:${R(`--dg-journey-face-happy`)}}`,`${h} .dg-journey-eye{fill:${R(`--dg-text`)}}`,`${h} .dg-journey-mouth{fill:none;stroke:${R(`--dg-text`)};stroke-width:1.5px}`].join(``);return H({id:n,type:`journey`,width:d,height:m,title:r??e.accessibility.title??e.title??`User journey`,description:e.accessibility.description,body:u,css:g})}function Td(e){let t=/^([\w-]*)\[(.*)\]$/.exec(e.trim());return t?{id:t[1]||t[2],text:t[2].replace(/^"|"$/g,``)}:{id:e.trim(),text:e.trim()}}function Ed(e){let t=K(e),n=t[0];if(!n||n.text!==`kanban`)throw new I(`A kanban board starts with "kanban"`,n?.line??1,1);let r={type:`kanban`,columns:[],accessibility:{}},i=-1;for(let e=1;e<t.length;e++){let n=t[e],a=q(t,e,r.accessibility);if(a>0){e+=a-1;continue}let o=n.text,s,c=o.indexOf(`@{`);if(c>=0){if(!o.trimEnd().endsWith(`}`))throw new I(`The metadata is not closed`,n.line,n.column+c,`@{ assigned: 'anna', priority: 'High' }`);s=o.slice(c+2,o.lastIndexOf(`}`)),o=o.slice(0,c)}if(i<0&&(i=n.column),n.column<=i){if(s)throw new I(`A column has no metadata`,n.line,n.column);let e=Td(o);r.columns.push({id:e.id,title:e.text,cards:[]}),i=n.column;continue}let l=r.columns[r.columns.length-1];if(!l)throw new I(`A card belongs under a column`,n.line,n.column);let u=Td(o),d={id:u.id,text:u.text};for(let e of(s??``).split(`,`)){let t=/^\s*(\w+)\s*:\s*['"]?(.*?)['"]?\s*$/.exec(e);if(!t)continue;let r=t[1].toLowerCase();if(r===`assigned`)d.assigned=t[2];else if(r===`ticket`)d.ticket=t[2];else if(r===`priority`){let e=t[2].toLowerCase().replace(/\s+/g,`-`);if(![`very-high`,`high`,`low`,`very-low`].includes(e))throw new I(`"${t[2]}" is not a priority`,n.line,n.column,`Very High, High, Low, Very Low`);d.priority=e}else throw new I(`"${r}" is not card metadata`,n.line,n.column,`assigned, ticket, priority`)}l.cards.push(d)}if(r.columns.length===0)throw new I(`The board has no columns`,0,0,`todo[To do]
37
- t1[A card]`);return r}var Dd=200,Od=14;function kd(e,t,n,r){let i={...L,size:12},a={...L,weight:`bold`},o=e.columns.map(e=>{let n=Y(on(J(e.title),180,a,t),a,t),r=n.height+22;return{column:e,titleLabel:n,cards:e.cards.map(e=>{let n=Y(on(J(e.text),164,L,t),L,t),i=n.height+20+(e.ticket||e.assigned?20:0),a={card:e,text:n,y:r,h:i};return r+=i+8,a}),height:Math.max(r+4,80)}}),s=Math.max(...o.map(e=>e.height)),c=o.map(({column:e,titleLabel:n,cards:r},a)=>{let o=a*214;return z(`g`,{class:`dg-kanban-column`,"data-id":e.id},[z(`rect`,{class:`dg-kanban-lane`,x:o,y:0,width:Dd,height:s,rx:6}),X(n,o+Dd/2,11+n.height/2,{className:`dg-kanban-title`}),...r.map(({card:e,text:n,y:r,h:a})=>{let s=[z(`rect`,{class:`dg-kanban-card`,x:o+8,y:r,width:184,height:a,rx:5}),X(n,o+22,r+10+n.height/2,{anchor:`start`,className:`dg-kanban-text`})];return e.priority&&s.push(z(`rect`,{class:`dg-kanban-priority dg-kanban-${e.priority}`,x:o+8,y:r,width:5,height:a,rx:2})),e.ticket&&s.push(X(Y(J(e.ticket),i,t),o+22,r+a-12,{anchor:`start`,className:`dg-kanban-meta`})),e.assigned&&s.push(X(Y(J(e.assigned),i,t),o+Dd-18,r+a-12,{anchor:`end`,className:`dg-kanban-meta`})),z(`g`,{class:`dg-kanban-item`,"data-id":e.id},s)})])}),l=`#${n}`,u=[`${l} .dg-kanban-lane{fill:${R(`--dg-cluster-fill`)};stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${l} .dg-kanban-title{fill:${R(`--dg-cluster-text`)};font-weight:bold}`,`${l} .dg-kanban-card{fill:${R(`--dg-row-fill`)};stroke:${R(`--dg-node-stroke`)};stroke-width:1px}`,`${l} .dg-kanban-text{fill:${R(`--dg-text`)}}`,`${l} .dg-kanban-meta{fill:${R(`--dg-text-muted`)};font-size:12px}`,`${l} .dg-kanban-very-high{fill:${R(`--dg-task-crit-stroke`)}}`,`${l} .dg-kanban-high{fill:${R(`--dg-task-crit-fill`)}}`,`${l} .dg-kanban-low{fill:${R(`--dg-task-active-fill`)}}`,`${l} .dg-kanban-very-low{fill:${R(`--dg-grid`)}}`].join(``);return H({id:n,type:`kanban`,width:e.columns.length*214-Od,height:s,title:r??e.accessibility.title??`Kanban board`,description:e.accessibility.description,body:c,css:u})}function Ad(e,t,n){let r={};for(let i of e.split(`,`)){let e=/^\s*([\w-]+)\s*:\s*(.+?)\s*$/.exec(i);if(!e)continue;let a=e[1].toLowerCase(),o=e[2];if(a===`radius`)r.radius=Math.min(40,Math.max(1,Number(o)));else if(a===`color`)r.color=U(`fill:${o}`,t,n).shape.fill;else if(a===`stroke-color`)r.strokeColor=U(`stroke:${o}`,t,n).shape.stroke;else if(a===`stroke-width`)r.strokeWidth=Math.min(10,Math.max(0,parseFloat(o)));else throw new I(`"${a}" is not a point style`,t,n,`radius, color, stroke-color, stroke-width`)}return r}function jd(e){let t=K(e),n=t[0];if(!n||n.text!==`quadrantChart`)throw new I(`A quadrant chart starts with "quadrantChart"`,n?.line??1,1);let r={type:`quadrant`,xAxis:[``,``],yAxis:[``,``],quadrants:[``,``,``,``],points:[],classDefs:new Map,accessibility:{}},i=e=>{let[t,n]=e.split(/\s*-->\s*/);return[t.trim(),(n??``).trim()]};for(let e=1;e<t.length;e++){let n=t[e],a=q(t,e,r.accessibility);if(a>0){e+=a-1;continue}let o;if(o=/^title\s+(.*)$/.exec(n.text))r.title=o[1].trim();else if(o=/^x-axis\s+(.*)$/.exec(n.text))r.xAxis=i(o[1]);else if(o=/^y-axis\s+(.*)$/.exec(n.text))r.yAxis=i(o[1]);else if(o=/^quadrant-([1-4])\s+(.*)$/.exec(n.text))r.quadrants[Number(o[1])-1]=o[2].trim();else if(o=/^classDef\s+([\w-]+)\s+(.*)$/.exec(n.text))r.classDefs.set(o[1],Ad(o[2],n.line,n.column));else if(o=/^(.+?)(?::::([\w-]+))?\s*:\s*\[\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\]\s*(.*)$/.exec(n.text)){let e=Number(o[3]),t=Number(o[4]);if(!(e>=0&&e<=1&&t>=0&&t<=1))throw new I(`A point's coordinates are from 0 to 1`,n.line,n.column);r.points.push({label:o[1].trim(),x:e,y:t,style:Ad(o[5],n.line,n.column),classes:o[2]?[o[2]]:[]})}else throw new I(`"${n.text}" is not a quadrant chart statement`,n.line,n.column,`Point: [0.3, 0.6]`)}return r}var Md=420;function Nd(e,t,n,r){let i={...L,size:12},a=e.title?Y(J(e.title),{...L,size:18,weight:`bold`},t):null,o=a?a.height+14:0,s=e.yAxis.some(Boolean)?24:0,c=s,l=Md/2,u=[];a&&u.push(X(a,c+l,a.height/2,{className:`dg-title`})),[[c+l,o],[c,o],[c,o+l],[c+l,o+l]].forEach(([n,r],i)=>{if(u.push(z(`rect`,{class:`dg-quadrant dg-quadrant-${i+1}`,x:n,y:r,width:l,height:l})),e.quadrants[i]){let a=Y(on(J(e.quadrants[i]),190,{...L,weight:`bold`},t),{...L,weight:`bold`},t);u.push(X(a,n+l/2,r+14+a.height/2,{className:`dg-quadrant-label`}))}}),u.push(z(`rect`,{class:`dg-quadrant-frame`,x:c,y:o,width:Md,height:Md})),u.push(z(`line`,{class:`dg-quadrant-axis`,x1:c+l,y1:o,x2:c+l,y2:o+Md})),u.push(z(`line`,{class:`dg-quadrant-axis`,x1:c,y1:o+l,x2:c+Md,y2:o+l}));let[d,f]=e.xAxis,p=o+Md+14;d&&f?(u.push(X(Y(J(d),i,t),c+l/2,p,{className:`dg-quadrant-axis-text`})),u.push(X(Y(J(f),i,t),c+l+l/2,p,{className:`dg-quadrant-axis-text`}))):d&&u.push(X(Y(J(d),i,t),c+l,p,{className:`dg-quadrant-axis-text`}));let[m,h]=e.yAxis,g=(e,n)=>z(`g`,{transform:`translate(${s/2},${n}) rotate(-90)`},[X(Y(J(e),i,t),0,0,{className:`dg-quadrant-axis-text`})]);m&&h?(u.push(g(m,o+l+l/2)),u.push(g(h,o+l/2))):m&&u.push(g(m,o+l));for(let n of e.points){let r=Object.assign({},...n.classes.map(t=>e.classDefs.get(t)??{}),n.style),a=c+n.x*Md,s=o+(1-n.y)*Md,l=r.radius??5,d=[r.color?`fill:${r.color}`:``,r.strokeColor?`stroke:${r.strokeColor}`:``,r.strokeWidth===void 0?``:`stroke-width:${r.strokeWidth}px`].filter(Boolean).join(`;`),f=Y(J(n.label),i,t);u.push(z(`g`,{class:`dg-quadrant-point`},[z(`circle`,{class:`dg-quadrant-dot`,cx:a,cy:s,r:l,style:d||void 0}),X(f,a,s+l+4+f.height/2,{className:`dg-quadrant-point-text`})]))}let _=`#${n}`,v=[`${_} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`,`${_} .dg-quadrant-1{fill:${R(`--dg-quadrant-1`)}}`,`${_} .dg-quadrant-2{fill:${R(`--dg-quadrant-2`)}}`,`${_} .dg-quadrant-3{fill:${R(`--dg-quadrant-3`)}}`,`${_} .dg-quadrant-4{fill:${R(`--dg-quadrant-4`)}}`,`${_} .dg-quadrant-frame{fill:none;stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${_} .dg-quadrant-axis{stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${_} .dg-quadrant-label{fill:${R(`--dg-text-muted`)};font-weight:bold}`,`${_} .dg-quadrant-axis-text{fill:${R(`--dg-text-muted`)};font-size:12px}`,`${_} .dg-quadrant-dot{fill:${R(`--dg-node-stroke`)};stroke:${R(`--dg-row-fill`)};stroke-width:1.5px}`,`${_} .dg-quadrant-point-text{fill:${R(`--dg-text`)};font-size:12px}`].join(``);return H({id:n,type:`quadrant`,width:c+Md,height:o+Md+28,title:r??e.accessibility.title??e.title??`Quadrant chart`,description:e.accessibility.description,body:u,css:v})}var Pd={requirement:`Requirement`,functionalrequirement:`Functional Requirement`,interfacerequirement:`Interface Requirement`,performancerequirement:`Performance Requirement`,physicalrequirement:`Physical Requirement`,designconstraint:`Design Constraint`,element:`Element`},Fd=[`contains`,`copies`,`derives`,`satisfies`,`verifies`,`refines`,`traces`],Id={id:`Id`,text:`Text`,risk:`Risk`,verifymethod:`Verification`,type:`Type`,docref:`Doc ref`},Ld=[`low`,`medium`,`high`],Rd=[`analysis`,`inspection`,`test`,`demonstration`],zd=String.raw`[\p{L}\p{N}_][\p{L}\p{N}_.-]*|"[^"]+"`;function Bd(e){let t=K(e),n=t[0];if(!n||n.text!==`requirementDiagram`)throw new I(`A requirement diagram starts with "requirementDiagram"`,n?.line??1,1);let r={type:`class`,direction:`TB`,classes:new Map,relations:[],notes:[],namespaces:new Map,classDefs:new Map,accessibility:{}},i=[],a=(e,t)=>{let n=ft(e),a=r.classes.get(n);return a||(a={id:n,label:n,annotations:[],attributes:[],methods:[],classes:[]},r.classes.set(n,a),i.push({id:n,s:t})),a},o=new Set;for(let e=1;e<t.length;e++){let n=t[e],i=q(t,e,r.accessibility);if(i>0){e+=i-1;continue}let s=RegExp(`^(\\w+)\\s+(${zd})(?::::([\\w-]+))?\\s*\\{$`,`u`).exec(n.text);if(s&&Pd[s[1].toLowerCase()]){let r=a(s[2],n);o.add(r.id);let i=s[1].toLowerCase();r.annotations=[Pd[i]],s[3]&&r.classes.push(s[3]);let c=e+1;for(;c<t.length&&t[c].text!==`}`;c++){let e=t[c],n=/^(\w+)\s*:\s*(.*)$/.exec(e.text),a=n?.[1].toLowerCase();if(!n||!Id[a])throw new I(`"${e.text}" is not a field`,e.line,e.column,i===`element`?`type: …, docref: …`:`id: …, text: …, risk: low|medium|high, verifymethod: analysis|inspection|test|demonstration`);let o=ft(n[2].trim());if(a===`risk`){if(!Ld.includes(o.toLowerCase()))throw new I(`"${o}" is not a risk`,e.line,e.column,`low, medium, high`);o=o[0].toUpperCase()+o.slice(1).toLowerCase()}if(a===`verifymethod`){if(!Rd.includes(o.toLowerCase()))throw new I(`"${o}" is not a verification method`,e.line,e.column,`analysis, inspection, test, demonstration`);o=o[0].toUpperCase()+o.slice(1).toLowerCase()}r.attributes.push({kind:`attribute`,text:`${Id[a]}: ${o}`})}if(c>=t.length)throw new I(`"${r.id}" is never closed`,n.line,n.column,`Close it with "}".`);e=c;continue}if(s)throw new I(`"${s[1]}" is not a kind of requirement`,n.line,n.column,Object.keys(Pd).join(`, `));s=RegExp(`^(${zd})\\s*-\\s*(\\w+)\\s*->\\s*(${zd})$`,`u`).exec(n.text)??null;let c=!1;if(s||(s=RegExp(`^(${zd})\\s*<-\\s*(\\w+)\\s*-\\s*(${zd})$`,`u`).exec(n.text),c=!!s),s){let e=s[2].toLowerCase();if(!Fd.includes(e))throw new I(`"${s[2]}" is not a relationship`,n.line,n.column,Fd.join(`, `));let[t,i]=c?[s[3],s[1]]:[s[1],s[3]];r.relations.push({from:a(t,n).id,to:a(i,n).id,fromEnd:`none`,toEnd:`arrow`,dashed:!0,label:`«${e}»`})}else if(s=/^direction\s+(TB|TD|BT|LR|RL)$/.exec(n.text))r.direction=s[1]===`TD`?`TB`:s[1];else if(s=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(n.text)){let e=U(s[2],n.line,n.column);for(let t of s[1].split(`,`))r.classDefs.set(t.trim(),e)}else if(s=/^class\s+(.+?)\s+([\w-]+)$/.exec(n.text))for(let e of s[1].split(`,`))a(e.trim(),n).classes.push(s[2]);else if(s=/^style\s+(.+?)\s+(.+)$/.exec(n.text)){let e=U(s[2],n.line,n.column);for(let t of s[1].split(`,`))a(t.trim(),n).style=e}else throw new I(`"${n.text}" is not a requirement diagram statement`,n.line,n.column)}for(let e of i)if(!o.has(e.id))throw new I(`"${e.id}" is used but never declared`,e.s.line,e.s.column,`requirement ${e.id} { … } or element ${e.id} { … }`);return r}var Vd={cloud:`cloud`,database:`cylinder`,disk:`storage`,internet:`circle`,server:`node`},Hd=String.raw`[\p{L}\p{N}_][\p{L}\p{N}_-]*`,Ud=RegExp(`^(service|group)\\s+(${Hd})(?:\\(([^)]*)\\))?(?:\\[([^\\]]*)\\])?(?:\\s+in\\s+(${Hd}))?$`,`u`),Wd=RegExp(`^junction\\s+(${Hd})(?:\\s+in\\s+(${Hd}))?$`,`u`),Gd=RegExp(`^(${Hd})(\\{group\\})?(?::([LRTB]))?\\s*(<)?-(?:\\[([^\\]]*)\\])?-(>)?\\s*(?:([LRTB]):)?(${Hd})(\\{group\\})?$`,`u`);function Kd(e){let t=K(e),n=t[0];if(!n||n.text!==`architecture-beta`)throw new I(`An architecture diagram starts with "architecture-beta"`,n?.line??1,1);let r={type:`flowchart`,direction:`LR`,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},i=new Map;for(let e=1;e<t.length;e++){let n=t[e],a=q(t,e,r.accessibility);if(a>0){e+=a-1;continue}let o;if(o=Ud.exec(n.text)){let[,e,t,a,s,c]=o;if(c&&!r.subgraphs.has(c))throw new I(`"${c}" is not a group declared above`,n.line,n.column+n.text.lastIndexOf(c));if(r.nodes.has(t)||r.subgraphs.has(t))throw new I(`"${t}" is declared twice`,n.line,n.column);let l=a?Vd[a.toLowerCase()]??`rect`:`rect`;e===`group`?r.subgraphs.set(t,{id:t,title:s??t,markdown:!1,parent:c,classes:[],kind:`rect`}):r.nodes.set(t,{id:t,text:s??t,markdown:!1,shape:l,classes:[],subgraph:c}),i.set(t,c)}else if(o=Wd.exec(n.text))r.nodes.set(o[1],{id:o[1],text:``,markdown:!1,shape:`start`,classes:[],subgraph:o[2]}),i.set(o[1],o[2]);else if(o=Gd.exec(n.text)){let[,e,t,,a,s,c,,l,u]=o,d=(e,t)=>{if(!r.nodes.has(e)&&!r.subgraphs.has(e))throw new I(`"${e}" is not a service, a junction or a group`,n.line,n.column);if(!t)return e;let a=i.get(e);if(!a)throw new I(`"${e}" is in no group`,n.line,n.column);return a},f=e=>e?`arrow`:`none`;r.edges.push({from:d(e,t),to:d(l,u),stroke:`normal`,start:f(a),end:f(c),length:1,text:s,markdown:!1})}else throw new I(`"${n.text}" is not an architecture statement`,n.line,n.column,`service id(icon)[Title] in group, a:R --> L:b`)}return r}var qd=500,Jd=[[`(((`,`)))`,`doublecircle`],[`((`,`))`,`circle`],[`([`,`])`,`stadium`],[`[[`,`]]`,`subroutine`],[`[(`,`)]`,`cylinder`],[`{{`,`}}`,`hexagon`],[`[/`,`/]`,`parallelogram`],[`[\\`,`\\]`,`parallelogram-alt`],[`[/`,`\\]`,`trapezoid`],[`[\\`,`/]`,`trapezoid-alt`],[`>`,`]`,`asymmetric`],[`[`,`]`,`rect`],[`(`,`)`,`round`],[`{`,`}`,`rhombus`]],Yd=String.raw`[\p{L}\p{N}_][\p{L}\p{N}_-]*`,Xd=RegExp(`^(${Yd})\\s*(?:(--|-\\.|==)\\s*"([^"]*)"\\s*)?(-->|---|-\\.->|-\\.-|==>|===)\\s*(${Yd})$`,`u`);function Zd(e){let t=[],n=0,r=!1,i=``;for(let a of e)a===`"`&&(r=!r),!r&&(`[({`.includes(a)?n++:`)]}`.includes(a)&&(n=Math.max(0,n-1)),a===` `&&n===0)?(i&&t.push(i),i=``):i+=a;return i&&t.push(i),t}function Qd(e,t){let n=/^space(?::(\d+))?$/.exec(e);if(n)return{kind:`space`,span:n[1]?Number(n[1]):1};if(n=RegExp(`^(${Yd})(.*?)(?::(\\d+))?(?::::([\\w-]+))?$`,`u`).exec(e),!n)throw new I(`"${e}" is not a block`,t.line,t.column);let[,r,i,a,o]=n,s=`rect`,c=r;if(i){let e=Jd.find(([e,t])=>i.startsWith(e)&&i.endsWith(t)&&i.length>=e.length+t.length);if(!e)throw new I(`"${i}" is not a block shape`,t.line,t.column,`a["text"], b("text"), c(("text")), d[("text")]`);s=e[2],c=ft(i.slice(e[0].length,i.length-e[1].length))}return{kind:`block`,id:r,label:c,shape:s,span:a?Number(a):1,classes:o?[o]:[]}}function $d(e){let t=K(e),n=t[0];if(!n||!/^block(-beta)?$/.test(n.text))throw new I(`A block diagram starts with "block-beta"`,n?.line??1,1);let r={type:`block`,items:[],edges:[],classDefs:new Map,accessibility:{}},i=[{items:r.items,line:n.line}],a=new Map,o=[],s=0;for(let e=1;e<t.length;e++){let n=t[e],c=q(t,e,r.accessibility);if(c>0){e+=c-1;continue}let l=i[i.length-1],u;if(u=/^columns\s+(\d+|auto)$/.exec(n.text)){let e=u[1]===`auto`?void 0:Number(u[1]);l.group?l.group.columns=e:r.columns=e}else if(u=RegExp(`^block(?::(${Yd}))?(?:\\["([^"]*)"\\])?(?::(\\d+))?$`,`u`).exec(n.text)){let e=u[1]??`block${++s}`,t={kind:`group`,id:e,label:u[2],span:u[3]?Number(u[3]):1,items:[],classes:[]};l.items.push(t),a.set(e,t),i.push({items:t.items,group:t,line:n.line})}else if(n.text===`end`){if(i.length===1)throw new I(`"end" without a block to close`,n.line,n.column);i.pop()}else if(u=Xd.exec(n.text)){let e=u[4];r.edges.push({from:u[1],to:u[5],text:u[3],stroke:e.includes(`.`)?`dotted`:e.startsWith(`=`)?`thick`:`normal`,arrow:e.endsWith(`>`)})}else if(u=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(n.text)){let e=U(u[2],n.line,n.column);for(let t of u[1].split(`,`))r.classDefs.set(t.trim(),e)}else if(u=/^class\s+(.+?)\s+([\w-]+)$/.exec(n.text))o.push({ids:u[1].split(`,`).map(e=>e.trim()),cls:u[2],s:n});else if(u=/^style\s+(\S+)\s+(.+)$/.exec(n.text))o.push({ids:[u[1]],style:U(u[2],n.line,n.column),s:n});else for(let e of Zd(n.text)){let t=Qd(e,n);if(t.kind===`block`){if(a.has(t.id))throw new I(`The block "${t.id}" is declared twice`,n.line,n.column);a.set(t.id,t)}if(l.items.push(t),++s>qd)throw Te(`blocks`,s,qd)}}if(i.length>1)throw new I(`A block is never closed`,i[i.length-1].line,0,`Close it with "end".`);for(let e of r.edges)for(let t of[e.from,e.to])if(!a.has(t))throw new I(`"${t}" is not a block`);for(let e of o)for(let t of e.ids){let n=a.get(t);if(!n||n.kind===`space`)throw new I(`"${t}" is not a block`,e.s.line,e.s.column);e.cls&&n.classes.push(e.cls),e.style&&(n.style=e.style)}return r}var ef=16,tf=12;function nf(e,t,n,r){let i=new Map,a=t=>Ke(e.classDefs.get(`default`),...t.classes.map(t=>e.classDefs.get(t)),t.style),o=e=>{if(e.kind===`space`)return{width:0,height:0,draw:()=>[]};if(e.kind===`block`){let n=Y(J(e.label),L,t),r=po(e.shape,n.width,Math.max(n.height,L.size*1.25));return{width:r.width,height:r.height,draw:(t,o,s,c)=>{let l={x:t+s/2,y:o+c/2,width:Math.max(r.width,s),height:r.height};i.set(e.id,{box:l,shape:e.shape});let u=a(e);return[z(`g`,{class:`dg-node`,"data-id":e.id},[mo(e.shape,l,{style:W(u.shape)}),X(n,l.x,l.y,{style:W(u.text)})])]}}}return s(e.items,e.columns,e)},s=(e,n,r)=>{let s=Math.max(1,n??e.reduce((e,t)=>e+t.span,0)),c=[],l=0,u=0;for(let t of e){let e=Math.min(t.span,s);u+e>s&&(l++,u=0),c.push({item:t,row:l,col:u,placed:o(t)}),u+=e,u>=s&&(l++,u=0)}let d=c.length>0?Math.max(...c.map(e=>e.row))+1:0,f=Math.max(60,...c.map(e=>(e.placed.width-ef*(Math.min(e.item.span,s)-1))/Math.min(e.item.span,s))),p=Array.from({length:d},(e,t)=>Math.max(0,...c.filter(e=>e.row===t).map(e=>e.placed.height))),m=r?.label?Y(J(r.label),{...L,weight:`bold`},t):null,h=r?tf:0,g=h+(m?m.height+4:0),_=s*f+(s-1)*ef+h*2,v=p.reduce((e,t)=>e+t,0)+Math.max(0,d-1)*ef+g+h;return{width:_,height:v,draw:(e,t,n)=>{let o=[],l=(n-h*2-(s-1)*ef)/s;if(r){i.set(r.id,{box:{x:e+n/2,y:t+v/2,width:n,height:v},shape:`rect`});let s=a(r);o.push(z(`rect`,{class:`dg-block-group`,x:e,y:t,width:n,height:v,rx:6,style:W(s.shape)})),m&&o.push(X(m,e+n/2,t+h+m.height/2,{className:`dg-block-group-title`}))}let u=e=>t+g+p.slice(0,e).reduce((e,t)=>e+t,0)+e*ef;for(let t of c){let n=Math.min(t.item.span,s),r=e+h+t.col*(l+ef);o.push(...t.placed.draw(r,u(t.row),l*n+ef*(n-1),p[t.row]))}return o}}},c=s(e.items,e.columns),l=c.draw(0,0,c.width,c.height),u=[],d=[];for(let r of e.edges){let e=i.get(r.from),a=i.get(r.to);if(!e||!a)continue;let o=go(e.shape,e.box,a.box),s=go(a.shape,a.box,e.box);if(u.push(z(`line`,{class:`dg-edge${r.stroke===`dotted`?` dg-edge-dotted`:r.stroke===`thick`?` dg-edge-thick`:``}`,x1:rf(o.x),y1:rf(o.y),x2:rf(s.x),y2:rf(s.y),"marker-end":r.arrow?`url(#${ia(n,`arrow`)})`:void 0})),r.text){let e=Y(J(r.text),L,t),n=(o.x+s.x)/2,i=(o.y+s.y)/2;d.push(z(`g`,{class:`dg-edge-label-group`},[z(`rect`,{class:`dg-edge-label-box`,x:rf(n-e.width/2-4),y:rf(i-e.height/2-2),width:rf(e.width+8),height:rf(e.height+4),rx:3}),X(e,rf(n),rf(i),{className:`dg-edge-label`})]))}}let f=`#${n}`,p=[`${f} .dg-block-group{fill:${R(`--dg-cluster-fill`)};stroke:${R(`--dg-cluster-stroke`)};stroke-width:1px}`,`${f} .dg-block-group-title{fill:${R(`--dg-cluster-text`)};font-weight:bold}`,`${f} .dg-edge-label-group text{fill:${R(`--dg-text`)}}`].join(``);return H({id:n,type:`block`,width:c.width,height:c.height,title:r??e.accessibility.title??`Block diagram`,description:e.accessibility.description,defs:e.edges.some(e=>e.arrow)?aa(n,[`arrow`]):[],body:[z(`g`,{class:`dg-blocks`},l),z(`g`,{class:`dg-edges`},u),z(`g`,{class:`dg-edge-labels`},d)],css:p})}function rf(e){return Math.round(e*100)/100}var af=500;function of(e,t){let n={},r=/(\w+)\s*:\s*("([^"]*)"|\S+)/g,i=e;for(let t of e.matchAll(r))n[t[1].toLowerCase()]=t[3]??t[2],i=i.replace(t[0],``);if(i.trim()!==``)throw new I(`"${i.trim()}" is not an option`,t.line,t.column,`id: "…", tag: "…", type: NORMAL|REVERSE|HIGHLIGHT, msg: "…"`);return n}function sf(e){let t=K(e),n=t[0],r=n?/^gitGraph(?:\s+(LR|TB|BT)\s*:)?\s*:?$/.exec(n.text):null;if(!n||!r)throw new I(`A git graph starts with "gitGraph"`,n?.line??1,1);let i={type:`gitgraph`,direction:r[1]??`LR`,branches:[{name:`main`,order:0}],commits:[],accessibility:{}},a=new Map([[`main`,void 0]]),o=new Set,s=`main`,c=0,l=(e,t)=>{if(e!==void 0){if(o.has(e))throw new I(`The commit id "${e}" is used twice`,t.line,t.column);return o.add(e),{id:e,named:!0}}let n;do n=`${c++}`;while(o.has(n));return o.add(n),{id:n,named:!1}},u=(e,t)=>{if(!e)return`normal`;let n=e.toLowerCase();if(n===`normal`||n===`reverse`||n===`highlight`)return n;throw new I(`"${e}" is not a commit type`,t.line,t.column,`NORMAL, REVERSE, HIGHLIGHT`)},d=e=>{if(i.commits.push(e),a.set(e.branch,e.id),i.commits.length>af)throw Te(`commits`,i.commits.length,af)};for(let e=1;e<t.length;e++){let n=t[e],r=q(t,e,i.accessibility);if(r>0){e+=r-1;continue}let o;if(o=/^commit\b\s*(.*)$/.exec(n.text)){let e=of(o[1],n),{id:t,named:r}=l(e.id,n),i=a.get(s);d({id:t,named:r,branch:s,parents:i?[i]:[],type:u(e.type,n),tags:e.tag?[e.tag]:[],message:e.msg})}else if(o=/^branch\s+("[^"]+"|\S+)\s*(.*)$/.exec(n.text)){let e=o[1].replace(/^"|"$/g,``);if(a.has(e))throw new I(`The branch "${e}" exists already`,n.line,n.column);let t=of(o[2],n);i.branches.push({name:e,order:t.order===void 0?i.branches.length:Number(t.order),from:a.get(s)}),a.set(e,a.get(s)),s=e}else if(o=/^(?:checkout|switch)\s+("[^"]+"|\S+)$/.exec(n.text)){let e=o[1].replace(/^"|"$/g,``);if(!a.has(e))throw new I(`"${e}" is not a branch`,n.line,n.column,`branch ${e}`);s=e}else if(o=/^merge\s+("[^"]+"|\S+)\s*(.*)$/.exec(n.text)){let e=o[1].replace(/^"|"$/g,``);if(!a.has(e))throw new I(`"${e}" is not a branch`,n.line,n.column);if(e===s)throw new I(`A branch cannot merge into itself`,n.line,n.column);let t=a.get(e),r=a.get(s);if(!t)throw new I(`"${e}" has no commits to merge`,n.line,n.column);if(t===r)throw new I(`"${s}" has nothing new from "${e}"`,n.line,n.column);let i=of(o[2],n),{id:c,named:f}=l(i.id,n);d({id:c,named:f,branch:s,parents:r?[r,t]:[t],type:i.type?u(i.type,n):`merge`,tags:i.tag?[i.tag]:[],message:i.msg})}else if(o=/^cherry-pick\s+(.*)$/.exec(n.text)){let e=of(o[1],n),t=i.commits.find(t=>t.id===e.id);if(!t)throw new I(`"${e.id??``}" is not a commit`,n.line,n.column,`cherry-pick id: "…"`);if(t.branch===s)throw new I(`A commit cannot be cherry-picked onto its own branch`,n.line,n.column);let{id:r,named:c}=l(void 0,n),u=a.get(s);d({id:r,named:c,branch:s,parents:u?[u]:[],type:`cherry-pick`,tags:e.tag?[e.tag]:[`cherry-pick: ${t.id}`],message:e.msg})}else throw new I(`"${n.text}" is not a git graph statement`,n.line,n.column,`commit, branch, checkout, merge, cherry-pick`)}if(i.commits.length===0)throw new I(`The graph has no commits`,0,0,`commit`);return i}var cf=54,lf=52,uf=9;function df(e,t,n,r){let i=[...e.branches].sort((e,t)=>e.order-t.order),a=new Map(i.map((e,t)=>[e.name,t])),o=t=>ke(e.branches.findIndex(e=>e.name===t)),s=new Map(i.map(e=>[e.name,Y(J(e.name),{...L,size:13,weight:`bold`},t)])),c=Math.max(...[...s.values()].map(e=>e.width))+24,l=e.direction!==`LR`,u=new Map(e.commits.map((e,t)=>[e.id,t])),d=t=>(e.direction===`BT`?(e.commits.length-1-t)*cf:t*cf)+(l?40:c+24),f=e.commits.some(e=>e.tags.length>0)?28:0,p=e=>a.get(e)*lf+(l?c/2+f*3:24+f),m=e=>l?[p(e.branch),d(u.get(e.id))]:[d(u.get(e.id)),p(e.branch)],h=[],g=[],_=[];for(let t of i){let n=e.commits.filter(e=>e.branch===t.name);if(n.length===0)continue;let r=t.from?u.get(t.from):u.get(n[0].id),i=Math.max(...e.commits.filter(n=>n.branch===t.name||n.parents.some(n=>e.commits[u.get(n)].branch===t.name)).map(e=>u.get(e.id))),a=l?[p(t.name),d(r)]:[d(r),p(t.name)],c=l?[p(t.name),d(i)]:[d(i),p(t.name)];h.push(z(`line`,{class:`dg-git-lane`,x1:a[0],y1:a[1],x2:c[0],y2:c[1],style:`stroke:${o(t.name)}`}));let f=s.get(t.name),[m,g]=l?[p(t.name),18]:[8,p(t.name)];_.push(z(`rect`,{class:`dg-git-branch-box`,x:l?m-f.width/2-6:m-4,y:g-f.height/2-3,width:f.width+12,height:f.height+6,rx:4,style:`fill:${o(t.name)}`})),_.push(X(f,l?m:m+f.width/2+2,g,{className:`dg-git-branch`}))}for(let t of e.commits){let[n,r]=m(t);for(let i of t.parents){let a=e.commits[u.get(i)];if(a.branch===t.branch)continue;let[s,c]=m(a),d=l?new V().moveTo(s,c).curveTo(s,(c+r)/2,n,(c+r)/2,n,r):new V().moveTo(s,c).curveTo((s+n)/2,c,(s+n)/2,r,n,r);h.push(z(`path`,{class:`dg-git-edge`,d:d.toString(),style:`stroke:${o(t.type===`merge`?a.branch:t.branch)}`}))}}for(let t of i){if(!t.from)continue;let n=e.commits.find(e=>e.branch===t.name);if(!n||n.parents[0]!==t.from)continue;let r=e.commits[u.get(t.from)];if(r.branch===t.name)continue;let[i,a]=m(r),[s,c]=m(n),d=l?new V().moveTo(i,a).curveTo(i,(a+c)/2,s,(a+c)/2,s,c):new V().moveTo(i,a).curveTo((i+s)/2,a,(i+s)/2,c,s,c);h.push(z(`path`,{class:`dg-git-edge`,d:d.toString(),style:`stroke:${o(t.name)}`}))}for(let n of e.commits){let[e,r]=m(n),i=`fill:${o(n.branch)}`;n.type===`highlight`?g.push(z(`rect`,{class:`dg-git-commit`,x:e-uf,y:r-uf,width:18,height:18,style:i})):n.type===`merge`?(g.push(z(`circle`,{class:`dg-git-commit`,cx:e,cy:r,r:uf,style:i})),g.push(z(`circle`,{class:`dg-git-merge`,cx:e,cy:r,r:5}))):n.type===`cherry-pick`?g.push(z(`circle`,{class:`dg-git-commit dg-git-cherry`,cx:e,cy:r,r:uf})):(g.push(z(`circle`,{class:`dg-git-commit`,cx:e,cy:r,r:uf,style:i})),n.type===`reverse`&&g.push(z(`path`,{class:`dg-git-reverse`,d:new V().moveTo(e-4,r-4).lineTo(e+4,r+4).moveTo(e-4,r+4).lineTo(e+4,r-4).toString()})));let a=n.named?n.id:n.message;if(a){let n=Y(J(a),{...L,size:12},t);_.push(X(n,l?e+uf+6+n.width/2:e,l?r:r+uf+6+n.height/2,{className:`dg-git-id`}))}n.tags.forEach((n,i)=>{let a=Y(J(n),{...L,size:12},t),o=l?e-uf-10-a.width/2:e,s=l?r+i*(a.height+8):r-uf-8-a.height/2-i*(a.height+8);_.push(z(`rect`,{class:`dg-git-tag`,x:o-a.width/2-5,y:s-a.height/2-2,width:a.width+10,height:a.height+4,rx:3})),_.push(X(a,o,s,{className:`dg-git-tag-text`}))})}let v=i.length*lf,y=e.commits.length*cf,b=l?Math.max(v+c,c+120)+f*3:c+24+y,x=l?y+60:v+30+f,S=`#${n}`,C=[`${S} .dg-git-lane{stroke-width:3px;stroke-opacity:0.55}`,`${S} .dg-git-edge{fill:none;stroke-width:3px;stroke-opacity:0.55}`,`${S} .dg-git-commit{stroke:${R(`--dg-row-fill`)};stroke-width:2px}`,`${S} .dg-git-cherry{fill:${R(`--dg-row-fill`)};stroke:${R(`--dg-line`)};stroke-dasharray:2 2}`,`${S} .dg-git-merge{fill:${R(`--dg-row-fill`)}}`,`${S} .dg-git-reverse{stroke:${R(`--dg-row-fill`)};stroke-width:2px}`,`${S} .dg-git-branch-box{fill-opacity:0.18}`,`${S} .dg-git-branch{fill:${R(`--dg-text`)};font-size:13px;font-weight:bold}`,`${S} .dg-git-id{fill:${R(`--dg-text-muted`)};font-size:12px}`,`${S} .dg-git-tag{fill:${R(`--dg-note-fill`)};stroke:${R(`--dg-note-stroke`)};stroke-width:1px}`,`${S} .dg-git-tag-text{fill:${R(`--dg-note-text`)};font-size:12px}`].join(``);return H({id:n,type:`gitgraph`,width:b,height:x,title:r??e.accessibility.title??`Git graph`,description:e.accessibility.description,body:[z(`g`,{class:`dg-git-lines`},h),z(`g`,{class:`dg-git-commits`},g),z(`g`,{class:`dg-git-texts`},_)],css:C})}var ff=1e3;function pf(e){let t=[],n=0;for(;n<=e.length;)if(e[n]===`"`){let r=``;for(n++;;){if(n>=e.length)return null;if(e[n]===`"`&&e[n+1]===`"`)r+=`"`,n+=2;else if(e[n]===`"`){n++;break}else r+=e[n++]}for(t.push(r.trim());n<e.length&&e[n]!==`,`;)if(e[n++]!==` `)return null;n++}else{let r=e.indexOf(`,`,n),i=r<0?e.length:r;t.push(e.slice(n,i).trim()),n=i+1}return t}function mf(e){let t=K(e),n=t[0];if(!n||!/^sankey(-beta)?$/.test(n.text))throw new I(`A sankey diagram starts with "sankey-beta"`,n?.line??1,1);let r={type:`sankey`,nodes:[],links:[],accessibility:{}};for(let e=1;e<t.length;e++){let n=t[e],i=q(t,e,r.accessibility);if(i>0){e+=i-1;continue}let a=pf(n.text);if(!a||a.length!==3)throw new I(`"${n.text}" is not a flow`,n.line,n.column,`Source,Target,42`);let o=Number(a[2]);if(!Number.isFinite(o)||o<0)throw new I(`"${a[2]}" is not a value`,n.line,n.column);if(a[0]===``||a[1]===``)throw new I(`A flow needs a source and a target`,n.line,n.column);for(let e of[a[0],a[1]])r.nodes.includes(e)||r.nodes.push(e);if(r.links.push({source:a[0],target:a[1],value:o}),r.links.length>ff)throw Te(`flows`,r.links.length,ff)}if(r.links.length===0)throw new I(`The diagram has no flows`,0,0,`Source,Target,42`);return r}var hf=420,gf=14,_f=14,vf=170;function yf(e,t,n,r){let i=new Map(e.nodes.map(e=>[e,[]])),a=new Map(e.nodes.map(e=>[e,[]]));for(let t of e.links)i.get(t.source).push(t),a.get(t.target).push(t);let o=new Map,s=new Map,c=e=>{if(s.get(e)===`done`)return o.get(e);if(s.get(e)===`visiting`)throw new I(`The flows go round in a circle through "${e}"`);s.set(e,`visiting`);let t=Math.max(0,...a.get(e).map(e=>c(e.source)+1));return s.set(e,`done`),o.set(e,t),t};for(let t of e.nodes)c(t);let l=Math.max(...o.values());for(let t of e.nodes)i.get(t).length===0&&o.set(t,l);let u=e=>Math.max(bf(a.get(e)),bf(i.get(e))),d=Array.from({length:l+1},()=>[]);for(let t of e.nodes)d[o.get(t)].push(t);let f=Math.min(...d.filter(e=>e.length>0).map(e=>(hf-_f*(e.length-1))/Math.max(1e-9,e.reduce((e,t)=>e+u(t),0)))),p=new Map(e.nodes.map(e=>[e,Y(J(`${e} ${xf(u(e))}`),L,t)])),m=Math.max(0,...d[l].map(e=>p.get(e).width))+10,h=new Map;d.forEach((e,t)=>{let n=(hf-(e.reduce((e,t)=>e+u(t),0)*f+_f*(e.length-1)))/2;for(let r of e){let e=Math.max(1,u(r)*f);h.set(r,{x:0+t*vf,y:n,h:e}),n+=e+_f}});let g=new Map(e.nodes.map(e=>[e,h.get(e).y])),_=new Map(e.nodes.map(e=>[e,h.get(e).y])),v=[...e.links].sort((e,t)=>h.get(e.target).y-h.get(t.target).y||h.get(e.source).y-h.get(t.source).y),y=[];for(let t of v){let n=t.value*f,r=h.get(t.source),i=h.get(t.target),a=g.get(t.source)+n/2,o=_.get(t.target)+n/2;g.set(t.source,g.get(t.source)+n),_.set(t.target,_.get(t.target)+n);let s=r.x+gf,c=i.x,l=(s+c)/2;y.push(z(`path`,{class:`dg-sankey-link`,d:new V().moveTo(Sf(s),Sf(a)).curveTo(Sf(l),Sf(a),Sf(l),Sf(o),Sf(c),Sf(o)).toString(),style:`stroke:${ke(e.nodes.indexOf(t.source))};stroke-width:${Sf(Math.max(1,n))}px`},[z(`title`,{},[{text:`${t.source} → ${t.target}: ${xf(t.value)}`}])]))}let b=e.nodes.map((e,t)=>{let n=h.get(e),r=p.get(e),i=o.get(e)===l&&l>0;return z(`g`,{class:`dg-sankey-node`,"data-id":e},[z(`rect`,{class:`dg-sankey-bar`,x:Sf(n.x),y:Sf(n.y),width:gf,height:Sf(n.h),style:`fill:${ke(t)}`}),X(r,Sf(i?n.x-6:n.x+gf+6),Sf(n.y+n.h/2),{anchor:i?`end`:`start`,className:`dg-sankey-label`})])}),x=`#${n}`,S=[`${x} .dg-sankey-link{fill:none;stroke-opacity:0.35}`,`${x} .dg-sankey-link:hover{stroke-opacity:0.6}`,`${x} .dg-sankey-label{fill:${R(`--dg-text`)};paint-order:stroke;stroke:${R(`--dg-row-fill`)};stroke-width:3px;stroke-linejoin:round}`].join(``);return H({id:n,type:`sankey`,width:0+l*vf+gf+(l===0?m:0),height:hf,title:r??e.accessibility.title??`Sankey diagram`,description:e.accessibility.description,body:[z(`g`,{class:`dg-sankey-links`},y),z(`g`,{class:`dg-sankey-nodes`},b)],css:S})}function bf(e){return e.reduce((e,t)=>e+t.value,0)}function xf(e){return String(Number.isInteger(e)?e:Math.round(e*100)/100)}function Sf(e){return Math.round(e*100)/100}var Cf=14,wf=720,Tf=22,Ef=26,Df=28;function Of(e){let t=e/6,n=10**Math.floor(Math.log10(t||1));for(let e of[1,2,5,10])if(e*n>=t)return e*n;return 10*n}var $=e=>Math.round(e*100)/100;function kf(e,t,n,r){let i=e.signals.map(e=>Y(J(e.label),{...L,weight:`bold`},t)),a=e.signals.map(e=>e.kind===`robust`?e.states.map(e=>Y(J(e),L,t)):[]),o=Math.max(40,...i.map(e=>e.width)),s=Math.max(0,...a.flat().map(e=>e.width)),c=8+o+(s>0?16+s:0)+12,l=[0,...e.signals.flatMap(e=>e.changes.map(e=>e.at)),...e.messages.flatMap(e=>[e.at,e.until]),...e.highlights.flatMap(e=>[e.from,e.to])],u=Math.min(...l),d=Math.max(...l);for(let t of e.signals)t.clock&&(d=Math.max(d,u+t.clock.period*4));d===u&&(d=u+100);let f=Of(d-u);d=Math.ceil(d/f)*f+f;let p=wf/(d-u),m=e=>c+(e-u)*p,h=e.title?Y(J(e.title),{...L,size:18,weight:`bold`},t):null,g=h?h.height+14:0,_=g,v=[];e.signals.forEach((e,t)=>{let n=e.kind===`robust`?Math.max(2,e.states.length)*Tf+10:38;v.push({signal:e,top:g,height:n,label:i[t],levels:a[t]}),g+=n+Cf});let y=g-Cf,b=new Map(v.map(e=>[e.signal.id,e])),x=[];h&&x.push(X(h,(c+wf)/2,h.height/2,{className:`dg-title`}));for(let n of e.highlights){let e=n.text?Y(J(n.text),L,t):null;x.push(z(`g`,{class:`dg-timing-highlight`},[z(`rect`,{class:`dg-timing-highlight-box`,x:$(m(n.from)),y:_,width:$((n.to-n.from)*p),height:y-_,style:n.color?`fill:${n.color};fill-opacity:0.45`:void 0}),e?X(e,$(m((n.from+n.to)/2)),_+e.height/2+2,{className:`dg-timing-highlight-text`}):null]))}let S=[];for(let e=Math.ceil(u/f)*f;e<=d;e+=f){S.push(z(`line`,{class:`dg-timing-grid`,x1:$(m(e)),y1:_,x2:$(m(e)),y2:y+4}));let n=Y(J(String($(e))),{...L,size:12},t);S.push(X(n,$(m(e)),y+8+n.height/2,{className:`dg-timing-tick`}))}x.push(z(`g`,{class:`dg-timing-axis`},S));for(let e of v){let n=e.signal,r=[X(e.label,8,e.top+12,{anchor:`start`,className:`dg-timing-name`})],i=e.top+e.height/2;if(n.kind===`robust`){let t=t=>{let r=Math.max(0,n.states.indexOf(t));return e.top+e.height-5-Tf/2-r*Tf};if(e.levels.forEach((t,n)=>r.push(X(t,c-8,e.top+e.height-5-Tf/2-n*Tf,{anchor:`end`,className:`dg-timing-level`}))),n.changes.length>0){let e=new V().moveTo($(m(n.changes[0].at)),$(t(n.changes[0].state)));n.changes.forEach((r,i)=>{i>0&&e.lineTo($(m(r.at)),$(t(n.changes[i-1].state))).lineTo($(m(r.at)),$(t(r.state)))}),e.lineTo($(m(d)),$(t(n.changes[n.changes.length-1].state))),r.push(z(`path`,{class:`dg-timing-wave`,d:e.toString()}))}}else if(n.kind===`concise`)n.changes.forEach((e,a)=>{let o=n.changes[a+1]?.at??d;if(/^\{(-|hidden)\}$/.test(e.state))return;let s=m(e.at),c=m(o),l=Ef/2,u=Math.min(5,(c-s)/3),f=[[s,i],[s+u,i-l],[c-u,i-l],[c,i],[c-u,i+l],[s+u,i+l]];r.push(z(`polygon`,{class:`dg-timing-band`,points:f.map(([e,t])=>`${$(e)},${$(t)}`).join(` `)}));let p=Y(J(e.state),{...L,size:13},t);p.width<c-s-2*u&&r.push(X(p,$((s+c)/2),i,{className:`dg-timing-state`}))});else{let t=e.top+8,i=e.top+e.height-8,a=new V;if(n.kind===`clock`&&n.clock){let{period:e,pulse:r,offset:o}=n.clock;a.moveTo($(m(u)),i);for(let n=u+o;n<d;n+=e){let e=Math.min(n+r,d);a.lineTo($(m(n)),i).lineTo($(m(n)),t).lineTo($(m(e)),t).lineTo($(m(e)),i)}a.lineTo($(m(d)),i)}else{let e=e=>/^(high|1|on|true)$/i.test(e)?t:i;n.changes.length>0&&(a.moveTo($(m(n.changes[0].at)),e(n.changes[0].state)),n.changes.forEach((t,r)=>{r>0&&a.lineTo($(m(t.at)),e(n.changes[r-1].state)).lineTo($(m(t.at)),e(t.state))}),a.lineTo($(m(d)),e(n.changes[n.changes.length-1].state)))}r.push(z(`path`,{class:`dg-timing-wave`,d:a.toString()}))}x.push(z(`g`,{class:`dg-timing-signal dg-timing-${n.kind}`,"data-id":n.id},r))}for(let r of e.messages){let e=b.get(r.from),i=b.get(r.to);if(!e||!i)continue;let a=$(m(r.at)),o=$(m(r.until)),s=e.top+e.height/2,c=i.top+i.height/2,l=r.text?Y(J(r.text),{...L,size:13},t):null;x.push(z(`g`,{class:`dg-timing-message`},[z(`line`,{class:`dg-timing-arrow`,x1:a,y1:s,x2:o,y2:c,"marker-end":`url(#${ia(n,`arrow`)})`}),l?X(l,$((a+o)/2+l.width/2+4),$((s+c)/2),{className:`dg-timing-message-text`}):null]))}let C=`#${n}`,w=[`${C} .dg-title{fill:${R(`--dg-text`)};font-size:18px;font-weight:bold}`,`${C} .dg-timing-grid{stroke:${R(`--dg-grid`)};stroke-width:1px}`,`${C} .dg-timing-tick{fill:${R(`--dg-text-muted`)};font-size:12px}`,`${C} .dg-timing-name{fill:${R(`--dg-text`)};font-weight:bold}`,`${C} .dg-timing-level{fill:${R(`--dg-text-muted`)}}`,`${C} .dg-timing-wave{fill:none;stroke:${R(`--dg-node-stroke`)};stroke-width:2px}`,`${C} .dg-timing-band{fill:${R(`--dg-node-fill`)};stroke:${R(`--dg-node-stroke`)};stroke-width:1.5px}`,`${C} .dg-timing-state{fill:${R(`--dg-node-text`)};font-size:13px}`,`${C} .dg-timing-arrow{stroke:${R(`--dg-line`)};stroke-width:1.5px}`,`${C} .dg-timing-message-text{fill:${R(`--dg-text`)};font-size:13px}`,`${C} .dg-timing-highlight-box{fill:${R(`--dg-rect-fill`)}}`,`${C} .dg-timing-highlight-text{fill:${R(`--dg-text-muted`)}}`].join(``);return H({id:n,type:`timing`,width:c+wf+8,height:y+Df,title:r??e.accessibility.title??e.title??`Timing diagram`,description:e.accessibility.description,defs:e.messages.length>0?aa(n,[`arrow`]):[],body:x,css:w})}var Af={pie:{parse:Ca,render:Da},gantt:{parse:Vn,render:Ha},flowchart:{parse:Qa,render:ss},sequence:{parse:Fs,render:Ws},state:{parse:ci,render:Js},timeline:{parse:$s,render:cc},xychart:{parse:yc,render:Ic},mindmap:{parse:Uc,render:cl},er:{parse:Cl,render:Ql},class:{parse:yr,render:mu},c4:{parse:At,render:cd},journey:{parse:vd,render:wd},quadrant:{parse:jd,render:Nd},kanban:{parse:Ed,render:kd},requirement:{parse:Bd,render:mu},architecture:{parse:Kd,render:ss},sankey:{parse:mf,render:yf},gitgraph:{parse:sf,render:df},block:{parse:$d,render:nf},wardley:{parse:ga,render:Sa},timing:{parse:()=>jf(`timing`),render:kf},salt:{parse:()=>jf(`salt`),render:_d}};function jf(e){throw new I(`${e} diagrams are written in PlantUML`,0,0,`Start the source with @startuml.`)}var Mf={pie:`pie`,gantt:`gantt`,flowchart:`flowchart`,graph:`flowchart`,"flowchart-elk":`flowchart`,sequenceDiagram:`sequence`,stateDiagram:`state`,"stateDiagram-v2":`state`,timeline:`timeline`,"xychart-beta":`xychart`,xychart:`xychart`,mindmap:`mindmap`,erDiagram:`er`,classDiagram:`class`,"classDiagram-v2":`class`,C4Context:`c4`,C4Container:`c4`,C4Component:`c4`,C4Dynamic:`c4`,C4Deployment:`c4`,journey:`journey`,quadrantChart:`quadrant`,kanban:`kanban`,requirementDiagram:`requirement`,"architecture-beta":`architecture`,"sankey-beta":`sankey`,sankey:`sankey`,gitGraph:`gitgraph`,"block-beta":`block`,block:`block`};function Nf(e){if(Ze(e))return`plantuml`;if(Wi(e))return`dot`;if(Li(e))return`dbml`;if($i(e))return`structurizr`;if(fa(e))return`wardley`;let t=ut(e);return t&&Mf[t.keyword]?`mermaid`:Mi(e)?`d2`:`mermaid`}var Pf={dot:{type:`flowchart`,parse:Qi},d2:{type:`flowchart`,parse:Ni},dbml:{type:`er`,parse:Ui},structurizr:{type:`c4`,parse:na},wardley:{type:`wardley`,parse:ga}};function Ff(e){let t=ut(e);if(!t)throw new I(`The diagram is empty`,0,0);let n=Mf[t.keyword];if(!n)throw new I(`"${t.keyword}" is not a supported diagram type`,t.statement.line,t.statement.column,`Supported: ${Object.keys(Mf).join(`, `)}.`);return Af[n]}function If(e,t={}){let n=Re(t.idPrefix??Le(e)),r=t.measureText??Yt(),i=t.syntax??Nf(e);if(i!==`mermaid`&&i!==`plantuml`){let{type:a,parse:o}=Pf[i];return Af[a].render(o(e),r,n,t.title,t.today)}if(i===`plantuml`){let{kind:i,model:a}=xi(e);return Af[pi[i]].render(a,r,n,t.title,t.today)}let a=Ff(e),o=a.parse(e);return a.render(o,r,n,t.title,t.today)}var Lf=`:where(dsk-diagram,dsk-flow,dsk-board,dsk-openapi,dsk-asyncapi,dsk-bpmn,dsk-dmn,dsk-drawio)[data-dsk-state=ready]{position:relative}.dsk-fs-button{z-index:20;border:1px solid var(--uid-border-subtle,#e5e7eb);border-radius:var(--uid-radius-md,8px);background:var(--uid-surface-raised,#fff);width:30px;height:30px;color:var(--uid-text-secondary,#4b5563);cursor:pointer;opacity:0;justify-content:center;align-items:center;padding:0;transition:opacity .15s;display:inline-flex;position:absolute;top:8px;right:8px;box-shadow:0 2px 8px #0f172a14}:where(dsk-diagram,dsk-flow,dsk-board,dsk-openapi,dsk-asyncapi,dsk-bpmn,dsk-dmn,dsk-drawio):hover>.dsk-fs-button,.dsk-fs-button:focus-visible,[data-dsk-fullscreen]>.dsk-fs-button{opacity:1}.dsk-fs-button:hover{color:var(--uid-text-primary,#111827)}@media (hover:none){.dsk-fs-button{opacity:1}}dsk-board>.dsk-fs-button,dsk-flow>.dsk-fs-button{left:8px;right:auto}dsk-openapi>.dsk-fs-button,dsk-asyncapi>.dsk-fs-button{top:auto;bottom:8px}dsk-bpmn>.dsk-fs-button,dsk-dmn>.dsk-fs-button{left:8px;right:auto}:where(dsk-diagram,dsk-flow,dsk-board,dsk-openapi,dsk-asyncapi,dsk-bpmn,dsk-dmn,dsk-drawio)[data-dsk-fullscreen]{--dsk-flow-height:100vh;--dsk-board-height:100vh;--dsk-openapi-height:calc(100vh - 32px);--dsk-bpmn-height:100vh;--dsk-dmn-height:100vh;box-sizing:border-box;background:var(--uid-surface,#fff);overflow:auto}:where(dsk-diagram,dsk-openapi,dsk-asyncapi,dsk-drawio)[data-dsk-fullscreen]{padding:16px}[data-dsk-fullscreen] .dsk-flow-frame,[data-dsk-fullscreen] .dsk-board-frame,[data-dsk-fullscreen] .dsk-bpmn-frame{border:0;border-radius:0}dsk-diagram[data-dsk-fullscreen] .dsk-diagram{justify-content:center;align-items:center;min-height:calc(100vh - 32px);display:flex}dsk-diagram[data-dsk-fullscreen] .dsk-diagram svg{width:100%!important;max-width:none!important;height:calc(100vh - 32px)!important}dsk-drawio[data-dsk-fullscreen] .dsk-drawio__page svg{width:100%!important;max-width:none!important;height:calc(100vh - 80px)!important}.dsk-fs-fallback{z-index:2147483000;inset:0;margin:0!important;position:fixed!important}.dsk-fs-locked,.dsk-fs-locked body{overflow:hidden!important}`,Rf={en:{enter:`Full screen`,exit:`Exit full screen`},ru:{enter:`Во весь экран`,exit:`Выйти из полноэкранного режима`}},zf=`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3"/></svg>`,Bf=`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3v3a2 2 0 0 1-2 2H3M21 8h-3a2 2 0 0 1-2-2V3M3 16h3a2 2 0 0 1 2 2v3M16 21v-3a2 2 0 0 1 2-2h3"/></svg>`;function Vf(e,t,n){xe(`fullscreen`,Lf,e.ownerDocument);let r=document.createElement(`button`);r.type=`button`,r.className=`dsk-fs-button`;let i=Rf[t===`ru`?`ru`:`en`],a=!1,o=!1,s=()=>{let e=a?i.exit:i.enter;r.innerHTML=a?Bf:zf,r.setAttribute(`aria-label`,e),r.title=e,r.setAttribute(`aria-pressed`,String(a))},c=t=>{t!==a&&(a=t,t?document.addEventListener(`keydown`,l):document.removeEventListener(`keydown`,l),e.toggleAttribute(`data-dsk-fullscreen`,t),s(),n(t))},l=e=>{e.key===`Escape`&&a&&p()},u=()=>{o||c(document.fullscreenElement===e)};function d(){o=!0,e.classList.add(`dsk-fs-fallback`),document.documentElement.classList.add(`dsk-fs-locked`),c(!0)}function f(){if(a)return;let t=e.requestFullscreen;document.fullscreenEnabled&&typeof t==`function`?t.call(e).catch(d):d()}function p(){a&&(o?(o=!1,e.classList.remove(`dsk-fs-fallback`),document.documentElement.classList.remove(`dsk-fs-locked`),c(!1)):document.fullscreenElement===e?document.exitFullscreen().catch(()=>c(!1)):c(!1))}return r.addEventListener(`click`,e=>{e.stopPropagation(),a?p():f()}),r.addEventListener(`pointerdown`,e=>e.stopPropagation()),document.addEventListener(`fullscreenchange`,u),s(),e.appendChild(r),{get active(){return a},enter:f,exit:p,toggle:()=>a?p():f(),relabel(e){i=Rf[e===`ru`?`ru`:`en`],s()},destroy(){p(),document.removeEventListener(`fullscreenchange`,u),r.remove()}}}function Hf(e,t){return e.el.getAttribute(`fullscreen`)===`false`?null:Vf(e.el,e.locale(),n=>{if(e.emit(`fullscreen`,{active:n}),!t)return;let r=!1,i=()=>{r||(r=!0,a?.disconnect(),requestAnimationFrame(()=>{try{t()}catch{}}))},a=typeof ResizeObserver==`function`?new ResizeObserver(()=>setTimeout(i,50)):null;a?.observe(e.el),setTimeout(i,400)})}var Uf=t({LANGUAGES:()=>Yf,mountElement:()=>Jf,renderers:()=>Zf}),Wf=0,Gf=new Map;function Kf(e){let t=Gf.get(e);return t||(t=fetch(e,{credentials:`same-origin`}).then(t=>{if(!t.ok)throw Error(`${e}: HTTP ${t.status}`);return t.text()}),t.catch(()=>Gf.delete(e)),Gf.set(e,t)),t}function qf(e){if(e instanceof I){let t=e.line>0?` (line ${e.line}${e.column>0?`, column ${e.column}`:``})`:``;return`${e.message}${t}${e.hint?`. ${e.hint}`:``}`}return e instanceof Error?e.message:String(e)}function Jf(e){let t=document.createElement(`div`);t.className=`dsk-diagram`,e.container.appendChild(t);let n=0,r=``;async function i(){let i=++n,o=e.props(),s=typeof o.label==`string`?o.label:void 0,c;try{c=typeof o.src==`string`&&o.src!==``?await Kf(o.src):e.source()}catch(e){i===n&&a(e);return}if(i!==n)return;let l=`${s??``}\n${c}`;if(l!==r){r=l;try{let n=typeof o.syntax==`string`?o.syntax:void 0,r=If(c,{idPrefix:`dsk-dg-${++Wf}`,...n?{syntax:n}:{},...s?{title:s}:{}});t.innerHTML=r.svg,e.emit(`render`,{type:r.type,width:r.width,height:r.height})}catch(e){a(e)}}}function a(n){r=``;let i=document.createElement(`div`);i.className=`dsk-error`,i.setAttribute(`role`,`alert`),i.textContent=qf(n),t.replaceChildren(i);let a={message:qf(n)};n instanceof I&&Object.assign(a,{line:n.line,column:n.column,hint:n.hint}),e.emit(`error`,a)}i();let o=Hf(e);return{update:()=>void i(),destroy:()=>{o?.destroy(),t.remove()},api:{enterFullscreen:()=>o?.enter(),exitFullscreen:()=>o?.exit(),get fullscreen(){return o?.active??!1},get svg(){return t.querySelector(`svg`)}}}}var Yf={mermaid:`mermaid`,plantuml:`plantuml`,puml:`plantuml`,dot:`dot`,graphviz:`dot`,d2:`d2`,dbml:`dbml`,structurizr:`structurizr`,wardley:`wardley`};function Xf(e){return t=>{try{return{html:If(t,{syntax:e,idPrefix:`dsk-dg-${++Wf}`}).svg}}catch(e){if(e instanceof I)return{error:qf(e)};throw e}}}var Zf=Object.fromEntries(Object.entries(Yf).map(([e,t])=>[e,Xf(t)]));Se({diagram:Uf},Ce.diagram.map(e=>[e,we[e]]))})();
32
+ `?r+=2:(i+=e[r],r++);if(r>=e.length)throw new L(`A quoted string is never closed`,s.line,s.column);t.push({kind:`id`,value:i,quoted:!0,...s}),a(r+1-n);continue}if(o===`<`){let r=0,i=n;for(;i<e.length&&(e[i]===`<`?r++:e[i]===`>`&&r--,r!==0);i++);if(i>=e.length)throw new L(`An HTML label is never closed`,s.line,s.column);let o=e.slice(n+1,i).replace(/<br\s*\/?>/gi,`
33
+ `).replace(/<[^>]*>/g,``).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&amp;/g,`&`);t.push({kind:`id`,value:o.trim(),quoted:!0,...s}),a(i+1-n);continue}if(e.startsWith(`->`,n)||e.startsWith(`--`,n)){t.push({kind:`punct`,value:e.slice(n,n+2),quoted:!1,...s}),a(2);continue}if(`{}[]=;,:`.includes(o)){t.push({kind:`punct`,value:o,quoted:!1,...s}),a(1);continue}let c=/^(-?(?:\.\d+|\d+(?:\.\d*)?)|[\p{L}_\u0080-￿][\p{L}\p{N}_\u0080-￿]*)/u.exec(e.slice(n));if(!c)throw new L(`Unexpected "${o}"`,s.line,s.column);t.push({kind:`id`,value:c[0],quoted:!1,...s}),a(c[0].length)}return t}var Gi={box:`rect`,rect:`rect`,rectangle:`rect`,square:`rect`,ellipse:`usecase`,oval:`usecase`,circle:`circle`,point:`start`,doublecircle:`doublecircle`,diamond:`rhombus`,hexagon:`hexagon`,parallelogram:`parallelogram`,trapezium:`trapezoid`,invtrapezium:`trapezoid-alt`,cylinder:`cylinder`,note:`note`,folder:`folder`,tab:`folder`,component:`component`,box3d:`node`,plaintext:`text`,plain:`text`,none:`text`,record:`rect`,mrecord:`round`,underline:`text`,cds:`asymmetric`},Ki={normal:`arrow`,vee:`open-arrow`,open:`open-arrow`,empty:`triangle`,onormal:`triangle`,diamond:`diamond`,odiamond:`diamond-open`,ediamond:`diamond-open`,dot:`circle`,odot:`circle`,none:`none`,tee:`cross`,box:`arrow`,inv:`arrow`,crow:`open-arrow`},qi=500,Ji=class{constructor(e){this.tokens=e,this.i=0,this.chart={type:`flowchart`,direction:`TB`,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},this.directed=!0}peek(e=0){return this.tokens[this.i+e]}error(e,t){let n=this.peek()??this.tokens[this.tokens.length-1];return new L(e,n?.line??0,n?.column??0,t)}is(e,t=0){let n=this.peek(t);return!!n&&n.kind===`punct`&&n.value===e}keyword(e,t=0){let n=this.peek(t);return!!n&&n.kind===`id`&&!n.quoted&&n.value.toLowerCase()===e}expect(e){if(!this.is(e))throw this.error(`"${e}" expected here`);this.i++}run(){if(this.keyword(`strict`)&&this.i++,this.keyword(`digraph`))this.directed=!0;else if(this.keyword(`graph`))this.directed=!1;else throw this.error(`A DOT graph starts with "graph" or "digraph"`);if(this.i++,this.peek()?.kind===`id`&&this.i++,this.expect(`{`),this.statements({node:new Map,edge:new Map},void 0),this.expect(`}`),this.i<this.tokens.length)throw this.error(`Text after the closing "}"`);return this.chart}statements(e,t,n){for(;this.peek()&&!this.is(`}`);){if(this.is(`;`)){this.i++;continue}if(this.peek()?.kind===`id`&&this.is(`=`,1)){let e=this.peek().value.toLowerCase(),n=this.peek(2)?.value??``;this.i+=3,this.graphAttr(e,n,t);continue}if(this.keyword(`graph`)||this.keyword(`node`)||this.keyword(`edge`)){let n=this.peek().value.toLowerCase();this.i++;let r=this.attrs();if(n===`node`)for(let[t,n]of r)e.node.set(t,n);else if(n===`edge`)for(let[t,n]of r)e.edge.set(t,n);else for(let[e,n]of r)this.graphAttr(e,n,t);continue}let r=this.operand(e,t,n);if(this.is(`->`)||this.is(`--`)){let i=[r];for(;this.is(`->`)||this.is(`--`);){if(this.is(`->`)!==this.directed)throw this.error(this.directed?`A digraph links with "->"`:`A graph links with "--"`);this.i++,i.push(this.operand(e,t,n))}let a=new Map([...e.edge,...this.attrs()]);for(let e=0;e+1<i.length;e++)for(let t of i[e])for(let n of i[e+1])this.edge(t,n,a);continue}let i=this.attrs();for(let e of r)this.nodeAttrs(e,i)}}operand(e,t,n){if(this.keyword(`subgraph`)||this.is(`{`)){let r;this.keyword(`subgraph`)&&(this.i++,this.peek()?.kind===`id`&&(r=this.peek().value),r!==void 0&&this.i++),this.expect(`{`);let i=!!r&&/^cluster/i.test(r),a=i?r:t;i&&!this.chart.subgraphs.has(r)&&this.chart.subgraphs.set(r,{id:r,title:``,markdown:!1,parent:t,classes:[]});let o=new Set;this.statements({node:new Map(e.node),edge:new Map(e.edge)},a,o),this.expect(`}`);for(let e of o)n?.add(e);return[...o]}let r=this.peek();if(!r||r.kind!==`id`)throw this.error(`A node name expected here`);for(this.i++;this.is(`:`)&&this.peek(1)?.kind===`id`;)this.i+=2;return this.node(r.value,e.node,t),n?.add(r.value),[r.value]}attrs(){let e=new Map;for(;this.is(`[`);){for(this.i++;!this.is(`]`);){let t=this.peek();if(!t||t.kind!==`id`)throw this.error(`An attribute name expected here`);this.i++;let n=`true`;if(this.is(`=`)){this.i++;let e=this.peek();if(!e||e.kind!==`id`)throw this.error(`An attribute value expected here`);n=e.value,this.i++}e.set(t.value.toLowerCase(),n),(this.is(`,`)||this.is(`;`))&&this.i++}this.i++}return e}node(e,t,n){if(!this.chart.nodes.has(e)){if(this.chart.nodes.size>=qi)throw we(`nodes`,this.chart.nodes.size+1,qi);this.chart.nodes.set(e,{id:e,text:e,markdown:!1,shape:`usecase`,classes:[],subgraph:n}),this.nodeAttrs(e,t)}}nodeAttrs(e,t){let n=this.chart.nodes.get(e),r=t.get(`label`);r!==void 0&&r!==`\\N`&&(n.text=Yi(r));let i=t.get(`shape`)?.toLowerCase();i&&(n.shape=Gi[i]??`rect`);let a=(t.get(`style`)??``).toLowerCase().split(`,`).map(e=>e.trim());a.includes(`rounded`)&&n.shape===`rect`&&(n.shape=`round`),a.includes(`invis`)&&(n.shape=`text`);let o=[],s=t.get(`color`),c=t.get(`fillcolor`)??(a.includes(`filled`)?s:void 0),l=(e,t)=>{let n=t===void 0?void 0:Xi(t);n&&o.push(`${e}:${n}`)};l(`fill`,c),l(`stroke`,s),l(`color`,t.get(`fontcolor`)),a.includes(`dashed`)&&o.push(`stroke-dasharray:5 4`),a.includes(`dotted`)&&o.push(`stroke-dasharray:2 3`),o.length>0&&(n.style=W(o.join(`,`),0,0))}edge(e,t,n){let r=(n.get(`style`)??``).toLowerCase().split(`,`).map(e=>e.trim()),i=`normal`;r.includes(`invis`)?i=`invisible`:r.includes(`dashed`)||r.includes(`dotted`)?i=`dotted`:(r.includes(`bold`)||Number(n.get(`penwidth`)??1)>=2)&&(i=`thick`);let a=(n.get(`dir`)??(this.directed?`forward`:`none`)).toLowerCase(),o=Ki[(n.get(`arrowhead`)??`normal`).toLowerCase()]??`arrow`,s=Ki[(n.get(`arrowtail`)??`normal`).toLowerCase()]??`arrow`,c={from:e,to:t,stroke:i,start:a===`back`||a===`both`?s:`none`,end:a===`forward`||a===`both`?o:`none`,length:Math.max(1,Math.round(Number(n.get(`minlen`)??1))||1),text:n.get(`label`)??n.get(`xlabel`),markdown:!1},l=n.get(`color`)?Xi(n.get(`color`).split(`:`)[0]):void 0;l&&(c.style=W(`stroke:${l}`,0,0)),this.chart.edges.push(c)}graphAttr(e,t,n){if(n){let r=this.chart.subgraphs.get(n);if(!r)return;let i=Xi(t);e===`label`?r.title=Yi(t):(e===`bgcolor`||e===`fillcolor`)&&i?r.style=W(`fill:${i}`,0,0):(e===`color`||e===`pencolor`)&&i&&(r.style={...r.style??{shape:{},text:{}},shape:{...r.style?.shape??{},stroke:i}})}else if(e===`rankdir`){let e=t.toUpperCase();[`TB`,`LR`,`BT`,`RL`].includes(e)&&(this.chart.direction=e)}else e===`label`&&(this.chart.title=Yi(t))}};function Yi(e){let t=e;return/[{|}]/.test(t)&&/\|/.test(t)&&(t=t.replace(/[{}]/g,``).split(`|`).map(e=>e.replace(/<[^>]*>/g,``).trim()).join(`<br>`)),t.replace(/\\[nlr]/g,`<br>`).replace(/(<br>)+$/,``)}function Xi(e){let t=e.trim();return/^#[0-9a-fA-F]{3,8}$/.test(t)||/^[a-zA-Z]+$/.test(t)?t:void 0}function Zi(e){return new Ji(Wi(e)).run()}function Qi(e){return/^workspace\b/i.test(Ni(e)[0]?.text??``)}function $i(e){return[...e.matchAll(/"((?:[^"\\]|\\.)*)"/g)].map(e=>e[1].replace(/\\(.)/g,`$1`))}var ea={person:`person`,softwaresystem:`system`,container:`container`,component:`component`};function ta(e){let t=Ni(e),n=new Map,r=[],i=new Map,a=null,o=0,s=[],c=()=>[...s].reverse().find(e=>e.element)?.element,l=()=>[...s].reverse().find(e=>e.group!==void 0)?.group;for(let e of t){let t=e.text,u=t.endsWith(`{`),d=u?t.slice(0,-1).trim():t,f=s[s.length-1]?.what,p;if(t===`}`){if(!s.pop())throw new L(`"}" without a "{"`,e.line,e.column)}else{if(/^!(docs|adrs|include|constant|var|const|script|plugin|extend|ref)\b/i.test(t))throw new L(`"${t.split(/\s/)[0]}" is not supported`,e.line,e.column,`Write the model out in full.`);if(!/^!(identifiers|impliedrelationships|elements)\b/i.test(t)){if(f===`styles`||f===`style`||f===`skip`){if((p=/^element\s+"([^"]+)"$/i.exec(d))&&u)s.push({what:`style`,tag:p[1]});else if(u)s.push({what:`skip`});else if(f===`style`&&(p=/^shape\s+(\w+)$/i.exec(t))){let e=p[1].toLowerCase(),t=s[s.length-1].tag;e===`cylinder`?i.set(t,`db`):e===`pipe`?i.set(t,`queue`):/^person|robot$/.test(e)&&i.set(t,`person`)}}else if(f===`views`&&u){p=/^(systemLandscape|systemContext|container|component|deployment|dynamic|filtered|custom|image)\b\s*(\S+)?/i.exec(d);let t=p?.[1]?.toLowerCase();if(/^styles$/i.test(d)){s.push({what:`styles`});continue}!a&&t&&[`systemlandscape`,`systemcontext`,`container`,`component`].includes(t)?(a={kind:t,scope:p[2]&&!p[2].startsWith(`"`)?p[2]:void 0,s:e},s.push({what:`view`})):s.push({what:`skip`})}else if(f!==`views`&&f!==`workspace`||u){if(f===`view`)(p=/^autolayout(?:\s+(lr|rl|tb|bt))?(?:\s|$)/i.exec(t))&&a&&(a.direction=/lr|rl/i.test(p[1]??``)?`LR`:`TB`),u&&s.push({what:`skip`});else if(/^workspace\b/i.test(d)&&u)s.push({what:`workspace`});else if(/^model$/i.test(d)&&u)s.push({what:`model`});else if(/^views$/i.test(d)&&u)s.push({what:`views`});else if(/^(configuration|properties|perspectives|branding|terminology|users|deploymentEnvironment|deploymentNode|infrastructureNode|softwareSystemInstance|containerInstance|healthCheck|animation)\b/i.test(d))u&&s.push({what:`skip`});else if(f===`skip`)u&&s.push({what:`skip`});else if((p=/^group\s+"([^"]+)"$/i.exec(d))&&u)s.push({what:`group`,group:p[1]});else if(p=/^(?:([\w.-]+)\s*=\s*)?(person|softwareSystem|container|component)\b(.*)$/i.exec(d)){let t=p[2].toLowerCase(),r=$i(p[3]);if(r.length===0)throw new L(`A ${p[2]} needs a name`,e.line,e.column,`${p[2]} "Name"`);let i=p[1]??`${t}${++o}`,a={id:i,kind:t,name:r[0],description:r[1]||void 0,tags:[],parent:c(),group:l()};t===`container`||t===`component`?(a.technology=r[2]||void 0,r[3]&&a.tags.push(...r[3].split(`,`).map(e=>e.trim()))):r[2]&&a.tags.push(...r[2].split(`,`).map(e=>e.trim())),n.set(i,a),u&&s.push({what:`element`,element:i})}else if(p=/^(?:([\w.-]+)\s+)?->\s*([\w.-]+)(.*)$/.exec(d)){let t=p[1]??c();if(!t)throw new L(`A relationship without a source`,e.line,e.column,`a -> b "Uses"`);let n=$i(p[3]);r.push({from:t,to:p[2],description:n[0]||void 0,technology:n[1]||void 0,s:e}),u&&s.push({what:`skip`})}else if(f===`element`){let r=n.get(c());if(p=/^tags\s+(.*)$/i.exec(t))r.tags.push(...$i(p[1]).flatMap(e=>e.split(`,`).map(e=>e.trim())));else if(p=/^description\s+"(.*)"$/i.exec(t))r.description=p[1];else if(p=/^technology\s+"(.*)"$/i.exec(t))r.technology=p[1];else if(/^location\s+external$/i.test(t))r.tags.push(`External`);else if(u)s.push({what:`skip`});else if(!/^(url|properties|perspectives|location)\b/i.test(t))throw new L(`"${t}" is not an element statement`,e.line,e.column)}else if(u)s.push({what:`skip`});else throw new L(`"${t}" is not a Structurizr statement`,e.line,e.column)}}}}if(s.length>0)throw new L(`A "{" is never closed`,0,0,`Close it with "}".`);for(let e of r)for(let t of[e.from,e.to])if(!n.has(t))throw new L(`"${t}" is not an element`,e.s.line,e.s.column);if(n.size===0)throw new L(`The model has no elements`,0,0,`person "User"`);return na(n,r,i,a)}function na(e,t,n,r){let i={systemlandscape:`C4Context`,systemcontext:`C4Context`,container:`C4Container`,component:`C4Component`},a=r?.kind??`systemlandscape`,o=r?.scope?e.get(r.scope):void 0;if(r?.scope&&!o)throw new L(`"${r.scope}" is not an element`,r.s.line,r.s.column);let s=t=>{let n=[],r=e.get(t)?.parent;for(;r;)n.push(r),r=e.get(r)?.parent;return n},c=e=>e.kind===`person`||e.kind===`softwaresystem`?(a!==`container`||e.id!==o?.id)&&(a!==`component`||e.id!==o?.parent):e.kind===`container`?a===`container`&&e.parent===o?.id||a===`component`&&e.parent===o?.parent&&e.id!==o?.id:a===`component`&&e.parent===o?.id,l=t=>[t,...s(t)].find(t=>c(e.get(t))),u={type:`c4`,kind:i[a],direction:r?.direction??`TB`,elements:new Map,boundaries:new Map,children:new Map([[``,[]]]),relations:[],shapeInRow:4,boundaryInRow:2,accessibility:{}},d=(e,t)=>{u.children.has(e)||u.children.set(e,[]),u.children.get(e).push(t)},f=``;if(o&&a===`container`){let e={id:o.id,kind:`system`,label:o.name,description:o.description};u.boundaries.set(e.id,e),d(``,e.id),f=e.id}else if(o&&a===`component`){let t=o.parent?e.get(o.parent):void 0,n=``;t&&(u.boundaries.set(t.id,{id:t.id,kind:`system`,label:t.name,description:t.description}),d(``,t.id),n=t.id),u.boundaries.set(o.id,{id:o.id,kind:`container`,label:o.name,description:o.description,parent:n||void 0,type:o.technology?`Container: ${o.technology}`:void 0}),d(n,o.id),f=o.id}for(let t of e.values()){if(!c(t))continue;let e=t.tags.some(e=>e.toLowerCase()===`external`),r=t.tags.map(e=>n.get(e)).find(Boolean),i=t.kind===`person`?`person`:r??(t.tags.some(e=>/^database$/i.test(e))?`db`:t.tags.some(e=>/^queue$/i.test(e))?`queue`:`box`),s=t.kind===`component`&&a===`component`||t.kind===`container`&&a===`container`?f:t.kind===`container`&&a===`component`?o?.parent??``:``,l={id:t.id,level:ea[t.kind],shape:i,external:e,label:t.name,techn:t.technology,description:t.description,parent:s||void 0};u.elements.set(t.id,l),d(s,t.id)}let p=new Set;for(let e of t){let t=l(e.from),n=l(e.to);if(!t||!n||t===n)continue;let i=`${t}→${n}→${e.description??``}`;p.has(i)||(p.add(i),u.relations.push({from:t,to:n,label:e.description??``,techn:e.technology,arrows:`end`,hidden:!1,line:e.s.line,column:e.s.column,...r?.direction?{direction:r.direction===`LR`?`right`:`down`}:{}}))}return u}function ra(e,t,n=!1){return`${e}-m-${t}${n?`-start`:``}`}function ia(e,t){let n=[];for(let r of new Set(t))for(let t of[!1,!0])n.push(ua(e,r,t));return n}var aa=`fill:${z(`--dg-edge-label-fill`)}`;function oa(e,t,n,r,i,a){return B(`marker`,{id:e,markerUnits:`userSpaceOnUse`,orient:`auto`,viewBox:`0 0 ${n} ${r}`,refX:t?n-i:i,refY:r/2,markerWidth:n,markerHeight:r},[B(`g`,{transform:t?`translate(${n},0) scale(-1,1)`:void 0},a)])}function sa(e,t,n,r){return B(`path`,{class:`dg-marker`,d:`M${e},${r-n} L${e-t},${r} L${e},${r+n}`,style:`fill:none`,"stroke-width":1.5})}function ca(e,t,n){return B(`path`,{class:`dg-marker`,d:`M${e},${t-n} L${e},${t+n}`,style:`fill:none`,"stroke-width":1.5})}function la(e,t,n){return B(`circle`,{class:`dg-marker`,cx:e,cy:t,r:n,style:aa,"stroke-width":1.5})}function ua(e,t,n){let r=ra(e,t,n),i={id:r,markerUnits:`userSpaceOnUse`,orient:`auto`},a=n?`translate(10,0) scale(-1,1)`:void 0;switch(t){case`arrow`:return B(`marker`,{...i,viewBox:`0 0 10 10`,refX:n?1:9,refY:5,markerWidth:10,markerHeight:10},[B(`path`,{class:`dg-marker`,d:`M0,0 L10,5 L0,10 z`,transform:a,"stroke-width":1})]);case`open-arrow`:return B(`marker`,{...i,viewBox:`0 0 10 10`,refX:n?1:9,refY:5,markerWidth:10,markerHeight:10},[B(`path`,{class:`dg-marker dg-marker-open`,d:`M1,1 L9,5 L1,9`,transform:a,style:`fill:none`,"stroke-width":1.5})]);case`half-arrow`:return B(`marker`,{...i,viewBox:`0 0 10 10`,refX:n?1:9,refY:5,markerWidth:10,markerHeight:10},[B(`path`,{class:`dg-marker`,d:`M0,0 L10,5 L0,5 z`,transform:a,"stroke-width":1})]);case`circle`:return B(`marker`,{...i,viewBox:`0 0 10 10`,refX:n?1:9,refY:5,markerWidth:9,markerHeight:9},[B(`circle`,{class:`dg-marker`,cx:5,cy:5,r:4,"stroke-width":1})]);case`cross`:return B(`marker`,{...i,viewBox:`0 0 10 10`,refX:5,refY:5,markerWidth:11,markerHeight:11},[B(`path`,{class:`dg-marker`,d:`M1,1 L9,9 M1,9 L9,1`,"stroke-width":2,style:`fill:none`})]);case`er-one`:return oa(r,n,32,20,31,[ca(23,10,7),ca(17,10,7)]);case`er-zero-one`:return oa(r,n,32,20,31,[ca(23,10,7),la(12,10,5)]);case`er-one-many`:return oa(r,n,32,20,31,[sa(31,14,8,10),ca(13,10,7)]);case`er-zero-many`:return oa(r,n,32,20,31,[sa(31,14,8,10),la(10,10,5)]);case`triangle`:return oa(r,n,20,20,19,[B(`path`,{class:`dg-marker`,d:`M19,10 L3,2 L3,18 z`,style:aa,"stroke-width":1.5})]);case`diamond`:case`diamond-open`:return oa(r,n,22,16,21,[B(`path`,{class:`dg-marker`,d:`M21,8 L12,2 L3,8 L12,14 z`,style:t===`diamond-open`?aa:void 0,"stroke-width":1.5})])}}function da(e){return/^\s*wardley(-beta)?\s*$/m.test(e.split(`
34
+ `).find(e=>e.trim()!==``)??``)||/^\s*(component|anchor)\s+.+\[\s*-?[\d.]+\s*,\s*-?[\d.]+\s*\]/m.test(e)}var fa=String.raw`\[\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\]`,pa=500;function ma(e,t,n){if(!(e>=0&&e<=1))throw new L(`${e} is not between 0 and 1`,t,n);return e}function ha(e){let t=q(e),n={type:`wardley`,stages:[`Genesis`,`Custom-Built`,`Product (+rental)`,`Commodity (+utility)`],components:new Map,links:[],notes:[],annotations:[],accessibility:{}},r=[],i=[];for(let e=0;e<t.length;e++){let a=t[e];if(e===0&&/^wardley(-beta)?$/.test(a.text))continue;let o=J(t,e,n.accessibility);if(o>0){e+=o-1;continue}let s;if(s=/^title\s+(.*)$/.exec(a.text))n.title=s[1].trim();else if(s=RegExp(`^(component|anchor|market|ecosystem)\\s+(.+?)\\s*${fa}\\s*(.*)$`).exec(a.text)){let[,e,t,r,i,o]=s,c={name:t,visibility:ma(Number(r),a.line,a.column),evolution:ma(Number(i),a.line,a.column),kind:e,inertia:!1},l=RegExp(`label\\s*\\[\\s*(-?[\\d.]+)\\s*,\\s*(-?[\\d.]+)\\s*\\]`).exec(o);l&&(c.label=[Number(l[1]),Number(l[2])]);for(let e of o.matchAll(/\((\w+)\)/g)){let t=e[1].toLowerCase();t===`inertia`?c.inertia=!0:t===`build`||t===`buy`||t===`outsource`?c.method=t:(t===`market`||t===`ecosystem`)&&(c.kind=t)}if(n.components.has(c.name))throw new L(`"${c.name}" is declared twice`,a.line,a.column);if(n.components.set(c.name,c),n.components.size>pa)throw we(`components`,n.components.size,pa)}else if(s=/^evolve\s+(.+?)\s+(-?[\d.]+)(?:\s+label\s*\[[^\]]*\])?\s*(.*)$/.exec(a.text))r.push({name:s[1].trim(),to:ma(Number(s[2]),a.line,a.column),label:s[3]?.trim()||void 0,line:a.line,column:a.column});else if(s=RegExp(`^pipeline\\s+(.+?)\\s*${fa}$`).exec(a.text))i.push({name:s[1].trim(),range:[ma(Number(s[2]),a.line,a.column),ma(Number(s[3]),a.line,a.column)],line:a.line,column:a.column});else if(s=RegExp(`^note\\s+(.+?)\\s*${fa}$`).exec(a.text))n.notes.push({text:s[1].trim(),visibility:ma(Number(s[2]),a.line,a.column),evolution:ma(Number(s[3]),a.line,a.column)});else if(s=/^annotation\s+(\d+)\s*(\[\s*\[.*\]\s*\]|\[[^\]]*\])\s*(.*)$/.exec(a.text)){let e=[...s[2].matchAll(/\[\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\]/g)].map(e=>[ma(Number(e[1]),a.line,a.column),ma(Number(e[2]),a.line,a.column)]);n.annotations.push({n:Number(s[1]),points:e,text:s[3].trim()})}else if(s=RegExp(`^annotations\\s*${fa}$`).exec(a.text))n.annotationsAt=[Number(s[1]),Number(s[2])];else if(s=/^evolution\s+(.+)$/.exec(a.text)){let e=s[1].split(`->`).map(e=>e.trim());if(e.length!==4)throw new L(`Evolution has four stages`,a.line,a.column,`evolution Genesis->Custom->Product->Commodity`);n.stages=e}else if(!/^(style|size|url|accelerator|deaccelerator|submap)\b/.test(a.text)){if(s=/^(.+?)\s*(\+<>|\+>|\+<|->)\s*(.+?)(?:\s*;\s*(.*))?$/.exec(a.text))n.links.push({from:s[1].trim(),to:s[3].trim(),flow:s[2]!==`->`,label:s[4]?.trim()||void 0});else throw new L(`"${a.text}" is not a Wardley map statement`,a.line,a.column,`component Name [0.5, 0.5], A->B`)}}for(let e of r){let t=n.components.get(e.name);if(!t)throw new L(`"${e.name}" is not a component`,e.line,e.column);t.evolve={to:e.to,label:e.label}}for(let e of i){let t=n.components.get(e.name);if(!t)throw new L(`"${e.name}" is not a component`,e.line,e.column);t.pipeline=e.range}for(let e of n.links)for(let t of[e.from,e.to])if(!n.components.has(t))throw new L(`"${t}" is not a component`);if(n.components.size===0)throw new L(`The map has no components`,0,0,`component Name [0.5, 0.5]`);return n}var ga=760,_a=500,va=30,ya=40,ba=786;function xa(e,t,n,r){let i={...R,size:12},a=e.title?X(Y(e.title),{...R,size:18,weight:`bold`},t):null,o=a?a.height+14:0,s=e=>va+e*ga,c=e=>o+(1-e)*_a,l=[];a&&l.push(Z(a,410,a.height/2,{className:`dg-title`})),l.push(B(`rect`,{class:`dg-wardley-frame`,x:va,y:o,width:ga,height:_a}));let u=[0,.174,.4,.7,1];for(let e of u.slice(1,-1))l.push(B(`line`,{class:`dg-wardley-stage`,x1:s(e),y1:o,x2:s(e),y2:o+_a}));e.stages.forEach((e,n)=>{let r=X(Y(e),i,t);l.push(Z(r,s((u[n]+u[n+1])/2),o+_a+14,{className:`dg-wardley-axis`}))}),l.push(Z(X(Y(`Evolution`),{...i,weight:`bold`},t),s(1)-34,o+_a+32,{className:`dg-wardley-axis`}));let d=(e,n)=>B(`g`,{transform:`translate(18,${n}) rotate(-90)`},[Z(X(Y(e),i,t),0,0,{className:`dg-wardley-axis`})]);l.push(d(`Visible`,o+40),d(`Invisible`,o+_a-44),d(`Value chain`,o+_a/2));for(let t of e.components.values())t.pipeline&&l.push(B(`rect`,{class:`dg-wardley-pipeline`,x:s(t.pipeline[0]),y:c(t.visibility)-9,width:(t.pipeline[1]-t.pipeline[0])*ga,height:18,rx:2}));let f=[];for(let n of e.links){let r=e.components.get(n.from),a=e.components.get(n.to);if(f.push(B(`line`,{class:n.flow?`dg-wardley-link dg-wardley-flow`:`dg-wardley-link`,x1:s(r.evolution),y1:c(r.visibility),x2:s(a.evolution),y2:c(a.visibility)})),n.label){let e=X(Y(n.label),i,t);f.push(Z(e,(s(r.evolution)+s(a.evolution))/2,(c(r.visibility)+c(a.visibility))/2-8,{className:`dg-wardley-link-text`}))}}l.push(B(`g`,{class:`dg-wardley-links`},f));let p=[...e.components.values()].some(e=>e.evolve);for(let r of e.components.values()){if(!r.evolve)continue;l.push(B(`line`,{class:`dg-wardley-evolve`,x1:s(r.evolution)+7,y1:c(r.visibility),x2:s(r.evolve.to)-8,y2:c(r.visibility),"marker-end":`url(#${ra(n,`arrow`)})`})),l.push(B(`circle`,{class:`dg-wardley-ghost`,cx:s(r.evolve.to),cy:c(r.visibility),r:6}));let e=X(Y(r.evolve.label??r.name),i,t),a=s(r.evolve.to),o=a+10+e.width>ba;l.push(Z(e,o?a-10:a+10,c(r.visibility)-10,{anchor:o?`end`:`start`,className:`dg-wardley-ghost-text`}))}for(let n of e.components.values()){let e=s(n.evolution),r=c(n.visibility),a=[];if(n.kind===`anchor`){let i=X(Y(n.name),{...R,weight:`bold`},t);a.push(Z(i,e,r,{className:`dg-wardley-anchor`})),l.push(B(`g`,{class:`dg-wardley-component`,"data-id":n.name},a));continue}n.method&&a.push(B(`circle`,{class:`dg-wardley-method dg-wardley-${n.method}`,cx:e,cy:r,r:13})),n.inertia&&a.push(B(`rect`,{class:`dg-wardley-inertia`,x:e+11,y:r-10,width:5,height:20})),n.kind===`market`||n.kind===`ecosystem`?(a.push(B(`circle`,{class:`dg-wardley-dot`,cx:e,cy:r,r:9})),a.push(B(`circle`,{class:`dg-wardley-dot`,cx:e,cy:r,r:n.kind===`market`?3:5}))):a.push(B(`circle`,{class:`dg-wardley-dot`,cx:e,cy:r,r:6}));let[o,u]=n.label??(n.inertia?[24,-8]:[10,-8]),d=X(an(Y(n.name),160,i,t),i,t);!n.label&&e+o+d.width>ba?a.push(Z(d,e-o,r+u,{anchor:`end`,className:`dg-wardley-text`})):a.push(Z(d,e+o,r+u,{anchor:`start`,className:`dg-wardley-text`})),l.push(B(`g`,{class:`dg-wardley-component`,"data-id":n.name},a))}for(let n of e.notes){let e=X(an(Y(n.text),220,i,t),{...i,weight:`bold`},t);l.push(Z(e,Math.min(s(n.evolution),ba-e.width),c(n.visibility),{anchor:`start`,className:`dg-wardley-note`}))}for(let n of e.annotations)for(let[e,r]of n.points)l.push(B(`circle`,{class:`dg-wardley-annotation`,cx:s(r),cy:c(e),r:9})),l.push(Z(X(Y(String(n.n)),i,t),s(r),c(e),{className:`dg-wardley-annotation-n`}));if(e.annotations.length>0){let[n,r]=e.annotationsAt??[.98,.02],a=[...e.annotations].sort((e,t)=>e.n-t.n).map(e=>X(Y(`${e.n}. ${e.text}`),i,t)),o=Math.max(...a.map(e=>e.width))+16,u=a.reduce((e,t)=>e+t.height+4,8);l.push(B(`rect`,{class:`dg-wardley-annotations`,x:s(r),y:c(n),width:o,height:u,rx:3}));let d=c(n)+6;for(let e of a)l.push(Z(e,s(r)+8,d+e.height/2,{anchor:`start`,className:`dg-wardley-text`})),d+=e.height+4}let m=`#${n}`,h=[`${m} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`,`${m} .dg-wardley-frame{fill:none;stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${m} .dg-wardley-stage{stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px;stroke-dasharray:4 4}`,`${m} .dg-wardley-axis{fill:${z(`--dg-text-muted`)};font-size:12px}`,`${m} .dg-wardley-link{stroke:${z(`--dg-line`)};stroke-width:1.2px}`,`${m} .dg-wardley-flow{stroke-dasharray:6 3;stroke-width:2px}`,`${m} .dg-wardley-link-text{fill:${z(`--dg-text-muted`)};font-size:12px}`,`${m} .dg-wardley-dot{fill:${z(`--dg-row-fill`)};stroke:${z(`--dg-text`)};stroke-width:1.5px}`,`${m} .dg-wardley-text{fill:${z(`--dg-text`)};font-size:12px}`,`${m} .dg-wardley-anchor{fill:${z(`--dg-text`)};font-weight:bold}`,`${m} .dg-wardley-inertia{fill:${z(`--dg-text`)}}`,`${m} .dg-wardley-method{stroke:none}`,`${m} .dg-wardley-build{fill:rgba(0,0,0,0.12)}`,`${m} .dg-wardley-buy{fill:rgba(99,102,241,0.25)}`,`${m} .dg-wardley-outsource{fill:rgba(234,88,12,0.25)}`,`${m} .dg-wardley-evolve{stroke:${z(`--dg-task-crit-stroke`)};stroke-width:1.5px;stroke-dasharray:5 3}`,`${m} .dg-wardley-ghost{fill:${z(`--dg-row-fill`)};stroke:${z(`--dg-task-crit-stroke`)};stroke-width:1.5px}`,`${m} .dg-wardley-ghost-text{fill:${z(`--dg-task-crit-stroke`)};font-size:12px}`,`${m} .dg-wardley-pipeline{fill:none;stroke:${z(`--dg-text`)};stroke-width:1px}`,`${m} .dg-wardley-note{fill:${z(`--dg-text`)};font-size:12px;font-weight:bold}`,`${m} .dg-wardley-annotation{fill:${z(`--dg-row-fill`)};stroke:${z(`--dg-line`)};stroke-width:1px}`,`${m} .dg-wardley-annotation-n{fill:${z(`--dg-text`)};font-size:12px}`,`${m} .dg-wardley-annotations{fill:${z(`--dg-row-fill`)};stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`].join(``);return U({id:n,type:`wardley`,width:794,height:o+_a+ya,title:r??e.accessibility.title??e.title??`Wardley map`,description:e.accessibility.description,defs:p?ia(n,[`arrow`]):[],body:l,css:h})}function Sa(e){let t=q(e),n=t[0];if(!n||!/^pie\b/.test(n.text))throw new L(`A pie chart starts with "pie"`,n?.line??1,1);let r={type:`pie`,showData:!1,slices:[],accessibility:{}},i=n.text.slice(3).trim();if(/^showData\b/.test(i)&&(r.showData=!0,i=i.slice(8).trim()),/^title\b/.test(i))r.title=i.slice(5).trim();else if(i!==``)throw new L(`Unexpected "${i}" after "pie"`,n.line,n.column+4);for(let e=1;e<t.length;e++){let n=t[e],i=J(t,e,r.accessibility);if(i>0){e+=i-1;continue}if(/^title\b/.test(n.text)){r.title=n.text.slice(5).trim();continue}if(/^showData$/.test(n.text)){r.showData=!0;continue}let a=/^("(?:[^"]*)"|'(?:[^']*)')\s*:\s*(-?[0-9]+(?:\.[0-9]+)?)\s*$/.exec(n.text);if(!a)throw new L(`"${n.text}" is not a slice`,n.line,n.column,`Write "Label" : 42`);let o=Number(a[2]);if(o<0)throw new L(`A slice cannot be negative`,n.line,n.column);r.slices.push({label:dt(a[1].replace(/^'|'$/g,`"`)),value:o})}if(r.slices.length===0)throw new L(`The pie chart has no slices`,0,0,`Add lines like "Label" : 42`);return r}var Ca=130,wa=14;function Ta(e){return String(Number.isInteger(e)?e:Math.round(e*100)/100)}function Ea(e,t,n,r){let i=e.slices.reduce((e,t)=>e+t.value,0);if(i<=0)throw new L(`All slices are zero`,0,0);let a={...R,size:18,weight:`bold`},o=e.title?X(en(e.title),a,t):null,s=o?o.height+16:0,c=Ca,l=s+Ca,u=[],d=[],f=[],p=-Math.PI/2,m=e.slices.filter(e=>e.value>0);e.slices.forEach((e,n)=>{if(e.value<=0)return;let r=e.value/i,a=r*Math.PI*2,o=Oe(n);if(m.length===1)d.push(B(`circle`,{class:`dg-pie-slice`,cx:c,cy:l,r:Ca,style:`fill:${o}`}));else{let e=p,t=p+a,n=new H().moveTo(c,l).lineTo(c+Ca*Math.cos(e),l+Ca*Math.sin(e)).arcTo(Ca,Ca,0,a>Math.PI,!0,c+Ca*Math.cos(t),l+Ca*Math.sin(t)).close();d.push(B(`path`,{class:`dg-pie-slice`,d:n.toString(),style:`fill:${o}`}))}if(r>=.03){let e=p+a/2,n=m.length===1?0:Ca*.68,i=`${Math.round(r*1e3)/10}%`;f.push(Z(X(en(i),R,t),c+n*Math.cos(e),l+n*Math.sin(e),{className:`dg-pie-percent`}))}p+=a});let h=e.slices.length*22,g=l-h/2,_=0,v=e.slices.map((n,r)=>{let i=X(Y(e.showData?`${n.label} [${Ta(n.value)}]`:n.label),R,t);_=Math.max(_,22+i.width);let a=g+r*22+11;return B(`g`,{class:`dg-pie-legend-item`},[B(`rect`,{x:288,y:a-wa/2,width:wa,height:wa,rx:3,style:`fill:${Oe(r)}`}),Z(i,310,a,{anchor:`start`,className:`dg-pie-legend`})])}),y=288+_,b=Math.max(l+Ca,g+h);o&&e.title&&u.push(Z(o,y/2,o.height/2,{className:`dg-title`})),u.push(B(`g`,{class:`dg-pie-slices`},d),B(`g`,{},f),B(`g`,{},v));let x=[`#${n} .dg-pie-slice{stroke:${z(`--dg-pie-stroke`)};stroke-width:2px}`,`#${n} .dg-pie-percent{fill:${z(`--dg-pie-text`)};font-weight:600}`,`#${n} .dg-pie-legend{fill:${z(`--dg-text`)}}`,`#${n} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`].join(``);return U({id:n,type:`pie`,width:y,height:b,title:r??e.accessibility.title??e.title??`Pie chart`,description:e.accessibility.description,body:u,css:x})}var Da=28,Oa=20,ka=24,Aa=160,ja=800,Ma={...R,size:13},Na={...R,size:12},Pa={...R,weight:`bold`},Fa={...R,size:18,weight:`bold`},Ia=1e3,La=1.12;function Ra(e){switch(e.unit){case`ms`:return`%H:%M:%S.%L`;case`s`:return`%H:%M:%S`;case`m`:case`h`:return`%H:%M`;case`M`:return e.step>=12?`%Y`:`%b %Y`;default:return`%Y-%m-%d`}}function za(e){return{lines:[Y(e).lines.flatMap((e,t)=>t===0?e:[{text:` `},...e])]}}function Ba(e){let t=[`dg-task`];return e.tags.milestone&&t.push(`dg-milestone`),e.tags.done&&t.push(`dg-task-done`),e.tags.active&&t.push(`dg-task-active`),e.tags.crit&&t.push(`dg-task-crit`),t.join(` `)}function Va(e,t,n,r,i){let a=e.tasks;if(a.length===0)throw new L(`The gantt chart has no tasks`,0,0,`Add lines like: Task : 2024-01-01, 3d`);let o=Math.min(...a.map(e=>e.start)),s=Math.max(...a.map(e=>e.end));s<=o&&(o-=ln/2,s+=ln/2);let c=e.sections.filter(e=>e!==``),l=new Map(c.map(e=>[e,X(an(Y(e),Aa,Pa,t),Pa,t)])),u=c.length>0?Math.min(Aa,Math.max(...[...l.values()].map(e=>e.width)))+24:0,d=u,f=Math.min(ja,Math.max(480,ja-u)),p=d+f,m=e=>d+(e-o)/(s-o)*f,h=[],g=e.axisFormat,_=t=>e.axisFormatSet?e.axisFormat:Ra(t),v=(e,n)=>Math.max(0,...e.map(e=>t(jn(e,n),Na).width));if(e.tickInterval){if(h=In(o,s,e.tickInterval,1001),h.length>Ia)throw new L(`tickInterval puts more than 1000 ticks on the axis`,0,0,`Choose a longer interval.`);g=_(e.tickInterval)}else for(let e of Ln){if((s-o)/Fn(e)>80)continue;let t=In(o,s,e);if(h=t,g=_(e),t.length*(v(t,g)+16)<=f)break}let y=e.title?X(en(e.title),Fa,t):null,b=(y?y.height+14:0)+(e.topAxis?ka:0)+4,x=b+a.length*Da,S=x+ka,C=[],w=[],T=0,E=p,D=0;a.forEach((t,n)=>{let r=a[n+1];if(r&&r.section===t.section)return;let i=e.sections.indexOf(t.section),o=b+D*Da,s=(n-D+1)*Da;C.push(B(`rect`,{class:`dg-gantt-section dg-gantt-section-${i%2}`,x:0,y:o,width:p,height:s}));let c=l.get(t.section);c&&w.push(Z(c,12,o+s/2,{anchor:`start`,className:`dg-gantt-section-label`})),D=n+1});for(let t of e.excludedRanges){let e=Math.max(d,m(t.start)),n=Math.min(p,m(t.end));n>e&&C.push(B(`rect`,{class:`dg-gantt-exclude`,x:e,y:b,width:n-e,height:x-b}))}let O=e=>h.map(n=>{let r=X(en(jn(n,g)),Na,t),i=m(n);return T=Math.min(T,i-r.width/2),E=Math.max(E,i+r.width/2),Z(r,i,e,{className:`dg-gantt-axis`})});if(C.push(B(`g`,{class:`dg-gantt-grid`},h.map(e=>B(`line`,{x1:m(e),y1:b,x2:m(e),y2:x})))),w.push(B(`g`,{},O(x+ka/2))),e.topAxis&&w.push(B(`g`,{},O(b-ka/2))),a.forEach((e,n)=>{let r=b+n*Da+Da/2,i=X(za(e.name),Ma,t),a=[],o=Ba(e),s,c,l=!1;if(e.tags.milestone){let t=(m(e.start)+m(e.renderEnd))/2,n=Oa/2;a.push(B(`polygon`,{class:o,points:`${V(t)},${V(r-n)} ${V(t+n)},${V(r)} ${V(t)},${V(r+n)} ${V(t-n)},${V(r)}`})),s=t+n+6,c=`start`}else{let t=m(e.start),n=Math.max(2,m(e.renderEnd)-t),u=t+n;a.push(B(`rect`,{class:o,x:t,y:r-Oa/2,width:n,height:Oa,rx:3,ry:3})),i.width*La+12<=n?(l=!0,s=t+n/2,c=`middle`):u+6+i.width*La<=p||t-6-i.width*La<d?(s=u+6,c=`start`):(s=t-6,c=`end`)}l||(c===`start`&&(E=Math.max(E,s+i.width*La)),c===`end`&&(T=Math.min(T,s-i.width*La)));let u=l?`dg-task-text dg-task-text-inside${e.tags.done||e.tags.active?` dg-task-text-dark`:``}`:`dg-task-text`;a.push(Z(i,s,r,{anchor:c,className:u}));let f=B(`g`,{class:`dg-gantt-task`,"data-id":e.id},a);w.push(e.href?B(`a`,{href:e.href},[f]):f)}),i&&e.todayMarker!==`off`){let t=i.getTime();if(t>=o&&t<=s){let n=e.todayMarker===`on`?void 0:G(W(e.todayMarker).shape);w.push(B(`line`,{class:`dg-gantt-today`,x1:m(t),y1:b-4,x2:m(t),y2:x+4,style:n}))}}let k=Math.ceil(-T),A=E-T,j=[];y&&j.push(Z(y,A/2,y.height/2,{className:`dg-title`})),j.push(B(`g`,{transform:k>0?`translate(${k},0)`:void 0},[...C,...w]));let M=`#${n}`,N=[`${M} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`,`${M} .dg-gantt-section-0{fill:${z(`--dg-section-fill-0`)}}`,`${M} .dg-gantt-section-1{fill:${z(`--dg-section-fill-1`)}}`,`${M} .dg-gantt-section-label{fill:${z(`--dg-text`)};font-weight:bold}`,`${M} .dg-gantt-exclude{fill:${z(`--dg-exclude-fill`)}}`,`${M} .dg-gantt-grid line{stroke:${z(`--dg-grid`)};stroke-width:1px}`,`${M} .dg-gantt-axis{fill:${z(`--dg-text-muted`)};font-size:12px}`,`${M} .dg-task{fill:${z(`--dg-task-fill`)};stroke:${z(`--dg-task-stroke`)};stroke-width:1px}`,`${M} .dg-task-active{fill:${z(`--dg-task-active-fill`)}}`,`${M} .dg-task-done{fill:${z(`--dg-task-done-fill`)};stroke:${z(`--dg-task-done-stroke`)}}`,`${M} .dg-task-crit{fill:${z(`--dg-task-crit-fill`)};stroke:${z(`--dg-task-crit-stroke`)}}`,`${M} .dg-task-crit.dg-task-done{fill:${z(`--dg-task-done-fill`)};stroke:${z(`--dg-task-crit-stroke`)};stroke-width:2px}`,`${M} .dg-task-crit.dg-task-active{fill:${z(`--dg-task-active-fill`)};stroke:${z(`--dg-task-crit-stroke`)};stroke-width:2px}`,`${M} .dg-task-text{fill:${z(`--dg-text`)};font-size:13px}`,`${M} .dg-task-text-inside{fill:${z(`--dg-task-text`)}}`,`${M} .dg-task-text-dark{fill:${z(`--dg-task-text-dark`)}}`,`${M} .dg-gantt-today{stroke:${z(`--dg-today`)};stroke-width:2px}`].join(``);return U({id:n,type:`gantt`,width:A,height:S,title:r??e.accessibility.title??e.title??`Gantt chart`,description:e.accessibility.description,body:j,css:N})}var Ha={TB:`TB`,TD:`TB`,BT:`BT`,LR:`LR`,RL:`RL`},Ua=[{open:`(((`,close:`)))`,shape:`doublecircle`},{open:`((`,close:`))`,shape:`circle`},{open:`([`,close:`])`,shape:`stadium`},{open:`[[`,close:`]]`,shape:`subroutine`},{open:`[(`,close:`)]`,shape:`cylinder`},{open:`{{`,close:`}}`,shape:`hexagon`},{open:`[/`,close:[`/]`,`\\]`],shape:e=>e===`/]`?`parallelogram`:`trapezoid`},{open:`[\\`,close:[`\\]`,`/]`],shape:e=>e===`\\]`?`parallelogram-alt`:`trapezoid-alt`},{open:`>`,close:`]`,shape:`asymmetric`},{open:`[`,close:`]`,shape:`rect`},{open:`(`,close:`)`,shape:`round`},{open:`{`,close:`}`,shape:`rhombus`}],Wa=/[\p{L}\p{N}_](?:[\p{L}\p{N}_.$]|-(?=[\p{L}\p{N}_]))*/u;function Ga(e){return e===`>`||e===`<`?`arrow`:e===`x`?`cross`:e===`o`?`circle`:`none`}function Ka(e){let t=e.peek();return t===``||/[\s|&"]/.test(t)||/[[({>]/.test(t)===!1&&!/[\p{L}\p{N}_]/u.test(t)}function qa(e,t){let n=Array.isArray(t)?t:[t];if(e.skipSpaces(),e.peek()===`"`){let t=e.pos,r=e.text.indexOf(`"`,t+1);if(r<0)throw e.error(`The quoted text is not closed`,`Add the closing "`);let i=e.text.slice(t+1,r),a=!1;i.startsWith("`")&&i.endsWith("`")&&i.length>=2&&(i=i.slice(1,-1),a=!0),e.pos=r+1,e.skipSpaces();for(let t of n)if(e.eat(t))return{text:i,markdown:a,close:t};throw e.error(`Expected ${n.join(` or `)} after the text`)}let r=-1,i=``;for(let t of n){let n=e.text.indexOf(t,e.pos);n>=0&&(r<0||n<r)&&(r=n,i=t)}if(r<0)throw e.error(`The shape is not closed: expected ${n.join(` or `)}`);let a=e.text.slice(e.pos,r).trim();return e.pos=r+i.length,{text:a,markdown:!1,close:i}}function Ja(e){let t=e.pos;e.skipSpaces();for(let{re:t,stroke:n}of[{re:/([<xo])?--(?![->.])\s*("[^"]*"|[^-|]+?)\s*(-{2,})([>xo]?)/u,stroke:`normal`},{re:/([<xo])?==(?![=>])\s*("[^"]*"|[^=|]+?)\s*(={2,})([>xo]?)/u,stroke:`thick`},{re:/([<xo])?-\.(?![-.])\s*("[^"]*"|[^.|]+?)\s*(\.+)-([>xo]?)/u,stroke:`dotted`}]){let r=e.pos,i=e.match(t);if(!i)continue;let a=i[3],o=i[4]??``;if(n!==`dotted`&&o===``&&a.length<3||o&&/[xo]/.test(o)&&!Ka(e)){e.pos=r;continue}let s=i[2].trim(),c=!1;s.startsWith(`"`)&&s.endsWith(`"`)&&(s=s.slice(1,-1)),s.startsWith("`")&&s.endsWith("`")&&s.length>=2&&(s=s.slice(1,-1),c=!0);let l=n===`dotted`?a.length:Math.max(1,a.length-(o?1:2));return{stroke:n,start:Ga(i[1]),end:Ga(o),length:l,text:s,markdown:c}}for(let{re:t,stroke:n}of[{re:/~{3,}/,stroke:`invisible`},{re:/([<xo])?-(\.+)-([>xo])?/,stroke:`dotted`},{re:/([<xo])?(={2,})([>xo])?/,stroke:`thick`},{re:/([<xo])?(-{2,})([>xo])?/,stroke:`normal`}]){let r=e.pos,i=e.match(t);if(!i)continue;if(n===`invisible`)return{stroke:n,start:`none`,end:`none`,length:Math.max(1,i[0].length-2),markdown:!1};let a=i[2],o=i[3];if(o&&/[xo]/.test(o)&&!Ka(e)&&(--e.pos,o=void 0),!o&&n!==`dotted`&&a.length<3){e.pos=r;continue}let s=n===`dotted`?a.length:Math.max(1,a.length-(o?1:2)),c={stroke:n,start:Ga(i[1]),end:Ga(o),length:s,markdown:!1},l=e.match(/\s*\|\s*("[^"]*"|[^|]*?)\s*\|/);if(l){let e=l[1].trim();e.startsWith(`"`)&&e.endsWith(`"`)&&(e=e.slice(1,-1)),e.startsWith("`")&&e.endsWith("`")&&e.length>=2&&(e=e.slice(1,-1),c.markdown=!0),c.text=e}return c}return e.pos=t,null}function Ya(e){e.skipSpaces();let t=e.match(Wa);if(!t)return null;let n={id:t[0],classes:[]};if(e.startsWith(`@{`))throw e.error(`The @{ shape: … } node syntax is not supported`,`Use the bracket shapes, e.g. A([text]).`);for(let t of Ua){if(!e.startsWith(t.open))continue;if(t.open===`>`&&e.peek(-1)===`-`)break;e.pos+=t.open.length;let{text:r,markdown:i,close:a}=qa(e,t.close);n.text=r,n.markdown=i,n.shape=typeof t.shape==`function`?t.shape(a):t.shape;break}let r=e.match(/:::([\w-]+)/);return r&&n.classes.push(r[1]),n}function Xa(e){return e.split(`,`).map(e=>e.trim()).filter(Boolean)}function Za(e){let t=q(e,{semicolons:!0}),n=t[0],r=n?/^(flowchart|graph|flowchart-elk)\b\s*(\S*)\s*$/.exec(n.text):null;if(!n||!r)throw new L(`A flowchart starts with "flowchart" or "graph"`,n?.line??1,1);let i=`TB`;if(r[2]){let e=Ha[r[2].toUpperCase()];if(!e)throw new L(`"${r[2]}" is not a direction`,n.line,n.column+r[1].length+1,`Use TB, TD, BT, LR or RL.`);i=e}let a={type:`flowchart`,direction:i,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},o=[],s=[],c=[],l=[],u=[],d=0,f=e=>{let t=a.nodes.get(e.id);t||(t={id:e.id,text:e.id,markdown:!1,shape:`rect`,classes:[]},a.nodes.set(e.id,t)),e.text!==void 0&&(t.text=e.text,t.markdown=e.markdown??!1),e.shape&&(t.shape=e.shape),t.classes.push(...e.classes);let n=o[o.length-1];return n&&t.subgraph===void 0&&!a.subgraphs.has(e.id)&&(t.subgraph=n.id),t};for(let e=1;e<t.length;e++){let n=t[e],r=n.text,i=J(t,e,a.accessibility);if(i>0){e+=i-1;continue}let p=/^subgraph\b\s*(.*)$/.exec(r);if(p){let e=p[1].trim(),t,r,i=!1,s=/^([\p{L}\p{N}_.-]+)\s*\[\s*(.*?)\s*\]$/u.exec(e);if(s?(t=s[1],r=s[2]):e.startsWith(`"`)?(r=e,t=`subgraph${d++}`):e===``?(t=`subgraph${d++}`,r=``):(t=e.replace(/\s+/g,`_`),r=e),r.startsWith(`"`)&&r.endsWith(`"`)&&r.length>=2&&(r=r.slice(1,-1)),r.startsWith("`")&&r.endsWith("`")&&r.length>=2&&(r=r.slice(1,-1),i=!0),a.subgraphs.has(t))throw new L(`Subgraph "${t}" is defined twice`,n.line,n.column);let c={id:t,title:r,markdown:i,parent:o[o.length-1]?.id,classes:[]};a.subgraphs.set(t,c),a.nodes.delete(t),o.push(c);continue}if(r===`end`){if(o.length===0)throw new L(`"end" without a subgraph`,n.line,n.column);o.pop();continue}if(p=/^direction\s+(\w+)$/.exec(r),p){let e=Ha[p[1].toUpperCase()];if(!e)throw new L(`"${p[1]}" is not a direction`,n.line,n.column+10);let t=o[o.length-1];t?t.direction=e:a.direction=e;continue}if(p=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(r),p){let e=W(p[2],n.line,n.column);for(let t of Xa(p[1]))a.classDefs.set(t,e);continue}if(p=/^class\s+(.+?)\s+([\w-]+)$/.exec(r),p){s.push({ids:Xa(p[1]),cls:p[2],s:n});continue}if(p=/^style\s+(\S+)\s+(.+)$/.exec(r),p){c.push({id:p[1],style:W(p[2],n.line,n.column),s:n});continue}if(p=/^linkStyle\s+(default|[\d\s,]+?)\s+(?:interpolate\s+\w+\s*)?(.*)$/.exec(r),p){let e=p[1]==="default"?`default`:Xa(p[1]).map(Number);l.push({which:e,style:W(p[2]??``,n.line,n.column),s:n});continue}if(p=/^click\s+(\S+)\s+(.*)$/.exec(r),p){let e=p[2],t=/^(?:href\s+)?"([^"]*)"(?:\s+"([^"]*)")?(?:\s+(_blank|_self|_parent|_top))?\s*$/.exec(e);t&&u.push({id:p[1],href:t[1],tooltip:t[2],target:t[3],s:n});continue}let m=new ut(n),h=[],g=()=>{let e=[];for(;;){let t=Ya(m);if(!t)throw m.error(e.length===0?`Expected a node`:`Expected a node after "&"`);if(e.push(t),m.skipSpaces(),!m.eat(`&`))break}return e};h.push(g());let _=[];for(;m.skipSpaces(),!m.done;){let e=Ja(m);if(!e)throw m.error(`Unexpected "${m.rest()}"`,`Expected an edge such as --> or the end of the line.`);_.push(e),h.push(g())}let v=h.map(e=>e.map(e=>a.subgraphs.has(e.id)&&!e.shape?e.id:f(e).id));_.forEach((e,t)=>{for(let n of v[t])for(let r of v[t+1])a.edges.push({from:n,to:r,stroke:e.stroke,start:e.start,end:e.end,length:e.length,text:e.text,markdown:e.markdown})})}if(o.length>0)throw new L(`Subgraph "${o[o.length-1].id}" is not closed`,0,0,`Add "end".`);for(let e of s)for(let t of e.ids){let n=a.nodes.get(t)??a.subgraphs.get(t);if(!n)throw new L(`class refers to an unknown node "${t}"`,e.s.line,e.s.column);n.classes.push(e.cls)}for(let e of c){let t=a.nodes.get(e.id)??a.subgraphs.get(e.id);if(!t)throw new L(`style refers to an unknown node "${e.id}"`,e.s.line,e.s.column);t.style=e.style}for(let e of l)if(e.which==="default")for(let t of a.edges)t.style={shape:{...t.style?.shape,...e.style.shape},text:{...t.style?.text,...e.style.text}};else for(let t of e.which){let n=a.edges[t];if(!n)throw new L(`linkStyle refers to edge ${t}, but there are ${a.edges.length}`,e.s.line,e.s.column);n.style=e.style}for(let e of u){let t=a.nodes.get(e.id);if(!t)throw new L(`click refers to an unknown node "${e.id}"`,e.s.line,e.s.column);let n=Ke(e.href);if(n===null)throw new L(`The link "${e.href}" is not allowed`,e.s.line,e.s.column,`Use http(s), mailto or a relative address.`);t.link={href:n,tooltip:e.tooltip,target:e.target}}return a}function Qa(e,t){return Math.hypot(t.x-e.x,t.y-e.y)}function $a(e,t){let n=t.x-e.x,r=t.y-e.y,i=e.width/2,a=e.height/2;if(n===0&&r===0)return{x:e.x,y:e.y+a};let o,s;return Math.abs(r)*i>Math.abs(n)*a?(s=r<0?-a:a,o=s*n/r):(o=n<0?-i:i,s=o*r/n),{x:e.x+o,y:e.y+s}}function eo(e,t,n,r){let i=r.x-e.x,a=r.y-e.y;if(i===0&&a===0)return{x:e.x,y:e.y+n};let o=1/Math.sqrt(i*i/(t*t)+a*a/(n*n));return{x:e.x+i*o,y:e.y+a*o}}function to(e,t,n){let r=null,i=1/0,a=n.x-e.x,o=n.y-e.y;for(let n=0;n<t.length;n++){let s=t[n],c=t[(n+1)%t.length],l=c.x-s.x,u=c.y-s.y,d=a*u-o*l;if(Math.abs(d)<1e-9)continue;let f=((s.x-e.x)*u-(s.y-e.y)*l)/d,p=((s.x-e.x)*o-(s.y-e.y)*a)/d;f>0&&p>=-1e-9&&p<=1+1e-9&&f<i&&(i=f,r={x:e.x+a*f,y:e.y+o*f})}return r??{x:e.x,y:e.y}}function no(e,t=.5){let n=[];for(let r of e){let e=n[n.length-1];(!e||Qa(e,r)>t)&&n.push(r)}return n}function ro(e){let t=no(e),n=new H;if(t.length===0)return``;if(t.length===1)return n.moveTo(t[0].x,t[0].y).toString();let r=0,i=0,a=0,o=0,s=(e,t)=>{n.curveTo((2*r+a)/3,(2*i+o)/3,(r+2*a)/3,(i+2*o)/3,(r+4*a+e)/6,(i+4*o+t)/6)},c=0;for(let e of t)c===0?(c=1,n.moveTo(e.x,e.y)):c===1?c=2:(c===2&&(c=3,n.lineTo((5*r+a)/6,(5*i+o)/6)),s(e.x,e.y)),r=a,a=e.x,i=o,o=e.y;return c===3&&s(a,o),n.lineTo(a,o),n.toString()}var io={actor:40,interface:22,boundary:30,control:30,entity:30};function ao(e){return io[e]!==void 0}function oo(e,t,n){let r=io[e];return r===void 0?{x:t.x,y:t.y+(e===`person`?8:0)}:{x:t.x,y:t.y-t.height/2+r+4+n/2}}function so(e){return e.map(e=>`${co(e.x)},${co(e.y)}`).join(` `)}function co(e){return Math.round(e*100)/100}function lo(e,t){return t.map(t=>({x:e.x+t.x,y:e.y+t.y}))}function uo(e,t,n){let r=t/2,i=n/2;switch(e){case`rhombus`:case`choice`:return[{x:0,y:-i},{x:r,y:0},{x:0,y:i},{x:-r,y:0}];case`hexagon`:{let e=Math.min(n/2,t/4);return[{x:-r+e,y:-i},{x:r-e,y:-i},{x:r,y:0},{x:r-e,y:i},{x:-r+e,y:i},{x:-r,y:0}]}case`parallelogram`:{let e=n/2;return[{x:-r+e,y:-i},{x:r,y:-i},{x:r-e,y:i},{x:-r,y:i}]}case`parallelogram-alt`:{let e=n/2;return[{x:-r,y:-i},{x:r-e,y:-i},{x:r,y:i},{x:-r+e,y:i}]}case`trapezoid`:{let e=n/2;return[{x:-r+e,y:-i},{x:r-e,y:-i},{x:r,y:i},{x:-r,y:i}]}case`trapezoid-alt`:{let e=n/2;return[{x:-r,y:-i},{x:r,y:-i},{x:r-e,y:i},{x:-r+e,y:i}]}case`asymmetric`:{let e=n/2;return[{x:-r,y:-i},{x:r,y:-i},{x:r,y:i},{x:-r,y:i},{x:-r+e,y:0}]}default:return null}}function fo(e,t,n){let r=t+32,i=n+18,a=io[e];if(a!==void 0)return{width:Math.max(t+8,a+16),height:a+4+n};switch(e){case`usecase`:return{width:Math.max(t*1.42+20,80),height:Math.max(n*1.42+14,40)};case`component`:return{width:r+22,height:Math.max(i,40)};case`node`:return{width:r+10,height:i+10};case`cloud`:return{width:r+34,height:i+26};case`folder`:return{width:Math.max(r,60),height:i+10};case`frame`:return{width:r,height:i+18};case`artifact`:case`note`:case`file`:return{width:r+12,height:i};case`queue`:return{width:r+24,height:i};case`storage`:return{width:r+i/2,height:i};case`stack`:return{width:r,height:i+8};case`person`:return{width:Math.max(r,60),height:i+18};case`collections`:return{width:r+6,height:i+6};case`text`:return{width:t+8,height:n+4};case`start`:return{width:14,height:14};case`end`:return{width:18,height:18};case`fork`:return{width:70,height:8};case`choice`:return{width:28,height:28};case`circle`:{let e=Math.max(t,n)+18;return{width:e,height:e}}case`doublecircle`:{let e=Math.max(t,n)+18+10;return{width:e,height:e}}case`rhombus`:{let e=t+n+18;return{width:Math.max(e,40),height:Math.max(e*.75,40)}}case`hexagon`:return{width:r+i/2,height:i};case`parallelogram`:case`parallelogram-alt`:case`trapezoid`:case`trapezoid-alt`:return{width:r+i/2,height:i};case`asymmetric`:return{width:r+i/4,height:i};case`stadium`:return{width:r+i/2,height:i};case`subroutine`:return{width:r+16,height:i};case`cylinder`:return{width:r,height:i+16};default:return{width:r,height:i}}}function po(e,t,n={}){let r=n.className??`dg-shape`,i=n.style,{x:a,y:o,width:s,height:c}=t,l=a-s/2,u=o-c/2,d=uo(e,s,c);if(d)return B(`polygon`,{class:r,style:i,points:so(lo(t,d))});switch(e){case`round`:return B(`rect`,{class:r,style:i,x:l,y:u,width:s,height:c,rx:6,ry:6});case`stadium`:return B(`rect`,{class:r,style:i,x:l,y:u,width:s,height:c,rx:c/2,ry:c/2});case`circle`:return B(`circle`,{class:r,style:i,cx:a,cy:o,r:s/2});case`doublecircle`:return B(`g`,{},[B(`circle`,{class:r,style:i,cx:a,cy:o,r:s/2}),B(`circle`,{class:r,style:i,cx:a,cy:o,r:s/2-5})]);case`subroutine`:return B(`g`,{},[B(`rect`,{class:r,style:i,x:l,y:u,width:s,height:c}),B(`line`,{class:r,style:i,x1:l+8,y1:u,x2:l+8,y2:u+c}),B(`line`,{class:r,style:i,x1:l+s-8,y1:u,x2:l+s-8,y2:u+c})]);case`cylinder`:{let e=s/2,t=new H().moveTo(l,u+8).arcTo(e,8,0,!1,!1,l+s,u+8).lineTo(l+s,u+c-8).arcTo(e,8,0,!1,!0,l,u+c-8).close(),n=new H().moveTo(l,u+8).arcTo(e,8,0,!1,!0,l+s,u+8);return B(`g`,{},[B(`path`,{class:r,style:i,d:t.toString()}),B(`path`,{class:r,style:i,d:n.toString(),"fill-opacity":0})])}case`start`:return B(`circle`,{class:`dg-state-start`,cx:a,cy:o,r:s/2});case`end`:return B(`g`,{},[B(`circle`,{class:`dg-state-end-ring`,cx:a,cy:o,r:s/2}),B(`circle`,{class:`dg-state-start`,cx:a,cy:o,r:s/2-4})]);case`fork`:return B(`rect`,{class:`dg-state-start`,x:l,y:u,width:s,height:c,rx:2});default:return mo(e,t,r,i)??B(`rect`,{class:r,style:i,x:l,y:u,width:s,height:c})}}function mo(e,t,n,r){let{x:i,y:a,width:o,height:s}=t,c=i-o/2,l=a-s/2,u=c+o,d=l+s,f=`${n} dg-shape-line`;switch(e){case`actor`:{let e=i,t=l+14+2,a=t+13,o=l+38;return B(`g`,{},[B(`circle`,{class:n,style:r,cx:e,cy:l+7+2,r:7}),B(`path`,{class:f,style:r,d:new H().moveTo(e,t).lineTo(e,a).moveTo(e-12,t+5).lineTo(e+12,t+5).moveTo(e,a).lineTo(e-10,o).moveTo(e,a).lineTo(e+10,o).toString()})])}case`interface`:return B(`circle`,{class:n,style:r,cx:i,cy:l+11,r:10});case`boundary`:return B(`g`,{},[B(`path`,{class:f,style:r,d:new H().moveTo(i-17,l+3).lineTo(i-17,l+27).moveTo(i-17,l+15).lineTo(i-8,l+15).toString()}),B(`circle`,{class:n,style:r,cx:i+4,cy:l+15,r:12})]);case`control`:return B(`g`,{},[B(`circle`,{class:n,style:r,cx:i,cy:l+17,r:12}),B(`path`,{class:f,style:r,d:new H().moveTo(i+5,l+1).lineTo(i-1,l+5).lineTo(i+5,l+9).toString()})]);case`entity`:return B(`g`,{},[B(`circle`,{class:n,style:r,cx:i,cy:l+13,r:12}),B(`line`,{class:f,style:r,x1:i-12,y1:l+28,x2:i+12,y2:l+28})]);case`usecase`:return B(`ellipse`,{class:n,style:r,cx:i,cy:a,rx:o/2,ry:s/2});case`component`:return B(`g`,{},[B(`rect`,{class:n,style:r,x:c,y:l,width:o,height:s,rx:2}),B(`rect`,{class:n,style:r,x:u-20,y:l+6,width:12,height:15,rx:1}),B(`rect`,{class:n,style:r,x:u-23,y:l+9,width:6,height:3}),B(`rect`,{class:n,style:r,x:u-23,y:l+15,width:6,height:3})]);case`node`:return B(`g`,{},[B(`path`,{class:n,style:r,d:new H().moveTo(c,l+10).lineTo(c+10,l).lineTo(u,l).lineTo(u,d-10).lineTo(u-10,d).lineTo(c,d).close().toString()}),B(`path`,{class:f,style:r,d:new H().moveTo(c,l+10).lineTo(u-10,l+10).lineTo(u,l).moveTo(u-10,l+10).lineTo(u-10,d).toString()})]);case`cloud`:{let e=new H().moveTo(c+o*.2,d-s*.1);return e.arcTo(o*.12,s*.18,0,!1,!0,c+o*.05,l+s*.55),e.arcTo(o*.14,s*.22,0,!1,!0,c+o*.25,l+s*.15),e.arcTo(o*.18,s*.22,0,!1,!0,c+o*.6,l+s*.1),e.arcTo(o*.16,s*.22,0,!1,!0,u-o*.05,l+s*.45),e.arcTo(o*.13,s*.2,0,!1,!0,u-o*.2,d-s*.1),e.close(),B(`path`,{class:n,style:r,d:e.toString()})}case`folder`:return B(`path`,{class:n,style:r,d:new H().moveTo(c,l+10).lineTo(c,d).lineTo(u,d).lineTo(u,l+10).lineTo(c+Math.min(o*.4,60)+6,l+10).lineTo(c+Math.min(o*.4,60),l).lineTo(c,l).close().toString()});case`frame`:return B(`g`,{},[B(`rect`,{class:n,style:r,x:c,y:l,width:o,height:s}),B(`path`,{class:f,style:r,d:new H().moveTo(c,l+14).lineTo(c+26,l+14).lineTo(c+32,l+8).lineTo(c+32,l).toString()})]);case`artifact`:case`file`:case`note`:return B(`g`,{},[B(`path`,{class:n,style:r,d:new H().moveTo(c,l).lineTo(u-10,l).lineTo(u,l+10).lineTo(u,d).lineTo(c,d).close().toString()}),B(`path`,{class:f,style:r,d:new H().moveTo(u-10,l).lineTo(u-10,l+10).lineTo(u,l+10).toString()})]);case`queue`:return B(`g`,{},[B(`path`,{class:n,style:r,d:new H().moveTo(c+8,l).lineTo(u-8,l).arcTo(8,s/2,0,!1,!0,u-8,d).lineTo(c+8,d).arcTo(8,s/2,0,!1,!0,c+8,l).close().toString()}),B(`path`,{class:f,style:r,d:new H().moveTo(u-8,l).arcTo(8,s/2,0,!1,!1,u-8,d).toString()})]);case`storage`:return B(`rect`,{class:n,style:r,x:c,y:l,width:o,height:s,rx:s/2,ry:s/2});case`stack`:return B(`g`,{},[B(`rect`,{class:n,style:r,x:c,y:l+8,width:o,height:s-8}),B(`path`,{class:f,style:r,d:new H().moveTo(c+4,l+8).lineTo(c+4,l+4).lineTo(u-4,l+4).lineTo(u-4,l+8).moveTo(c+8,l+4).lineTo(c+8,l).lineTo(u-8,l).lineTo(u-8,l+4).toString()})]);case`person`:return B(`g`,{},[B(`rect`,{class:n,style:r,x:c,y:l+16,width:o,height:s-16,rx:10}),B(`circle`,{class:n,style:r,cx:i,cy:l+9,r:9})]);case`collections`:return B(`g`,{},[B(`rect`,{class:n,style:r,x:c+6,y:l,width:o-6,height:s-6}),B(`rect`,{class:n,style:r,x:c,y:l+6,width:o-6,height:s-6})]);case`text`:return B(`g`,{});default:return null}}function ho(e,t,n){let r=uo(e,t.width,t.height);if(r)return to(t,lo(t,r),n);switch(e){case`circle`:case`doublecircle`:case`start`:case`end`:case`usecase`:return eo(t,t.width/2,t.height/2,n);default:return $a(t,n)}}var go=class{constructor(){this.nodes=new Map,this.edges=[],this.outMap=new Map,this.inMap=new Map}addNode(e){let t={...e,rank:0,order:0,x:0,y:0};return this.nodes.set(t.id,t),this.outMap.set(t.id,[]),this.inMap.set(t.id,[]),t}node(e){let t=this.nodes.get(e);if(!t)throw Error(`Unknown node ${e}`);return t}addEdge(e){return this.edges.push(e),this.outMap.get(e.v).push(e),this.inMap.get(e.w).push(e),e}removeEdge(e){let t=t=>{let n=t.indexOf(e);n>=0&&t.splice(n,1)};t(this.edges),t(this.outMap.get(e.v)),t(this.inMap.get(e.w))}out(e){return this.outMap.get(e)??[]}in(e){return this.inMap.get(e)??[]}reindex(){for(let e of this.nodes.keys())this.outMap.set(e,[]),this.inMap.set(e,[]);for(let e of this.edges)this.outMap.get(e.v).push(e),this.inMap.get(e.w).push(e)}};function _o(e,t){let n=[],r=e;for(;r;)n.unshift(r),r=t.get(r)??null;return n}function vo(e){let t=[];for(let n of e.nodes.values())(t[n.rank]??=[]).push(n);for(let e=0;e<t.length;e++)t[e]??=[];return t}function yo(e,t){let n=new Set,r=t.map(()=>0),i=[...e.nodes.values()].sort((e,t)=>e.rank-t.rank);for(let t of i){if(n.has(t.id))continue;let i=[t];for(;i.length>0;){let t=i.pop();if(n.has(t.id))continue;n.add(t.id),t.order=r[t.rank]++;let a=e.out(t.id).map(t=>e.node(t.w));for(let e=a.length-1;e>=0;e--)n.has(a[e].id)||i.push(a[e])}}for(let e of t)e.sort((e,t)=>e.order-t.order)}function bo(e,t,n,r,i=!1){let a={cluster:null,nodes:[],children:new Map,items:[]};for(let t of e){let e=a;for(let r of _o(t.cluster,n)){let t=e.children.get(r);t||(t={cluster:r,nodes:[],children:new Map,items:[]},e.children.set(r,t),e.items.push(r)),e=t}e.nodes.push(t),e.items.push(t)}let o=new Map,s=e=>{let n=o.get(e);if(n!==void 0)return n;let r=0,i=0,a=e=>{for(let n of e.nodes)r+=t.get(n.id),i++;for(let t of e.children.values())a(t)};a(e);let s=i>0?r/i:0;return o.set(e,s),s},c=e=>{let n=e.items.map((n,r)=>({item:n,index:r,k:typeof n==`string`?s(e.children.get(n)):t.get(n.id)}));n.sort((e,t)=>e.k-t.k||(i?t.index-e.index:e.index-t.index));let a=n.flatMap((e,t)=>typeof e.item==`string`?[t]:[]),o=a.map(e=>n[e].item).sort((e,t)=>(r.get(e)??0)-(r.get(t)??0));a.forEach((e,t)=>{n[e].item=o[t]});let l=[];for(let t of n)typeof t.item==`string`?l.push(...c(e.children.get(t.item))):l.push(t.item);return l};return c(a)}function xo(e,t,n){let r=new Map(n.map((e,t)=>[e.id,t])),i=[];t.forEach((t,n)=>{for(let a of e.out(t.id)){let e=r.get(a.w);e!==void 0&&i.push({u:n,l:e,w:a.weight||1})}}),i.sort((e,t)=>e.u-t.u||e.l-t.l);let a=1;for(;a<n.length;)a<<=1;let o=Array(2*a-1).fill(0);--a;let s=0;for(let e of i){let t=e.l+a;o[t]+=e.w;let n=0;for(;t>0;)t%2&&(n+=o[t+1]),t=t-1>>1,o[t]+=e.w;s+=e.w*n}return s}function So(e,t,n,r){let i=e=>{let t=new Map;return e.forEach((e,n)=>{for(let i of _o(e.cluster,r)){let e=t.get(i);e?e.to=n:t.set(i,{from:n,to:n})}}),t},a=i(t),o=i(n);if(a.size===0||o.size===0)return 0;let s=new Map(n.map((e,t)=>[e.id,t])),c=0;return t.forEach((t,n)=>{for(let r of e.out(t.id)){let e=s.get(r.w);if(e!==void 0)for(let[t,r]of a){let i=o.get(t);i&&(n<r.from&&e>i.to||n>r.to&&e<i.from)&&(c+=2)}}}),c}function Co(e,t,n=new Map){let r=0;for(let i=0;i+1<t.length;i++)r+=xo(e,t[i],t[i+1]),n.size>0&&(r+=So(e,t[i],t[i+1],n));return r}function wo(e,t){let n=new Map,r=new Map;for(let i of e)i.forEach((e,a)=>{let o=i.length>1?a/(i.length-1):.5;for(let i of _o(e.cluster,t))n.set(i,(n.get(i)??0)+o),r.set(i,(r.get(i)??0)+1)});let i=new Map;for(let[e,t]of n)i.set(e,t/r.get(e));return i}function To(e,t){let n=(e,t)=>{let n=0;for(let r of e)for(let e of t)r.order>e.order&&(n+=r.w*e.w);return n},r=t=>({up:e.in(t.id).map(t=>({order:e.node(t.v).order,w:t.weight||1})),down:e.out(t.id).map(t=>({order:e.node(t.w).order,w:t.weight||1}))}),i=(e,t)=>n(e.up,t.up)+n(e.down,t.down);for(let e=0;e<8;e++){let e=!1;for(let n of t)if(!(n.length<2)){for(let t=0;t+1<n.length;t++){let a=n[t],o=n[t+1];if(a.cluster!==o.cluster)continue;let s=r(a),c=r(o);i(c,s)<i(s,c)&&(n[t]=o,n[t+1]=a,e=!0)}n.forEach((e,t)=>e.order=t)}if(!e)break}}function Eo(e,t,n=24,r=!1){let i=vo(e);yo(e,i);let a=wo(i,t);for(let e=0;e<i.length;e++){let n=new Map(i[e].map((e,t)=>[e.id,t]));i[e]=bo(i[e],n,t,a)}let o=e=>e.forEach(e=>e.forEach((e,t)=>e.order=t));o(i),r&&To(e,i);let s=i.map(e=>e.slice()),c=Co(e,i,t),l=0;for(let o=0;o<n&&c>0&&l<4;o++){let n=o%2==0,u=r&&o%4>=2,d=n?Array.from({length:i.length-1},(e,t)=>t+1):Array.from({length:i.length-1},(e,t)=>i.length-2-t),f=n?0:i.length-1,p=new Map(i[f].map((e,t)=>[e.id,t]));i[f]=bo(i[f],p,t,a),i[f].forEach((e,t)=>e.order=t);for(let r of d){let o=i[r],s=new Map;for(let t of o){let r=n?e.in(t.id).map(t=>({order:e.node(t.v).order,w:t.weight||1})):e.out(t.id).map(t=>({order:e.node(t.w).order,w:t.weight||1}));if(r.length===0)s.set(t.id,t.order);else{let e=0,n=0;for(let t of r)e+=t.order*t.w,n+=t.w;s.set(t.id,e/n)}}i[r]=bo(o,s,t,a,u),i[r].forEach((e,t)=>e.order=t)}r&&To(e,i),a=wo(i,t);let m=Co(e,i,t);m<c?(c=m,s=i.map(e=>e.slice()),l=0):l++}return o(s),s}function Do(e){return e.dummy===`edge`||e.dummy===`label`||e.dummy===`spine`}function Oo(e,t,n){let r=Do(e)&&Do(t)?n.edgeSep:Do(e)||Do(t)?(n.nodeSep+n.edgeSep)/2:n.nodeSep;return e.width/2+r+t.width/2}function ko(e,t){let n=0;e.forEach((r,i)=>{n=i===0?r.width/2:n+Oo(e[i-1],r,t),r.x=n})}function Ao(e){let t=e.slice().sort((e,t)=>e-t),n=t.length>>1;return t.length%2?t[n]:(t[n-1]+t[n])/2}function jo(e,t,n,r){let i=Array(e.length).fill(!1),a=e.map((e,t)=>t).sort((t,r)=>n.get(e[r].id)-n.get(e[t].id)||t-r);for(let n of a){let a=e[n],o=t.get(a.id);if(o===void 0)i[n]=!0;else{if(o>a.x){let t=1/0,s=0;for(let a=n+1;a<e.length;a++)if(s+=Oo(e[a-1],e[a],r),i[a]){t=e[a].x-s;break}let c=Math.min(o,t);if(c>a.x){a.x=c;for(let t=n+1;t<e.length;t++){let n=e[t-1].x+Oo(e[t-1],e[t],r);if(e[t].x>=n)break;e[t].x=n}}}else if(o<a.x){let t=-1/0,s=0;for(let a=n-1;a>=0;a--)if(s+=Oo(e[a],e[a+1],r),i[a]){t=e[a].x+s;break}let c=Math.max(o,t);if(c<a.x){a.x=c;for(let t=n-1;t>=0;t--){let n=e[t+1].x-Oo(e[t],e[t+1],r);if(e[t].x<=n)break;e[t].x=n}}}i[n]=!0}}}function Mo(e,t,n,r=4){for(let e of t)ko(e,n);let i=r=>{let i=r?Array.from({length:t.length-1},(e,t)=>t+1):Array.from({length:t.length-1},(e,n)=>t.length-2-n);for(let a of i){let i=t[a],o=new Map,s=new Map;for(let t of i){let n=r?e.in(t.id).map(t=>e.node(t.v)):e.out(t.id).map(t=>e.node(t.w));n.length>0&&o.set(t.id,Ao(n.map(e=>e.x)));let i=Do(t)&&n.some(Do)?1e6:n.length;s.set(t.id,i)}jo(i,o,s,n)}};for(let e=0;e<r;e++)i(!0),i(!1);for(let r=0;r<t.length;r++){let i=t[r],a=new Map,o=new Map;for(let t of i){let n=[...e.in(t.id).map(t=>e.node(t.v)),...e.out(t.id).map(t=>e.node(t.w))];n.length>0&&a.set(t.id,Ao(n.map(e=>e.x))),o.set(t.id,Do(t)?1e6:n.length)}jo(i,a,o,n)}}function No(e,t,n,r){Mo(e,t,r),Lo(e,t,n,r);let i=1/0;for(let t of e.nodes.values())i=Math.min(i,t.x-t.width/2);if(Number.isFinite(i))for(let t of e.nodes.values())t.x-=i;let a=0;t.forEach((e,t)=>{let n=0;for(let t of e)n=Math.max(n,t.height);t>0&&(a+=r.rankSep/2);for(let t of e)t.y=a+n/2;a+=n})}function Po(e,t){let n=new Map;for(let r of e.nodes.values()){let e=r.cluster;for(;;){let i=n.get(e)??[];if(i.push(r),n.set(e,i),e===null)break;e=t.get(e)??null}}return n}function Fo(e){let t=new Map;for(let[n,r]of e){let e=t.get(r)??[];e.push(n),t.set(r,e)}return t}function Io(e,t,n,r){let i=Fo(t),a=new Map;for(let t of e.nodes.values()){if(t.cluster===null)continue;let e=a.get(t.cluster)??[];e.push(t),a.set(t.cluster,e)}let o=new Map,s=e=>{let t=o.get(e);if(t)return t;let c=1/0,l=-1/0;for(let t of a.get(e)??[])c=Math.min(c,t.x-t.width/2),l=Math.max(l,t.x+t.width/2);for(let t of i.get(e)??[]){let e=s(t);c=Math.min(c,e.left),l=Math.max(l,e.right)}Number.isFinite(c)||(c=0,l=0);let u={left:c-n-(r?.get(e)??0),right:l+n};return o.set(e,u),u};for(let e of t.keys())s(e);return o}function Lo(e,t,n,r){if(n.size===0)return;let i=Fo(n),a=Po(e,n),o=(e,t)=>{let r=e.cluster,i=null;for(;r!==t;){if(r===null)return null;i=r,r=n.get(r)??null}return i??e.id},s=c=>{for(let e of i.get(c)??[])s(e);let l=Io(e,n,r.clusterPadding,r.frameLeft),u=new Map;for(let e of a.get(c)??[]){let t=o(e,c);if(!(t===null||u.has(t))){if(t===e.id)u.set(t,{cluster:!1,left:e.x-e.width/2,right:e.x+e.width/2,dummy:Do(e)});else{let e=l.get(t);u.set(t,{cluster:!0,left:e.left,right:e.right,dummy:!1})}}}let d=new Map,f=new Map([...u.keys()].map(e=>[e,0]));for(let e of t){let t=null;for(let n of e){let e=o(n,c);if(e!==null&&e!==t){if(t!==null){let n=u.get(t),i=u.get(e),a=n.dummy&&i.dummy?r.edgeSep:n.dummy||i.dummy?(r.nodeSep+r.edgeSep)/2:r.nodeSep,o=d.get(t)??new Map;o.has(e)||f.set(e,f.get(e)+1),o.set(e,Math.max(o.get(e)??-1/0,n.right-n.left+a)),d.set(t,o)}t=e}}}let p=new Map([...u].map(([e,t])=>[e,t.left])),m=[...u.keys()].filter(e=>f.get(e)===0);for(;m.length>0;){let e=m.shift();for(let[t,n]of d.get(e)??[])p.set(t,Math.max(p.get(t),p.get(e)+n)),f.set(t,f.get(t)-1),f.get(t)===0&&m.push(t)}for(let[t,n]of u){let r=p.get(t)-n.left;if(r!==0){if(n.cluster)for(let e of a.get(t)??[])e.x+=r;else e.node(t).x+=r}}};s(null)}function Ro(e){let t=new Map,n=[];for(let r of e.nodes.keys()){if(t.get(r))continue;let i=[{id:r,i:0}];for(t.set(r,1);i.length>0;){let r=i[i.length-1],a=e.out(r.id);if(r.i<a.length){let e=a[r.i++],o=t.get(e.w)??0;o===1?n.push(e):o===0&&(t.set(e.w,1),i.push({id:e.w,i:0}))}else t.set(r.id,2),i.pop()}}for(let e of n){let t=e.v;e.v=e.w,e.w=t,e.reversed=!e.reversed}n.length>0&&e.reindex()}function zo(e,t){let n=new Set(t),r=new Map;for(let t of e.edges){if(!n.has(t.v)||t.v===t.w)continue;let e=`${t.v}\u0000${t.w}`,i=r.get(e);i?(i.weight+=t.weight,i.minlen=Math.max(i.minlen,t.minlen)):r.set(e,{v:t.v,w:t.w,minlen:t.minlen,weight:t.weight})}return{nodes:[...t],edges:[...r.values()]}}function Bo(e){let t=new Set,n=[];for(let r of e.nodes.keys()){if(t.has(r))continue;let i=[],a=[r];for(t.add(r);a.length>0;){let n=a.shift();i.push(n);for(let r of[...e.out(n),...e.in(n)]){let e=r.v===n?r.w:r.v;t.has(e)||(t.add(e),a.push(e))}}n.push(i)}return n}function Vo(e,t){let n=new Map(t.map(t=>[t,e.in(t).length])),r=t.filter(e=>n.get(e)===0);for(;r.length>0;){let t=r.shift(),i=e.in(t),a=e.out(t);if(i.length>0&&i.reduce((e,t)=>e+t.weight,0)>=a.reduce((e,t)=>e+t.weight,0)){let n=-1/0;for(let t of i)n=Math.max(n,e.node(t.v).rank+t.minlen);let r=e.node(t);n<r.rank&&(r.rank=n)}for(let e of a)n.set(e.w,n.get(e.w)-1),n.get(e.w)===0&&r.push(e.w)}}function Ho(e,t=2e3){for(let n of Bo(e)){let{nodes:r,edges:i}=zo(e,n),a=Uo(r,i,t),o=1/0;for(let e of a.values())o=Math.min(o,e);for(let[t,n]of a)e.node(t).rank=n-o;Vo(e,n);let s=1/0;for(let t of n)s=Math.min(s,e.node(t).rank);for(let t of n)e.node(t).rank-=s}}function Uo(e,t,n){let r=new Map,i=new Map;for(let t of e)r.set(t,[]),i.set(t,[]);for(let e of t)r.get(e.v).push(e),i.get(e.w).push(e);let a=(e,t)=>`${e}\u0000${t}`,o=new Map(t.map(e=>[a(e.v,e.w),e])),s=(e,t)=>o.get(a(e,t)),c=new Map,l=e=>{let t=[{id:e,i:0}],n=new Set([e]);for(;t.length>0;){let e=t[t.length-1],i=r.get(e.id);if(e.i<i.length){let r=i[e.i++];!c.has(r.w)&&!n.has(r.w)&&(n.add(r.w),t.push({id:r.w,i:0}))}else{let n=1/0;for(let e of i)n=Math.min(n,c.get(e.w)-e.minlen);c.set(e.id,n===1/0?0:n),t.pop()}}};for(let t of e)c.has(t)||l(t);if(e.length<=1||t.length===0)return c;let u=e=>c.get(e.w)-c.get(e.v)-e.minlen,d=new Map,f=(e,t)=>{d.get(e).add(t),d.get(t).add(e)},p=()=>{let e=[...d.keys()];for(;e.length>0;){let t=e.pop();for(let n of[...r.get(t),...i.get(t)]){let r=n.v===t?n.w:n.v;!d.has(r)&&u(n)===0&&(d.set(r,new Set),f(t,r),e.push(r))}}return d.size};for(d.set(e[0],new Set);p()<e.length;){let e=null,n=1/0;for(let r of t)if(d.has(r.v)!==d.has(r.w)){let t=u(r);t<n&&(n=t,e=r)}if(!e)break;let r=d.has(e.v)?n:-n;for(let e of d.keys())c.set(e,c.get(e)+r)}let m=e[0],h=new Map,g=new Map,_=new Map,v=new Map,y=(e,t)=>e<t?a(e,t):a(t,e),b=()=>{h.clear(),g.clear(),_.clear();let e=1,t=[];_.set(m,void 0),t.push({id:m,it:d.get(m).values(),low:e});let n=new Set([m]);for(;t.length>0;){let r=t[t.length-1],i=r.it.next();if(i.done)h.set(r.id,r.low),g.set(r.id,e++),t.pop();else{let a=i.value;n.has(a)||(n.add(a),_.set(a,r.id),t.push({id:a,it:d.get(a).values(),low:e}))}}},x=()=>[...g.entries()].sort((e,t)=>e[1]-t[1]).map(([e])=>e),S=e=>{let t=_.get(e),n=!0,a=s(e,t);a||=(n=!1,s(t,e));let o=a.weight;for(let a of[...r.get(e),...i.get(e)]){let r=a.v===e,i=r?a.w:a.v;if(i===t)continue;let s=r===n;if(o+=s?a.weight:-a.weight,d.get(e).has(i)){let t=v.get(y(e,i))??0;o+=s?-t:t}}return o},C=()=>{v.clear();for(let e of x()){let t=_.get(e);t!==void 0&&v.set(y(e,t),S(e))}},w=()=>{let e=[...g.entries()].sort((e,t)=>t[1]-e[1]).map(([e])=>e);for(let t of e){let e=_.get(t);if(e===void 0)continue;let n=s(t,e);n?c.set(t,c.get(e)-n.minlen):c.set(t,c.get(e)+s(e,t).minlen)}},T=(e,t)=>h.get(t)<=g.get(e)&&g.get(e)<=g.get(t);b(),C();for(let e=0;e<n;e++){let e=null;for(let[t,n]of _)if(n!==void 0&&(v.get(y(t,n))??0)<0){e=s(t,n)?{v:t,w:n}:{v:n,w:t};break}if(!e)break;let n=e.v,r=!1;g.get(e.v)>g.get(e.w)&&(n=e.w,r=!0);let i=null,a=1/0;for(let e of t)if(r===T(e.v,n)&&r!==T(e.w,n)){let t=u(e);t<a&&(a=t,i=e)}if(!i)break;d.get(e.v).delete(e.w),d.get(e.w).delete(e.v),f(i.v,i.w),b(),C(),w()}return c}var Wo=2e3,Go=22;function Ko(e){let t=e.direction??`TB`,n=t===`LR`||t===`RL`,r={nodeSep:e.nodeSep??50,rankSep:e.rankSep??50,edgeSep:e.edgeSep??20,clusterPadding:e.clusterPadding??12};if(e.nodes.length>500)throw we(`nodes`,e.nodes.length,500);if(e.edges.length>2e3)throw we(`edges`,e.edges.length,Wo);let i=(e,t)=>n?{width:t,height:e}:{width:e,height:t},a=new go,o=new Map((e.clusters??[]).map(e=>[e.id,e])),s=new Map;for(let e of o.values()){if(e.parent!==void 0&&!o.has(e.parent))throw new L(`Cluster "${e.id}" is inside an unknown cluster "${e.parent}"`);s.set(e.id,e.parent??null)}for(let e of o.keys()){let t=s.get(e)??null,n=0;for(;t!==null;){if(t===e||++n>o.size)throw new L(`Cluster "${e}" contains itself`);t=s.get(t)??null}}let c=e.edges.filter(e=>e.from===e.to&&!o.has(e.from)),l=new Map;for(let e of c){let t=e.label?(n?e.label.height:e.label.width)+6:0;l.set(e.from,Math.max(l.get(e.from)??0,Go+t))}for(let t of e.nodes){if(a.nodes.has(t.id))continue;let e=i(t.width,t.height),n=l.get(t.id)??0;if(t.cluster!==void 0&&!o.has(t.cluster))throw new L(`Node "${t.id}" is inside an unknown cluster "${t.cluster}"`);a.addNode({id:t.id,width:e.width+n*2,height:e.height,cluster:t.cluster??null})}let u=e=>`\u0000top:${e}`,d=e=>`\u0000bottom:${e}`,f=new Map,p=new Map;r.frameLeft=p;for(let e of o.values()){let i=e.label??{width:0,height:0},o=i.height>0?i.height+6:0;f.set(e.id,o),n&&p.set(e.id,o);let s=t===`TB`?`top`:t===`BT`?`bottom`:null;a.addNode({id:u(e.id),width:s===`top`?i.width+2*r.clusterPadding:0,height:s===`top`?o:0,cluster:e.id,dummy:`border-top`}),a.addNode({id:d(e.id),width:s===`bottom`?i.width+2*r.clusterPadding:0,height:s===`bottom`?o:0,cluster:e.id,dummy:`border-bottom`})}let m=0,h=(e,t)=>a.addEdge({id:`\u0000s${m++}`,v:e,w:t,minlen:1,weight:1,original:``,reversed:!1,structural:!0});for(let e of o.keys()){let t=[...a.nodes.values()].filter(t=>t.cluster===e&&!t.dummy),n=[...o.values()].filter(t=>(t.parent??null)===e);for(let n of t)h(u(e),n.id),h(n.id,d(e));for(let t of n)h(u(e),u(t.id)),h(d(t.id),d(e));t.length===0&&n.length===0&&h(u(e),d(e))}let g=t=>{let n=[];for(let r of e.nodes)r.cluster===t&&n.push(r.id);for(let e of o.values())(e.parent??null)===t&&n.push(...g(e.id));return n},_=(e,t)=>{if(o.has(e)){let n=g(e);return n.length===0?t?d(e):u(e):t?n[n.length-1]:n[0]}if(!a.nodes.has(e))throw new L(`Edge refers to an unknown node "${e}"`);return e},v=new Map,y=e=>{let t=0;for(let n=e;n!==null;n=s.get(n)??null)t++;return t},b=(e,t)=>{if(!n)return 0;let r=a.node(e).cluster,i=a.node(t).cluster,o=Zo(r,i,s);return+(y(r)>y(o)&&y(i)>y(o))};for(let t of e.edges){if(t.from===t.to&&!o.has(t.from))continue;let e=_(t.from,!0),n=_(t.to,!1);e!==n&&(t.label&&v.set(t.id,i(t.label.width,t.label.height)),a.addEdge({id:t.id,v:e,w:n,minlen:Math.max(1,t.minlen??1)*2+b(e,n),weight:t.weight??1,original:t.id,reversed:!1}))}Ro(a),Ho(a),Qo(a,o.keys(),u,d);for(let e of a.edges.slice())e.structural&&a.node(e.w).rank-a.node(e.v).rank!==1&&a.removeEdge(e);let x=new Map,S=0,C=e=>{let t=a.node(e);return t.dummy===`border-top`||t.dummy===`border-bottom`?s.get(t.cluster)??null:t.cluster},w=e=>({top:a.node(u(e)).rank,bottom:a.node(d(e)).rank}),T=(e,t)=>{let n=Zo(e,t,s),r=[];for(let t=e;t!==n;t=s.get(t)??null)r.push(t);let i=[];for(let e=t;e!==n;e=s.get(e)??null)i.push(e);return{path:[...r,n,...i.reverse()],lca:r.length}};for(let e of a.edges.slice()){if(e.structural)continue;let t=a.node(e.v),n=a.node(e.w),{path:r,lca:i}=T(C(t.id),C(n.id)),o=0,s=e=>{for(;o<i&&e>w(r[o]).bottom;)o++;for(;o>=i&&o<r.length-1&&w(r[o+1]).top<=e;)o++;return r[o]??null},c=[t.id],l=n.rank-t.rank,u=v.get(e.original),d=t.rank+Math.floor(l/2);a.removeEdge(e);let f=t.id;for(let r=t.rank+1;r<n.rank;r++){let t=!!u&&r===d,n=a.addNode({id:`\u0000d${S++}`,width:t?u.width:0,height:t?u.height:0,cluster:s(r),dummy:t?`label`:`edge`,edge:e.original});n.rank=r,a.addEdge({id:`${e.id}#${r}`,v:f,w:n.id,minlen:1,weight:e.weight,original:e.original,reversed:e.reversed}),c.push(n.id),f=n.id}a.addEdge({id:`${e.id}#end`,v:f,w:n.id,minlen:1,weight:e.weight,original:e.original,reversed:e.reversed}),c.push(n.id),x.set(e.original,e.reversed?c.reverse():c)}$o(a,o.keys(),s,u,d),No(a,Eo(a,s,24,e.transpose??!1),s,r);let E=Io(a,s,r.clusterPadding,r.frameLeft),D=new Map,O=new Map;for(let e of a.nodes.values()){let t=e.cluster;for(;t!==null;){let n=O.get(t)??[];n.push(e),O.set(t,n),t=s.get(t)??null}}let k=e=>{let t=0,n=s.get(e)??null;for(;n!==null;)t++,n=s.get(n)??null;return t},A=[...o.keys()].sort((e,t)=>k(t)-k(e)),j=new Map;for(let e of A){let n=1/0,i=-1/0;for(let t of O.get(e)??[])n=Math.min(n,t.y-t.height/2),i=Math.max(i,t.y+t.height/2);for(let t of o.values()){if((t.parent??null)!==e)continue;let r=j.get(t.id);r&&(n=Math.min(n,r.top),i=Math.max(i,r.bottom))}let a=r.clusterPadding;j.set(e,{top:n-(t===`TB`?0:a),bottom:i+(t===`BT`?0:a)})}for(let e of o.keys()){let t=E.get(e),n=j.get(e),r=t.left;D.set(e,{x:(r+t.right)/2,y:(n.top+n.bottom)/2,width:t.right-r,height:n.bottom-n.top})}let M=0,N=0,P=0,ee=0;for(let e of a.nodes.values())M=Math.max(M,e.x+e.width/2),N=Math.max(N,e.y+e.height/2);for(let e of D.values())P=Math.min(P,e.x-e.width/2),ee=Math.min(ee,e.y-e.height/2),M=Math.max(M,e.x+e.width/2),N=Math.max(N,e.y+e.height/2);let te=M-P,ne=N-ee,F=e=>{let n=e.x-P,r=e.y-ee;switch(t){case`BT`:return{x:n,y:ne-r};case`LR`:return{x:r,y:n};case`RL`:return{x:ne-r,y:n};default:return{x:n,y:r}}},re=e=>{let t=F(e);return n?{x:t.x,y:t.y,width:e.height,height:e.width}:{...t,width:e.width,height:e.height}},ie=new Map;for(let t of e.nodes){let e=F(a.node(t.id));ie.set(t.id,{x:e.x,y:e.y,width:t.width,height:t.height})}let I=new Map;for(let[e,t]of D)I.set(e,re(t));let ae=new Map,oe=new Map;for(let e of a.nodes.values())e.dummy||(ae.set(e.rank,Math.max(ae.get(e.rank)??0,e.height)),oe.set(e.rank,[...oe.get(e.rank)??[],e]));let se=new Map;for(let n of e.edges){if(n.from===n.to&&!o.has(n.from)){se.set(n.id,es(ie.get(n.from),t,n.label));continue}let e=x.get(n.id);if(!e){se.set(n.id,{points:[]});continue}let i=e.slice(1,-1).map(e=>a.node(e)),s=e.length>1&&a.node(e[e.length-1]).rank<a.node(e[0]).rank,c={points:i.flatMap(e=>{let t=(ae.get(e.rank)??0)/2;if(!(oe.get(e.rank)??[]).some(t=>Math.abs(t.x-e.x)-t.width/2<r.nodeSep*2)||e.dummy===`label`||t<=e.height/2)return[F(e)];let n=[F({x:e.x,y:e.y-t}),F({x:e.x,y:e.y+t})];return s?n.reverse():n})},l=i.find(e=>e.dummy===`label`);l&&(c.label=F(l)),(o.has(n.from)||o.has(n.to))&&Yo(c,F(a.node(e[0])),F(a.node(e[e.length-1])),{from:o.has(n.from)?I.get(n.from):void 0,to:o.has(n.to)?I.get(n.to):void 0}),se.set(n.id,c)}return{width:n?ne:te,height:n?te:ne,nodes:ie,clusters:I,edges:se}}function qo(e,t){return Math.abs(t.x-e.x)<=e.width/2&&Math.abs(t.y-e.y)<=e.height/2}function Jo(e,t,n){let r=0,i=1;for(let a=0;a<30;a++){let a=(r+i)/2;qo(e,{x:t.x+(n.x-t.x)*a,y:t.y+(n.y-t.y)*a})?i=a:r=a}return{x:t.x+(n.x-t.x)*i,y:t.y+(n.y-t.y)*i}}function Yo(e,t,n,r){let i=[t,...e.points,n];if(r.to&&!qo(r.to,t)){for(let e=1;e<i.length;e++)if(qo(r.to,i[e])){let t=Jo(r.to,i[e-1],i[e]);i=[...i.slice(0,e),t];break}e.end=i[i.length-1]}if(r.from&&!qo(r.from,i[i.length-1])){for(let e=i.length-2;e>=0;e--)if(qo(r.from,i[e])){i=[Jo(r.from,i[e+1],i[e]),...i.slice(e+1)];break}e.start=i[0]}e.points=i.slice(1,-1)}function Xo(e){let t=e.clusters??[];if(t.length===0)return Ko(e);let n=new Map(t.map(e=>[e.id,e.parent??null])),r=(e,r)=>{let i=e??null,a=0;for(;i!==null&&a++<=t.length;){if(i===r)return!0;i=n.get(i)??null}return!1},i=new Map(e.nodes.map(e=>[e.id,e.cluster??null])),a=e=>n.has(e)?{cluster:e,isCluster:!0}:{cluster:i.get(e)??null,isCluster:!1},o=t=>{for(let n of e.edges){let e=a(n.from),i=a(n.to),o=e.isCluster?r(e.cluster,t)&&e.cluster!==t:r(e.cluster,t);if(o!==(i.isCluster?r(i.cluster,t)&&i.cluster!==t:r(i.cluster,t))){let n=o?i:e;if(!(n.isCluster&&n.cluster===t))return!1}}return!0},s=t.filter(e=>o(e.id)&&!t.some(t=>t.id!==e.id&&r(e.id,t.id)&&o(t.id)));if(s.length===0)return Ko(e);let c=e.clusterPadding??12,l=e.direction??`TB`,u=new Map,d=new Set,f=new Set,p=new Set;for(let n of s){let i={...e,direction:n.direction??l,nodes:e.nodes.filter(e=>r(e.cluster,n.id)).map(e=>({...e,cluster:e.cluster===n.id?void 0:e.cluster})),clusters:t.filter(e=>e.id!==n.id&&r(e.id,n.id)).map(e=>({...e,parent:e.parent===n.id?void 0:e.parent})),edges:e.edges.filter(e=>{let t=a(e.from),i=a(e.to),o=r(t.cluster,n.id)&&!(t.isCluster&&t.cluster===n.id),s=r(i.cluster,n.id)&&!(i.isCluster&&i.cluster===n.id);return o&&s})};for(let e of i.nodes)d.add(e.id);for(let e of i.clusters??[])f.add(e.id);f.add(n.id);for(let e of i.edges)p.add(e.id);let o=Xo(i),s=n.label&&n.label.height>0?n.label.height+6:0,m=Math.max(o.width,n.label?.width??0)+c*2,h=o.height+c*2+s;u.set(n.id,{result:o,title:s,width:m,height:h})}let m=Xo({...e,nodes:[...e.nodes.filter(e=>!d.has(e.id)),...s.map(e=>({id:e.id,width:u.get(e.id).width,height:u.get(e.id).height,cluster:e.parent}))],clusters:t.filter(e=>!f.has(e.id)),edges:e.edges.filter(e=>!p.has(e.id))});for(let e of s){let t=m.nodes.get(e.id);m.nodes.delete(e.id),m.clusters.set(e.id,t);let{result:n,title:r}=u.get(e.id),i=t.x-t.width/2+(t.width-n.width)/2,a=t.y-t.height/2+c+r,o=e=>({x:e.x+i,y:e.y+a});for(let[e,t]of n.nodes)m.nodes.set(e,{...t,...o(t)});for(let[e,t]of n.clusters)m.clusters.set(e,{...t,...o(t)});for(let[e,t]of n.edges)m.edges.set(e,{...t,points:t.points.map(o),label:t.label&&o(t.label),start:t.start&&o(t.start),end:t.end&&o(t.end)})}return m}function Zo(e,t,n){let r=e=>{let t=[];for(;e!==null;)t.push(e),e=n.get(e)??null;return t},i=new Set(r(e));for(let e of r(t))if(i.has(e))return e;return null}function Qo(e,t,n,r){let i=[...t];for(let t=0;t<i.length+1;t++){let t=!1;for(let a of i){let i=e.node(n(a)),o=e.node(r(a)),s=e.out(i.id).map(t=>e.node(t.w).rank),c=e.in(o.id).map(t=>e.node(t.v).rank),l=e.in(i.id).map(t=>e.node(t.v).rank+t.minlen),u=e.out(o.id).map(t=>e.node(t.w).rank-t.minlen);if(s.length>0){let e=Math.min(...s)-1,n=l.length>0?Math.max(...l):-1/0,r=Math.max(e,n);r!==i.rank&&r<=Math.min(...s)-1&&(i.rank=r,t=!0)}if(c.length>0){let e=Math.max(...c)+1,n=u.length>0?Math.min(...u):1/0,r=Math.min(e,n);r!==o.rank&&r>=Math.max(...c)+1&&(o.rank=r,t=!0)}}if(!t)break}}function $o(e,t,n,r,i){let a=new Map;for(let t of e.nodes.values()){let e=t.cluster;for(;e!==null;){let r=a.get(e);r||a.set(e,r=new Set),r.add(t.rank),e=n.get(e)??null}}let o=0;for(let s of t){let t=e.node(r(s)).rank,c=e.node(i(s)).rank,l=a.get(s)??new Set;for(let r=t+1;r<c;r++){if(l.has(r))continue;let t=e.addNode({id:`\u0000spine${o++}`,width:0,height:0,cluster:s,dummy:`spine`});t.rank=r;let i=s;for(;i!==null;){let e=a.get(i);e||a.set(i,e=new Set),e.add(r),i=n.get(i)??null}}}}function es(e,t,n){let r=t===`LR`||t===`RL`,i=Go;if(!r){let t=e.x+e.width/2,r=e.y-e.height/4,a=e.y+e.height/4;return{selfLoop:!0,points:[{x:t,y:r},{x:t+i,y:r-4},{x:t+i,y:a+4},{x:t,y:a}],label:n?{x:t+i+4+n.width/2,y:e.y}:void 0}}let a=e.y+e.height/2,o=e.x-e.width/4,s=e.x+e.width/4;return{selfLoop:!0,points:[{x:o,y:a},{x:o-4,y:a+i},{x:s+4,y:a+i},{x:s,y:a}],label:n?{x:e.x,y:a+i+4+n.height/2}:void 0}}var ts=new Set([`actor`,`boundary`,`control`,`entity`,`node`,`frame`,`artifact`,`note`,`file`,`queue`,`stack`]),ns=200;function rs(e,t,n,r=R){let i=Y(e,{markdown:t});return t&&(i=an(i,ns,r,n)),X(i,r,n)}function is(e){return e===`none`?null:e}function as(e,t,n){return Ge(n.get(`default`),...e.map(e=>n.get(e)),t)}function os(e,t,n,r){let i=new Map,a=new Map;for(let n of e.nodes.values()){let e=rs(n.text,n.markdown,t);i.set(n.id,e),a.set(n.id,fo(n.shape,e.width,Math.max(e.height,R.size*1.25)))}let o={...R,weight:`bold`},s=new Map;for(let n of e.subgraphs.values())n.title.trim()!==``&&s.set(n.id,rs(n.title,n.markdown,t,o));let c=new Map,l=e.edges.map((e,n)=>{let r;if(e.text!==void 0&&e.text!==``){let i=rs(e.text,e.markdown,t);tn(i.label)||(c.set(n,i),r={width:i.width+8,height:i.height+4})}return{id:String(n),from:e.from,to:e.to,minlen:e.length,label:r}}),u=Xo({direction:e.direction,nodes:[...e.nodes.values()].map(e=>({id:e.id,...a.get(e.id),cluster:e.subgraph})),edges:l,clusters:[...e.subgraphs.values()].map(e=>{let t=s.get(e.id);return{id:e.id,parent:e.parent,direction:e.direction,label:t?{width:t.width,height:t.height}:void 0}}),nodeSep:50,rankSep:50,clusterPadding:14}),d=t=>{let n=0,r=e.subgraphs.get(t)?.parent;for(;r;)n++,r=e.subgraphs.get(r)?.parent;return n},f=[],p=[...e.subgraphs.values()].sort((e,t)=>d(e.id)-d(t.id)).map(t=>{let n=u.clusters.get(t.id),r=as(t.classes,t.style,e.classDefs),i=s.get(t.id),a=t.kind===`folder`||t.kind===`node`?14:t.kind===`cloud`?12:t.kind===`frame`?2:6,o=B(`g`,{class:`dg-cluster`,"data-id":t.id},[t.kind&&t.kind!==`rect`?po(t.kind,n,{className:`dg-cluster-box`,style:G(r.shape)}):B(`rect`,{class:`dg-cluster-box`,x:n.x-n.width/2,y:n.y-n.height/2,width:n.width,height:n.height,rx:4,style:G(r.shape)})]);if(i){let e=r.shape.fill?{stroke:r.shape.fill}:{};f.push(B(`g`,{class:`dg-cluster-title`,"data-id":t.id},[Z(i,t.kind===`frame`?n.x-n.width/2+40+i.width/2:n.x,n.y-n.height/2+a+i.height/2,{className:`dg-cluster-label`,style:G({...e,...r.text})})]))}return o}),m=t=>{let n=e.nodes.get(t);if(n){let e=u.nodes.get(t);return{box:e,clip:t=>ho(n.shape,e,t)}}let r=u.clusters.get(t);return{box:r,clip:e=>ho(`rect`,r,e)}},h=[],g=[],_=[];e.edges.forEach((e,t)=>{let r=u.edges.get(String(t));if(!r||e.stroke===`invisible`)return;let i;if(r.selfLoop)i=r.points;else{let t=m(e.from),n=m(e.to),a=r.points[0]??n.box,o=r.points[r.points.length-1]??t.box;i=[r.start??t.clip(a),...r.points,r.end??n.clip(o)]}let a=e.style??{shape:{},text:{}},o=is(e.start),s=is(e.end);o&&h.push(o),s&&h.push(s);let l=[`dg-edge`,e.stroke===`thick`?`dg-edge-thick`:``,e.stroke===`dotted`?`dg-edge-dotted`:``].filter(Boolean).join(` `);g.push(B(`path`,{class:l,d:ro(i),"marker-start":o?`url(#${ra(n,o,!0)})`:void 0,"marker-end":s?`url(#${ra(n,s)})`:void 0,style:G(a.shape),"data-from":e.from,"data-to":e.to}));let d=c.get(t);if(d&&r.label){let e=d.width+8,t=d.height+4;_.push(B(`g`,{class:`dg-edge-label-group`},[B(`rect`,{class:`dg-edge-label-box`,x:r.label.x-e/2,y:r.label.y-t/2,width:e,height:t,rx:3}),Z(d,r.label.x,r.label.y,{className:`dg-edge-label`,style:G(a.text)})]))}});let v=[...e.nodes.values()].map(t=>{let n=u.nodes.get(t.id);if(!n)throw new L(`Node "${t.id}" was not laid out`);let r=as(t.classes,t.style,e.classDefs),a=[`dg-node`,...t.classes.map(e=>`dg-class-${e.replace(/[^\w-]/g,``)}`)].join(` `),o=i.get(t.id),s=oo(t.shape,n,o.height),c=B(`g`,{class:a+(t.shape===`note`?` dg-node-note`:ao(t.shape)?` dg-node-figure`:``),"data-id":t.id},[t.tooltip||t.link?.tooltip?B(`title`,{},[{text:t.link?.tooltip??t.tooltip??``}]):null,po(t.shape,n,{style:G(r.shape)}),Z(o,s.x,s.y,{style:G(r.text)})]);return t.link?B(`a`,{href:t.link.href,target:t.link.target,rel:t.link.target===`_blank`?`noopener noreferrer`:void 0},[c]):c}),y=new Set([...e.nodes.values()].map(e=>e.shape)),b=[`#${n} .dg-edge-label-group text{fill:${z(`--dg-text`)}}`,y.has(`note`)?`#${n} .dg-node-note .dg-shape{fill:${z(`--dg-note-fill`)};stroke:${z(`--dg-note-stroke`)}}#${n} .dg-node-note .dg-label{fill:${z(`--dg-note-text`)}}`:``,[...y].some(e=>ts.has(e))?`#${n} .dg-shape-line{fill:none}`:``].join(``),x=[B(`g`,{class:`dg-clusters`},p),B(`g`,{class:`dg-edges`},g),B(`g`,{class:`dg-cluster-titles`},f),B(`g`,{class:`dg-edge-labels`},_),B(`g`,{class:`dg-nodes`},v)],S=e.title?X(Y(e.title),{...R,size:18,weight:`bold`},t):null,C=S?S.height+14:0,w=Math.max(u.width,S?.width??0);return U({id:n,type:`flowchart`,width:w,height:u.height+C,title:r??e.accessibility.title??e.title??`Flowchart`,description:e.accessibility.description,defs:ia(n,h),body:S?[Z(S,w/2,S.height/2,{className:`dg-title`}),B(`g`,{transform:`translate(${Math.round((w-u.width)/2*100)/100},${Math.round(C*100)/100})`},x)]:x,css:S?`${b}#${n} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`:b})}var ss={...R,size:13,weight:`bold`},cs={...R,size:13},ls={...R,size:18,weight:`bold`},us=90,ds=40,fs=40,ps=24,ms=28,hs=20,gs=240,_s=12,vs=6,ys=20,bs=10,xs=18,Ss=12;function Cs(e){let t=[],n=new Set;for(let r of e.participants)if(!n.has(r)){if(r.box===void 0)t.push(r),n.add(r);else for(let i of e.participants)i.box===r.box&&!n.has(i)&&(t.push(i),n.add(i))}return t}function ws(e,t){let n=Cs(e),r=new Map(n.map((e,t)=>[e.id,t])),i=e=>r.get(e),a=n.map(e=>X(Y(e.label),R,t)),o=e=>e.kind!==`participant`,s=n.map((e,t)=>o(e)?Math.max(a[t].width+8,50):Math.max(a[t].width+32,us)),c=ds;n.forEach((e,t)=>{let n=o(e)?38+a[t].height:a[t].height+20;c=Math.max(c,n)});let l=e.events.map(e=>{if(e.kind===`message`){let n=Y(e.text);return tn(n)?null:X(n,R,t)}return e.kind===`note`?X(an(Y(e.text),gs,R,t),R,t):(e.kind===`divider`||e.kind===`delay`)&&e.text.trim()!==``?X(Y(e.text),e.kind===`divider`?ss:cs,t):null}),u=new Map,d=(e,t,r)=>{if(e===t||e<0||t<0||e>=n.length||t>=n.length)return;let i=`${Math.min(e,t)},${Math.max(e,t)}`;u.set(i,Math.max(u.get(i)??0,r))};e.events.forEach((e,t)=>{let n=l[t];if(e.kind===`message`){let t=i(e.from),r=i(e.to),a=(n?.width??0)+(e.number===void 0?0:hs);t===r?d(t,t+1,Math.max(a+28,62)):d(t,r,a+ms)}else if(e.kind===`note`&&n){let t=n.width+16,r=e.actors.map(i).sort((e,t)=>e-t),a=r[0],o=r[r.length-1];e.placement===`right`?d(a,a+1,t+_s+12):e.placement===`left`?d(a-1,a,t+_s+12):a===o?(d(a-1,a,t/2+16),d(a,a+1,t/2+16)):d(a,o,t-24)}});let f=[];n.forEach((e,t)=>{if(t===0){f.push(s[0]/2);return}let r=n[t-1],i=(r.box!==void 0||e.box!==void 0)&&r.box!==e.box,a=f[t-1]+s[t-1]/2+fs+(i?ps:0)+s[t]/2;for(let e=0;e<t;e++){let n=u.get(`${e},${t}`);n!==void 0&&(a=Math.max(a,f[e]+n))}f.push(a)});let p=e=>f[i(e)],m=e=>s[i(e)],h=0,g=null;if(e.title){let n=X(Y(e.title),ls,t);g={label:n,x:0,y:n.height/2},h=n.height+14}let _=h;if(e.boxes.length>0){let n=Math.max(0,...e.boxes.map(e=>e.label?X(Y(e.label),R,t).height:0));h+=8+(n>0?n+6:0)}let v=h,y=[],b=new Map,x=new Map,S=new Set;n.forEach((e,t)=>{e.created?S.add(e.id):(y.push({id:e.id,kind:e.kind,label:a[t],x:f[t],top:v,width:s[t],height:c}),b.set(e.id,v+c))}),h=v+c+10;let C=new Map,w=[],T=[],E=[],D=[],O=[],k=[],A=[],j=[],M=[],N=new Set,P=null,ee=(e,t)=>{for(let n of k)n.min=Math.min(n.min,e),n.max=Math.max(n.max,t)},te=e=>ee(p(e)-xs,p(e)+xs),ne=e=>{let t=C.get(e);return t||(t=[],C.set(e,t)),t},F=(e,t)=>p(e)-5+t*vs,re=(e,t)=>{let n=ne(e),r=n[n.length-1];if(!r)return p(e);let i=F(e,r.level);return t>0?i+10:i},ie=(e,t)=>{let n=ne(e);n.push({top:t,level:n.length})},I=(e,t)=>{let n=ne(e).pop();n&&w.push({left:F(e,n.level),top:n.top,bottom:Math.max(t,n.top+8)})},ae=(e,t)=>{S.delete(e);let r=i(e),o=n[r];y.push({id:e,kind:o.kind,label:a[r],x:f[r],top:t-c/2,width:s[r],height:c}),b.set(e,t+c/2),ee(f[r]-s[r]/2,f[r]+s[r]/2)},oe=e=>{let t=e.filter(e=>S.has(e));if(t.length!==0){for(let e of t)ae(e,h+c/2);h+=c+10}},se=(e,t)=>{for(N.delete(e);ne(e).length>0;)I(e,t);x.set(e,t),A.push({x:p(e),y:t})};e.events.forEach((e,n)=>{let r=l[n]??null;switch(e.kind){case`message`:{let t=r?.height??0,n=h+6;if(e.from===e.to){oe([e.from]);let n=p(e.from),i=re(e.from,1),a=r?h+6+t+4:h+12,o=a+ys;e.deactivateSource&&I(e.from,a),e.activateTarget&&ie(e.to,o);let s=re(e.to,1),c=Math.max(i,s)+34,l=i+4+(e.number===void 0?0:12);T.push({x1:i,x2:s,y:a,y2:o,self:!0,loopRight:c,line:e.line,head:e.head,bidirectional:e.bidirectional,label:r,labelX:l,labelY:h+6+t/2,anchor:`start`,number:e.number}),ee(n-xs,Math.max(c,l+(r?.width??0))),N.has(e.from)&&se(e.from,o),h=o+10,P=o;break}let i=S.has(e.from),a=S.has(e.to),o=r?n+t+4:h+14;(i||a)&&(o=Math.max(o,h+c/2+4)),i&&ae(e.from,o),a&&ae(e.to,o);let s=p(e.to)>p(e.from)?1:-1,l=i?p(e.from)+s*m(e.from)/2:re(e.from,s);e.deactivateSource&&I(e.from,o),e.activateTarget&&ie(e.to,o);let u=a?p(e.to)-s*m(e.to)/2:re(e.to,s===1?-1:1);T.push({x1:l,x2:u,y:o,y2:o,self:!1,loopRight:0,line:e.line,head:e.head,bidirectional:e.bidirectional,label:r,labelX:(l+u)/2,labelY:o-4-t/2,anchor:`middle`,number:e.number}),te(e.from),te(e.to),r&&ee((l+u)/2-r.width/2,(l+u)/2+r.width/2);for(let t of[e.from,e.to])N.has(t)&&se(t,o);h=o+10,(i||a)&&(h=Math.max(h,o+c/2+10)),P=o;break}case`note`:{if(!r)break;oe(e.actors);let t=r.width+16,n=r.height+16,i=h+6,a=Math.min(...e.actors.map(p)),o=Math.max(...e.actors.map(p)),s,c=t;e.placement===`right`?s=a+_s:e.placement===`left`?s=a-_s-t:(c=Math.max(t,o-a+(a===o?0:32)),s=(a+o)/2-c/2),E.push({left:s,top:i,width:c,height:n,label:r});for(let t of e.actors)te(t);ee(s,s+c),h=i+n+8,P=null;break}case`activate`:oe([e.actor]),ie(e.actor,P??h),te(e.actor),P===null&&(h+=4);break;case`deactivate`:I(e.actor,P??h),P===null&&(h+=4);break;case`destroy`:N.add(e.actor);break;case`divider`:h+=10,j.push({y:h+(r?.height??14)/2,label:r}),h+=(r?.height??14)+10,P=null;break;case`delay`:{let e=Math.max(30,(r?.height??0)+16);M.push({y:h+e/2,label:r}),h+=e,P=null;break}case`space`:h+=e.height,P=null;break;case`block-start`:if(e.block===`rect`){h+=6;let t={block:`rect`,left:0,right:0,top:h,bottom:0,tab:null,tabWidth:0,guard:null,sections:[],color:e.color};k.push({frame:t,min:1/0,max:-1/0}),h+=6}else{h+=8;let n=e.block===`group`,r=X(Y(n?e.text||`group`:e.block),ss,t),i=!n&&e.text?X(Y(`[${e.text}]`),cs,t):null,a={block:e.block,left:0,right:0,top:h,bottom:0,tab:r,tabWidth:r.width+16,guard:i,sections:[]};k.push({frame:a,min:1/0,max:-1/0}),h+=Math.max(20,i?i.height+4:0)+6}P=null;break;case`block-section`:{let n=k[k.length-1];h+=6;let r=e.text?X(Y(`[${e.text}]`),cs,t):null;n.frame.sections.push({y:h,guard:r}),h+=(r?r.height+4:0)+6,P=null;break}case`block-end`:{let e=k.pop(),{frame:t}=e;h+=t.block===`rect`?6:8,t.bottom=h;let n=e.min,r=e.max;if(Number.isFinite(n)||(n=f[0]-40,r=f[0]+40),t.left=n-bs,t.right=r+bs,t.block!==`rect`){let e=[t.guard,...t.sections.map(e=>e.guard)],n=t.tabWidth+(t.guard?t.guard.width+8:0)+16;for(let t of e)t&&(n=Math.max(n,t.width+24));t.right-t.left<n&&(t.right=t.left+n),D.push(t)}else O.push(t);ee(t.left,t.right),h+=t.block===`rect`?4:6,P=null;break}}});for(let e of S)oe([e]);for(let e of N)se(e,h);for(let[e,t]of C)for(;t.length>0;)I(e,h);h+=12;let ce=h;e.hideFootbox||n.forEach((e,t)=>{x.has(e.id)||y.push({id:e.id,kind:e.kind,label:a[t],x:f[t],top:ce,width:s[t],height:c})});let le=e.hideFootbox?ce:ce+c,ue=n.map((e,t)=>({x:f[t],y1:b.get(e.id)??ce,y2:x.get(e.id)??ce})),de=[];e.boxes.length>0&&(le+=8,e.boxes.forEach((e,r)=>{let i=n.map((e,t)=>({p:e,i:t})).filter(({p:e})=>e.box===r);if(i.length===0)return;let a=Math.min(...i.map(({i:e})=>f[e]-s[e]/2))-Ss,o=Math.max(...i.map(({i:e})=>f[e]+s[e]/2))+Ss,c=e.label?X(Y(e.label),R,t):null;if(c&&o-a<c.width+16){let e=(c.width+16-(o-a))/2;a-=e,o+=e}de.push({left:a,right:o,top:_,bottom:le,color:e.color,label:c})}));let fe=1/0,pe=-1/0,me=(e,t)=>{fe=Math.min(fe,e,t),pe=Math.max(pe,e,t)};for(let e of y)me(e.x-e.width/2,e.x+e.width/2);for(let e of de)me(e.left,e.right);for(let e of[...D,...O])me(e.left,e.right);for(let e of E)me(e.left,e.left+e.width);let he=Math.max(0,...[...j,...M].map(e=>e.label?e.label.width+40:0));if(pe-fe<he){let e=(he-(pe-fe))/2;fe-=e,pe+=e}for(let e of T)me(e.x1,e.x2),e.self?me(e.loopRight,e.labelX+(e.label?.width??0)):e.label&&me(e.labelX-e.label.width/2,e.labelX+e.label.width/2),e.number!==void 0&&me(e.x1-10,e.x1+10);let ge=pe-fe,_e=-fe;return g&&(g.label.width>ge&&(_e+=(g.label.width-ge)/2,ge=g.label.width),g.x=ge/2),{width:ge,height:le,offsetX:_e,title:g,groups:de,rects:O,frames:D,lifelines:ue,activations:w,messages:T,notes:E,actors:y,crosses:A,dividers:j,delays:M,span:{left:fe,right:pe}}}var Ts=new Set([`boundary`,`control`,`entity`,`database`,`collections`,`queue`]),Es=[{token:`<<-->>`,line:`dotted`,head:`arrow`,both:!0},{token:`<<->>`,line:`solid`,head:`arrow`,both:!0},{token:`-->>`,line:`dotted`,head:`arrow`,both:!1},{token:`->>`,line:`solid`,head:`arrow`,both:!1},{token:`--x`,line:`dotted`,head:`cross`,both:!1},{token:`--)`,line:`dotted`,head:`open`,both:!1},{token:`-->`,line:`dotted`,head:`none`,both:!1},{token:`-x`,line:`solid`,head:`cross`,both:!1},{token:`-)`,line:`solid`,head:`open`,both:!1},{token:`->`,line:`solid`,head:`none`,both:!1}],Ds=Es.map(e=>e.token).join(`, `),Os=/[<>:,;+]|^-|-$/,ks=new Set(`aliceblue antiquewhite aqua aquamarine azure beige bisque black blanchedalmond blue blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkgrey darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen darkslateblue darkslategray darkslategrey darkturquoise darkviolet deeppink deepskyblue dimgray dimgrey dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray green greenyellow grey honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan lightgoldenrodyellow lightgray lightgreen lightgrey lightpink lightsalmon lightseagreen lightskyblue lightslategray lightslategrey lightsteelblue lightyellow lime limegreen linen magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum powderblue purple rebeccapurple red rosybrown royalblue saddlebrown salmon sandybrown seagreen seashell sienna silver skyblue slateblue slategray slategrey snow springgreen steelblue tan teal thistle tomato turquoise violet wheat white whitesmoke yellow yellowgreen transparent`.split(` `));function As(e,t,n){return W(`fill:${e}`,t,n).shape.fill}function js(e){let t=[];for(let n of e){let e=0;for(let r=0;r<n.text.length;r++){if(n.text[r]!==`;`)continue;let i=n.text.slice(e,r);/#[a-zA-Z0-9]+$/.test(i)||(Ms(t,n,e,r),e=r+1)}Ms(t,n,e,n.text.length)}return t}function Ms(e,t,n,r){let i=t.text.slice(n,r),a=i.trim();if(a===``)return;let o=i.length-i.trimStart().length;e.push({text:a,line:t.line,column:t.column+n+o})}var Ns=class{constructor(e){this.list=e,this.diagram={type:`sequence`,participants:[],boxes:[],events:[],accessibility:{}},this.byId=new Map,this.stack=[],this.active=new Map,this.destroyed=new Set,this.pendingDestroy=new Set,this.numbering=null,this.currentBox=null}run(){let e=this.list[0];if(!e||!/^sequenceDiagram\s*$/.test(e.text))throw new L(`A sequence diagram starts with "sequenceDiagram"`,e?.line??1,e?.column??1);for(let e=1;e<this.list.length;e++){let t=J(this.list,e,this.diagram.accessibility);t>0?e+=t-1:this.statement(this.list[e])}let t=this.stack[this.stack.length-1];if(t)throw new L(`The "${t.block}" opened here is never closed`,t.line,0,`Add "end" after its last statement.`);return this.diagram}statement(e){let t=e.text,n;if(this.currentBox!==null&&!/^(create\s+)?(participant|actor)\b|^end$/i.test(t))throw new L(`Only participant and actor declarations belong inside a box`,e.line,e.column,`Close the box with "end" first.`);if(n=/^title(?:\s*:\s*|\s+)(.*)$/i.exec(t))this.diagram.title=n[1].trim();else if(n=/^autonumber(?:\s+(.*))?$/i.exec(t))this.autonumber(n[1]?.trim()??``,e);else if(n=/^(create\s+)?(participant|actor)\s+(.+)$/i.exec(t))this.declare(n[3],n[2].toLowerCase(),!!n[1],e,t.length-n[3].length);else if(n=/^destroy\s+(.+)$/i.exec(t)){let r=this.id(n[1],e,t.length-n[1].length);if(!this.byId.has(r))throw new L(`"${r}" is not a participant`,e.line,e.column);this.pendingDestroy.add(r),this.diagram.events.push({kind:`destroy`,actor:r,sourceLine:e.line})}else if(n=/^box(?:\s+(.*))?$/i.exec(t))this.box(n[1]?.trim()??``,e);else if(n=/^(activate|deactivate)\s+(.+)$/i.exec(t)){let r=n[1].toLowerCase(),i=this.use(n[2],e,t.length-n[2].length);r===`activate`?this.activate(i):this.deactivate(i,e),this.diagram.events.push({kind:r,actor:i,sourceLine:e.line})}else if(n=/^note\s+(left of|right of|over)\s+([^:]+?)\s*:\s?(.*)$/i.exec(t)){let r=n[1].toLowerCase().split(` `)[0],i=n[2].split(`,`).map(e=>e.trim());if(i.length>2||i.length===2&&r!==`over`)throw new L(`Only "over" spans two participants`,e.line,e.column,`Note over A,B: text`);let a=t.indexOf(n[2]),o=i.map(t=>this.use(t,e,a));this.diagram.events.push({kind:`note`,placement:r,actors:o,text:n[3].trim(),sourceLine:e.line})}else{if(/^note\b/i.test(t))throw new L(`"${t}" is not a note`,e.line,e.column,`Note left of A: text, Note right of A: text, Note over A,B: text`);if(n=/^(loop|alt|opt|par|critical|break)(?:\s+(.*))?$/i.exec(t)){let t=n[1].toLowerCase();this.stack.push({block:t,line:e.line}),this.diagram.events.push({kind:`block-start`,block:t,text:n[2]?.trim()??``,sourceLine:e.line})}else if(n=/^rect(?:\s+(.*))?$/i.exec(t)){let t=n[1]?.trim()??``;if(t===``)throw new L(`"rect" needs a colour`,e.line,e.column,`rect rgb(200, 220, 255)`);let r=As(t,e.line,e.column+5);this.stack.push({block:`rect`,line:e.line}),this.diagram.events.push({kind:`block-start`,block:`rect`,text:``,color:r,sourceLine:e.line})}else if(n=/^(else|and|option)(?:\s+(.*))?$/i.exec(t)){let t=n[1].toLowerCase(),r={else:`alt`,and:`par`,option:`critical`}[t],i=this.stack[this.stack.length-1];if(!i||i.block!==r)throw new L(`"${t}" belongs inside "${r}"`,e.line,e.column);this.diagram.events.push({kind:`block-section`,keyword:t,text:n[2]?.trim()??``,sourceLine:e.line})}else if(/^end$/i.test(t)){let t=this.stack.pop();if(!t)throw new L(`"end" without a block to close`,e.line,e.column);t.block===`box`?this.currentBox=null:this.diagram.events.push({kind:`block-end`,sourceLine:e.line})}else this.message(e)}}autonumber(e,t){if(e===``)this.numbering={next:1,step:1};else if(/^off$/i.test(e))this.numbering=null;else{let n=/^([0-9]+)(?:\s+([0-9]+))?$/.exec(e);if(!n)throw new L(`"${e}" is not a valid autonumber`,t.line,t.column,`autonumber [start [step]] or autonumber off`);this.numbering={next:Number(n[1]),step:n[2]?Number(n[2]):1}}}box(e,t){if(this.stack.length>0)throw new L(`A box cannot be nested inside a block or another box`,t.line,t.column);let n,r=e,i=/^((?:rgb|rgba|hsl|hsla)\([^)]*\))\s*(.*)$/i.exec(e),a=/^(#[0-9a-fA-F]{3,8}|[a-zA-Z]+)(?:\s+(.*))?$/.exec(e);i?(n=As(i[1],t.line,t.column+4),r=i[2].trim()):a&&(a[1].startsWith(`#`)||ks.has(a[1].toLowerCase()))&&(n=As(a[1],t.line,t.column+4),r=a[2]?.trim()??``),this.diagram.boxes.push({label:r===``?void 0:r,color:n}),this.currentBox=this.diagram.boxes.length-1,this.stack.push({block:`box`,line:t.line})}id(e,t,n){let r=e.trim();if(r===``||Os.test(r))throw new L(`"${r}" is not a valid participant name`,t.line,t.column+n);return r}declare(e,t,n,r,i){let a=/^(.*?)@\{(.*)\}\s*(.*)$/.exec(e);if(a){let n=/["']?type["']?\s*:\s*["']?(\w+)["']?/.exec(a[2])?.[1]?.toLowerCase();if(!n||!(Ts.has(n)||n===`participant`||n===`actor`))throw new L(`"${a[2].trim()}" is not a participant type`,r.line,r.column+i+e.indexOf(`@`),`participant A@{ "type": "boundary" } — boundary, control, entity, database, collections, queue, actor.`);t=n,e=`${a[1].trim()}${a[3]?` ${a[3].trim()}`:``}`}let o=/^(.+?)\s+as\s+(.+)$/.exec(e),s=this.id(o?o[1]:e,r,i),c=o?dt(o[2]):s,l=this.byId.get(s);if(n&&l)throw new L(`"${s}" already exists and cannot be created again`,r.line,r.column+i);if(l){l.label=c,l.kind=t,this.currentBox!==null&&(l.box=this.currentBox);return}let u={id:s,label:c,kind:t,created:n};this.currentBox!==null&&(u.box=this.currentBox),this.byId.set(s,u),this.diagram.participants.push(u)}use(e,t,n){let r=this.id(e,t,n);if(this.destroyed.has(r))throw new L(`"${r}" was destroyed earlier and cannot be used`,t.line,t.column+n);if(!this.byId.has(r)){let e={id:r,label:r,kind:`participant`,created:!1};this.byId.set(r,e),this.diagram.participants.push(e)}return r}activate(e){this.active.set(e,(this.active.get(e)??0)+1)}deactivate(e,t){let n=this.active.get(e)??0;if(n<=0)throw new L(`"${e}" is not active, so it cannot be deactivated`,t.line,t.column);this.active.set(e,n-1)}message(e){let t=e.text,n=t.indexOf(`:`),r=n>=0?t.slice(0,n):t,i=n>=0?t.slice(n+1).trim():``,a=[];for(let e=0;e<r.length;e++){let t=Es.find(t=>r.startsWith(t.token,e));t&&(a.push({at:e,arrow:t}),e+=t.token.length-1)}if(a.length===0)throw new L(`"${t}" is not a statement`,e.line,e.column,`Messages are written A->>B: text, with one of ${Ds}.`);let o=a.find(e=>this.byId.has(r.slice(0,e.at).trim()))??a.find(e=>e.arrow.head!==`cross`)??a[0],s=r.slice(0,o.at),c=r.slice(o.at+o.arrow.token.length),l=o.at,u=o.at+o.arrow.token.length,d=!1,f=!1,p=/^\s*([+-])/.exec(c);p&&(p[1]===`+`?d=!0:f=!0,c=c.slice(p[0].length));let m=(r,i)=>{if(/^[<>=)-]|[<>=-]$/.test(r.trim()))throw new L(`"${t.slice(0,n>=0?n:t.length).trim()}" does not use a known arrow`,e.line,e.column+i,`Arrows: ${Ds}.`)};m(c,u),m(s,l);let h=this.use(s,e,0),g=this.use(c,e,u);f&&this.deactivate(h,e),d&&this.activate(g);for(let e of[h,g])this.pendingDestroy.has(e)&&(this.pendingDestroy.delete(e),this.destroyed.add(e));let _={kind:`message`,from:h,to:g,line:o.arrow.line,head:o.arrow.head,bidirectional:o.arrow.both,text:i,activateTarget:d,deactivateSource:f,sourceLine:e.line};this.numbering&&(_.number=this.numbering.next,this.numbering.next+=this.numbering.step),this.diagram.events.push(_)}};function Ps(e){let t=new Ns(js(q(e))).run();if(t.participants.length===0)throw new L(`The sequence diagram has no participants`,0,0,`Add a message such as A->>B: Hello`);return t}var Fs=9;function Is(e){switch(e){case`arrow`:return`arrow`;case`open`:return`open-arrow`;case`cross`:return`cross`;default:return null}}function Ls(e){let t=e.x,n=e.top,r=`dg-actor-figure`;switch(e.kind){case`boundary`:return[B(`path`,{class:`${r} dg-actor-limbs`,d:new H().moveTo(t-16,n+5).lineTo(t-16,n+29).moveTo(t-16,n+17).lineTo(t-7,n+17).toString()}),B(`circle`,{class:r,cx:t+5,cy:n+17,r:12})];case`control`:return[B(`circle`,{class:r,cx:t,cy:n+19,r:12}),B(`path`,{class:`${r} dg-actor-limbs`,d:new H().moveTo(t+5,n+3).lineTo(t-1,n+7).lineTo(t+5,n+11).toString()})];case`entity`:return[B(`circle`,{class:r,cx:t,cy:n+15,r:12}),B(`line`,{class:r,x1:t-12,y1:n+30,x2:t+12,y2:n+30})];case`database`:{let e=t-14,i=n+2;return[B(`path`,{class:r,d:new H().moveTo(e,i+5).arcTo(14,5,0,!1,!1,e+28,i+5).lineTo(e+28,i+30-5).arcTo(14,5,0,!1,!0,e,i+30-5).close().toString()}),B(`path`,{class:`${r} dg-actor-limbs`,d:new H().moveTo(e,i+5).arcTo(14,5,0,!1,!0,e+28,i+5).toString()})]}case`collections`:return[B(`rect`,{class:r,x:t-10,y:n+4,width:26,height:20}),B(`rect`,{class:r,x:t-16,y:n+10,width:26,height:20})];case`queue`:{let e=t-20,i=n+6;return[B(`path`,{class:r,d:new H().moveTo(e+5,i).lineTo(e+40-5,i).arcTo(5,11,0,!1,!0,e+40-5,i+22).lineTo(e+5,i+22).arcTo(5,11,0,!1,!0,e+5,i).close().toString()}),B(`path`,{class:`${r} dg-actor-limbs`,d:new H().moveTo(e+40-5,i).arcTo(5,11,0,!1,!1,e+40-5,i+22).toString()})]}default:return[]}}function Rs(e){if(e.kind!==`actor`&&e.kind!==`participant`)return B(`g`,{class:`dg-actor dg-actor-${e.kind}`},[...Ls(e),Z(e.label,e.x,e.top+34+4+e.label.height/2,{className:`dg-actor-label`})]);if(e.kind===`actor`){let t=e.x,n=e.top,r=n+14,i=r+13,a=n+34,o=new H().moveTo(t,r).lineTo(t,i).moveTo(t-12,r+5).lineTo(t+12,r+5).moveTo(t,i).lineTo(t-10,a).moveTo(t,i).lineTo(t+10,a);return B(`g`,{class:`dg-actor`},[B(`circle`,{class:`dg-actor-figure`,cx:t,cy:n+7,r:7}),B(`path`,{class:`dg-actor-figure dg-actor-limbs`,d:o.toString()}),Z(e.label,t,a+4+e.label.height/2,{className:`dg-actor-label`})])}return B(`g`,{class:`dg-actor`},[B(`rect`,{class:`dg-actor-box`,x:e.x-e.width/2,y:e.top,width:e.width,height:e.height,rx:4,ry:4}),Z(e.label,e.x,e.top+e.height/2,{className:`dg-actor-label`})])}function zs(e){let t=[B(`rect`,{class:`dg-block`,x:e.left,y:e.top,width:e.right-e.left,height:e.bottom-e.top})];for(let n of e.sections)t.push(B(`line`,{class:`dg-block-sep`,x1:e.left,y1:n.y,x2:e.right,y2:n.y}));return B(`g`,{class:`dg-frame dg-frame-${e.block}`},t)}function Bs(e){let t=[];if(e.tab){let n=e.tabWidth,r=[[e.left,e.top],[e.left+n,e.top],[e.left+n,e.top+20-6],[e.left+n-6,e.top+20],[e.left,e.top+20]].map(([e,t])=>`${Math.round(e*100)/100},${Math.round(t*100)/100}`).join(` `);t.push(B(`polygon`,{class:`dg-block-tab`,points:r}),Z(e.tab,e.left+n/2,e.top+10,{className:`dg-block-label`}))}e.guard&&t.push(Z(e.guard,e.left+e.tabWidth+8,e.top+Math.max(20,e.guard.height)/2,{anchor:`start`,className:`dg-block-guard`}));for(let n of e.sections)n.guard&&t.push(Z(n.guard,(e.left+e.right)/2,n.y+4+n.guard.height/2,{className:`dg-block-guard`}));return B(`g`,{class:`dg-frame-labels dg-frame-${e.block}`},t.filter(e=>!!e))}function Vs(e,t){let n=Is(e.head),r=n?`url(#${ra(t,n)})`:void 0,i=n&&e.bidirectional?`url(#${ra(t,n,!0)})`:void 0,a=`dg-message${e.line===`dotted`?` dg-message-dotted`:``}`,o=[];if(e.self){let t=new H().moveTo(e.x1,e.y).lineTo(e.loopRight,e.y).lineTo(e.loopRight,e.y2).lineTo(e.x2,e.y2);o.push(B(`path`,{class:a,d:t.toString(),"marker-end":r,"marker-start":i}))}else o.push(B(`line`,{class:a,x1:e.x1,y1:e.y,x2:e.x2,y2:e.y,"marker-end":r,"marker-start":i}));return e.label&&o.push(Z(e.label,e.labelX,e.labelY,{anchor:e.anchor,className:`dg-message-text`})),e.number!==void 0&&o.push(B(`circle`,{class:`dg-number`,cx:e.x1,cy:e.y,r:Fs}),B(`text`,{class:`dg-number-text`,x:e.x1,y:e.y,"text-anchor":`middle`,"dominant-baseline":`central`},[je(String(e.number))])),B(`g`,{class:`dg-message-group`},o)}function Hs(e,t,n,r){let i=new Set;for(let t of e.messages){let e=Is(t.head);e&&i.add(e)}let a=[B(`g`,{class:`dg-groups`},e.groups.map(e=>B(`g`,{class:`dg-group`},[B(`rect`,{class:`dg-group-box`,x:e.left,y:e.top,width:e.right-e.left,height:e.bottom-e.top,rx:4,style:e.color?`fill:${e.color}`:void 0}),e.label?Z(e.label,(e.left+e.right)/2,e.top+4+e.label.height/2,{className:`dg-group-label`}):null]))),B(`g`,{class:`dg-rects`},e.rects.map(e=>B(`rect`,{class:`dg-rect`,x:e.left,y:e.top,width:e.right-e.left,height:e.bottom-e.top,style:e.color?`fill:${e.color}`:void 0}))),B(`g`,{class:`dg-lifelines`},e.lifelines.filter(e=>e.y2>e.y1).map(e=>B(`line`,{class:`dg-lifeline`,x1:e.x,y1:e.y1,x2:e.x,y2:e.y2}))),B(`g`,{class:`dg-frames`},e.frames.map(zs)),B(`g`,{class:`dg-activations`},e.activations.map(e=>B(`rect`,{class:`dg-activation`,x:e.left,y:e.top,width:10,height:e.bottom-e.top}))),B(`g`,{class:`dg-frame-label-layer`},e.frames.map(Bs)),B(`g`,{class:`dg-messages`},e.messages.map(e=>Vs(e,t))),B(`g`,{class:`dg-notes`},e.notes.map(e=>B(`g`,{class:`dg-note-group`},[B(`rect`,{class:`dg-note`,x:e.left,y:e.top,width:e.width,height:e.height,rx:2}),Z(e.label,e.left+e.width/2,e.top+e.height/2,{className:`dg-note-text`})]))),B(`g`,{class:`dg-crosses`},e.crosses.map(e=>B(`path`,{class:`dg-destroy`,d:new H().moveTo(e.x-9,e.y-9).lineTo(e.x+9,e.y+9).moveTo(e.x-9,e.y+9).lineTo(e.x+9,e.y-9).toString()}))),B(`g`,{class:`dg-actors`},e.actors.map(Rs))];e.dividers.length>0&&a.push(B(`g`,{class:`dg-dividers`},e.dividers.map(t=>{let n=(e.span.left+e.span.right)/2,r=(t.label?.width??0)+20,i=(t.label?.height??0)+8;return B(`g`,{class:`dg-divider`},[B(`line`,{class:`dg-divider-line`,x1:e.span.left,y1:t.y-1.5,x2:e.span.right,y2:t.y-1.5}),B(`line`,{class:`dg-divider-line`,x1:e.span.left,y1:t.y+1.5,x2:e.span.right,y2:t.y+1.5}),t.label?B(`rect`,{class:`dg-divider-box`,x:n-r/2,y:t.y-i/2,width:r,height:i,rx:3}):null,t.label?Z(t.label,n,t.y,{className:`dg-divider-text`}):null])}))),e.delays.some(e=>e.label)&&a.push(B(`g`,{class:`dg-delays`},e.delays.filter(e=>e.label).map(t=>Z(t.label,(e.span.left+e.span.right)/2,t.y,{className:`dg-delay-text`}))));let o=[];e.title&&o.push(Z(e.title.label,e.title.x,e.title.y,{className:`dg-title`})),o.push(B(`g`,{transform:`translate(${Math.round(e.offsetX*100)/100},0)`},a));let s=`#${t}`,c=[`${s} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`,`${s} .dg-actor-box{fill:${z(`--dg-actor-fill`)};stroke:${z(`--dg-actor-stroke`)};stroke-width:1.5px}`,`${s} .dg-actor-figure{fill:${z(`--dg-actor-fill`)};stroke:${z(`--dg-actor-stroke`)};stroke-width:1.5px}`,`${s} .dg-actor-limbs{fill:none}`,`${s} .dg-actor-label{fill:${z(`--dg-text`)}}`,`${s} .dg-lifeline{stroke:${z(`--dg-lifeline`)};stroke-width:1px;stroke-dasharray:4 3}`,`${s} .dg-activation{fill:${z(`--dg-activation-fill`)};stroke:${z(`--dg-actor-stroke`)};stroke-width:1px}`,`${s} .dg-message{fill:none;stroke:${z(`--dg-line`)};stroke-width:1.5px}`,`${s} .dg-message-dotted{stroke-dasharray:4 3}`,`${s} .dg-message-text{fill:${z(`--dg-text`)}}`,`${s} .dg-number{fill:${z(`--dg-line`)}}`,`${s} .dg-number-text{fill:${z(`--dg-number-text`)};font-size:11px;font-weight:bold}`,`${s} .dg-note{fill:${z(`--dg-note-fill`)};stroke:${z(`--dg-note-stroke`)};stroke-width:1px}`,`${s} .dg-note-text{fill:${z(`--dg-note-text`)}}`,`${s} .dg-block{fill:none;stroke:${z(`--dg-block-stroke`)};stroke-width:1.5px}`,`${s} .dg-block-tab{fill:${z(`--dg-block-label-fill`)};stroke:${z(`--dg-block-stroke`)};stroke-width:1px}`,`${s} .dg-block-label{fill:${z(`--dg-text`)};font-size:13px;font-weight:bold}`,`${s} .dg-block-guard{fill:${z(`--dg-text-muted`)};font-size:13px}`,`${s} .dg-block-sep{stroke:${z(`--dg-block-stroke`)};stroke-width:1px;stroke-dasharray:4 3}`,`${s} .dg-rect{fill:${z(`--dg-rect-fill`)}}`,`${s} .dg-group-box{fill:none;stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${s} .dg-group-label{fill:${z(`--dg-cluster-text`)};font-weight:600}`,`${s} .dg-destroy{fill:none;stroke:${z(`--dg-line`)};stroke-width:2px}`,...e.dividers.length>0?[`${s} .dg-divider-line{stroke:${z(`--dg-block-stroke`)};stroke-width:1px}`,`${s} .dg-divider-box{fill:${z(`--dg-block-label-fill`)};stroke:${z(`--dg-block-stroke`)};stroke-width:1px}`,`${s} .dg-divider-text{fill:${z(`--dg-text`)};font-size:13px;font-weight:bold}`]:[],...e.delays.some(e=>e.label)?[`${s} .dg-delay-text{fill:${z(`--dg-text-muted`)};font-size:13px;font-style:italic}`]:[]].join(``);return U({id:t,type:`sequence`,width:e.width,height:e.height,title:n,description:r,defs:ia(t,i),body:o,css:c})}function Us(e,t,n,r){return Hs(ws(e,t),n,r??e.accessibility.title??e.title??`Sequence diagram`,e.accessibility.description)}var Ws=16;function Gs(e){switch(e){case`start`:return`start`;case`end`:return`end`;case`choice`:return`choice`;case`fork`:case`join`:return`fork`;default:return`round`}}function Ks(e,t,n){return Ge(n.get(`default`),...e.map(e=>n.get(e)),t)}function qs(e,t,n,r){let i=e.direction===`LR`||e.direction===`RL`,a={...R,weight:`bold`},o=new Map;for(let n of e.states.values())if(n.kind===`state`){if(n.descriptions.length===0){let e=X(Y(n.name),R,t),r=fo(`round`,e.width,e.height);o.set(n.id,{title:e,width:Math.max(r.width,60),height:r.height})}else{let e=X(Y(n.name),a,t),r=X(Y(n.descriptions.join(`<br>`)),R,t);o.set(n.id,{title:e,body:r,width:Math.max(e.width,r.width,40)+32,height:e.height+r.height+27})}}let s=e=>{if(e.kind===`state`)return o.get(e.id);let t=fo(Gs(e.kind),0,0);return(e.kind===`fork`||e.kind===`join`)&&i?{width:t.height,height:t.width}:t},c=e.notes.map(e=>X(en(e.text),R,t)),l=new Map,u=[];e.notes.forEach((t,n)=>{if(e.composites.has(t.target)){u.push(n);return}let r=c[n],a=(i?r.height:r.width)+16+Ws;l.set(t.target,Math.max(l.get(t.target)??0,a))});let d=[...e.states.values()].map(t=>{let n=s(t),r=l.get(t.id)??0,a=Math.max(0,...e.notes.map((e,n)=>e.target===t.id?(i?c[n].width:c[n].height)+16:0));return i?{id:t.id,width:Math.max(n.width,a),height:n.height+r*2,cluster:t.parent}:{id:t.id,width:n.width+r*2,height:Math.max(n.height,a),cluster:t.parent}});for(let t of u){let n=c[t];d.push({id:`\u0000note${t}`,width:n.width+16,height:n.height+16,cluster:e.composites.get(e.notes[t].target).parent})}let f=new Map,p=[...e.composites.values()].map(e=>{!e.region&&e.name!==``&&f.set(e.id,X(Y(e.name),a,t));let n=f.get(e.id);return{id:e.id,parent:e.parent,direction:e.direction,label:n?{width:n.width,height:n.height}:void 0}}),m=new Map,h=e.transitions.map((e,n)=>{let r;if(e.label){let i=X(Y(e.label),R,t);m.set(n,i),r={width:i.width+8,height:i.height+4}}return{id:String(n),from:e.from,to:e.to,label:r}});for(let t of u)h.push({id:`note${t}`,from:`\u0000note${t}`,to:e.notes[t].target,weight:0});let g=Xo({direction:e.direction,nodes:d,edges:h,clusters:p,nodeSep:40,rankSep:40,clusterPadding:14}),_=e=>{let t=g.nodes.get(e.id),n=s(e);return{x:t.x,y:t.y,width:n.width,height:n.height}},v=t=>{let n=0,r=e.composites.get(t)?.parent;for(;r;)n++,r=e.composites.get(r)?.parent;return n},y=[...e.composites.values()].sort((e,t)=>v(e.id)-v(t.id)).map(t=>{let n=g.clusters.get(t.id),r=Ks(t.classes,t.style,e.classDefs),i=n.x-n.width/2,a=n.y-n.height/2;if(t.region)return B(`rect`,{class:`dg-state-region`,x:i,y:a,width:n.width,height:n.height,rx:4});let o=f.get(t.id),s=o?o.height+10:0;return B(`g`,{class:`dg-cluster dg-state-composite`,"data-id":t.id},[B(`rect`,{class:`dg-cluster-box`,x:i,y:a,width:n.width,height:n.height,rx:8,style:G(r.shape)}),o?B(`line`,{class:`dg-state-divider`,x1:i,y1:a+s,x2:i+n.width,y2:a+s}):null,o?Z(o,n.x,a+s/2,{className:`dg-cluster-label`,style:G(r.text)}):null])}),b=t=>{let n=e.states.get(t);if(n){let e=_(n);return{box:e,clip:t=>ho(Gs(n.kind),e,t)}}let r=g.clusters.get(t)??g.nodes.get(t);return{box:r,clip:e=>$a(r,e)}},x=[],S=[];e.transitions.forEach((e,t)=>{let r=g.edges.get(String(t));if(!r)return;let i;if(r.selfLoop)i=r.points;else{let t=b(e.from),n=b(e.to);i=[r.start??t.clip(r.points[0]??n.box),...r.points,r.end??n.clip(r.points[r.points.length-1]??t.box)]}x.push(B(`path`,{class:`dg-edge`,d:ro(i),"marker-end":`url(#${ra(n,`arrow`)})`}));let a=m.get(t);if(a&&r.label){let e=a.width+8,t=a.height+4;S.push(B(`g`,{},[B(`rect`,{class:`dg-edge-label-box`,x:r.label.x-e/2,y:r.label.y-t/2,width:e,height:t,rx:3}),Z(a,r.label.x,r.label.y,{className:`dg-edge-label`})]))}});let C=[];e.notes.forEach((t,n)=>{let r=c[n],a=r.width+16,o=r.height+16,s,l,u=e.states.get(t.target);if(u){let e=_(u),n=t.side===`left`?-1:1;if(i){let t=e.height/2+Ws+o/2;s={x:e.x,y:e.y+n*t,width:a,height:o},l={x:e.x,y:e.y+n*e.height/2}}else{let t=e.width/2+Ws+a/2;s={x:e.x+n*t,y:e.y,width:a,height:o},l={x:e.x+n*e.width/2,y:e.y}}}else s=g.nodes.get(`\u0000note${n}`),l=$a(g.clusters.get(t.target),s);let d=$a(s,l);C.push(B(`g`,{class:`dg-note`},[B(`line`,{class:`dg-note-link`,x1:d.x,y1:d.y,x2:l.x,y2:l.y}),B(`rect`,{class:`dg-note-box`,x:s.x-a/2,y:s.y-o/2,width:a,height:o,rx:2}),Z(r,s.x,s.y,{className:`dg-note-text`})]))});let w=[...e.states.values()].map(t=>{let n=_(t),r=Ks(t.classes,t.style,e.classDefs);if(t.kind!==`state`)return B(`g`,{class:`dg-node dg-state-${t.kind}`,"data-id":t.kind===`start`||t.kind===`end`?void 0:t.id},[po(Gs(t.kind),n,{style:G(r.shape)})]);let i=o.get(t.id),a=[po(`round`,n,{style:G(r.shape)})];if(!i.body)a.push(Z(i.title,n.x,n.y,{style:G(r.text)}));else{let e=n.y-n.height/2,t=e+9+i.title.height/2,o=e+13.5+i.title.height;a.push(Z(i.title,n.x,t,{style:G(r.text)}),B(`line`,{class:`dg-state-divider`,x1:n.x-n.width/2,y1:o,x2:n.x+n.width/2,y2:o}),Z(i.body,n.x,o+9/2+i.body.height/2+9/2,{style:G(r.text)}))}return B(`g`,{class:[`dg-node`,`dg-state`,...t.classes.map(e=>`dg-class-${e.replace(/[^\w-]/g,``)}`)].join(` `),"data-id":t.id},a)}),T=[`#${n} .dg-state-start{fill:${z(`--dg-state-start`)};stroke:none}`,`#${n} .dg-state-end-ring{fill:none;stroke:${z(`--dg-state-start`)};stroke-width:1.5px}`,`#${n} .dg-state-divider{stroke:${z(`--dg-node-stroke`)};stroke-width:1px}`,`#${n} .dg-state-composite .dg-state-divider{stroke:${z(`--dg-cluster-stroke`)}}`,`#${n} .dg-state-region{fill:none;stroke:${z(`--dg-cluster-stroke`)};stroke-dasharray:5 4}`,`#${n} .dg-state-choice .dg-shape{fill:${z(`--dg-node-fill`)};stroke:${z(`--dg-node-stroke`)}}`,`#${n} .dg-note-box{fill:${z(`--dg-note-fill`)};stroke:${z(`--dg-note-stroke`)}}`,`#${n} .dg-note-text{fill:${z(`--dg-note-text`)}}`,`#${n} .dg-note-link{stroke:${z(`--dg-note-stroke`)};stroke-dasharray:3 3}`].join(``);return U({id:n,type:`state`,width:g.width,height:g.height,title:r??e.accessibility.title??`State diagram`,description:e.accessibility.description,defs:ia(n,[`arrow`]),body:[B(`g`,{class:`dg-clusters`},y),B(`g`,{class:`dg-edges`},x),B(`g`,{class:`dg-edge-labels`},S),B(`g`,{class:`dg-notes`},C),B(`g`,{class:`dg-nodes`},w)],css:T})}var Js=200,Ys=1e3;function Xs(e){let t=[],n=0;for(let r=0;r<=e.length;r++)if(r===e.length||e[r]===`:`&&(r+1===e.length||/\s/.test(e[r+1]))){let i=e.slice(n,r),a=i.trim();t.push({text:a,offset:a===``?Math.max(0,n-1):n+(i.length-i.trimStart().length)}),n=r+1}return t}function Zs(e,t,n){for(let r of t){if(r.text===``)throw new L(`An event is empty`,n.line,n.column+r.offset,`Write text after each ": "`);e.events.push(r.text)}}function Qs(e){let t=q(e),n=t[0],r=n?/^timeline\b\s*(.*)$/.exec(n.text):null;if(!n||!r)throw new L(`A timeline starts with "timeline"`,n?.line??1,1);let i=r[1].trim();if(i===`TD`||i===`TB`)throw new L(`Vertical timelines are not supported`,n.line,n.column+9,`Write "timeline" or "timeline LR"`);if(i!==``&&i!==`LR`)throw new L(`Unexpected "${i}" after "timeline"`,n.line,n.column+9);let a={type:`timeline`,sections:[],periods:[],accessibility:{}},o=0;for(let e=1;e<t.length;e++){let n=t[e],r=J(t,e,a.accessibility);if(r>0)e+=r-1;else if(/^title(\s|$)/.test(n.text)){let e=n.text.slice(5).trim();a.title=e===``?void 0:e}else if(/^section(\s|$)/.test(n.text)){let e=n.text.slice(7).trim();if(e===``)throw new L(`A section needs a name`,n.line,n.column,`Write section 2020s`);a.sections.push({label:e,line:n.line})}else{if(n.text.startsWith(`:`)){let e=a.periods[a.periods.length-1];if(!e)throw new L(`Events without a time period`,n.line,n.column,`Start with a period: 2024 : Event`);let t=Xs(n.text.slice(1)).map(e=>({...e,offset:e.offset+1}));Zs(e,t,n),o+=t.length}else{if(a.periods.length>=Js)throw new L(`The timeline has more than ${Js} time periods`,n.line,n.column,`Split it into several timelines.`);let[e,...t]=Xs(n.text),r={label:e.text,events:[],section:a.sections.length>0?a.sections.length-1:null,line:n.line};Zs(r,t,n),a.periods.push(r),o+=t.length}if(o>Ys)throw new L(`The timeline has more than ${Ys} events`,n.line,n.column,`Split it into several timelines.`)}}if(a.periods.length===0&&a.sections.length===0)throw new L(`The timeline has no time periods`,0,0,`Add lines like: 2024 : Event`);return a}var $s=168,ec=16,tc={...R,size:18,weight:`bold`},nc={...R,weight:`bold`},rc={...R,weight:`bold`},ic={...R,size:13},ac=1.08;function oc(e,t,n){return X(an(Y(e),144/ac,t,n),t,n)}function sc(e,t,n,r){let i=[],a=0,o=new Map,s=e=>{if(e===null)return a++;let t=o.get(e);return t===void 0&&(t=a++,o.set(e,t)),t},c=0,l=e.periods;for(;c<l.length&&l[c].section===null;)i.push({period:l[c],section:null,colour:s(null)}),c++;e.sections.forEach((e,t)=>{let n=i.length;for(;c<l.length&&l[c].section===t;)i.push({period:l[c],section:t,colour:s(t)}),c++;i.length===n&&i.push({period:null,section:t,colour:s(t)})});let u=e.sections.length>0,d=e=>e*184,f=Math.max(i.length*184-ec,0),p=e.title?X(Y(e.title),tc,t):null,m=e.sections.map((e,n)=>{let r=i.flatMap((e,t)=>e.section===n?[t]:[]),a=r[0],s=r[r.length-1],c=d(s)+$s-d(a),l=X(an(Y(e.label),(c-24)/ac,nc,t),nc,t);return{x:d(a),width:c,label:l,colour:o.get(n)}}),h=i.map(e=>e.period?oc(e.period.label,rc,t):null),g=i.map(e=>e.period?e.period.events.map(e=>oc(e,ic,t)):[]),_=p?p.height+16:0,v=u?Math.max(34,...m.map(e=>e.label.height+16)):0,y=Math.max(40,...h.map(e=>e?e.height+20:0)),b=_,x=b+(u?v+12:0),S=x+y,C=S+24,w=C+24,T=[],E=[];for(let e of m)E.push(B(`g`,{class:`dg-node dg-tl-section`},[B(`rect`,{class:`dg-tl-section-box`,x:e.x,y:b,width:e.width,height:v,rx:6,style:`fill:${Oe(e.colour)}`}),Z(e.label,e.x+e.width/2,b+v/2,{className:`dg-tl-section-text`})]));let D=f+18;T.push(B(`line`,{class:`dg-tl-axis`,x1:-6,y1:C,x2:D-8,y2:C}),B(`polygon`,{class:`dg-tl-arrow`,points:`${V(D-10)},${V(C-6)} ${V(D)},${V(C)} ${V(D-10)},${V(C+6)}`}));let O=C+8;i.forEach((e,t)=>{if(!e.period)return;let n=d(t),r=n+$s/2,i=Oe(e.colour),a=h[t],o=!u;E.push(B(`g`,{class:`dg-node dg-tl-period`,"data-line":e.period.line},[B(`rect`,{class:o?`dg-tl-period-box dg-tl-solid`:`dg-tl-period-box`,x:n,y:x,width:$s,height:y,rx:6,style:o?`fill:${i}`:`fill:${i};stroke:${i}`}),Z(a,r,x+y/2,{className:o?`dg-tl-period-text dg-tl-on-solid`:`dg-tl-period-text`})]));let s=g[t],c=s.length>0?w:C;T.push(B(`line`,{class:`dg-tl-connector`,x1:r,y1:S,x2:r,y2:c,style:`stroke:${i}`})),E.push(B(`circle`,{class:`dg-tl-dot`,cx:r,cy:C,r:5,style:`fill:${i}`}));let l=w;s.forEach((e,t)=>{let a=Math.max(32,e.height+14);t>0&&T.push(B(`line`,{class:`dg-tl-connector`,x1:r,y1:l-10,x2:r,y2:l,style:`stroke:${i}`})),E.push(B(`g`,{class:`dg-node dg-tl-event`},[B(`rect`,{class:`dg-tl-event-box`,x:n,y:l,width:$s,height:a,rx:6,style:`fill:${i};stroke:${i}`}),Z(e,r,l+a/2,{className:`dg-tl-event-text`})])),l+=a+10}),O=Math.max(O,l-10)});let k=D+12,A=Math.max(k,p?p.width:0),j=6+(A-k)/2,M=[];p&&M.push(Z(p,A/2,p.height/2,{className:`dg-title`})),M.push(B(`g`,{transform:`translate(${V(j)},0)`},[...T,...E]));let N=`#${n}`,P=[`${N} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`,`${N} .dg-tl-section-text{fill:${z(`--dg-pie-text`)};font-weight:bold}`,`${N} .dg-tl-period-box{fill-opacity:0.2;stroke-width:1.5px}`,`${N} .dg-tl-period-box.dg-tl-solid{fill-opacity:1;stroke:none}`,`${N} .dg-tl-period-text{fill:${z(`--dg-text`)};font-weight:bold}`,`${N} .dg-tl-on-solid{fill:${z(`--dg-pie-text`)}}`,`${N} .dg-tl-event-box{fill-opacity:0.08;stroke-opacity:0.6;stroke-width:1px}`,`${N} .dg-tl-event-text{fill:${z(`--dg-text`)};font-size:13px}`,`${N} .dg-tl-axis{stroke:${z(`--dg-line`)};stroke-width:2px}`,`${N} .dg-tl-arrow{fill:${z(`--dg-line`)}}`,`${N} .dg-tl-connector{stroke-width:1.5px;stroke-dasharray:4 3;stroke-opacity:0.8}`].join(``);return U({id:n,type:`timeline`,width:A,height:O,title:r??e.accessibility.title??e.title??`Timeline`,description:e.accessibility.description,body:M,css:P})}var cc=/[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?/,lc=RegExp(`^(${cc.source})\\s*-->\\s*(${cc.source})$`),uc=1e3;function dc(e,t,n){let r=e.length-e.trimStart().length,i=e.trimStart();if(i.startsWith(`"`)){let e=i.indexOf(`"`,1);if(e<0)throw new L(`The quoted text is not closed`,t.line,t.column+n+r,`Add the closing "`);let a=i.slice(1,e);a.startsWith("`")&&a.endsWith("`")&&a.length>=2&&(a=a.slice(1,-1));let o=i.slice(e+1);return{title:a,rest:o,restOffset:n+r+e+1}}return{rest:e,restOffset:n}}function fc(e){let t=[],n=!1,r=0;for(let i=0;i<=e.length;i++){let a=e[i];if(a===`"`&&(n=!n),i===e.length||a===`,`&&!n){let n=e.slice(r,i);t.push({text:n.trim(),offset:r+(n.length-n.trimStart().length)}),r=i+1}}return t}function pc(e,t,n){let r=e.indexOf(`[`);if(r<0)return null;let i=e.trimEnd();if(!i.endsWith(`]`))throw new L(`The list is not closed`,t.line,t.column+n+r,`End it with "]"`);let a=i.slice(r+1,-1),o=a.trim()===``?[]:fc(a).map(e=>({...e,offset:n+r+1+e.offset}));return{before:e.slice(0,r),items:o}}function mc(e){if(!RegExp(`^${cc.source}$`).exec(e))return null;let t=Number(e);return Number.isFinite(t)?t:null}function hc(e){let t=e.trim();return t===``?void 0:t}function gc(e,t){let n=t.length,{title:r,rest:i,restOffset:a}=dc(e.text.slice(n),e,n),o=pc(i,e,a);if(o){if(t===`y-axis`)throw new L(`The y axis is numeric and has no categories`,e.line,e.column,`Write y-axis "Title" 0 --> 100`);let n=r??hc(o.before);if(r!==void 0&&o.before.trim()!==``)throw new L(`Unexpected "${o.before.trim()}"`,e.line,e.column+a);let i=o.items.map(t=>{if(t.text===``)throw new L(`A category is empty`,e.line,e.column+t.offset,`Remove the extra comma`);return t.text.length>=2&&t.text.startsWith(`"`)&&t.text.endsWith(`"`)?t.text.slice(1,-1):t.text});if(i.length===0)throw new L(`The x axis has no categories`,e.line,e.column,`List them: x-axis [a, b, c]`);return{kind:`band`,title:n,categories:i}}let s=i.trim(),c=/(\S+)\s*-->\s*(\S+)\s*$/.exec(s);if(c){let t=e.column+a+(i.length-i.trimStart().length)+c.index,n=lc.exec(c[0].trim());if(!n)throw new L(`"${c[0].trim()}" is not a range of numbers`,e.line,t,`Write min --> max, e.g. 0 --> 100`);let o=Number(n[1]),l=Number(n[2]);if(!(l>o))throw new L(`The end of the range must be greater than its start`,e.line,t);let u=s.slice(0,c.index);if(r!==void 0&&u.trim()!==``)throw new L(`Unexpected "${u.trim()}"`,e.line,e.column+a);return{kind:`linear`,title:r??hc(u),min:o,max:l}}if(r!==void 0&&s!==``)throw new L(`Unexpected "${s}"`,e.line,e.column+a+(i.length-i.trimStart().length));return{kind:`linear`,title:r??hc(s)}}function _c(e,t){let n=t.length,{title:r,rest:i,restOffset:a}=dc(e.text.slice(n),e,n),o=pc(i,e,a);if(!o)throw new L(`A ${t} series needs its values in brackets`,e.line,e.column,`Write ${t} [1, 2, 3]`);if(r!==void 0&&o.before.trim()!==``)throw new L(`Unexpected "${o.before.trim()}"`,e.line,e.column+a);let s=o.items.map(t=>{let n=mc(t.text);if(n===null)throw new L(`"${t.text}" is not a number`,e.line,e.column+t.offset,`Values are plain numbers: 12, -3.5, .25`);return n});if(s.length===0)throw new L(`The ${t} series has no values`,e.line,e.column,`Write ${t} [1, 2, 3]`);if(s.length>uc)throw new L(`The series has ${s.length} values; the limit is ${uc}`,e.line,e.column);return{kind:t,title:r??hc(o.before),values:s,line:e.line,column:e.column}}function vc(e){let t=q(e),n=t[0],r=n?/^(xychart-beta|xychart)\b\s*(.*)$/.exec(n.text):null;if(!n||!r)throw new L(`An XY chart starts with "xychart-beta"`,n?.line??1,1);let i={type:`xychart`,horizontal:!1,yAxis:{kind:`linear`},series:[],accessibility:{}},a=r[2].trim();if(a===`horizontal`)i.horizontal=!0;else if(a!==``&&a!==`vertical`)throw new L(`Unexpected "${a}" after "${r[1]}"`,n.line,n.column+r[1].length+1,`Write "horizontal", or nothing`);let o=null,s=null;for(let e=1;e<t.length;e++){let n=t[e],r=J(t,e,i.accessibility);if(r>0){e+=r-1;continue}let a=/^(title|x-axis|y-axis|bar|line)\b/.exec(n.text)?.[1];switch(a){case`title`:{let{title:e,rest:t}=dc(n.text.slice(5),n,5),r=e??t.trim();if(e!==void 0&&t.trim()!==``)throw new L(`Unexpected "${t.trim()}"`,n.line,n.column+n.text.indexOf(t.trim(),6));i.title=r===``?void 0:r;break}case`x-axis`:case`y-axis`:{let e=a===`x-axis`?o:s;if(e)throw new L(`The ${a} is already declared on line ${e.line}`,n.line,n.column,`Declare each axis once`);let t=gc(n,a);a===`x-axis`?(i.xAxis=t,o=n):(i.yAxis=t,s=n);break}case`bar`:case`line`:i.series.push(_c(n,a));break;default:throw new L(`"${n.text}" is not an XY chart statement`,n.line,n.column,`Expected title, x-axis, y-axis, bar or line`)}}if(i.series.length===0)throw new L(`The chart has no data`,0,0,`Add a series: bar [1, 2, 3] or line [1, 2, 3]`);let c=i.xAxis,l=c?.kind===`band`?c.categories.length:i.series[0].values.length;for(let e of i.series)if(e.values.length!==l){let t=c?.kind===`band`?`the x axis has ${l} categories`:`the first series has ${l}`;throw new L(`The ${e.kind} series has ${e.values.length} values, but ${t}`,e.line,e.column,`Give every series one value per point`)}return i}var yc=[1,2,2.5,5,10];function bc(e,t){let n=e/Math.max(1,t),r=10**Math.floor(Math.log10(n));for(let e of yc)if(e*r>=n*(1-1e-9))return e*r;return 10*r}function xc(e){for(let t=0;t<12;t++){let n=e*10**t;if(Math.abs(n-Math.round(n))<1e-6*Math.max(1,n))return t}return 12}function Sc(e,t){return Number(e.toFixed(t))}function Cc(e,t,n,r){let i=e,a=t;if(a<=i){let e=i===0?1:Math.abs(i)/2;i-=e,a+=e}let o=bc(a-i,n),s=xc(o);r&&(i=Sc(Math.floor(i/o+1e-9)*o,s),a=Sc(Math.ceil(a/o-1e-9)*o,s));let c=[],l=Math.ceil(i/o-1e-9),u=Math.floor(a/o+1e-9);for(let e=l;e<=u&&c.length<=1e3;e++)c.push(Sc(e*o,s));return{min:i,max:a,step:o,values:c}}var wc=[[0xe8d4a51000,`T`],[1e9,`B`],[1e6,`M`],[1e3,`k`]];function Tc(e,t){let n=Math.max(0,...e.map(Math.abs)),r=1,i=``;for(let[e,a]of wc)if(n>=e*10&&t>=e/10){r=e,i=a;break}let a=xc(t/r);return e=>e===0?`0`:Ec(e/r,a)+i}function Ec(e,t){let n=Math.abs(e).toFixed(t);return(e<0&&Number(n)!==0?`−`:``)+n}var Dc={...R,size:18,weight:`bold`},Oc={...R,size:13,weight:`bold`},kc={...R,size:12},Ac={...R,size:13},jc=8,Mc=12,Nc=Math.SQRT1_2;function Pc(e,t,n){let r=Y(e);return X(n?an(r,n,kc,t):r,kc,t)}function Fc(e,t,n,r){let i=e.horizontal,a=e.series[0].values.length,o=e.series.filter(e=>e.kind===`bar`),s=e.series.filter(e=>e.kind===`line`),c=e.xAxis,l=c?.kind===`linear`&&c.min!==void 0&&c.max!==void 0?{min:c.min,max:c.max}:null,u=c?.kind===`band`?c.categories:Array.from({length:a},(e,t)=>String(t+1)),d=l?[]:u.map(e=>Pc(e,t,i?160:void 0)),f;if(i){let e=Math.max(0,...d.map(e=>e.height)),t=l?0:Math.max(30,o.length*14+12,e+10);f=l?320:Math.min(Math.max(a*t,120),1600)}else f=l?600:Math.min(Math.max(a*60,400),800);let p=i?520:320,m=f/a,h=e.series.flatMap(e=>e.values),g=e.yAxis,_=g.min!==void 0&&g.max!==void 0,v=Math.min(...h),y=Math.max(...h);o.length>0&&(v=Math.min(v,0),y=Math.max(y,0));let b=i?Math.max(2,Math.floor(p/90)):Math.max(2,Math.floor(p/45)),x=_?Cc(g.min,g.max,b,!1):Cc(v,y,b,!0),S=_?g.min:x.min,C=_?g.max:x.max,w=Tc(x.values,x.step),T=e=>(e-S)/(C-S)*p,E=l&&o.length>0?m/2:0,D=e=>E+(e-l.min)/(l.max-l.min)*(f-E*2),O=e=>{if(!l)return(e+.5)*m;let t=a===1?(l.min+l.max)/2:l.min+e*(l.max-l.min)/(a-1);return D(t)},k=l?(()=>{let e=Cc(l.min,l.max,Math.max(2,Math.floor(f/(i?40:70))),!1),n=Tc(e.values,e.step);return e.values.map(e=>({measured:X(en(n(e)),kc,t),at:D(e)}))})():d.map((e,t)=>({measured:e,at:O(t)})),A=x.values.map(e=>({measured:X(en(w(e)),kc,t),at:T(e)})),j=!i&&!l&&d.some(e=>e.width>m-6),M=e.title?X(Y(e.title),Dc,t):null,N=c?.title?X(Y(c.title),Oc,t):null,P=g.title?X(Y(g.title),Oc,t):null,ee=e.series.map((e,t)=>({series:e,index:t})).filter(e=>e.series.title!==void 0).map(e=>({...e,measured:X(Y(e.series.title),Ac,t)})),te,ne,F=0;if(i){let e=Math.max(0,...k.map(e=>e.measured.width));te=(N?N.height+jc:0)+e+jc,ne=jc+Math.max(0,...A.map(e=>e.measured.height))+(P?jc+P.height:0);let t=A[A.length-1];t&&(F=Math.max(0,t.at+t.measured.width/2-p))}else{let e=Math.max(0,...A.map(e=>e.measured.width));te=(P?P.height+jc:0)+e+jc;let t;if(j){t=Math.max(...d.map(e=>(e.width+e.height/2)*Nc))+Math.max(...d.map(e=>e.height))*Nc;let e=d[0];te=Math.max(te,(e.width+e.height/2)*Nc-m/2+4)}else{t=Math.max(0,...k.map(e=>e.measured.height));let e=k[k.length-1];e&&(F=Math.max(0,e.at+e.measured.width/2-f));let n=k[0];n&&(te=Math.max(te,n.measured.width/2-n.at))}ne=jc+t+(N?jc+N.height:0)}let re=i?p:f,ie=i?f:p,I=[],ae=e=>18+e.measured.width,oe=Math.max(re,200);for(let e of ee){let t=I[I.length-1];t&&t.width+20+ae(e)<=oe?(t.items.push(e),t.width+=20+ae(e)):I.push({items:[e],width:ae(e)})}let se=I.length>0?I.length*20+jc:0,ce=M?M.height+12:0,le=te,ue=ce+se+6,de=le+re,fe=ue+ie,pe=de+F,me=fe+ne,he=(e,t)=>i?{x:le+t,y:ue+e}:{x:le+e,y:fe-t},ge=[],_e=[],ve=[];ge.push(B(`g`,{class:`dg-xy-grid`},A.map(e=>{let t=he(0,e.at),n=he(f,e.at);return B(`line`,{x1:t.x,y1:t.y,x2:n.x,y2:n.y})})));let ye=T(Math.min(Math.max(0,S),C));{let e=he(0,ye),t=he(f,ye);ve.push(B(`line`,{class:`dg-xy-axis`,x1:e.x,y1:e.y,x2:t.x,y2:t.y}))}l&&ve.push(B(`g`,{class:`dg-xy-tick`},k.map(e=>{let t=he(e.at,ye);return i?B(`line`,{x1:t.x-4,y1:t.y,x2:t.x,y2:t.y}):B(`line`,{x1:t.x,y1:t.y,x2:t.x,y2:t.y+4})})));let be=m*(o.length>1?.8:.66),xe=o.length>1?Math.min(4,be/o.length*.15):0,Se=(be-xe*(o.length-1))/Math.max(1,o.length);o.forEach((t,n)=>{let r=e.series.indexOf(t);_e.push(B(`g`,{class:`dg-xy-bars dg-xy-series-${r}`},t.values.map((e,t)=>{let a=O(t)-be/2+n*(Se+xe),o=Math.min(ye,T(e)),s=Math.max(ye,T(e)),c=i?he(a,o):he(a,s);return B(`rect`,{class:`dg-xy-bar`,x:c.x,y:c.y,width:i?s-o:Se,height:i?Se:s-o,style:`fill:${Oe(r)}`})})))});for(let t of s){let n=e.series.indexOf(t),r=t.values.map((e,t)=>he(O(t),T(e))),i=new H;r.forEach((e,t)=>t===0?i.moveTo(e.x,e.y):i.lineTo(e.x,e.y));let a=r.length<=60&&m>=8;_e.push(B(`g`,{class:`dg-xy-line dg-xy-series-${n}`},[B(`path`,{class:`dg-xy-line-path`,d:i.toString(),style:`stroke:${Oe(n)}`}),...a?r.map(e=>B(`circle`,{class:`dg-xy-dot`,cx:e.x,cy:e.y,r:3.5,style:`fill:${Oe(n)}`})):[]]))}if(i){for(let e of k)ve.push(Z(e.measured,le-jc,ue+e.at,{anchor:`end`,className:`dg-xy-tick-label`}));for(let e of A)ve.push(Z(e.measured,le+e.at,fe+jc+e.measured.height/2,{className:`dg-xy-tick-label`}))}else{for(let e of A)ve.push(Z(e.measured,le-jc,fe-e.at,{anchor:`end`,className:`dg-xy-tick-label`}));for(let e of k){let t=le+e.at;if(j){let n=fe+jc+e.measured.height/2*Nc;ve.push(B(`g`,{transform:`rotate(-45 ${Ic(t)} ${Ic(n)})`},[Z(e.measured,t,n,{anchor:`end`,className:`dg-xy-tick-label`})]))}else ve.push(Z(e.measured,t,fe+jc+e.measured.height/2,{className:`dg-xy-tick-label`}))}}let Ce=i?N:P,L=i?P:N;if(Ce){let e=Ce.height/2,t=ue+ie/2;ve.push(B(`g`,{transform:`rotate(-90 ${Ic(e)} ${Ic(t)})`},[Z(Ce,e,t,{className:`dg-xy-axis-title`})]))}L&&ve.push(Z(L,le+re/2,me-L.height/2,{className:`dg-xy-axis-title`}));let we=le+re/2;M&&ve.push(Z(M,we,M.height/2,{className:`dg-title`})),I.forEach((e,t)=>{let n=we-e.width/2,r=ce+t*20+10;for(let t of e.items){let e=Oe(t.index);ve.push(B(`g`,{class:`dg-xy-legend-item`},[t.series.kind===`bar`?B(`rect`,{x:n,y:r-Mc/2,width:Mc,height:Mc,rx:2,style:`fill:${e}`}):B(`line`,{class:`dg-xy-legend-line`,x1:n,y1:r,x2:n+Mc,y2:r,style:`stroke:${e}`}),Z(t.measured,n+Mc+6,r,{anchor:`start`,className:`dg-xy-legend`})])),n+=ae(t)+20}});let Te=`${n}-plot`,R=[B(`clipPath`,{id:Te},[B(`rect`,{x:le-4,y:ue-4,width:re+8,height:ie+8})])],Ee=[...ge,B(`g`,{"clip-path":`url(#${Te})`},_e),...ve],De=`#${n}`,ke=[`${De} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`,`${De} .dg-xy-grid line{stroke:${z(`--dg-grid`)};stroke-width:1px}`,`${De} .dg-xy-axis,${De} .dg-xy-tick line{stroke:${z(`--dg-line`)};stroke-width:1px}`,`${De} .dg-xy-tick-label{fill:${z(`--dg-text-muted`)};font-size:12px}`,`${De} .dg-xy-axis-title{fill:${z(`--dg-text`)};font-size:13px;font-weight:bold}`,`${De} .dg-xy-line-path{fill:none;stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round}`,`${De} .dg-xy-legend-line{stroke-width:2.5px;stroke-linecap:round}`,`${De} .dg-xy-legend{fill:${z(`--dg-text`)};font-size:13px}`].join(``);return U({id:n,type:`xychart`,width:pe,height:me,title:r??e.accessibility.title??e.title??`XY chart`,description:e.accessibility.description,defs:R,body:Ee,css:ke})}function Ic(e){return Math.round(e*100)/100}var Lc=500,Rc=[{open:`((`,close:`))`,shape:`circle`},{open:`))`,close:`((`,shape:`bang`},{open:`{{`,close:`}}`,shape:`hexagon`},{open:`(`,close:`)`,shape:`rounded`},{open:`)`,close:`(`,shape:`cloud`},{open:`[`,close:`]`,shape:`square`}];function zc(e){let t=e.indexOf('"`');return t>=0&&e.indexOf('`"',t+2)<0}function Bc(e){let t=e.trim();if(t.length<2||!t.startsWith(`"`)||!t.endsWith(`"`))return null;let n=t.slice(1,-1);return n.length>=2&&n.startsWith("`")&&n.endsWith("`")?{label:n.slice(1,-1),markdown:!0}:{label:n,markdown:!1}}function Vc(e,t,n){let r=e,i,a=[];for(;;){let e=/\s*::icon\(([^)]*)\)\s*$/.exec(r);if(e&&!r.slice(0,e.index).endsWith(`:`)){i=e[1].trim(),r=r.slice(0,e.index);continue}let t=/\s*:::\s*([\w-]+(?:\s+[\w-]+)*)\s*$/.exec(r);if(t)a.unshift(...t[1].split(/\s+/)),r=r.slice(0,t.index);else break}r=r.trimEnd();let o=Bc(r);if(o)return{id:n(),...o,shape:`default`,icon:i,classes:a};let s=r.search(/[[(){}]/);if(s<0)return{id:r,label:r,markdown:!1,shape:`default`,icon:i,classes:a};let c=Rc.find(e=>r.startsWith(e.open,s));if(!c)throw new L(`"${r[s]}" does not start a node shape`,t.line,t.column+s,`Shapes: [square], (rounded), ((circle)), ))bang((, )cloud(, {{hexagon}}`);if(!r.endsWith(c.close)||r.length<s+c.open.length+c.close.length)throw new L(`The "${c.open}" shape is not closed at the end of the line`,t.line,t.column+s,`End the node with "${c.close}", or put text with brackets in quotes: id["text (note)"]`);let l=r.slice(s+c.open.length,r.length-c.close.length),{label:u,markdown:d}=Bc(l)??{label:l.trim(),markdown:!1};if(u.trim()===``)throw new L(`The node has no text`,t.line,t.column+s,`Write id${c.open}text${c.close}`);let f=r.slice(0,s).trim();return{id:f===``?n():f,label:u,markdown:d,shape:c.shape,icon:i,classes:a}}function Hc(e){let t=q(e),n=t[0],r=n?/^mindmap\b\s*(.*)$/.exec(n.text):null;if(!n||!r)throw new L(`A mind map starts with "mindmap"`,n?.line??1,1);if(r[1].trim()!==``)throw new L(`Unexpected "${r[1].trim()}" after "mindmap"`,n.line,n.column+8,`Put the root on the next line`);let i={},a=null,o=null,s=0,c=[],l=()=>`node-${s}`;for(let e=1;e<t.length;e++){let n=t[e],r=J(t,e,i);if(r>0){e+=r-1;continue}let u=n.column-1,d=n.text;for(;zc(d);){if(e+1>=t.length)throw new L(`The markdown string is not closed`,n.line,n.column+d.indexOf('"`'),'End it with `"');e++,d+=`
35
+ `+t[e].text}let f=/^(::icon\(([^)]*)\)|:::\s*([\w-]+(?:\s+[\w-]+)*))$/.exec(d);if(f){if(!o)throw new L(`"${d}" comes before any node`,n.line,n.column,`Put it under the node it belongs to`);f[2]===void 0?o.classes.push(...f[3].split(/\s+/)):o.icon=f[2].trim();continue}let p=Vc(d,n,l),m={...p,children:[],line:n.line,column:n.column};for(;c.length>0&&c[c.length-1].indent>=u;)c.pop();let h=c[c.length-1];if(h)h.node.children.push(m);else{if(a)throw new L(`A mind map has one root; "${p.label}" is a second one`,n.line,n.column,`Indent it under "${a.label}" (line ${a.line})`);a=m}if(c.push({node:m,indent:u}),o=m,s++,s>Lc)throw we(`nodes`,s,Lc)}if(!a)throw new L(`The mind map is empty`,0,0,`Add a root node on the line after "mindmap"`);return{type:`mindmap`,root:a,accessibility:i}}var Uc={...R,size:16,weight:`bold`},Wc={...R,weight:`bold`},Gc={...R,size:13},Kc=200,qc=1.06,Jc=56,Yc=36,Xc=22,Zc=10;function Qc(e){return e===0?Uc:e===1?Wc:Gc}function $c(e,t,n,r){let i=r===0?22:14,a=r===0?13:8;switch(e){case`circle`:{let e=Math.max(Math.hypot(t,n)+16,r===0?72:44);return{width:e,height:e}}case`bang`:{let e=(t/2+8)*Math.SQRT2*1.3,r=(n/2+6)*Math.SQRT2*1.3;return{width:e*2,height:r*2}}case`cloud`:return{width:t+i*2+18,height:n+a*2+16};case`hexagon`:{let e=n+a*2;return{width:t+i*2+e/2,height:e}}default:return{width:t+i*2,height:n+a*2}}}function el(e,t,n,r){let i=Qc(t),a=X(an(Y(e.label,{markdown:e.markdown}),Kc,i,r),i,r),o=$c(e.shape,a.width*qc,a.height,t),s=e.children.map((e,i)=>el(e,t+1,t===0?i:n,r)),c=t===0?Xc:Zc,l=s.reduce((e,t)=>e+t.block,0)+c*Math.max(0,s.length-1);return{node:e,depth:t,branch:n,label:a,...o,x:0,y:0,block:Math.max(o.height,l),children:s}}function tl(e,t,n,r){e.x=n+t*e.width/2,e.y=r+e.block/2;let i=e.depth===0?Xc:Zc,a=e.children.reduce((e,t)=>e+t.block,0)+i*Math.max(0,e.children.length-1),o=r+(e.block-a)/2,s=e.x+t*(e.width/2+Yc);for(let n of e.children)tl(n,t,s,o),o+=n.block+i}function nl(e){if(e.length<=1)return e.length;let t=e.reduce((e,t)=>e+t,0),n=1,r=1/0,i=0;for(let a=1;a<=e.length;a++){i+=e[a-1];let o=Math.abs(i-(t-i));o<r-1e-9&&(n=a,r=o)}return Math.min(n,e.length-1)}function rl(e,t,n,r){let i=e-n/2+7,a=t-r/2+7,o=n-14,s=r-14,c=[{x:i,y:a},{x:i+o,y:a},{x:i+o,y:a+s},{x:i,y:a+s}],l=new H().moveTo(i,a);return c.forEach((e,t)=>{let n=c[(t+1)%4],r=Math.hypot(n.x-e.x,n.y-e.y),i=Math.max(1,Math.round(r/26)),a=r/i;for(let t=1;t<=i;t++){let r=e.x+(n.x-e.x)*t/i,o=e.y+(n.y-e.y)*t/i;l.arcTo(a*.6,a*.6,0,!1,!0,r,o)}}),l.close().toString()}function il(e,t,n,r){let i=n/2,a=r/2,o=Math.PI*(i+a),s=Math.max(10,Math.min(28,Math.round(o/30))),c=new H;for(let n=0;n<s*2;n++){let r=-Math.PI/2+n*Math.PI/s,o=n%2==0?1:.8,l=e+Math.cos(r)*i*o,u=t+Math.sin(r)*a*o;n===0?c.moveTo(l,u):c.lineTo(l,u)}return c.close().toString()}function al(e,t,n,r){let i=e-n/2,a=t-r/2;return new H().moveTo(i,a+r).lineTo(i,a+6).quadTo(i,a,i+6,a).lineTo(i+n-6,a).quadTo(i+n,a,i+n,a+6).lineTo(i+n,a+r).close().toString()}function ol(e,t){let n=t?`fill:${t};stroke:${t}`:void 0,r={x:e.x,y:e.y,width:e.width,height:e.height},i=`dg-mm-shape`;switch(e.depth===0&&e.node.shape==="default"?`rounded`:e.node.shape){case`square`:return[po(`rect`,r,{className:i,style:n})];case`rounded`:return[B(`rect`,{class:i,style:n,x:e.x-e.width/2,y:e.y-e.height/2,width:e.width,height:e.height,rx:10,ry:10})];case`circle`:return[po(`circle`,r,{className:i,style:n})];case`hexagon`:return[po(`hexagon`,r,{className:i,style:n})];case`cloud`:return[B(`path`,{class:i,style:n,d:rl(e.x,e.y,e.width,e.height)})];case`bang`:return[B(`path`,{class:i,style:n,d:il(e.x,e.y,e.width,e.height)})];default:return[B(`path`,{class:`${i} dg-mm-default`,style:t?`fill:${t}`:void 0,d:al(e.x,e.y,e.width,e.height)}),B(`line`,{class:`dg-mm-bar`,x1:e.x-e.width/2,y1:e.y+e.height/2,x2:e.x+e.width/2,y2:e.y+e.height/2,style:t?`stroke:${t}`:void 0})]}}function sl(e,t,n,r){let i=el(e.root,0,-1,t),a=nl(i.children.map(e=>e.block)),o=i.children.slice(0,a),s=i.children.slice(a).reverse(),c=e=>e.reduce((e,t)=>e+t.block,0)+Xc*Math.max(0,e.length-1);i.x=0,i.y=0;let l=-c(o)/2;for(let e of o)tl(e,1,i.width/2+Jc,l),l+=e.block+Xc;l=-c(s)/2;for(let e of s)tl(e,-1,-i.width/2-Jc,l),l+=e.block+Xc;let u=[],d=e=>{u.push(e),e.children.forEach(d)};d(i);let f=Math.min(...u.map(e=>e.x-e.width/2)),p=Math.max(...u.map(e=>e.x+e.width/2)),m=Math.min(...u.map(e=>e.y-e.height/2)),h=Math.max(...u.map(e=>e.y+e.height/2)),g=[],_=[];for(let e of u){let t=e.depth===0?void 0:Oe(e.branch);for(let t of e.children){let n=t.x>=e.x?1:-1,r=e.x+n*e.width/2,i=t.x-n*t.width/2,a=(i-r)/2,o=new H().moveTo(r,e.y).curveTo(r+a,e.y,i-a,t.y,i,t.y);g.push(B(`path`,{class:`dg-mm-edge dg-mm-edge-${Math.min(t.depth,3)}`,d:o.toString(),style:`stroke:${Oe(t.branch)}`}))}let n=[`dg-node`,`dg-mm-node`,e.depth===0?`dg-mm-root`:`dg-mm-depth-${Math.min(e.depth,2)}`];_.push(B(`g`,{class:n.join(` `),"data-id":/^[\w.:-]+$/.test(e.node.id)?e.node.id:void 0},[...ol(e,t),Z(e.label,e.x,e.y,{className:e.depth===0?`dg-mm-root-text`:`dg-mm-text`})]))}let v=`#${n}`,y=[`${v} .dg-mm-edge{fill:none;stroke-linecap:round}`,`${v} .dg-mm-edge-1{stroke-width:3px}`,`${v} .dg-mm-edge-2{stroke-width:2px}`,`${v} .dg-mm-edge-3{stroke-width:1.5px}`,`${v} .dg-mm-shape{stroke-width:1.5px}`,`${v} .dg-mm-root .dg-mm-shape{fill:${z(`--dg-node-fill`)};stroke:${z(`--dg-node-stroke`)};stroke-width:2px}`,`${v} .dg-mm-depth-1 .dg-mm-shape{fill-opacity:0.24;stroke-width:2px}`,`${v} .dg-mm-depth-2 .dg-mm-shape{fill-opacity:0.1}`,`${v} .dg-mm-bar{stroke-width:3px;stroke-linecap:round}`,`${v} .dg-mm-depth-2 .dg-mm-bar{stroke-width:2px}`,`${v} .dg-mm-text{fill:${z(`--dg-text`)}}`,`${v} .dg-mm-depth-2 .dg-mm-text{font-size:13px}`,`${v} .dg-mm-root-text{fill:${z(`--dg-node-text`)};font-size:16px;font-weight:bold}`,`${v} .dg-mm-depth-1 .dg-mm-text{font-weight:bold}`].join(``);return U({id:n,type:`mindmap`,width:p-f,height:h-m,title:r??e.accessibility.title??`Mind map`,description:e.accessibility.description,body:[B(`g`,{transform:`translate(${V(-f)},${V(-m)})`},[B(`g`,{class:`dg-mm-edges`},g),..._])],css:y})}var cl={TB:`TB`,TD:`TB`,BT:`BT`,LR:`LR`,RL:`RL`},ll=`(?:"[^"]*"|[\\p{L}_][\\p{L}\\p{N}_]*(?:-[\\p{L}\\p{N}_]+)*)`,ul={"||":`one`,"|o":`zero-one`,"}|":`one-many`,"}o":`zero-many`},dl={"||":`one`,"o|":`zero-one`,"|{":`one-many`,"o{":`zero-many`},fl={"--":!0,"..":!1,".-":!1,"-.":!1},pl=[[`only one`,`one`],[`zero or one`,`zero-one`],[`one or zero`,`zero-one`],[`one or more`,`one-many`],[`one or many`,`one-many`],[`many(1)`,`one-many`],[`1+`,`one-many`],[`zero or more`,`zero-many`],[`zero or many`,`zero-many`],[`many(0)`,`zero-many`],[`0+`,`zero-many`],[`1`,`one`]],ml=`(${pl.map(([e])=>e.replace(/[()+]/g,e=>`\\${e}`).replace(/ /g,`\\s+`)).join(`|`)})`,hl=RegExp(`^(${ll})\\s*(\\|\\||\\|o|\\}\\||\\}o)(--|\\.\\.|\\.-|-\\.)(\\|\\||o\\||\\|\\{|o\\{)\\s*(${ll})\\s*(?::\\s*(.*))?$`,`u`),gl=RegExp(`^(${ll})\\s+${ml}\\s+(to|optionally\\s+to)\\s+${ml}\\s+(${ll})\\s*(?::\\s*(.*))?$`,`iu`),_l=RegExp(`^(${ll})(?:\\[\\s*("[^"]*"|[^\\]"]*?)\\s*\\])?(?::::([\\w-]+))?\\s*(\\{\\s*\\}?)?$`,`u`);function vl(e){let t=e.toLowerCase().replace(/\s+/g,` `);return pl.find(([e])=>e===t)[1]}function yl(e){return e.startsWith(`"`)?e.slice(1,-1):e}function bl(e){let t=(e??``).trim();return t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`)?t.slice(1,-1):t}function xl(e){let t=/^(\S+)\s+(\S+)(.*)$/u.exec(e.text);if(!t)throw new L(`"${e.text}" is not an attribute`,e.line,e.column,`Write a type and a name: string firstName.`);let[,n,r,i]=t;if(!/^[\p{L}_*][\p{L}\p{N}_\-[\]().,~]*$/u.test(n))throw new L(`"${n}" is not an attribute type`,e.line,e.column);let a=e.column+e.text.indexOf(r,n.length);if(!/^\*?[\p{L}_][\p{L}\p{N}_\-[\]().]*$/u.test(r))throw new L(`"${r}" is not an attribute name`,e.line,a);let o=a+r.length,s=/^\s*((?:PK|FK|UK)(?:\s*,\s*(?:PK|FK|UK))*)?\s*(?:"([^"]*)")?\s*$/.exec(i);if(!s){let t=o+(i.length-i.trimStart().length);throw new L(`"${i.trim()}" is not a key or a comment`,e.line,t,`After the name come keys (PK, FK, UK, comma-separated) and a "comment" in double quotes.`)}return{type:n,name:r,keys:s[1]?[...new Set(s[1].split(`,`).map(e=>e.trim()))]:[],comment:s[2]}}function Sl(e){let t=q(e),n=t[0];if(!n||n.text!==`erDiagram`)throw new L(`An entity relationship diagram starts with "erDiagram"`,n?.line??1,n?.column??1);let r={type:`er`,direction:`TB`,entities:new Map,relationships:[],classDefs:new Map,accessibility:{}},i=[],a=[],o=e=>{let t=yl(e),n=r.entities.get(t);return n||(n={id:t,label:t,attributes:[],classes:[]},r.entities.set(t,n)),n};for(let e=1;e<t.length;e++){let n=t[e],s=n.text,c=J(t,e,r.accessibility);if(c>0){e+=c-1;continue}let l=/^direction\s+(\w+)$/.exec(s);if(l){let e=cl[l[1].toUpperCase()];if(!e)throw new L(`"${l[1]}" is not a direction`,n.line,n.column+10,`Use TB, BT, LR or RL.`);r.direction=e;continue}if(l=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(s),l){let e=W(l[2],n.line,n.column);for(let t of l[1].split(`,`))r.classDefs.set(t.trim(),e);continue}if(l=/^class\s+(.+?)\s+([\w-]+)$/.exec(s),l){i.push({ids:l[1].split(`,`).map(e=>yl(e.trim())),cls:l[2],s:n});continue}if(l=/^style\s+("[^"]*"|\S+)\s+(.+)$/.exec(s),l){a.push({id:yl(l[1]),style:W(l[2],n.line,n.column),s:n});continue}if(l=hl.exec(s),l){r.relationships.push({from:o(l[1]).id,fromCardinality:ul[l[2]],identifying:fl[l[3]],toCardinality:dl[l[4]],to:o(l[5]).id,label:bl(l[6])});continue}if(l=gl.exec(s),l){r.relationships.push({from:o(l[1]).id,fromCardinality:vl(l[2]),identifying:l[3].toLowerCase()===`to`,toCardinality:vl(l[4]),to:o(l[5]).id,label:bl(l[6])});continue}if(l=_l.exec(s),l){let r=o(l[1]);l[2]!==void 0&&l[2]!==``&&(r.label=yl(l[2])),l[3]&&r.classes.push(l[3]);let i=l[4];if(i!==void 0&&!i.endsWith(`}`)){let i=e+1;for(;i<t.length&&t[i].text!==`}`;i++)r.attributes.push(xl(t[i]));if(i>=t.length)throw new L(`The attributes of "${r.id}" are not closed`,n.line,n.column,`Add "}" on its own line.`);e=i}continue}let u=RegExp(`^(${ll})\\s*([|}{o.\\-=<>]{2,})`,`u`).exec(s);throw u?new L(`"${u[2]}" is not a relationship`,n.line,n.column+s.indexOf(u[2],u[1].length),`Write a cardinality on each side of -- or ..: ||, |o, }|, }o on the left; ||, o|, |{, o{ on the right.`):s===`}`?new L(`"}" without an open entity`,n.line,n.column):new L(`"${s}" is not an entity relationship statement`,n.line,n.column)}for(let e of i)for(let t of e.ids){let n=r.entities.get(t);if(!n)throw new L(`class refers to an unknown entity "${t}"`,e.s.line,e.s.column);n.classes.push(e.cls)}for(let e of a){let t=r.entities.get(e.id);if(!t)throw new L(`style refers to an unknown entity "${e.id}"`,e.s.line,e.s.column);t.style=e.style}return r}var Cl=26,wl=(e,t,n)=>t>n?(t+n)/2:Math.min(n,Math.max(t,e));function Tl(e,t,n){let r=e.width/2,i=e.height/2,a=Math.min(16,r),o=Math.min(16,i),s=n===`TB`||n===`BT`,c=t.x-e.x,l=t.y-e.y;if(s?Math.abs(l)>i+.5:Math.abs(c)<=r+.5){let n=l<0?-1:1;return{point:{x:wl(t.x,e.x-r+a,e.x+r-a),y:e.y+n*i},normal:{x:0,y:n}}}let u=c<0?-1:1;return{point:{x:e.x+u*r,y:wl(t.y,e.y-i+o,e.y+i-o)},normal:{x:u,y:0}}}var El=18,Dl=9;function Ol(e){let t=new Map;for(let n of e){let e=`${n.id}\u0000${n.at.normal.x},${n.at.normal.y}`,r=t.get(e)??[];r.push(n),t.set(e,r)}for(let e of t.values()){if(e.length<2)continue;let t=e[0].box,n=e[0].at.normal.x===0?`x`:`y`,r=(n===`x`?t.width:t.height)/2,i=t[n],a=i-r+Math.min(Dl,r),o=i+r-Math.min(Dl,r),s=Math.min(El,(o-a)/(e.length-1));e.sort((e,t)=>e.at.point[n]-t.at.point[n]);let c=e.map(e=>e.at.point[n]);for(let e=1;e<c.length;e++)c[e]=Math.max(c[e],c[e-1]+s);c[c.length-1]=Math.min(c[c.length-1],o);for(let e=c.length-2;e>=0;e--)c[e]=Math.min(c[e],c[e+1]-s);c[0]=Math.max(c[0],a);for(let e=1;e<c.length;e++)c[e]=Math.max(c[e],c[e-1]+s);e.forEach((e,t)=>e.at.point={...e.at.point,[n]:c[t]})}}function kl(e,t){return{x:e.point.x+e.normal.x*t,y:e.point.y+e.normal.y*t}}function Al(e,t,n){let r=Math.hypot(n.point.x-e.point.x,n.point.y-e.point.y),i=Math.min(Cl,r/3);return[e.point,kl(e,i/2),kl(e,i),...t,kl(n,i),kl(n,i/2),n.point]}var jl=48,Ml=26;function Nl(e,t,n){let r=t===`TB`||t===`BT`,i=n%2==0?1:-1,a=jl+Math.floor(n/2)*Ml,o=(r?e.height:e.width)/2,s=Math.max(10,Math.min(18,o-8)),c=(t,n)=>r?{x:e.x+i*t,y:e.y+n}:{x:e.x+n,y:e.y+i*t},l=(r?e.width:e.height)/2,u=r?{x:i,y:0}:{x:0,y:i},d=[c(l,-s),c(l+a/2,-s),c(l+a,-s),c(l+a,s),c(l+a/2,s),c(l,s)];return{points:d,start:{point:d[0],normal:u},end:{point:d[5],normal:u},label:c(l+a+6,0),outward:u}}function Pl(e,t){let n=t===`TB`||t===`BT`,r=new Map,i=new Map,a=new Map;return e.forEach((e,t)=>{if(e.from!==e.to)return;let o=a.get(e.from)??0;a.set(e.from,o+1),r.set(t,o);let s=jl+Math.floor(o/2)*Ml,c=e.label?(n?e.label.width:e.label.height)+10:4;i.set(e.from,Math.max(i.get(e.from)??0,s+c))}),{loop:r,room:i}}function Fl(e,t){return{x:e.label.x+e.outward.x*t.width/2,y:e.label.y+e.outward.y*t.height/2}}function Il(e){let{direction:t}=e,n=t===`TB`||t===`BT`,r=Pl(e.edges,t),i=e.nodes.map(e=>{let t=r.room.get(e.id)??0;return n?{...e,width:e.width+t*2}:{...e,height:e.height+t*2}}),a=[];e.edges.forEach((e,t)=>{e.from!==e.to&&a.push({id:String(t),from:e.from,to:e.to,label:e.label})});let o=Xo({direction:t,nodes:i,edges:[...a,...e.extra??[]],clusters:e.clusters,nodeSep:e.nodeSep,rankSep:e.rankSep,clusterPadding:e.clusterPadding,transpose:!0});for(let t of e.nodes){let e=o.nodes.get(t.id);e&&o.nodes.set(t.id,{...e,width:t.width,height:t.height})}let s=[],c=e.edges.map((e,n)=>{let i=r.loop.get(n);if(i!==void 0){let n=Nl(o.nodes.get(e.from),t,i);return{points:n.points,start:n.start,end:n.end,label:e.label?Fl(n,e.label):void 0}}let a=o.edges.get(String(n));if(!a)return;let c=o.nodes.get(e.from),l=o.nodes.get(e.to),u=Tl(c,a.points[0]??l,t),d=Tl(l,a.points[a.points.length-1]??c,t);return s.push({id:e.from,box:c,at:u},{id:e.to,box:l,at:d}),{points:a.points,start:u,end:d,label:a.label}});return Ol(s),c.forEach((e,t)=>{e&&!r.loop.has(t)&&(e.points=Al(e.start,e.points,e.end))}),{result:o,routes:c}}function Ll(e,t){let n=e.width+8,r=e.height+4;return B(`g`,{class:`dg-edge-label-group`},[B(`rect`,{class:`dg-edge-label-box`,x:t.x-n/2,y:t.y-r/2,width:n,height:r,rx:3}),Z(e,t.x,t.y,{className:`dg-edge-label`})])}function Rl(e){let t={},n={};for(let[r,i]of Object.entries(e))r===`fill`||r===`fill-opacity`?t[r]=i:n[r]=i;return{frame:G(n),band:G(t)}}function zl(e,t,n,r,i,a){let o=e+n,s=t+r,c=new H().moveTo(e+i,t).lineTo(o-i,t);return i>0&&c.arcTo(i,i,0,!1,!0,o,t+i),c.lineTo(o,s-a),a>0&&c.arcTo(a,a,0,!1,!0,o-a,s),c.lineTo(e+a,s),a>0&&c.arcTo(a,a,0,!1,!0,e,s-a),c.lineTo(e,t+i),i>0&&c.arcTo(i,i,0,!1,!0,e+i,t),c.close().toString()}var Bl={...R,size:13},Vl={...R,size:11,weight:`bold`},Hl={...R,weight:`bold`},Ul=12,Wl=5,Gl=110,Kl={one:`er-one`,"zero-one":`er-zero-one`,"one-many":`er-one-many`,"zero-many":`er-zero-many`};function ql(e,t,n){return X(en(Xt(e)),t,n)}function Jl(e,t){let n=X(Y(e.label),Hl,t),r=e.attributes.map(e=>{let n={type:ql(e.type,Bl,t),name:ql(e.name,Bl,t)};return e.keys.length>0&&(n.keys=ql(e.keys.join(`, `),Vl,t)),e.comment&&(n.comment=ql(e.comment,{...Bl,style:`italic`},t)),n}),i=n.height+18;if(r.length===0)return{header:n,rows:r,columns:{},headerHeight:i,rowHeight:0,width:Math.max(n.width+32,Gl),height:i};let a=Bl.size*1.25+10,o={},s=0;for(let e of[`type`,`name`,`keys`,`comment`]){let t=Math.max(0,...r.map(t=>t[e]?.width??-1));r.some(t=>t[e])&&(o[e]=s+Ul,s+=Ul+t)}return s+=Ul,{header:n,rows:r,columns:o,headerHeight:i,rowHeight:a,width:Math.max(s,n.width+32,Gl),height:i+a*r.length}}function Yl(e,t){return Ge(t.get(`default`),...e.classes.map(e=>t.get(e)),e.style)}function Xl(e,t,n,r){let i=n.x-n.width/2,a=n.y-n.height/2,o=G(r.shape),s=Rl(r.shape),c=G(r.text),l=[`dg-node`,`dg-entity`,...e.classes.map(e=>`dg-class-${e.replace(/[^\w-]/g,``)}`)].join(` `);if(t.rows.length===0)return B(`g`,{class:l,"data-id":e.id},[B(`rect`,{class:`dg-shape`,x:i,y:a,width:n.width,height:n.height,rx:Wl,style:o}),Z(t.header,n.x,n.y,{className:`dg-label dg-entity-title`,style:c})]);let u=.75,d=n.width-u*2,f=[B(`rect`,{class:`dg-shape dg-entity-box`,x:i,y:a,width:n.width,height:n.height,rx:Wl,style:s.frame}),B(`path`,{class:`dg-entity-header`,d:zl(i+u,a+u,d,t.headerHeight-u,4.25,0),style:s.band})];t.rows.forEach((e,n)=>{let r=a+t.headerHeight+n*t.rowHeight,o=n===t.rows.length-1;n%2==1&&f.push(B(`path`,{class:`dg-entity-row-alt`,d:zl(i+u,r,d,t.rowHeight-(o?u:0),0,o?4.25:0)}));let s=r+t.rowHeight/2;for(let n of[`type`,`name`,`keys`,`comment`]){let r=e[n],a=t.columns[n];r&&a!==void 0&&f.push(Z(r,i+a,s,{anchor:`start`,className:`dg-entity-${n}`}))}});let p=a+t.headerHeight;return f.push(B(`line`,{class:`dg-entity-rule`,x1:i,y1:p,x2:i+n.width,y2:p,style:r.shape.stroke?`stroke:${r.shape.stroke}`:void 0}),Z(t.header,n.x,a+t.headerHeight/2,{className:`dg-label dg-entity-title`,style:c})),B(`g`,{class:l,"data-id":e.id},f)}function Zl(e,t,n,r){let i=new Map;for(let n of e.entities.values())i.set(n.id,Jl(n,t));let a=new Map,o=e.relationships.map((e,n)=>{let r;if(e.label.trim()!==``){let i=X(Y(e.label),R,t);a.set(n,i),r={width:i.width+8,height:i.height+4}}return{from:e.from,to:e.to,label:r}}),s=[...e.entities.values()].map(e=>({id:e.id,width:i.get(e.id).width,height:i.get(e.id).height})),{result:c,routes:l}=Il({direction:e.direction,nodes:s,edges:o,nodeSep:50,rankSep:84}),u=[],d=[],f=[];e.relationships.forEach((e,t)=>{let r=l[t];if(!r)return;let i=Kl[e.fromCardinality],o=Kl[e.toCardinality];u.push(i,o),d.push(B(`path`,{class:e.identifying?`dg-edge`:`dg-edge dg-edge-dashed`,d:ro(r.points),"marker-start":`url(#${ra(n,i,!0)})`,"marker-end":`url(#${ra(n,o)})`,"data-from":e.from,"data-to":e.to}));let s=a.get(t);s&&r.label&&f.push(Ll(s,r.label))});let p=[...e.entities.values()].map(t=>Xl(t,i.get(t.id),c.nodes.get(t.id),Yl(t,e.classDefs))),m=`#${n}`,h=[`${m} .dg-entity .dg-entity-box{fill:${z(`--dg-row-fill`)}}`,`${m} .dg-entity-title{font-weight:bold}`,`${m} .dg-entity-header{fill:${z(`--dg-node-fill`)};stroke:none}`,`${m} .dg-entity-row-alt{fill:${z(`--dg-row-alt-fill`)};stroke:none}`,`${m} .dg-entity-rule{stroke:${z(`--dg-node-stroke`)};stroke-width:1px}`,`${m} .dg-entity-type,${m} .dg-entity-comment{fill:${z(`--dg-text-muted`)}}`,`${m} .dg-entity-type,${m} .dg-entity-name,${m} .dg-entity-comment{font-size:${Bl.size}px}`,`${m} .dg-entity-comment{font-style:italic}`,`${m} .dg-entity-keys{fill:${z(`--dg-node-stroke`)};font-size:${Vl.size}px;font-weight:bold}`,`${m} .dg-edge-dashed{stroke-dasharray:6 4}`].join(``);return U({id:n,type:`er`,width:c.width,height:c.height,title:r??e.accessibility.title??`Entity relationship diagram`,description:e.accessibility.description,defs:ia(n,u),body:[B(`g`,{class:`dg-edges`},d),B(`g`,{class:`dg-edge-labels`},f),B(`g`,{class:`dg-nodes`},p)],css:h})}var Ql={...R,size:13},$l={...R,size:12},eu={...R,weight:`bold`},tu={...R,size:12},nu=6,ru=10,iu=5,au=100,ou={none:null,inheritance:`triangle`,composition:`diamond`,aggregation:`diamond-open`,arrow:`open-arrow`};function su(e){return e.classifier===`abstract`?{...Ql,style:`italic`}:Ql}function cu(e,t){let n=e.annotations.map(e=>X(en(`«${Xt(e)}»`),$l,t)),r=X(Y(e.label),eu,t),i=e=>({member:e,label:X(en(Xt(e.text)),su(e),t)}),a=e.attributes.map(i),o=e.methods.map(i),s=n.reduce((e,t)=>e+t.height,0)+r.height+18,c=Ql.size*1.25,l=e=>e.length===0?ru:e.length*c+12,u=a.length===0&&o.length===0,d=u?0:l(a),f=u?0:l(o),p=Math.max(r.width,...n.map(e=>e.width),...a.map(e=>e.label.width),...o.map(e=>e.label.width));return{annotations:n,name:r,attributes:a,methods:o,headerHeight:s,attributesHeight:d,methodsHeight:f,width:Math.max(p+32,au),height:s+d+f}}function lu(e,t){return Ge(t.get(`default`),...e.classes.map(e=>t.get(e)),e.style)}function uu(e,t,n,r){let i=n.x-n.width/2,a=n.y-n.height/2,o=G(r.shape),s=Rl(r.shape),c=G(r.text),l=t.attributesHeight===0&&t.methodsHeight===0,u=.75,d=[B(`rect`,{class:l?`dg-shape`:`dg-shape dg-uml-box`,x:i,y:a,width:n.width,height:n.height,rx:iu,style:l?o:s.frame})];l||d.push(B(`path`,{class:`dg-uml-header`,d:zl(i+u,a+u,n.width-u*2,t.headerHeight-u,4.25,0),style:s.band}));let f=a+9;for(let e of t.annotations)d.push(Z(e,n.x,f+e.height/2,{className:`dg-label dg-uml-annotation`,style:c})),f+=e.height;d.push(Z(t.name,n.x,f+t.name.height/2,{className:`dg-label dg-uml-name`,style:c}));let p=r.shape.stroke?`stroke:${r.shape.stroke}`:void 0,m=(e,t)=>{d.push(B(`line`,{class:`dg-uml-rule`,x1:i,y1:t,x2:i+n.width,y2:t,style:p}));let r=t+nu;for(let{member:t,label:n}of e){let e=[t.classifier===`static`?`text-decoration:underline`:``,t.classifier===`abstract`?`font-style:italic`:``].filter(Boolean).join(`;`);d.push(Z(n,i+10,r+n.height/2,{anchor:`start`,className:`dg-uml-member dg-uml-${t.kind}`,style:e||void 0})),r+=n.height}};l||(m(t.attributes,a+t.headerHeight),m(t.methods,a+t.headerHeight+t.attributesHeight));let h=B(`g`,{class:[`dg-node`,`dg-uml-class`,...e.classes.map(e=>`dg-class-${e.replace(/[^\w-]/g,``)}`)].join(` `),"data-id":e.id},[e.link?.tooltip?B(`title`,{},[{text:e.link.tooltip}]):null,...d]);return e.link?B(`a`,{href:e.link.href,target:e.link.target,rel:e.link.target===`_blank`?`noopener noreferrer`:void 0},[h]):h}function du(e){let t=e=>e===`inheritance`||e===`composition`||e===`aggregation`;return t(e.toEnd)&&!t(e.fromEnd)?{from:e.to,to:e.from,fromEnd:e.toEnd,toEnd:e.fromEnd,dashed:e.dashed,fromCardinality:e.toCardinality,toCardinality:e.fromCardinality,label:e.label}:e}function fu(e,t,n){let{point:r,normal:i}=t;if(i.x===0){let t=n??1;return Z(e,r.x+t*12,r.y+i.y*(e.height/2+4),{anchor:t>0?`start`:`end`,className:`dg-uml-cardinality`})}let a=n??-1;return Z(e,r.x+i.x*(e.width/2+6),r.y+a*(e.height/2+7),{className:`dg-uml-cardinality`})}function pu(e,t,n,r){let i=new Map;for(let n of e.classes.values())i.set(n.id,cu(n,t));let a=e.relations.map(du),o=new Map,s=a.map((e,n)=>{let r;if(e.label){let i=X(Y(e.label),R,t);o.set(n,i),r={width:i.width+8,height:i.height+4}}return{from:e.from,to:e.to,label:r}}),c=[...e.classes.values()].map(e=>({id:e.id,width:i.get(e.id).width,height:i.get(e.id).height,cluster:e.namespace})),l=e.notes.map(e=>X(en(Xt(e.text)),R,t)),u=[];e.notes.forEach((t,n)=>{let r=l[n];c.push({id:`\u0000note${n}`,width:r.width+16,height:r.height+16,cluster:t.target?e.classes.get(t.target).namespace:void 0}),t.target&&u.push({id:`note${n}`,from:`\u0000note${n}`,to:t.target,weight:0})});let d={...R,weight:`bold`},f=new Map,p=[...e.namespaces.values()].map(e=>{let n=X(en(e.id),d,t);return f.set(e.id,n),{id:e.id,label:{width:n.width,height:n.height}}}),{result:m,routes:h}=Il({direction:e.direction,nodes:c,edges:s,extra:u,clusters:p,nodeSep:50,rankSep:70,clusterPadding:16}),g=[...e.namespaces.values()].map(e=>{let t=m.clusters.get(e.id);return B(`g`,{class:`dg-cluster dg-namespace`,"data-id":e.id},[B(`rect`,{class:`dg-cluster-box`,x:t.x-t.width/2,y:t.y-t.height/2,width:t.width,height:t.height,rx:6})])}),_=[...e.namespaces.values()].map(e=>{let t=m.clusters.get(e.id),n=f.get(e.id);return B(`g`,{class:`dg-cluster-title`,"data-id":e.id},[Z(n,t.x,t.y-t.height/2+6+n.height/2,{className:`dg-cluster-label`})])}),v=[],y=[],b=[];a.forEach((e,r)=>{let i=h[r];if(!i)return;let a=ou[e.fromEnd],s=ou[e.toEnd];a&&v.push(a),s&&v.push(s),y.push(B(`path`,{class:e.dashed?`dg-edge dg-edge-dashed`:`dg-edge`,d:ro(i.points),"marker-start":a?`url(#${ra(n,a,!0)})`:void 0,"marker-end":s?`url(#${ra(n,s)})`:void 0,"data-from":e.from,"data-to":e.to}));let c=o.get(r);c&&i.label&&b.push(Ll(c,i.label));let l=e.from===e.to,u=(e,n,r)=>b.push(fu(X(en(Xt(e)),tu,t),n,r));e.fromCardinality&&u(e.fromCardinality,i.start,l?-1:void 0),e.toCardinality&&u(e.toCardinality,i.end,l?1:void 0)});let x=e.notes.map((e,t)=>{let n=m.nodes.get(`\u0000note${t}`),r=l[t],i=null;if(e.target){let r=m.nodes.get(e.target),a=m.edges.get(`note${t}`),o=a?.points[a.points.length-1]??n,s=$a(n,a?.points[0]??r),c=$a(r,o);i=B(`path`,{class:`dg-note-link`,d:ro([s,...a?.points??[],c])})}return B(`g`,{class:`dg-note`},[i,B(`rect`,{class:`dg-note-box`,x:n.x-n.width/2,y:n.y-n.height/2,width:n.width,height:n.height,rx:2}),Z(r,n.x,n.y,{className:`dg-note-text`})])}),S=[...e.classes.values()].map(t=>uu(t,i.get(t.id),m.nodes.get(t.id),lu(t,e.classDefs))),C=`#${n}`,w=[`${C} .dg-uml-class .dg-uml-box{fill:${z(`--dg-row-fill`)}}`,`${C} .dg-uml-name{font-weight:bold}`,`${C} .dg-uml-header{fill:${z(`--dg-node-fill`)};stroke:none}`,`${C} .dg-uml-rule{stroke:${z(`--dg-node-stroke`)};stroke-width:1px}`,`${C} .dg-uml-annotation{font-size:${$l.size}px}`,`${C} .dg-uml-member{font-size:${Ql.size}px}`,`${C} .dg-uml-cardinality{fill:${z(`--dg-text-muted`)};font-size:${tu.size}px}`,`${C} .dg-edge-dashed{stroke-dasharray:6 4}`,`${C} .dg-note-box{fill:${z(`--dg-note-fill`)};stroke:${z(`--dg-note-stroke`)}}`,`${C} .dg-note-text{fill:${z(`--dg-note-text`)}}`,`${C} .dg-note-link{fill:none;stroke:${z(`--dg-note-stroke`)};stroke-dasharray:3 3}`].join(``);return U({id:n,type:`class`,width:m.width,height:m.height,title:r??e.accessibility.title??`Class diagram`,description:e.accessibility.description,defs:ia(n,v),body:[B(`g`,{class:`dg-clusters`},g),B(`g`,{class:`dg-edges`},y),B(`g`,{class:`dg-cluster-titles`},_),B(`g`,{class:`dg-notes`},x),B(`g`,{class:`dg-edge-labels`},b),B(`g`,{class:`dg-nodes`},S)],css:w})}var mu=76,hu=76,gu=28,_u=16,vu=14,yu=36,bu=30,xu=4,Su=e=>({l:e.x-e.width/2,t:e.y-e.height/2,r:e.x+e.width/2,b:e.y+e.height/2}),Cu=(e,t)=>({l:e.l-t,t:e.t-t,r:e.r+t,b:e.b+t}),wu=(e,t)=>e.l<t.r&&t.l<e.r&&e.t<t.b&&t.t<e.b,Tu=(e,t)=>Math.max(0,Math.min(e.r,t.r)-Math.max(e.l,t.l))*Math.max(0,Math.min(e.b,t.b)-Math.max(e.t,t.t)),Eu={up:[-1,0],down:[1,0],left:[0,-1],right:[0,1]};function Du(e){let t=mu,n=hu;e.diagram.relations.forEach((r,i)=>{let a=e.relLabel.get(i);a&&!r.hidden&&(n=Math.max(n,Math.min(a.height+28+24,160)),(r.direction===`left`||r.direction===`right`)&&(t=Math.max(t,a.width+28+16)))});let r=null;for(let i=0;i<xu;i++){let i=Iu(e,Ou(e,t,n,Ou(e,t,n)));if((!r||i.conflicts<r.conflicts)&&(r=i),i.conflicts===0)break;i.needs.x>0&&(t=Math.max(t+30,i.needs.x)),i.needs.y>0&&(n=Math.max(n+30,i.needs.y))}return r.result}function Ou(e,t,n,r){let i=e.diagram,a=i.direction===`LR`,o=e=>i.elements.get(e)?.parent??i.boundaries.get(e)?.parent,s=(e,t)=>{let n=e;for(let e=0;e<1e3;e++){let e=o(n);if((e??``)===t)return n;if(e===void 0)return;n=e}},c=new Map,l=t=>{let n=p(t),r=e.boundaryLabel.get(t)??{width:0,height:0};return{width:Math.max(n.width+56,r.width+56,140),height:r.height+(n.height>0?_u+n.height+gu:gu/2)}},u=(e,t=i.children.get(e)??[],n)=>{let r=new Map,o=new Set,c=e=>`${e.r},${e.c}`,l=(e,t)=>{r.set(e,t),o.add(c(t))},u=t=>{for(let n of i.relations){if(!n.direction)continue;let i=s(n.from,e),a=s(n.to,e);if(!i||!a||i===a)continue;let l,u=1;if(a===t&&r.has(i)?l=r.get(i):i===t&&r.has(a)&&(l=r.get(a),u=-1),!l)continue;let[d,f]=Eu[n.direction],p={r:l.r+d*u,c:l.c+f*u};for(;o.has(c(p));)p.r+=d*u,p.c+=f*u;return p}return null},d=t.filter(e=>i.elements.has(e)),f=t.filter(e=>i.boundaries.has(e)),p=0,m=(e,t)=>{for(;;){let n=Math.floor(p/e),r=p%e;p++;let i=a?{r,c:t+n}:{r:t+n,c:r};if(!o.has(c(i)))return i}},h=new Set;for(let e of d){let t=u(e);t?l(e,t):(l(e,m(i.shapeInRow,0)),h.add(e))}let g=e=>a?e.c:e.r,_=Math.max(-1,...d.map(e=>g(r.get(e)))),v=d.filter(e=>g(r.get(e))===_);if((d.length>0?Math.ceil(d.length/i.shapeInRow):0)>1&&v.length<i.shapeInRow&&v.every(e=>h.has(e))){let e=i.shapeInRow-v.length,t=Math.min(e,n??Math.floor(e/2));for(let e of v){let n=r.get(e);o.delete(c(n)),a?n.r+=t:n.c+=t,o.add(c(n))}}let y=0;for(let e of r.values())y=Math.max(y,(a?e.c:e.r)+1);p=0;for(let e of f)l(e,u(e)??m(i.boundaryInRow,y));let b=[...new Set([...r.values()].map(e=>e.r))].sort((e,t)=>e-t),x=[...new Set([...r.values()].map(e=>e.c))].sort((e,t)=>e-t);for(let e of r.values())e.r=b.indexOf(e.r),e.c=x.indexOf(e.c);return r},d=r=>{let a=new Map;for(let t of r.keys())a.set(t,i.elements.has(t)?e.elementSize.get(t):l(t));let o=e=>i.elements.has(e),s=0;for(let[e,t]of a)o(e)&&(s=Math.max(s,t.width));let c=Math.max(0,...[...r.values()].map(e=>e.r+1)),u=Array.from({length:c},()=>[]);for(let[e,t]of r)u[t.r].push(e);for(let e of u)e.sort((e,t)=>r.get(e).c-r.get(t).c);let d=u.map(e=>e.every(o)),f=1/0,p=-1/0;u.forEach((e,t)=>{if(d[t])for(let t of e)f=Math.min(f,r.get(t).c),p=Math.max(p,r.get(t).c)});let m=Number.isFinite(f)?(p-f+1)*s+(p-f)*t:0,h=u.map((e,n)=>d[n]?m:e.reduce((e,n,r)=>e+a.get(n).width+(r>0?t:0),0)),g=Math.max(0,...h),_=new Map,v=0;return u.forEach((e,i)=>{if(e.length===0)return;let o=Math.max(...e.map(e=>a.get(e).height));if(d[i]){let n=(g-m)/2;for(let i of e)_.set(i,{x:n+(r.get(i).c-f)*(s+t),y:v,width:s,height:o})}else{let n=(g-h[i])/2;for(let r of e){let e=a.get(r);_.set(r,{x:n,y:v,width:e.width,height:e.height}),n+=e.width+t}}v+=o+n}),{width:g,height:Math.max(0,v-n),items:_}},f=a=>{let o=[...i.children.get(a)??[]],c=[],l=[];for(let e of i.relations){if(e.hidden)continue;let t=s(e.from,a),n=s(e.to,a);if(t&&n&&t!==n)c.push([t,n]);else if(r&&(t||n)&&!(t&&n)){let i=r.elements.get(t?e.to:e.from)??r.boundaries.get(t?e.to:e.from);i&&l.push([t??n,i])}}let f=u(a,o);if(c.length===0&&l.length===0||o.length<2)return f;let p=a===``?void 0:r?.boundaries.get(a),m=e.boundaryLabel.get(a)?.height??0,h=e=>{let r=d(e),a=e=>{let t=r.items.get(e);return{l:t.x,t:t.y,r:t.x+t.width,b:t.y+t.height}},o=0;for(let[e,i]of c){let s=a(e),c=a(i);o+=Math.max(0,Math.max(s.l,c.l)-Math.min(s.r,c.r))+Math.max(0,Math.max(s.t,c.t)-Math.min(s.b,c.b));let l={x:(s.l+s.r)/2,y:(s.t+s.b)/2},u={x:(c.l+c.r)/2,y:(c.t+c.b)/2};for(let s of r.items.keys())s!==e&&s!==i&&Lu(l,u,a(s))&&(o+=t+n+120)}if(l.length>0){let e=p?p.x-r.width/2:0,t=p?p.y-p.height/2+m+_u:0;for(let[n,r]of l){let i=a(n);o+=.5*(Math.abs(e+(i.l+i.r)/2-r.x)+Math.abs(t+(i.t+i.b)/2-r.y))}}let s=new Map;for(let t of e.values())s.set(t.r,(s.get(t.r)??0)+1);for(let e of s.values())e>Math.max(i.shapeInRow,i.boundaryInRow)&&(o+=(e-Math.max(i.shapeInRow,i.boundaryInRow))*400);return o},g=h(f),_=o.filter(e=>i.elements.has(e)),v=o.filter(e=>i.boundaries.has(e)),y=Math.max(0,i.shapeInRow-(_.length%i.shapeInRow||i.shapeInRow)),b=[Math.floor(y/2),...Array.from({length:y+1},(e,t)=>t)];if(_.length<=6&&v.length<=3){for(let e of Ru(_))for(let t of Ru(v))for(let n of b){let r=u(a,[...e,...t],n),i=h(r);i<g-1e-6&&(g=i,f=r)}return f}for(let e=0;e<4;e++){let e=!1;for(let t=0;t<o.length;t++)for(let n=t+1;n<o.length;n++){if(i.elements.has(o[t])!==i.elements.has(o[n]))continue;[o[t],o[n]]=[o[n],o[t]];let r=u(a,o),s=h(r);s<g-1e-6?(g=s,f=r,e=!0):[o[t],o[n]]=[o[n],o[t]]}if(!e)break}return f};function p(e){let t=c.get(e);if(t)return t;let n=d(f(e));return c.set(e,n),n}let m=new Map,h=new Map,g=(t,n,r)=>{let a=p(t);for(let[t,o]of a.items){let a={x:n+o.x+o.width/2,y:r+o.y+o.height/2,width:o.width,height:o.height};if(i.elements.has(t)){m.set(t,a);continue}h.set(t,a);let s=p(t),c=e.boundaryLabel.get(t)??{width:0,height:0};g(t,n+o.x+(o.width-s.width)/2,r+o.y+c.height+_u)}};g(``,0,0);let _=p(``);return{elements:m,boundaries:h,width:_.width,height:_.height}}var ku=[1,0,-1,0],Au=[0,1,0,-1];function ju(e,t,n,r){let i=Su(t),a=[],o=n?i.t+40:i.t,s=(t,n,r)=>{let s;s=t===0||t===2?{x:t===0?i.r:i.l,y:o+(i.b-o)*n}:{x:i.l+(i.r-i.l)*n,y:t===1?i.b:i.t},a.push({at:s,stub:{x:s.x+ku[t]*vu,y:s.y+Au[t]*vu},out:t,key:`${e}:${t}:${n}`,cost:r})},c=Su(r),l=Math.max(i.l+16,c.l+16),u=Math.min(i.r-16,c.r-16);if(l<=u&&!(n&&c.b<=i.t)){let e=((l+u)/2-i.l)/(i.r-i.l);s(c.t>=i.b?1:3,e,0)}let d=Math.max(o+16,c.t+16),f=Math.min(i.b-16,c.b-16);if(d<=f){let e=((d+f)/2-o)/(i.b-o);s(c.l>=i.r?0:2,e,0)}for(let e of[0,1,2,3])s(e,.5,0),!(n&&e===3)&&(s(e,.35,6),s(e,.65,6),s(e,.2,14),s(e,.8,14));return a}var Mu=class{constructor(){this.items=[],this.seq=0}get size(){return this.items.length}push(e,t){let n=this.items;n.push({f:e,n:this.seq++,s:t});let r=n.length-1;for(;r>0;){let e=r-1>>1;if(Nu(n[e],n[r]))break;[n[e],n[r]]=[n[r],n[e]],r=e}}pop(){let e=this.items,t=e[0],n=e.pop();if(e.length>0){e[0]=n;let t=0;for(;;){let n=2*t+1,r=n+1,i=t;if(n<e.length&&Nu(e[n],e[i])&&(i=n),r<e.length&&Nu(e[r],e[i])&&(i=r),i===t)break;[e[i],e[t]]=[e[t],e[i]],t=i}}return t.s}},Nu=(e,t)=>e.f<t.f||e.f===t.f&&e.n<t.n,Pu=class{constructor(){this.h=new Map,this.v=new Map}add(e,t){e.y===t.y?Fu(this.h,e.y,e.x,t.x):e.x===t.x&&Fu(this.v,e.x,e.y,t.y)}shared(e,t){let n=e.y===t.y?this.h.get(e.y):this.v.get(e.x);if(!n)return 0;let[r,i]=e.y===t.y?[Math.min(e.x,t.x),Math.max(e.x,t.x)]:[Math.min(e.y,t.y),Math.max(e.y,t.y)],a=0;for(let[e,t]of n)a+=Math.max(0,Math.min(i,t)-Math.max(r,e));return a}crosses(e,t){let n=t?this.v.get(e.x):this.h.get(e.y),r=t?e.y:e.x;return!!n&&n.some(([e,t])=>r>e&&r<t)}};function Fu(e,t,n,r){let i=e.get(t)??[];i.push([Math.min(n,r),Math.max(n,r)]),e.set(t,i)}function Iu(e,t){let n=e.diagram,{elements:r,boundaries:i}=t,a=(e,t)=>{let r=e;for(;r!==void 0;){if(r===t)return!0;r=n.elements.get(r)?.parent??n.boundaries.get(r)?.parent}return!1},o=t=>{let n=Su(i.get(t)),r=e.boundaryLabel.get(t)??{width:0,height:0};return{l:n.l,t:n.t,r:Math.min(n.r,n.l+12+r.width),b:n.t+r.height-4}},s=[...i.keys()].map(o),c={l:0,t:0,r:t.width,b:t.height},l=e=>c={l:Math.min(c.l,e.l),t:Math.min(c.t,e.t),r:Math.max(c.r,e.r),b:Math.max(c.b,e.b)};for(let e of[...r.values(),...i.values()])l(Su(e));let u=Cu(c,yu),d=new Pu,f=new Set,p=new Map,m=n.relations.map((e,t)=>({r:e,i:t})).filter(({r:e})=>!e.hidden),h=e=>r.get(e)??i.get(e),g=e=>{let t=h(e.from),n=h(e.to);return Math.abs(t.x-n.x)+Math.abs(t.y-n.y)};m.sort((e,t)=>g(e.r)-g(t.r)||e.i-t.i);for(let{r:e,i:t}of m){let s=h(e.from),c=h(e.to);if(e.from===e.to){let e=Su(s),n=s.y-14,r=s.y+14,i=e.r+28;p.set(t,{points:[{x:e.r,y:n},{x:i,y:n},{x:i,y:r},{x:e.r,y:r}]});continue}let l=[];for(let[t,n]of r)l.push(t===e.from||t===e.to?Su(n):Cu(Su(n),vu));let m=[];for(let[t,n]of i){if(t===e.from||t===e.to){l.push(Su(n));continue}let r=a(e.from,t)||a(e.to,t);l.push(r?Cu(o(t),4):Cu(Su(n),vu/2)),r&&m.push(Su(n))}let g=e=>n.elements.get(e)?.shape===`person`,_=ju(e.from,s,g(e.from),c),v=ju(e.to,c,g(e.to),s),y=new Set([u.l,u.r]),b=new Set([u.t,u.b]);for(let e of l)y.add(e.l).add(e.r),b.add(e.t).add(e.b);for(let e of m)y.add(e.l-vu).add(e.l+vu).add(e.r-vu).add(e.r+vu),b.add(e.t-vu).add(e.b-vu).add(e.b+vu);for(let e of[..._,...v])y.add(e.stub.x),b.add(e.stub.y);let x=e=>{let t=[...e].map(e=>Math.round(e*100)/100).sort((e,t)=>e-t),n=[];return t.forEach((e,r)=>{r>0&&e-t[r-1]>8&&n.push(Math.round((e+t[r-1])/2*100)/100),n.push(e)}),[...new Set(n)].sort((e,t)=>e-t)},S=x(y),C=x(b),w=S.length,T=new Map(S.map((e,t)=>[e,t])),E=new Map(C.map((e,t)=>[e,t])),D=e=>Math.round(e*100)/100,O=(e,t)=>{let n=(e.x+t.x)/2,r=(e.y+t.y)/2;for(let e of l)if(n>e.l&&n<e.r&&r>e.t&&r<e.b)return!0;return!1},k=(e,t,n)=>(t*w+e)*4+n,A=new Map;for(let e of v){let t=T.get(D(e.stub.x)),n=E.get(D(e.stub.y));t!==void 0&&n!==void 0&&A.set(n*w+t,e)}let j=new Map,M=new Map,N=new Mu,P=(e,t)=>{let n=1/0;for(let r of v)n=Math.min(n,Math.abs(S[e]-r.stub.x)+Math.abs(C[t]-r.stub.y));return n},ee=new Map;for(let e of _){let t=T.get(D(e.stub.x)),n=E.get(D(e.stub.y));if(t===void 0||n===void 0)continue;let r=k(t,n,e.out),i=e.cost+(f.has(e.key)?60:0);i<(j.get(r)??1/0)&&(j.set(r,i),ee.set(r,e),N.push(i+P(t,n),r))}let te=-1,ne=null,F=new Set;for(;N.size>0;){let e=N.pop();if(F.has(e))continue;if(F.add(e),e<0){te=e,ne=A.get((-1-e)/4);break}let t=e%4,n=(e-t)/4,r=n%w,i=(n-r)/w,a=A.get(n);if(a&&t===(a.out+2)%4){let t=j.get(e)+a.cost+(f.has(a.key)?60:0),r=-1-n*4;t<(j.get(r)??1/0)&&(j.set(r,t),M.set(r,e),N.push(t,r))}for(let n=0;n<4;n++){if(n===(t+2)%4)continue;let a=r+ku[n],o=i+Au[n];if(a<0||o<0||a>=w||o>=C.length)continue;let s={x:S[r],y:C[i]},c={x:S[a],y:C[o]};if(O(s,c))continue;let l=Math.abs(c.x-s.x)+Math.abs(c.y-s.y);if(n!==t&&ee.has(e))continue;let u=l+(n===t?0:bu),f=d.shared(s,c);f>0&&(u+=40+f*3),d.crosses(c,n%2==0)&&(u+=12),u+=zu(s,c,m);let p=k(a,o,n),h=j.get(e)+u;h<(j.get(p)??1/0)&&(j.set(p,h),M.set(p,e),N.push(h+P(a,o),p))}}let re;if(te!==-1&&ne){let e=[],t=M.get(te),n;for(;t!==void 0;){let r=(t-t%4)/4,i=r%w;e.push({x:S[i],y:C[(r-i)/w]}),n=t,t=M.get(t)}e.reverse();let r=ee.get(n);re=Bu([r.at,...e,ne.at]),f.add(r.key),f.add(ne.key)}else re=[{x:s.x,y:s.y},{x:c.x,y:c.y}];for(let e=1;e<re.length;e++)d.add(re[e-1],re[e]);p.set(t,{points:re})}let{conflicts:_,needs:v}=Vu(e,r,s,[...i.values()].map(Su),p),y=1/0,b=1/0,x=-1/0,S=-1/0,C=e=>{y=Math.min(y,e.l),b=Math.min(b,e.t),x=Math.max(x,e.r),S=Math.max(S,e.b)};for(let e of[...r.values(),...i.values()])C(Su(e));for(let[t,n]of p){for(let e of n.points)C({l:e.x,t:e.y,r:e.x,b:e.y});let r=e.relLabel.get(t);n.label&&r&&C(Su({...n.label,...r}))}Number.isFinite(y)||(y=0,b=0,x=0,S=0);let w=e=>({x:e.x-y,y:e.y-b});for(let e of[r,i])for(let[t,n]of e)e.set(t,{...n,...w(n)});for(let e of p.values())e.points=e.points.map(w),e.label&&=w(e.label);return{result:{width:x-y,height:S-b,elements:r,boundaries:i,rels:p},conflicts:_,needs:v}}function Lu(e,t,n){let r=0,i=1,a=t.x-e.x,o=t.y-e.y;for(let[t,s]of[[-a,e.x-n.l],[a,n.r-e.x],[-o,e.y-n.t],[o,n.b-e.y]]){if(t===0){if(s<0)return!1;continue}let e=s/t;if(t<0?r=Math.max(r,e):i=Math.min(i,e),r>i)return!1}return r<i}function Ru(e){if(e.length<=1)return[e.slice()];let t=[];return e.forEach((n,r)=>{for(let i of Ru([...e.slice(0,r),...e.slice(r+1)]))t.push([n,...i])}),t}function zu(e,t,n){let r=0,i=e.y===t.y;for(let a of n)if(i){let n=Math.min(e.x,t.x),i=Math.max(e.x,t.x),o=Math.min(i,a.r)-Math.max(n,a.l);o>0&&(Math.abs(e.y-a.t)<vu||Math.abs(e.y-a.b)<vu)&&(r+=o*2),e.y>a.t&&e.y<a.b&&(n<a.l&&i>a.l&&(r+=60),n<a.r&&i>a.r&&(r+=60))}else{let n=Math.min(e.y,t.y),i=Math.max(e.y,t.y),o=Math.min(i,a.b)-Math.max(n,a.t);o>0&&(Math.abs(e.x-a.l)<vu||Math.abs(e.x-a.r)<vu)&&(r+=o*2),e.x>a.l&&e.x<a.r&&(n<a.t&&i>a.t&&(r+=60),n<a.b&&i>a.b&&(r+=60))}return r}function Bu(e){let t=[];for(let n of e){let e=t[t.length-1];if(!(e&&Math.abs(e.x-n.x)<.01&&Math.abs(e.y-n.y)<.01))for(t.push(n);t.length>=3;){let[e,n,r]=t.slice(-3);if(!(Math.abs(e.x-n.x)<.01&&Math.abs(n.x-r.x)<.01||Math.abs(e.y-n.y)<.01&&Math.abs(n.y-r.y)<.01))break;t.splice(t.length-2,1)}}return t}function Vu(e,t,n,r,i){let a=[],o=[...t.values()].map(Su),s=[];for(let[e,t]of i)for(let n=1;n<t.points.length;n++)s.push({a:t.points[n-1],b:t.points[n],rel:e});let c=0,l={x:0,y:0},u=[...i.keys()].filter(t=>e.relLabel.has(t)),d=e=>{let t=i.get(e).points,n=0;for(let e=1;e<t.length;e++)n+=Math.abs(t[e].x-t[e-1].x)+Math.abs(t[e].y-t[e-1].y);return n};u.sort((e,t)=>d(e)-d(t)||e-t);for(let t of u){let u=e.relLabel.get(t),f=i.get(t).points,p=d(t),m=null,h=0;for(let e=1;e<f.length;e++){let i=f[e-1],c=f[e],l=Math.abs(c.x-i.x)+Math.abs(c.y-i.y),d=Math.abs(i.y-c.y)<.01;for(let e of[.5,.3,.7,.15,.85]){let g={x:i.x+(c.x-i.x)*e,y:i.y+(c.y-i.y)*e};(d?[{x:0,y:0},{x:0,y:-(u.height/2+4)},{x:0,y:u.height/2+4}]:[{x:0,y:0},{x:u.width/2+6,y:0},{x:-(u.width/2+6),y:0}]).forEach((i,c)=>{let _={x:g.x+i.x,y:g.y+i.y},v={l:_.x-u.width/2,t:_.y-u.height/2,r:_.x+u.width/2,b:_.y+u.height/2},y=Math.abs(h+l*e-p/2)*.3+(c>0?60:0)+(l<(d?u.width:u.height)?20:0);for(let e of o)wu(v,Cu(e,2))&&(y+=1e3+Tu(v,e));for(let e of a)wu(v,Cu(e,3))&&(y+=1e3+Tu(v,e));for(let e of n)wu(v,e)&&(y+=500);for(let e=1;e+1<f.length;e++){let t=f[e];t.x>v.l-4&&t.x<v.r+4&&t.y>v.t-4&&t.y<v.b+4&&(y+=80)}for(let e of r){let t=v.l>=e.l+6&&v.r<=e.r-6&&v.t>=e.t+6&&v.b<=e.b-6;wu(v,Cu(e,6))&&!t&&(y+=150)}for(let e of s)e.rel!==t&&wu(v,Cu({l:Math.min(e.a.x,e.b.x),t:Math.min(e.a.y,e.b.y),r:Math.max(e.a.x,e.b.x),b:Math.max(e.a.y,e.b.y)},.5))&&(y+=200);(!m||y<m.score)&&(m={p:_,score:y,horizontal:d})})}h+=l}if(!m)continue;let g=m;g.score>=500&&(c++,g.horizontal?l.x=Math.max(l.x,u.width+28+12):l.y=Math.max(l.y,u.height+28+12)),i.get(t).label=g.p,a.push({l:g.p.x-u.width/2,t:g.p.y-u.height/2,r:g.p.x+u.width/2,b:g.p.y+u.height/2})}return{conflicts:c,needs:l}}var Hu={...R,size:14,weight:`bold`},Uu={...R,size:12},Wu={...R,size:13},Gu={...R,size:11},Ku={...R,size:18,weight:`bold`},qu=216,Ju=14,Yu=70,Xu=9,Zu=180,Qu=320,$u=9,ed=14;function td(e,t,n,r){return X(an(Y(e),t,n,r),n,r)}function nd(e){let t=e.external?`External `:``;if(e.type)return`[${e.type}]`;switch(e.level){case`person`:return`[${t}Person]`;case`system`:return`[${t}${e.external?`System`:`Software System`}]`;case`container`:return`[${t}Container${e.techn?`: ${e.techn}`:``}]`;case`component`:return`[${t}Component${e.techn?`: ${e.techn}`:``}]`}}function rd(e){if(e.type)return`[${e.type}]`;switch(e.kind){case`enterprise`:return`[Enterprise]`;case`system`:return`[Software System]`;case`container`:return`[Container]`;default:return}}function id(e,t){if(!e)return;if(t===`text`)return e.text?`fill:${e.text}`:void 0;let n=[e.fill?`fill:${e.fill}`:``,e.stroke?`stroke:${e.stroke}`:``].filter(Boolean);return n.length>0?n.join(`;`):void 0}function ad(e,t,n){let r=t.x-t.width/2,i=t.y-t.height/2,a=t.width,o=t.height;switch(e.shape){case`person`:return[B(`rect`,{class:`dg-shape`,style:n,x:r,y:i+40,width:a,height:o-40,rx:22,ry:22}),B(`circle`,{class:`dg-c4-head`,style:n,cx:t.x,cy:i+21,r:21})];case`db`:{let e=new H().moveTo(r,i+Xu).arcTo(a/2,Xu,0,!1,!1,r+a,i+Xu).lineTo(r+a,i+o-Xu).arcTo(a/2,Xu,0,!1,!0,r,i+o-Xu).close(),t=new H().moveTo(r,i+Xu).arcTo(a/2,Xu,0,!1,!0,r+a,i+Xu);return[B(`path`,{class:`dg-shape`,style:n,d:e.toString()}),B(`path`,{class:`dg-c4-lid`,style:n,d:t.toString()})]}case`queue`:{let e=new H().moveTo(r+Xu,i).lineTo(r+a-Xu,i).arcTo(Xu,o/2,0,!1,!0,r+a-Xu,i+o).lineTo(r+Xu,i+o).arcTo(Xu,o/2,0,!1,!0,r+Xu,i).close(),t=new H().moveTo(r+a-Xu,i).arcTo(Xu,o/2,0,!1,!1,r+a-Xu,i+o);return[B(`path`,{class:`dg-shape`,style:n,d:e.toString()}),B(`path`,{class:`dg-c4-lid`,style:n,d:t.toString()})]}default:return[B(`rect`,{class:`dg-shape`,style:n,x:r,y:i,width:a,height:o,rx:10,ry:10})]}}function od(e){let t=no(e,1),n=new H;if(t.length===0)return``;n.moveTo(t[0].x,t[0].y);for(let e=1;e+1<t.length;e++){let r=t[e-1],i=t[e],a=t[e+1],o=Math.hypot(i.x-r.x,i.y-r.y),s=Math.hypot(a.x-i.x,a.y-i.y),c=Math.min(10,o/2,s/2),l={x:i.x+(r.x-i.x)*c/o,y:i.y+(r.y-i.y)*c/o},u={x:i.x+(a.x-i.x)*c/s,y:i.y+(a.y-i.y)*c/s};n.lineTo(l.x,l.y).quadTo(i.x,i.y,u.x,u.y)}let r=t[t.length-1];return n.lineTo(r.x,r.y),n.toString()}function sd(e){switch(e.shape){case`person`:return{top:40+Ju,bottom:Ju,width:0,shift:0};case`db`:return{top:30,bottom:19,width:0,shift:0};case`queue`:return{top:Ju,bottom:Ju,width:27,shift:-9/2};default:return{top:Ju,bottom:Ju,width:0,shift:0}}}function cd(e,t,n,r){let i=new Map,a=new Map;for(let n of e.elements.values()){let e=sd(n),r=188-e.width,o=td(n.label,r,Hu,t),s=td(nd(n),r,Uu,t),c=n.description?td(n.description,r,Uu,t):void 0,l=o.height+2+s.height+(c?8+c.height:0);i.set(n.id,{name:o,type:s,description:c,height:l});let u=Math.max(o.width,s.width,c?.width??0);a.set(n.id,{width:Math.max(qu,u+28+e.width),height:Math.max(Yu+(n.shape===`person`?40:0),l+e.top+e.bottom)})}let o=new Map,s=new Map;for(let n of e.boundaries.values()){let e=td(n.label,Qu,Hu,t),r=rd(n),i=r?td(r,Qu,Uu,t):void 0,a=n.description?td(n.description,Qu,Uu,t):void 0,c=Math.max(e.width,i?.width??0,a?.width??0),l=e.height+(i?i.height:0)+(a?4+a.height:0);o.set(n.id,{name:e,type:i,description:a,width:c,height:l}),s.set(n.id,{width:c+8,height:l+14})}let c=new Map,l=new Map;e.relations.forEach((e,n)=>{if(e.hidden)return;let r=e.label?td(e.label,Zu,Wu,t):void 0,i=e.techn?td(`[${e.techn}]`,Zu,Gu,t):void 0,a=e.description?td(e.description,Zu,Gu,t):void 0,o=e.index?X(Y(e.index),{...Gu,weight:`bold`},t):void 0,s=[r,i,a].filter(e=>!!e&&!tn(e.label));if(s.length===0&&!o)return;let u=o?Math.max(18,o.width+8)+(s.length>0?5:0):0,d=Math.max(0,...s.map(e=>e.width)),f=s.reduce((e,t)=>e+t.height,0),p=u+d+10,m=Math.max(f,o?18:0)+6;c.set(n,{label:r,techn:i,description:a,index:o,width:p,height:m}),l.set(n,{width:p,height:m})});let u=Du({diagram:e,elementSize:a,boundaryLabel:s,relLabel:l}),d=e.title?X(Y(e.title),Ku,t):void 0,f=Math.max(u.width,d?.width??0),p=d?d.height+ed:0,m=(f-u.width)/2,h=t=>{let n=0,r=e.boundaries.get(t)?.parent;for(;r!==void 0;)n++,r=e.boundaries.get(r)?.parent;return n},g=[],_=[...e.boundaries.values()].sort((e,t)=>h(e.id)-h(t.id)).map(e=>{let t=u.boundaries.get(e.id),n=o.get(e.id),r=t.x-t.width/2,i=t.y-t.height/2,a=e.kind===`node`,s=id(e.style,`text`),c=r+12,l=i+8,d=[],f=(e,t,n=0)=>{e&&(l+=n,d.push(Z(e,c,l+e.height/2,{anchor:`start`,className:t,style:s})),l+=e.height)};return f(n.name,`dg-c4-boundary-name`),f(n.type,`dg-c4-boundary-type`),f(n.description,`dg-c4-boundary-type`,4),g.push(B(`g`,{class:`dg-c4-frame-title dg-c4-${a?`node`:`boundary`}-title`,"data-id":e.id},d)),B(`g`,{class:`dg-cluster dg-c4-${a?`node`:`boundary`}`,"data-id":e.id,"data-parent":e.parent},[B(`rect`,{class:a?`dg-c4-node-box`:`dg-c4-boundary-box`,x:r,y:i,width:t.width,height:t.height,rx:a?6:10,style:id(e.style,`shape`)})])}),v=[],y=(e,t)=>{if(!e)return`url(#${ra(n,`arrow`,t)})`;let r=v.indexOf(e);return r<0&&(r=v.push(e)-1),`url(#${n}-m-c4-${r}${t?`-start`:``})`},b=(t,n)=>[...e.boundaries.values()].filter(e=>{if(e.kind!==`node`)return!1;let r=u.boundaries.get(e.id);return Math.abs(t-r.x)<r.width/2&&Math.abs(n-r.y)<r.height/2}),x=[],S=[];e.relations.forEach((e,t)=>{let n=u.rels.get(t);if(!n)return;let r=e.style?.line;x.push(B(`path`,{class:`dg-edge dg-c4-rel`,d:od(n.points),style:r?`stroke:${r}`:void 0,"marker-start":e.arrows===`end`?void 0:y(r,!0),"marker-end":e.arrows===`start`?void 0:y(r,!1),"data-from":e.from,"data-to":e.to}));let i=c.get(t);if(!i||!n.label)return;let{x:a,y:o}=n.label,s=a-i.width/2,l=o-i.height/2,d=e.style?.text?`fill:${e.style.text}`:void 0,f=[B(`rect`,{class:`dg-edge-label-box`,x:s,y:l,width:i.width,height:i.height,rx:3}),...b(a,o).map(()=>B(`rect`,{class:`dg-c4-label-tint`,x:s,y:l,width:i.width,height:i.height,rx:3}))],p=[[i.label,`dg-edge-label dg-c4-rel-label`],[i.techn,`dg-c4-rel-techn`],[i.description,`dg-c4-rel-descr`]],m=0;i.index&&(m=Math.max(18,i.index.width+8));let h=p.filter(([e])=>e&&!tn(e.label)),g=h.reduce((e,[t])=>e+t.height,0),_=s+5+(m>0?m+(h.length>0?5:0):0),v=Math.max(0,...h.map(([e])=>e.width)),C=o-g/2;for(let[e,t]of h)f.push(Z(e,_+v/2,C+e.height/2,{className:t,style:d})),C+=e.height;if(i.index){let e=s+5+m/2,t=h[0]?.[0],n=t?o-g/2+t.lineHeight/2:o;f.push(B(`rect`,{class:`dg-c4-index`,x:e-m/2,y:n-$u,width:m,height:18,rx:$u,style:r?`fill:${r}`:void 0}),Z(i.index,e,n,{className:`dg-c4-index-text`}))}S.push(B(`g`,{class:`dg-edge-label-group dg-c4-rel-label-group`},f))});let C=[...e.elements.values()].map(e=>{let t=u.elements.get(e.id),n=i.get(e.id),r=sd(e),a=id(e.style,`shape`),o=id(e.style,`text`),s=t.y-t.height/2,c=t.height-r.top-r.bottom,l=s+r.top+Math.max(0,(c-n.height)/2),d=t.x+r.shift,f=[...ad(e,t,a)];return f.push(Z(n.name,d,l+n.name.height/2,{className:`dg-c4-name`,style:o})),l+=n.name.height+2,f.push(Z(n.type,d,l+n.type.height/2,{className:`dg-c4-type`,style:o})),l+=n.type.height,n.description&&(l+=8,f.push(Z(n.description,d,l+n.description.height/2,{className:`dg-c4-descr`,style:o}))),B(`g`,{class:[`dg-node`,`dg-c4-element`,`dg-c4-${e.level}`,`dg-c4-${e.shape}`,e.external?`dg-c4-external`:``].filter(Boolean).join(` `),"data-id":e.id,"data-parent":e.parent},f)}),w=`#${n}`,T=(e,t)=>`${w} ${e} .dg-shape,${w} ${e} .dg-c4-head,${w} ${e} .dg-c4-lid{fill:${z(`--dg-c4-${t}-fill`)};stroke:${z(`--dg-c4-${t}-stroke`)}}${w} ${e} text{fill:${z(`--dg-c4-${t}-text`)}}`,E=[`${w} .dg-c4-element .dg-shape,${w} .dg-c4-head,${w} .dg-c4-lid{stroke-width:1.5px}`,T(`.dg-c4-person`,`person`),T(`.dg-c4-system`,`system`),T(`.dg-c4-container`,`container`),T(`.dg-c4-component`,`component`),T(`.dg-c4-element.dg-c4-external`,`external`),`${w} .dg-c4-lid{fill:none !important}`,`${w} .dg-c4-name{font-weight:bold;font-size:14px}`,`${w} .dg-c4-type{font-size:12px;opacity:0.85}`,`${w} .dg-c4-descr{font-size:12px}`,`${w} .dg-c4-boundary-box{fill:none;stroke:var(--dg-c4-boundary-stroke, var(--dg-text-muted, #6b7280));stroke-width:1.5px;stroke-dasharray:8 5}`,`${w} .dg-c4-node-box{fill:${z(`--dg-c4-node-fill`)};stroke:var(--dg-c4-node-stroke, var(--dg-text-muted, #6b7280));stroke-width:1.25px}`,`${w} .dg-c4-boundary-title text{fill:var(--dg-c4-boundary-text, var(--dg-text, #1f2937))}`,`${w} .dg-c4-node-title text{fill:var(--dg-c4-node-text, var(--dg-text, #1f2937))}`,`${w} .dg-c4-frame-title text{paint-order:stroke;stroke:${z(`--dg-edge-label-fill`)};stroke-width:4px;stroke-linejoin:round}`,`${w} .dg-c4-boundary-name{font-weight:bold;font-size:14px}`,`${w} .dg-c4-boundary-type{font-size:12px;opacity:0.8}`,`${w} .dg-c4-rel{stroke-dasharray:6 4}`,`${w} .dg-c4-rel-label-group text{fill:${z(`--dg-text`)}}`,`${w} .dg-c4-rel-label-group .dg-edge-label-box{opacity:1}`,`${w} .dg-c4-label-tint{fill:${z(`--dg-c4-node-fill`)}}`,`${w} .dg-c4-rel-label{font-size:13px}`,`${w} .dg-c4-rel-label-group .dg-c4-rel-techn,${w} .dg-c4-rel-label-group .dg-c4-rel-descr{font-size:11px;fill:${z(`--dg-text-muted`)}}`,`${w} .dg-c4-rel-descr{font-style:italic}`,`${w} .dg-c4-index{fill:${z(`--dg-line`)}}`,`${w} .dg-c4-rel-label-group .dg-c4-index-text{font-size:11px;font-weight:bold;fill:${z(`--dg-number-text`)}}`,`${w} .dg-c4-title{font-weight:bold;font-size:18px}`].join(``),D=v.flatMap((e,t)=>[!1,!0].map(r=>B(`marker`,{id:`${n}-m-c4-${t}${r?`-start`:``}`,markerUnits:`userSpaceOnUse`,orient:`auto`,viewBox:`0 0 10 10`,refX:r?1:9,refY:5,markerWidth:10,markerHeight:10},[B(`path`,{d:`M0,0 L10,5 L0,10 z`,transform:r?`translate(10,0) scale(-1,1)`:void 0,style:`fill:${e};stroke:${e}`,"stroke-width":1})]))),O=[];return d&&O.push(Z(d,f/2,d.height/2,{className:`dg-c4-title`})),O.push(B(`g`,{transform:m!==0||p!==0?`translate(${V(m)},${V(p)})`:void 0},[B(`g`,{class:`dg-clusters`},_),B(`g`,{class:`dg-edges`},x),B(`g`,{class:`dg-c4-frame-titles`},g),B(`g`,{class:`dg-edge-labels`},S),B(`g`,{class:`dg-nodes`},C)])),U({id:n,type:`c4`,width:f,height:u.height+p,title:r??e.accessibility.title??e.title??`C4 diagram`,description:e.accessibility.description,defs:[...ia(n,[`arrow`]),...D],body:O,css:E})}var ld={...R,size:13},ud={...ld,weight:`bold`},dd=6,fd=26,pd=6,Q=e=>Math.round(e*100)/100;function md(e,t){let n=(e,n=ld)=>X(Y(e||` `),n,t),r=(e,t,n,r=`dg-salt-text`)=>Z(e,Q(t),Q(n),{anchor:`start`,className:r});switch(e.kind){case`empty`:return{width:0,height:0,draw:()=>[]};case`text`:{let t=n(e.text,e.bold?ud:ld),i=Math.max(fd,t.height);return{width:t.width,height:i,draw:(n,a)=>[r(t,n,a+i/2,e.bold?`dg-salt-text dg-salt-bold`:`dg-salt-text`)]}}case`button`:{let t=n(e.text.trim()),r=t.width+24;return{width:r,height:26,draw:(e,n)=>[B(`rect`,{class:`dg-salt-button`,x:Q(e),y:Q(n),width:Q(r),height:26,rx:5}),Z(t,Q(e+r/2),Q(n+13),{className:`dg-salt-button-text`})]}}case`input`:{let t=n(e.text.trimEnd()),i=Math.max(60,n(e.text.replace(/ /g,`\xA0`)).width+16);return{width:i,height:26,draw:(e,n,a)=>[B(`rect`,{class:`dg-salt-input`,x:Q(e),y:Q(n),width:Q(Math.max(i,a)),height:26,rx:2}),r(t,e+8,n+13)]}}case`checkbox`:case`radio`:{let t=n(e.text);return{width:20+t.width,height:fd,draw:(n,i)=>[...e.kind===`checkbox`?[B(`rect`,{class:`dg-salt-box`,x:Q(n),y:Q(i+7),width:12,height:12,rx:2}),e.checked?B(`path`,{class:`dg-salt-check`,d:new H().moveTo(Q(n+2.5),Q(i+13)).lineTo(Q(n+5.5),Q(i+16)).lineTo(Q(n+10),Q(i+10)).toString()}):null].filter(e=>e!==null):[B(`circle`,{class:`dg-salt-box`,cx:Q(n+6),cy:Q(i+13),r:6}),...e.checked?[B(`circle`,{class:`dg-salt-dot`,cx:Q(n+6),cy:Q(i+13),r:3})]:[]],r(t,n+18,i+13)]}}case`droplist`:{let t=n(e.text),i=t.width+36;return{width:i,height:26,draw:(e,n,a)=>{let o=Math.max(i,a);return[B(`rect`,{class:`dg-salt-input`,x:Q(e),y:Q(n),width:Q(o),height:26,rx:2}),r(t,e+8,n+13),B(`path`,{class:`dg-salt-arrow`,d:new H().moveTo(Q(e+o-16),Q(n+10)).lineTo(Q(e+o-8),Q(n+10)).lineTo(Q(e+o-12),Q(n+16)).close().toString()})]}}}case`separator`:return{width:0,height:10,draw:(t,n,r)=>hd(e.style,t,n+5,r)};case`tabs`:{let t=e.tabs.map((t,r)=>n(t,r===e.selected?ud:ld));if(e.vertical){let n=Math.max(...t.map(e=>e.width))+20;return{width:n,height:t.length*26,draw:(i,a)=>t.flatMap((t,o)=>[B(`rect`,{class:o===e.selected?`dg-salt-tab dg-salt-tab-selected`:`dg-salt-tab`,x:Q(i),y:Q(a+o*26),width:Q(n),height:26}),r(t,i+10,a+o*26+13)])}}let i=t.map(e=>e.width+20);return{width:i.reduce((e,t)=>e+t,0),height:26,draw:(n,a,o)=>{let s=n,c=[B(`line`,{class:`dg-salt-line`,x1:Q(n),y1:Q(a+26),x2:Q(n+Math.max(o,i.reduce((e,t)=>e+t,0))),y2:Q(a+26)})];return t.forEach((t,n)=>{c.push(B(`path`,{class:n===e.selected?`dg-salt-tab dg-salt-tab-selected`:`dg-salt-tab`,d:new H().moveTo(Q(s),Q(a+26)).lineTo(Q(s),Q(a+3)).lineTo(Q(s+i[n]),Q(a+3)).lineTo(Q(s+i[n]),Q(a+26)).toString()})),c.push(r(t,s+10,a+15)),s+=i[n]}),c}}}case`menu`:{let t=e.items.map(e=>n(e)),i=t.reduce((e,t)=>e+t.width+20,0);return{width:i,height:26,draw:(e,n,a)=>{let o=[B(`rect`,{class:`dg-salt-menu`,x:Q(e),y:Q(n),width:Q(Math.max(i,a)),height:26})],s=e;for(let e of t)o.push(r(e,s+10,n+13)),s+=e.width+20;return o}}}case`tree`:{let t=e.items.map(e=>n(e.text));return{width:Math.max(0,...t.map((t,n)=>t.width+e.items[n].depth*16))+8,height:t.length*22,draw:(n,i)=>t.flatMap((t,a)=>{let o=e.items[a].depth,s=i+a*22+11;return[...o>1?[B(`path`,{class:`dg-salt-tree`,d:new H().moveTo(Q(n+(o-2)*16+6),Q(s-11)).lineTo(Q(n+(o-2)*16+6),Q(s)).lineTo(Q(n+(o-1)*16-2),Q(s)).toString()})]:[],r(t,n+(o-1)*16,s)]})}}case`grid`:return gd(e,t)}}function hd(e,t,n,r){return e===`double`?[B(`line`,{class:`dg-salt-line`,x1:Q(t),y1:Q(n-1.5),x2:Q(t+r),y2:Q(n-1.5)}),B(`line`,{class:`dg-salt-line`,x1:Q(t),y1:Q(n+1.5),x2:Q(t+r),y2:Q(n+1.5)})]:[B(`line`,{class:`dg-salt-line dg-salt-${e}`,x1:Q(t),y1:Q(n),x2:Q(t+r),y2:Q(n)})]}function gd(e,t){let n=e.rows.map(e=>e.map(e=>md(e,t))),r=Math.max(1,...e.rows.map(e=>e.length===1&&e[0].kind===`separator`?1:e.length)),i=Array.from({length:r},(t,r)=>Math.max(0,...n.map((t,n)=>e.rows[n].length===1&&e.rows[n][0].kind===`separator`?0:t[r]?.width??0))),a=n.map(e=>Math.max(0,...e.map(e=>e.height))),o=e.border!==`none`||e.title!==void 0,s=o?pd:0,c=e.title?X(Y(e.title),ud,t):null,l=s+(c?c.height/2:0),u=i.reduce((e,t)=>e+t,0)+dd*(r-1),d=a.reduce((e,t)=>e+t,0)+dd*Math.max(0,a.length-1),f=e.scroll?14:0,p=Math.max(u,c?c.width+20:0)+s*2+f,m=d+l+s;return{width:p,height:m,draw:(t,d,h)=>{let g=Math.max(p,h),_=[],v={x:Q(t),y:Q(d+(c?c.height/2:0)),width:Q(g),height:Q(m-(c?c.height/2:0))};o&&_.push(B(`rect`,{class:`dg-salt-frame`,...v,rx:e.title?4:0})),c&&(_.push(B(`rect`,{class:`dg-salt-title-bg`,x:Q(t+8),y:Q(d),width:Q(c.width+8),height:Q(c.height)})),_.push(Z(c,Q(t+12),Q(d+c.height/2),{anchor:`start`,className:`dg-salt-text dg-salt-bold`}))),e.scroll&&(_.push(B(`rect`,{class:`dg-salt-scroll`,x:Q(t+g-f),y:v.y,width:f,height:v.height})),_.push(B(`rect`,{class:`dg-salt-thumb`,x:Q(t+g-f+3),y:Q(v.y+4),width:f-6,height:Q(Math.min(40,v.height/3)),rx:3})));let y=g-p,b=d+l;if(e.rows.forEach((o,c)=>{let l=t+s,d=o.length===1&&(o[0].kind===`separator`||r===1);o.forEach((e,t)=>{let a=d?u+y:i[t]+(t===r-1?y:0);_.push(...n[c][t].draw(l,b,a)),l+=i[t]+dd}),b+=a[c]+dd,c<e.rows.length-1&&(e.border===`all`||e.border===`rows`)&&_.push(B(`line`,{class:`dg-salt-grid`,x1:Q(t),y1:Q(b-dd/2),x2:Q(t+g-f),y2:Q(b-dd/2)}))}),e.border===`all`||e.border===`columns`){let e=t+s;for(let t=0;t<r-1;t++)e+=i[t]+dd,_.push(B(`line`,{class:`dg-salt-grid`,x1:Q(e-dd/2),y1:v.y,x2:Q(e-dd/2),y2:Q(v.y+v.height)}))}return _}}}function _d(e,t,n,r){let i=md(e.root,t),a=e.title?X(Y(e.title),{...R,size:18,weight:`bold`},t):null,o=a?a.height+12:0,s=Math.max(i.width,a?.width??0),c=[];a&&c.push(Z(a,s/2,a.height/2,{className:`dg-title`})),c.push(B(`g`,{class:`dg-salt`},i.draw(0,o,i.width)));let l=`#${n}`,u=[`${l} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`,`${l} .dg-salt-text{fill:${z(`--dg-text`)};font-size:13px}`,`${l} .dg-salt-bold{font-weight:bold}`,`${l} .dg-salt-button{fill:${z(`--dg-node-fill`)};stroke:${z(`--dg-node-stroke`)};stroke-width:1.5px}`,`${l} .dg-salt-button-text{fill:${z(`--dg-node-text`)};font-size:13px}`,`${l} .dg-salt-input,${l} .dg-salt-menu{fill:${z(`--dg-row-fill`)};stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${l} .dg-salt-box{fill:${z(`--dg-row-fill`)};stroke:${z(`--dg-line`)};stroke-width:1.2px}`,`${l} .dg-salt-check{fill:none;stroke:${z(`--dg-node-stroke`)};stroke-width:2px}`,`${l} .dg-salt-dot,${l} .dg-salt-arrow{fill:${z(`--dg-line`)}}`,`${l} .dg-salt-frame{fill:none;stroke:${z(`--dg-line`)};stroke-width:1px}`,`${l} .dg-salt-title-bg{fill:${z(`--dg-row-fill`)}}`,`${l} .dg-salt-grid,${l} .dg-salt-line,${l} .dg-salt-tree{fill:none;stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${l} .dg-salt-dotted{stroke-dasharray:2 3}`,`${l} .dg-salt-dashed{stroke-dasharray:6 4}`,`${l} .dg-salt-tab{fill:${z(`--dg-row-alt-fill`)};stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${l} .dg-salt-tab-selected{fill:${z(`--dg-row-fill`)}}`,`${l} .dg-salt-scroll{fill:${z(`--dg-row-alt-fill`)};stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${l} .dg-salt-thumb{fill:${z(`--dg-cluster-stroke`)}}`].join(``);return U({id:n,type:`salt`,width:s,height:o+i.height,title:r??e.accessibility.title??e.title??`Wireframe`,description:e.accessibility.description,body:c,css:u})}function vd(e){let t=q(e),n=t[0];if(!n||n.text!==`journey`)throw new L(`A user journey starts with "journey"`,n?.line??1,1);let r={type:`journey`,sections:[],tasks:[],actors:[],accessibility:{}},i=``;for(let e=1;e<t.length;e++){let n=t[e],a=J(t,e,r.accessibility);if(a>0){e+=a-1;continue}let o=/^title\s+(.*)$/.exec(n.text);if(o){r.title=o[1].trim();continue}if(o=/^section\s+(.*)$/.exec(n.text),o){i=o[1].trim(),r.sections.push(i);continue}if(o=/^([^:]+):\s*([0-9]+)\s*(?::\s*(.*))?$/.exec(n.text),!o)throw new L(`"${n.text}" is not a task`,n.line,n.column,`Task name: 5: Actor, Other actor`);let s=Number(o[2]);if(s<1||s>5)throw new L(`A score is from 1 to 5`,n.line,n.column+n.text.indexOf(o[2]));let c=(o[3]??``).split(`,`).map(e=>e.trim()).filter(Boolean);for(let e of c)r.actors.includes(e)||r.actors.push(e);r.tasks.push({name:o[1].trim(),score:s,actors:c,section:i})}if(r.tasks.length===0)throw new L(`The journey has no tasks`,0,0,`section Morning
36
+ Make tea: 5: Me`);return r}var yd=150,bd=14,xd=64,Sd=120;function Cd(e,t,n){let r=n>3?new H().moveTo(e-6,t+3).quadTo(e,t+9,e+6,t+3):n<3?new H().moveTo(e-6,t+7).quadTo(e,t+1,e+6,t+7):new H().moveTo(e-6,t+5).lineTo(e+6,t+5);return B(`g`,{class:`dg-journey-face dg-journey-score-${n}`},[B(`circle`,{class:`dg-journey-face-ring`,cx:e,cy:t,r:14}),B(`circle`,{class:`dg-journey-eye`,cx:e-5,cy:t-4,r:1.6}),B(`circle`,{class:`dg-journey-eye`,cx:e+5,cy:t-4,r:1.6}),B(`path`,{class:`dg-journey-mouth`,d:r.toString()})])}function wd(e,t,n,r){let i=e.actors.map(e=>X(Y(e),R,t)),a=e.actors.length>0?Math.max(...i.map(e=>e.width))+36:0,o=e.title?X(Y(e.title),{...R,size:18,weight:`bold`},t):null,s=o?o.height+14:0,c=a+(a>0?16:0),l=e=>c+e*164,u=[],d=l(e.tasks.length)-bd;o&&u.push(Z(o,d/2,o.height/2,{className:`dg-title`})),e.actors.forEach((e,t)=>{let n=s+40+t*24;u.push(B(`circle`,{class:`dg-journey-actor`,cx:10,cy:n,r:7,style:`fill:${Oe(t)}`})),u.push(Z(i[t],24,n,{anchor:`start`,className:`dg-journey-legend`}))});let f=s,p=f+40;(e.sections.length>0?e.sections:[``]).forEach((n,r)=>{let i=e.tasks.filter(e=>e.section===n);if(i.length===0)return;let a=e.tasks.indexOf(i[0]),o=l(a),s=l(a+i.length)-bd;if(n){let e=X(an(Y(n),s-o-12,{...R,weight:`bold`},t),{...R,weight:`bold`},t);u.push(B(`rect`,{class:`dg-journey-section`,x:o,y:f,width:s-o,height:30,rx:4,style:`fill:${Oe(r)}`})),u.push(Z(e,(o+s)/2,f+15,{className:`dg-journey-section-text`}))}}),e.tasks.forEach((n,r)=>{let i=l(r),a=X(an(Y(n.name),134,R,t),R,t),o=p+xd+24+(5-n.score)/4*80,s=i+yd/2,c=[B(`line`,{class:`dg-journey-stem`,x1:s,y1:p+xd,x2:s,y2:p+xd+Sd}),B(`rect`,{class:`dg-journey-card`,x:i,y:p,width:yd,height:xd,rx:6}),Z(a,s,p+xd/2+4,{className:`dg-journey-task`})];n.actors.forEach((t,n)=>{c.push(B(`circle`,{class:`dg-journey-actor`,cx:i+12+n*14,cy:p+10,r:5,style:`fill:${Oe(e.actors.indexOf(t))}`},[B(`title`,{},[{text:t}])]))}),c.push(Cd(s,o,n.score)),u.push(B(`g`,{class:`dg-journey-step`,"data-score":n.score},c))});let m=Math.max(p+xd+Sd+6,s+40+e.actors.length*24),h=`#${n}`,g=[`${h} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`,`${h} .dg-journey-section{fill-opacity:0.25;stroke:none}`,`${h} .dg-journey-section-text{fill:${z(`--dg-text`)};font-weight:bold}`,`${h} .dg-journey-card{fill:${z(`--dg-node-fill`)};stroke:${z(`--dg-node-stroke`)};stroke-width:1.5px}`,`${h} .dg-journey-task{fill:${z(`--dg-node-text`)}}`,`${h} .dg-journey-legend{fill:${z(`--dg-text`)}}`,`${h} .dg-journey-stem{stroke:${z(`--dg-grid`)};stroke-width:1.5px;stroke-dasharray:4 3}`,`${h} .dg-journey-face-ring{fill:${z(`--dg-journey-face`)};stroke:${z(`--dg-line`)};stroke-width:1.5px}`,`${h} .dg-journey-score-1 .dg-journey-face-ring,${h} .dg-journey-score-2 .dg-journey-face-ring{fill:${z(`--dg-journey-face-sad`)}}`,`${h} .dg-journey-score-4 .dg-journey-face-ring,${h} .dg-journey-score-5 .dg-journey-face-ring{fill:${z(`--dg-journey-face-happy`)}}`,`${h} .dg-journey-eye{fill:${z(`--dg-text`)}}`,`${h} .dg-journey-mouth{fill:none;stroke:${z(`--dg-text`)};stroke-width:1.5px}`].join(``);return U({id:n,type:`journey`,width:d,height:m,title:r??e.accessibility.title??e.title??`User journey`,description:e.accessibility.description,body:u,css:g})}function Td(e){let t=/^([\w-]*)\[(.*)\]$/.exec(e.trim());return t?{id:t[1]||t[2],text:t[2].replace(/^"|"$/g,``)}:{id:e.trim(),text:e.trim()}}function Ed(e){let t=q(e),n=t[0];if(!n||n.text!==`kanban`)throw new L(`A kanban board starts with "kanban"`,n?.line??1,1);let r={type:`kanban`,columns:[],accessibility:{}},i=-1;for(let e=1;e<t.length;e++){let n=t[e],a=J(t,e,r.accessibility);if(a>0){e+=a-1;continue}let o=n.text,s,c=o.indexOf(`@{`);if(c>=0){if(!o.trimEnd().endsWith(`}`))throw new L(`The metadata is not closed`,n.line,n.column+c,`@{ assigned: 'anna', priority: 'High' }`);s=o.slice(c+2,o.lastIndexOf(`}`)),o=o.slice(0,c)}if(i<0&&(i=n.column),n.column<=i){if(s)throw new L(`A column has no metadata`,n.line,n.column);let e=Td(o);r.columns.push({id:e.id,title:e.text,cards:[]}),i=n.column;continue}let l=r.columns[r.columns.length-1];if(!l)throw new L(`A card belongs under a column`,n.line,n.column);let u=Td(o),d={id:u.id,text:u.text};for(let e of(s??``).split(`,`)){let t=/^\s*(\w+)\s*:\s*['"]?(.*?)['"]?\s*$/.exec(e);if(!t)continue;let r=t[1].toLowerCase();if(r===`assigned`)d.assigned=t[2];else if(r===`ticket`)d.ticket=t[2];else if(r===`priority`){let e=t[2].toLowerCase().replace(/\s+/g,`-`);if(![`very-high`,`high`,`low`,`very-low`].includes(e))throw new L(`"${t[2]}" is not a priority`,n.line,n.column,`Very High, High, Low, Very Low`);d.priority=e}else throw new L(`"${r}" is not card metadata`,n.line,n.column,`assigned, ticket, priority`)}l.cards.push(d)}if(r.columns.length===0)throw new L(`The board has no columns`,0,0,`todo[To do]
37
+ t1[A card]`);return r}var Dd=200,Od=14;function kd(e,t,n,r){let i={...R,size:12},a={...R,weight:`bold`},o=e.columns.map(e=>{let n=X(an(Y(e.title),180,a,t),a,t),r=n.height+22;return{column:e,titleLabel:n,cards:e.cards.map(e=>{let n=X(an(Y(e.text),164,R,t),R,t),i=n.height+20+(e.ticket||e.assigned?20:0),a={card:e,text:n,y:r,h:i};return r+=i+8,a}),height:Math.max(r+4,80)}}),s=Math.max(...o.map(e=>e.height)),c=o.map(({column:e,titleLabel:n,cards:r},a)=>{let o=a*214;return B(`g`,{class:`dg-kanban-column`,"data-id":e.id},[B(`rect`,{class:`dg-kanban-lane`,x:o,y:0,width:Dd,height:s,rx:6}),Z(n,o+Dd/2,11+n.height/2,{className:`dg-kanban-title`}),...r.map(({card:e,text:n,y:r,h:a})=>{let s=[B(`rect`,{class:`dg-kanban-card`,x:o+8,y:r,width:184,height:a,rx:5}),Z(n,o+22,r+10+n.height/2,{anchor:`start`,className:`dg-kanban-text`})];return e.priority&&s.push(B(`rect`,{class:`dg-kanban-priority dg-kanban-${e.priority}`,x:o+8,y:r,width:5,height:a,rx:2})),e.ticket&&s.push(Z(X(Y(e.ticket),i,t),o+22,r+a-12,{anchor:`start`,className:`dg-kanban-meta`})),e.assigned&&s.push(Z(X(Y(e.assigned),i,t),o+Dd-18,r+a-12,{anchor:`end`,className:`dg-kanban-meta`})),B(`g`,{class:`dg-kanban-item`,"data-id":e.id},s)})])}),l=`#${n}`,u=[`${l} .dg-kanban-lane{fill:${z(`--dg-cluster-fill`)};stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${l} .dg-kanban-title{fill:${z(`--dg-cluster-text`)};font-weight:bold}`,`${l} .dg-kanban-card{fill:${z(`--dg-row-fill`)};stroke:${z(`--dg-node-stroke`)};stroke-width:1px}`,`${l} .dg-kanban-text{fill:${z(`--dg-text`)}}`,`${l} .dg-kanban-meta{fill:${z(`--dg-text-muted`)};font-size:12px}`,`${l} .dg-kanban-very-high{fill:${z(`--dg-task-crit-stroke`)}}`,`${l} .dg-kanban-high{fill:${z(`--dg-task-crit-fill`)}}`,`${l} .dg-kanban-low{fill:${z(`--dg-task-active-fill`)}}`,`${l} .dg-kanban-very-low{fill:${z(`--dg-grid`)}}`].join(``);return U({id:n,type:`kanban`,width:e.columns.length*214-Od,height:s,title:r??e.accessibility.title??`Kanban board`,description:e.accessibility.description,body:c,css:u})}function Ad(e,t,n){let r={};for(let i of e.split(`,`)){let e=/^\s*([\w-]+)\s*:\s*(.+?)\s*$/.exec(i);if(!e)continue;let a=e[1].toLowerCase(),o=e[2];if(a===`radius`)r.radius=Math.min(40,Math.max(1,Number(o)));else if(a===`color`)r.color=W(`fill:${o}`,t,n).shape.fill;else if(a===`stroke-color`)r.strokeColor=W(`stroke:${o}`,t,n).shape.stroke;else if(a===`stroke-width`)r.strokeWidth=Math.min(10,Math.max(0,parseFloat(o)));else throw new L(`"${a}" is not a point style`,t,n,`radius, color, stroke-color, stroke-width`)}return r}function jd(e){let t=q(e),n=t[0];if(!n||n.text!==`quadrantChart`)throw new L(`A quadrant chart starts with "quadrantChart"`,n?.line??1,1);let r={type:`quadrant`,xAxis:[``,``],yAxis:[``,``],quadrants:[``,``,``,``],points:[],classDefs:new Map,accessibility:{}},i=e=>{let[t,n]=e.split(/\s*-->\s*/);return[t.trim(),(n??``).trim()]};for(let e=1;e<t.length;e++){let n=t[e],a=J(t,e,r.accessibility);if(a>0){e+=a-1;continue}let o;if(o=/^title\s+(.*)$/.exec(n.text))r.title=o[1].trim();else if(o=/^x-axis\s+(.*)$/.exec(n.text))r.xAxis=i(o[1]);else if(o=/^y-axis\s+(.*)$/.exec(n.text))r.yAxis=i(o[1]);else if(o=/^quadrant-([1-4])\s+(.*)$/.exec(n.text))r.quadrants[Number(o[1])-1]=o[2].trim();else if(o=/^classDef\s+([\w-]+)\s+(.*)$/.exec(n.text))r.classDefs.set(o[1],Ad(o[2],n.line,n.column));else if(o=/^(.+?)(?::::([\w-]+))?\s*:\s*\[\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\]\s*(.*)$/.exec(n.text)){let e=Number(o[3]),t=Number(o[4]);if(!(e>=0&&e<=1&&t>=0&&t<=1))throw new L(`A point's coordinates are from 0 to 1`,n.line,n.column);r.points.push({label:o[1].trim(),x:e,y:t,style:Ad(o[5],n.line,n.column),classes:o[2]?[o[2]]:[]})}else throw new L(`"${n.text}" is not a quadrant chart statement`,n.line,n.column,`Point: [0.3, 0.6]`)}return r}var Md=420;function Nd(e,t,n,r){let i={...R,size:12},a=e.title?X(Y(e.title),{...R,size:18,weight:`bold`},t):null,o=a?a.height+14:0,s=e.yAxis.some(Boolean)?24:0,c=s,l=Md/2,u=[];a&&u.push(Z(a,c+l,a.height/2,{className:`dg-title`})),[[c+l,o],[c,o],[c,o+l],[c+l,o+l]].forEach(([n,r],i)=>{if(u.push(B(`rect`,{class:`dg-quadrant dg-quadrant-${i+1}`,x:n,y:r,width:l,height:l})),e.quadrants[i]){let a=X(an(Y(e.quadrants[i]),190,{...R,weight:`bold`},t),{...R,weight:`bold`},t);u.push(Z(a,n+l/2,r+14+a.height/2,{className:`dg-quadrant-label`}))}}),u.push(B(`rect`,{class:`dg-quadrant-frame`,x:c,y:o,width:Md,height:Md})),u.push(B(`line`,{class:`dg-quadrant-axis`,x1:c+l,y1:o,x2:c+l,y2:o+Md})),u.push(B(`line`,{class:`dg-quadrant-axis`,x1:c,y1:o+l,x2:c+Md,y2:o+l}));let[d,f]=e.xAxis,p=o+Md+14;d&&f?(u.push(Z(X(Y(d),i,t),c+l/2,p,{className:`dg-quadrant-axis-text`})),u.push(Z(X(Y(f),i,t),c+l+l/2,p,{className:`dg-quadrant-axis-text`}))):d&&u.push(Z(X(Y(d),i,t),c+l,p,{className:`dg-quadrant-axis-text`}));let[m,h]=e.yAxis,g=(e,n)=>B(`g`,{transform:`translate(${s/2},${n}) rotate(-90)`},[Z(X(Y(e),i,t),0,0,{className:`dg-quadrant-axis-text`})]);m&&h?(u.push(g(m,o+l+l/2)),u.push(g(h,o+l/2))):m&&u.push(g(m,o+l));for(let n of e.points){let r=Object.assign({},...n.classes.map(t=>e.classDefs.get(t)??{}),n.style),a=c+n.x*Md,s=o+(1-n.y)*Md,l=r.radius??5,d=[r.color?`fill:${r.color}`:``,r.strokeColor?`stroke:${r.strokeColor}`:``,r.strokeWidth===void 0?``:`stroke-width:${r.strokeWidth}px`].filter(Boolean).join(`;`),f=X(Y(n.label),i,t);u.push(B(`g`,{class:`dg-quadrant-point`},[B(`circle`,{class:`dg-quadrant-dot`,cx:a,cy:s,r:l,style:d||void 0}),Z(f,a,s+l+4+f.height/2,{className:`dg-quadrant-point-text`})]))}let _=`#${n}`,v=[`${_} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`,`${_} .dg-quadrant-1{fill:${z(`--dg-quadrant-1`)}}`,`${_} .dg-quadrant-2{fill:${z(`--dg-quadrant-2`)}}`,`${_} .dg-quadrant-3{fill:${z(`--dg-quadrant-3`)}}`,`${_} .dg-quadrant-4{fill:${z(`--dg-quadrant-4`)}}`,`${_} .dg-quadrant-frame{fill:none;stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${_} .dg-quadrant-axis{stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${_} .dg-quadrant-label{fill:${z(`--dg-text-muted`)};font-weight:bold}`,`${_} .dg-quadrant-axis-text{fill:${z(`--dg-text-muted`)};font-size:12px}`,`${_} .dg-quadrant-dot{fill:${z(`--dg-node-stroke`)};stroke:${z(`--dg-row-fill`)};stroke-width:1.5px}`,`${_} .dg-quadrant-point-text{fill:${z(`--dg-text`)};font-size:12px}`].join(``);return U({id:n,type:`quadrant`,width:c+Md,height:o+Md+28,title:r??e.accessibility.title??e.title??`Quadrant chart`,description:e.accessibility.description,body:u,css:v})}var Pd={requirement:`Requirement`,functionalrequirement:`Functional Requirement`,interfacerequirement:`Interface Requirement`,performancerequirement:`Performance Requirement`,physicalrequirement:`Physical Requirement`,designconstraint:`Design Constraint`,element:`Element`},Fd=[`contains`,`copies`,`derives`,`satisfies`,`verifies`,`refines`,`traces`],Id={id:`Id`,text:`Text`,risk:`Risk`,verifymethod:`Verification`,type:`Type`,docref:`Doc ref`},Ld=[`low`,`medium`,`high`],Rd=[`analysis`,`inspection`,`test`,`demonstration`],zd=String.raw`[\p{L}\p{N}_][\p{L}\p{N}_.-]*|"[^"]+"`;function Bd(e){let t=q(e),n=t[0];if(!n||n.text!==`requirementDiagram`)throw new L(`A requirement diagram starts with "requirementDiagram"`,n?.line??1,1);let r={type:`class`,direction:`TB`,classes:new Map,relations:[],notes:[],namespaces:new Map,classDefs:new Map,accessibility:{}},i=[],a=(e,t)=>{let n=dt(e),a=r.classes.get(n);return a||(a={id:n,label:n,annotations:[],attributes:[],methods:[],classes:[]},r.classes.set(n,a),i.push({id:n,s:t})),a},o=new Set;for(let e=1;e<t.length;e++){let n=t[e],i=J(t,e,r.accessibility);if(i>0){e+=i-1;continue}let s=RegExp(`^(\\w+)\\s+(${zd})(?::::([\\w-]+))?\\s*\\{$`,`u`).exec(n.text);if(s&&Pd[s[1].toLowerCase()]){let r=a(s[2],n);o.add(r.id);let i=s[1].toLowerCase();r.annotations=[Pd[i]],s[3]&&r.classes.push(s[3]);let c=e+1;for(;c<t.length&&t[c].text!==`}`;c++){let e=t[c],n=/^(\w+)\s*:\s*(.*)$/.exec(e.text),a=n?.[1].toLowerCase();if(!n||!Id[a])throw new L(`"${e.text}" is not a field`,e.line,e.column,i===`element`?`type: …, docref: …`:`id: …, text: …, risk: low|medium|high, verifymethod: analysis|inspection|test|demonstration`);let o=dt(n[2].trim());if(a===`risk`){if(!Ld.includes(o.toLowerCase()))throw new L(`"${o}" is not a risk`,e.line,e.column,`low, medium, high`);o=o[0].toUpperCase()+o.slice(1).toLowerCase()}if(a===`verifymethod`){if(!Rd.includes(o.toLowerCase()))throw new L(`"${o}" is not a verification method`,e.line,e.column,`analysis, inspection, test, demonstration`);o=o[0].toUpperCase()+o.slice(1).toLowerCase()}r.attributes.push({kind:`attribute`,text:`${Id[a]}: ${o}`})}if(c>=t.length)throw new L(`"${r.id}" is never closed`,n.line,n.column,`Close it with "}".`);e=c;continue}if(s)throw new L(`"${s[1]}" is not a kind of requirement`,n.line,n.column,Object.keys(Pd).join(`, `));s=RegExp(`^(${zd})\\s*-\\s*(\\w+)\\s*->\\s*(${zd})$`,`u`).exec(n.text)??null;let c=!1;if(s||(s=RegExp(`^(${zd})\\s*<-\\s*(\\w+)\\s*-\\s*(${zd})$`,`u`).exec(n.text),c=!!s),s){let e=s[2].toLowerCase();if(!Fd.includes(e))throw new L(`"${s[2]}" is not a relationship`,n.line,n.column,Fd.join(`, `));let[t,i]=c?[s[3],s[1]]:[s[1],s[3]];r.relations.push({from:a(t,n).id,to:a(i,n).id,fromEnd:`none`,toEnd:`arrow`,dashed:!0,label:`«${e}»`})}else if(s=/^direction\s+(TB|TD|BT|LR|RL)$/.exec(n.text))r.direction=s[1]===`TD`?`TB`:s[1];else if(s=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(n.text)){let e=W(s[2],n.line,n.column);for(let t of s[1].split(`,`))r.classDefs.set(t.trim(),e)}else if(s=/^class\s+(.+?)\s+([\w-]+)$/.exec(n.text))for(let e of s[1].split(`,`))a(e.trim(),n).classes.push(s[2]);else if(s=/^style\s+(.+?)\s+(.+)$/.exec(n.text)){let e=W(s[2],n.line,n.column);for(let t of s[1].split(`,`))a(t.trim(),n).style=e}else throw new L(`"${n.text}" is not a requirement diagram statement`,n.line,n.column)}for(let e of i)if(!o.has(e.id))throw new L(`"${e.id}" is used but never declared`,e.s.line,e.s.column,`requirement ${e.id} { … } or element ${e.id} { … }`);return r}var Vd={cloud:`cloud`,database:`cylinder`,disk:`storage`,internet:`circle`,server:`node`},Hd=String.raw`[\p{L}\p{N}_][\p{L}\p{N}_-]*`,Ud=RegExp(`^(service|group)\\s+(${Hd})(?:\\(([^)]*)\\))?(?:\\[([^\\]]*)\\])?(?:\\s+in\\s+(${Hd}))?$`,`u`),Wd=RegExp(`^junction\\s+(${Hd})(?:\\s+in\\s+(${Hd}))?$`,`u`),Gd=RegExp(`^(${Hd})(\\{group\\})?(?::([LRTB]))?\\s*(<)?-(?:\\[([^\\]]*)\\])?-(>)?\\s*(?:([LRTB]):)?(${Hd})(\\{group\\})?$`,`u`);function Kd(e){let t=q(e),n=t[0];if(!n||n.text!==`architecture-beta`)throw new L(`An architecture diagram starts with "architecture-beta"`,n?.line??1,1);let r={type:`flowchart`,direction:`LR`,nodes:new Map,edges:[],subgraphs:new Map,classDefs:new Map,accessibility:{}},i=new Map;for(let e=1;e<t.length;e++){let n=t[e],a=J(t,e,r.accessibility);if(a>0){e+=a-1;continue}let o;if(o=Ud.exec(n.text)){let[,e,t,a,s,c]=o;if(c&&!r.subgraphs.has(c))throw new L(`"${c}" is not a group declared above`,n.line,n.column+n.text.lastIndexOf(c));if(r.nodes.has(t)||r.subgraphs.has(t))throw new L(`"${t}" is declared twice`,n.line,n.column);let l=a?Vd[a.toLowerCase()]??`rect`:`rect`;e===`group`?r.subgraphs.set(t,{id:t,title:s??t,markdown:!1,parent:c,classes:[],kind:`rect`}):r.nodes.set(t,{id:t,text:s??t,markdown:!1,shape:l,classes:[],subgraph:c}),i.set(t,c)}else if(o=Wd.exec(n.text))r.nodes.set(o[1],{id:o[1],text:``,markdown:!1,shape:`start`,classes:[],subgraph:o[2]}),i.set(o[1],o[2]);else if(o=Gd.exec(n.text)){let[,e,t,,a,s,c,,l,u]=o,d=(e,t)=>{if(!r.nodes.has(e)&&!r.subgraphs.has(e))throw new L(`"${e}" is not a service, a junction or a group`,n.line,n.column);if(!t)return e;let a=i.get(e);if(!a)throw new L(`"${e}" is in no group`,n.line,n.column);return a},f=e=>e?`arrow`:`none`;r.edges.push({from:d(e,t),to:d(l,u),stroke:`normal`,start:f(a),end:f(c),length:1,text:s,markdown:!1})}else throw new L(`"${n.text}" is not an architecture statement`,n.line,n.column,`service id(icon)[Title] in group, a:R --> L:b`)}return r}var qd=500,Jd=[[`(((`,`)))`,`doublecircle`],[`((`,`))`,`circle`],[`([`,`])`,`stadium`],[`[[`,`]]`,`subroutine`],[`[(`,`)]`,`cylinder`],[`{{`,`}}`,`hexagon`],[`[/`,`/]`,`parallelogram`],[`[\\`,`\\]`,`parallelogram-alt`],[`[/`,`\\]`,`trapezoid`],[`[\\`,`/]`,`trapezoid-alt`],[`>`,`]`,`asymmetric`],[`[`,`]`,`rect`],[`(`,`)`,`round`],[`{`,`}`,`rhombus`]],Yd=String.raw`[\p{L}\p{N}_][\p{L}\p{N}_-]*`,Xd=RegExp(`^(${Yd})\\s*(?:(--|-\\.|==)\\s*"([^"]*)"\\s*)?(-->|---|-\\.->|-\\.-|==>|===)\\s*(${Yd})$`,`u`);function Zd(e){let t=[],n=0,r=!1,i=``;for(let a of e)a===`"`&&(r=!r),!r&&(`[({`.includes(a)?n++:`)]}`.includes(a)&&(n=Math.max(0,n-1)),a===` `&&n===0)?(i&&t.push(i),i=``):i+=a;return i&&t.push(i),t}function Qd(e,t){let n=/^space(?::(\d+))?$/.exec(e);if(n)return{kind:`space`,span:n[1]?Number(n[1]):1};if(n=RegExp(`^(${Yd})(.*?)(?::(\\d+))?(?::::([\\w-]+))?$`,`u`).exec(e),!n)throw new L(`"${e}" is not a block`,t.line,t.column);let[,r,i,a,o]=n,s=`rect`,c=r;if(i){let e=Jd.find(([e,t])=>i.startsWith(e)&&i.endsWith(t)&&i.length>=e.length+t.length);if(!e)throw new L(`"${i}" is not a block shape`,t.line,t.column,`a["text"], b("text"), c(("text")), d[("text")]`);s=e[2],c=dt(i.slice(e[0].length,i.length-e[1].length))}return{kind:`block`,id:r,label:c,shape:s,span:a?Number(a):1,classes:o?[o]:[]}}function $d(e){let t=q(e),n=t[0];if(!n||!/^block(-beta)?$/.test(n.text))throw new L(`A block diagram starts with "block-beta"`,n?.line??1,1);let r={type:`block`,items:[],edges:[],classDefs:new Map,accessibility:{}},i=[{items:r.items,line:n.line}],a=new Map,o=[],s=0;for(let e=1;e<t.length;e++){let n=t[e],c=J(t,e,r.accessibility);if(c>0){e+=c-1;continue}let l=i[i.length-1],u;if(u=/^columns\s+(\d+|auto)$/.exec(n.text)){let e=u[1]===`auto`?void 0:Number(u[1]);l.group?l.group.columns=e:r.columns=e}else if(u=RegExp(`^block(?::(${Yd}))?(?:\\["([^"]*)"\\])?(?::(\\d+))?$`,`u`).exec(n.text)){let e=u[1]??`block${++s}`,t={kind:`group`,id:e,label:u[2],span:u[3]?Number(u[3]):1,items:[],classes:[]};l.items.push(t),a.set(e,t),i.push({items:t.items,group:t,line:n.line})}else if(n.text===`end`){if(i.length===1)throw new L(`"end" without a block to close`,n.line,n.column);i.pop()}else if(u=Xd.exec(n.text)){let e=u[4];r.edges.push({from:u[1],to:u[5],text:u[3],stroke:e.includes(`.`)?`dotted`:e.startsWith(`=`)?`thick`:`normal`,arrow:e.endsWith(`>`)})}else if(u=/^classDef\s+([\w,-]+)\s+(.+)$/.exec(n.text)){let e=W(u[2],n.line,n.column);for(let t of u[1].split(`,`))r.classDefs.set(t.trim(),e)}else if(u=/^class\s+(.+?)\s+([\w-]+)$/.exec(n.text))o.push({ids:u[1].split(`,`).map(e=>e.trim()),cls:u[2],s:n});else if(u=/^style\s+(\S+)\s+(.+)$/.exec(n.text))o.push({ids:[u[1]],style:W(u[2],n.line,n.column),s:n});else for(let e of Zd(n.text)){let t=Qd(e,n);if(t.kind===`block`){if(a.has(t.id))throw new L(`The block "${t.id}" is declared twice`,n.line,n.column);a.set(t.id,t)}if(l.items.push(t),++s>qd)throw we(`blocks`,s,qd)}}if(i.length>1)throw new L(`A block is never closed`,i[i.length-1].line,0,`Close it with "end".`);for(let e of r.edges)for(let t of[e.from,e.to])if(!a.has(t))throw new L(`"${t}" is not a block`);for(let e of o)for(let t of e.ids){let n=a.get(t);if(!n||n.kind===`space`)throw new L(`"${t}" is not a block`,e.s.line,e.s.column);e.cls&&n.classes.push(e.cls),e.style&&(n.style=e.style)}return r}var ef=16,tf=12;function nf(e,t,n,r){let i=new Map,a=t=>Ge(e.classDefs.get(`default`),...t.classes.map(t=>e.classDefs.get(t)),t.style),o=e=>{if(e.kind===`space`)return{width:0,height:0,draw:()=>[]};if(e.kind===`block`){let n=X(Y(e.label),R,t),r=fo(e.shape,n.width,Math.max(n.height,R.size*1.25));return{width:r.width,height:r.height,draw:(t,o,s,c)=>{let l={x:t+s/2,y:o+c/2,width:Math.max(r.width,s),height:r.height};i.set(e.id,{box:l,shape:e.shape});let u=a(e);return[B(`g`,{class:`dg-node`,"data-id":e.id},[po(e.shape,l,{style:G(u.shape)}),Z(n,l.x,l.y,{style:G(u.text)})])]}}}return s(e.items,e.columns,e)},s=(e,n,r)=>{let s=Math.max(1,n??e.reduce((e,t)=>e+t.span,0)),c=[],l=0,u=0;for(let t of e){let e=Math.min(t.span,s);u+e>s&&(l++,u=0),c.push({item:t,row:l,col:u,placed:o(t)}),u+=e,u>=s&&(l++,u=0)}let d=c.length>0?Math.max(...c.map(e=>e.row))+1:0,f=Math.max(60,...c.map(e=>(e.placed.width-ef*(Math.min(e.item.span,s)-1))/Math.min(e.item.span,s))),p=Array.from({length:d},(e,t)=>Math.max(0,...c.filter(e=>e.row===t).map(e=>e.placed.height))),m=r?.label?X(Y(r.label),{...R,weight:`bold`},t):null,h=r?tf:0,g=h+(m?m.height+4:0),_=s*f+(s-1)*ef+h*2,v=p.reduce((e,t)=>e+t,0)+Math.max(0,d-1)*ef+g+h;return{width:_,height:v,draw:(e,t,n)=>{let o=[],l=(n-h*2-(s-1)*ef)/s;if(r){i.set(r.id,{box:{x:e+n/2,y:t+v/2,width:n,height:v},shape:`rect`});let s=a(r);o.push(B(`rect`,{class:`dg-block-group`,x:e,y:t,width:n,height:v,rx:6,style:G(s.shape)})),m&&o.push(Z(m,e+n/2,t+h+m.height/2,{className:`dg-block-group-title`}))}let u=e=>t+g+p.slice(0,e).reduce((e,t)=>e+t,0)+e*ef;for(let t of c){let n=Math.min(t.item.span,s),r=e+h+t.col*(l+ef);o.push(...t.placed.draw(r,u(t.row),l*n+ef*(n-1),p[t.row]))}return o}}},c=s(e.items,e.columns),l=c.draw(0,0,c.width,c.height),u=[],d=[];for(let r of e.edges){let e=i.get(r.from),a=i.get(r.to);if(!e||!a)continue;let o=ho(e.shape,e.box,a.box),s=ho(a.shape,a.box,e.box);if(u.push(B(`line`,{class:`dg-edge${r.stroke===`dotted`?` dg-edge-dotted`:r.stroke===`thick`?` dg-edge-thick`:``}`,x1:rf(o.x),y1:rf(o.y),x2:rf(s.x),y2:rf(s.y),"marker-end":r.arrow?`url(#${ra(n,`arrow`)})`:void 0})),r.text){let e=X(Y(r.text),R,t),n=(o.x+s.x)/2,i=(o.y+s.y)/2;d.push(B(`g`,{class:`dg-edge-label-group`},[B(`rect`,{class:`dg-edge-label-box`,x:rf(n-e.width/2-4),y:rf(i-e.height/2-2),width:rf(e.width+8),height:rf(e.height+4),rx:3}),Z(e,rf(n),rf(i),{className:`dg-edge-label`})]))}}let f=`#${n}`,p=[`${f} .dg-block-group{fill:${z(`--dg-cluster-fill`)};stroke:${z(`--dg-cluster-stroke`)};stroke-width:1px}`,`${f} .dg-block-group-title{fill:${z(`--dg-cluster-text`)};font-weight:bold}`,`${f} .dg-edge-label-group text{fill:${z(`--dg-text`)}}`].join(``);return U({id:n,type:`block`,width:c.width,height:c.height,title:r??e.accessibility.title??`Block diagram`,description:e.accessibility.description,defs:e.edges.some(e=>e.arrow)?ia(n,[`arrow`]):[],body:[B(`g`,{class:`dg-blocks`},l),B(`g`,{class:`dg-edges`},u),B(`g`,{class:`dg-edge-labels`},d)],css:p})}function rf(e){return Math.round(e*100)/100}var af=500;function of(e,t){let n={},r=/(\w+)\s*:\s*("([^"]*)"|\S+)/g,i=e;for(let t of e.matchAll(r))n[t[1].toLowerCase()]=t[3]??t[2],i=i.replace(t[0],``);if(i.trim()!==``)throw new L(`"${i.trim()}" is not an option`,t.line,t.column,`id: "…", tag: "…", type: NORMAL|REVERSE|HIGHLIGHT, msg: "…"`);return n}function sf(e){let t=q(e),n=t[0],r=n?/^gitGraph(?:\s+(LR|TB|BT)\s*:)?\s*:?$/.exec(n.text):null;if(!n||!r)throw new L(`A git graph starts with "gitGraph"`,n?.line??1,1);let i={type:`gitgraph`,direction:r[1]??`LR`,branches:[{name:`main`,order:0}],commits:[],accessibility:{}},a=new Map([[`main`,void 0]]),o=new Set,s=`main`,c=0,l=(e,t)=>{if(e!==void 0){if(o.has(e))throw new L(`The commit id "${e}" is used twice`,t.line,t.column);return o.add(e),{id:e,named:!0}}let n;do n=`${c++}`;while(o.has(n));return o.add(n),{id:n,named:!1}},u=(e,t)=>{if(!e)return`normal`;let n=e.toLowerCase();if(n===`normal`||n===`reverse`||n===`highlight`)return n;throw new L(`"${e}" is not a commit type`,t.line,t.column,`NORMAL, REVERSE, HIGHLIGHT`)},d=e=>{if(i.commits.push(e),a.set(e.branch,e.id),i.commits.length>af)throw we(`commits`,i.commits.length,af)};for(let e=1;e<t.length;e++){let n=t[e],r=J(t,e,i.accessibility);if(r>0){e+=r-1;continue}let o;if(o=/^commit\b\s*(.*)$/.exec(n.text)){let e=of(o[1],n),{id:t,named:r}=l(e.id,n),i=a.get(s);d({id:t,named:r,branch:s,parents:i?[i]:[],type:u(e.type,n),tags:e.tag?[e.tag]:[],message:e.msg})}else if(o=/^branch\s+("[^"]+"|\S+)\s*(.*)$/.exec(n.text)){let e=o[1].replace(/^"|"$/g,``);if(a.has(e))throw new L(`The branch "${e}" exists already`,n.line,n.column);let t=of(o[2],n);i.branches.push({name:e,order:t.order===void 0?i.branches.length:Number(t.order),from:a.get(s)}),a.set(e,a.get(s)),s=e}else if(o=/^(?:checkout|switch)\s+("[^"]+"|\S+)$/.exec(n.text)){let e=o[1].replace(/^"|"$/g,``);if(!a.has(e))throw new L(`"${e}" is not a branch`,n.line,n.column,`branch ${e}`);s=e}else if(o=/^merge\s+("[^"]+"|\S+)\s*(.*)$/.exec(n.text)){let e=o[1].replace(/^"|"$/g,``);if(!a.has(e))throw new L(`"${e}" is not a branch`,n.line,n.column);if(e===s)throw new L(`A branch cannot merge into itself`,n.line,n.column);let t=a.get(e),r=a.get(s);if(!t)throw new L(`"${e}" has no commits to merge`,n.line,n.column);if(t===r)throw new L(`"${s}" has nothing new from "${e}"`,n.line,n.column);let i=of(o[2],n),{id:c,named:f}=l(i.id,n);d({id:c,named:f,branch:s,parents:r?[r,t]:[t],type:i.type?u(i.type,n):`merge`,tags:i.tag?[i.tag]:[],message:i.msg})}else if(o=/^cherry-pick\s+(.*)$/.exec(n.text)){let e=of(o[1],n),t=i.commits.find(t=>t.id===e.id);if(!t)throw new L(`"${e.id??``}" is not a commit`,n.line,n.column,`cherry-pick id: "…"`);if(t.branch===s)throw new L(`A commit cannot be cherry-picked onto its own branch`,n.line,n.column);let{id:r,named:c}=l(void 0,n),u=a.get(s);d({id:r,named:c,branch:s,parents:u?[u]:[],type:`cherry-pick`,tags:e.tag?[e.tag]:[`cherry-pick: ${t.id}`],message:e.msg})}else throw new L(`"${n.text}" is not a git graph statement`,n.line,n.column,`commit, branch, checkout, merge, cherry-pick`)}if(i.commits.length===0)throw new L(`The graph has no commits`,0,0,`commit`);return i}var cf=54,lf=52,uf=9;function df(e,t,n,r){let i=[...e.branches].sort((e,t)=>e.order-t.order),a=new Map(i.map((e,t)=>[e.name,t])),o=t=>Oe(e.branches.findIndex(e=>e.name===t)),s=new Map(i.map(e=>[e.name,X(Y(e.name),{...R,size:13,weight:`bold`},t)])),c=Math.max(...[...s.values()].map(e=>e.width))+24,l=e.direction!==`LR`,u=new Map(e.commits.map((e,t)=>[e.id,t])),d=t=>(e.direction===`BT`?(e.commits.length-1-t)*cf:t*cf)+(l?40:c+24),f=e.commits.some(e=>e.tags.length>0)?28:0,p=e=>a.get(e)*lf+(l?c/2+f*3:24+f),m=e=>l?[p(e.branch),d(u.get(e.id))]:[d(u.get(e.id)),p(e.branch)],h=[],g=[],_=[];for(let t of i){let n=e.commits.filter(e=>e.branch===t.name);if(n.length===0)continue;let r=t.from?u.get(t.from):u.get(n[0].id),i=Math.max(...e.commits.filter(n=>n.branch===t.name||n.parents.some(n=>e.commits[u.get(n)].branch===t.name)).map(e=>u.get(e.id))),a=l?[p(t.name),d(r)]:[d(r),p(t.name)],c=l?[p(t.name),d(i)]:[d(i),p(t.name)];h.push(B(`line`,{class:`dg-git-lane`,x1:a[0],y1:a[1],x2:c[0],y2:c[1],style:`stroke:${o(t.name)}`}));let f=s.get(t.name),[m,g]=l?[p(t.name),18]:[8,p(t.name)];_.push(B(`rect`,{class:`dg-git-branch-box`,x:l?m-f.width/2-6:m-4,y:g-f.height/2-3,width:f.width+12,height:f.height+6,rx:4,style:`fill:${o(t.name)}`})),_.push(Z(f,l?m:m+f.width/2+2,g,{className:`dg-git-branch`}))}for(let t of e.commits){let[n,r]=m(t);for(let i of t.parents){let a=e.commits[u.get(i)];if(a.branch===t.branch)continue;let[s,c]=m(a),d=l?new H().moveTo(s,c).curveTo(s,(c+r)/2,n,(c+r)/2,n,r):new H().moveTo(s,c).curveTo((s+n)/2,c,(s+n)/2,r,n,r);h.push(B(`path`,{class:`dg-git-edge`,d:d.toString(),style:`stroke:${o(t.type===`merge`?a.branch:t.branch)}`}))}}for(let t of i){if(!t.from)continue;let n=e.commits.find(e=>e.branch===t.name);if(!n||n.parents[0]!==t.from)continue;let r=e.commits[u.get(t.from)];if(r.branch===t.name)continue;let[i,a]=m(r),[s,c]=m(n),d=l?new H().moveTo(i,a).curveTo(i,(a+c)/2,s,(a+c)/2,s,c):new H().moveTo(i,a).curveTo((i+s)/2,a,(i+s)/2,c,s,c);h.push(B(`path`,{class:`dg-git-edge`,d:d.toString(),style:`stroke:${o(t.name)}`}))}for(let n of e.commits){let[e,r]=m(n),i=`fill:${o(n.branch)}`;n.type===`highlight`?g.push(B(`rect`,{class:`dg-git-commit`,x:e-uf,y:r-uf,width:18,height:18,style:i})):n.type===`merge`?(g.push(B(`circle`,{class:`dg-git-commit`,cx:e,cy:r,r:uf,style:i})),g.push(B(`circle`,{class:`dg-git-merge`,cx:e,cy:r,r:5}))):n.type===`cherry-pick`?g.push(B(`circle`,{class:`dg-git-commit dg-git-cherry`,cx:e,cy:r,r:uf})):(g.push(B(`circle`,{class:`dg-git-commit`,cx:e,cy:r,r:uf,style:i})),n.type===`reverse`&&g.push(B(`path`,{class:`dg-git-reverse`,d:new H().moveTo(e-4,r-4).lineTo(e+4,r+4).moveTo(e-4,r+4).lineTo(e+4,r-4).toString()})));let a=n.named?n.id:n.message;if(a){let n=X(Y(a),{...R,size:12},t);_.push(Z(n,l?e+uf+6+n.width/2:e,l?r:r+uf+6+n.height/2,{className:`dg-git-id`}))}n.tags.forEach((n,i)=>{let a=X(Y(n),{...R,size:12},t),o=l?e-uf-10-a.width/2:e,s=l?r+i*(a.height+8):r-uf-8-a.height/2-i*(a.height+8);_.push(B(`rect`,{class:`dg-git-tag`,x:o-a.width/2-5,y:s-a.height/2-2,width:a.width+10,height:a.height+4,rx:3})),_.push(Z(a,o,s,{className:`dg-git-tag-text`}))})}let v=i.length*lf,y=e.commits.length*cf,b=l?Math.max(v+c,c+120)+f*3:c+24+y,x=l?y+60:v+30+f,S=`#${n}`,C=[`${S} .dg-git-lane{stroke-width:3px;stroke-opacity:0.55}`,`${S} .dg-git-edge{fill:none;stroke-width:3px;stroke-opacity:0.55}`,`${S} .dg-git-commit{stroke:${z(`--dg-row-fill`)};stroke-width:2px}`,`${S} .dg-git-cherry{fill:${z(`--dg-row-fill`)};stroke:${z(`--dg-line`)};stroke-dasharray:2 2}`,`${S} .dg-git-merge{fill:${z(`--dg-row-fill`)}}`,`${S} .dg-git-reverse{stroke:${z(`--dg-row-fill`)};stroke-width:2px}`,`${S} .dg-git-branch-box{fill-opacity:0.18}`,`${S} .dg-git-branch{fill:${z(`--dg-text`)};font-size:13px;font-weight:bold}`,`${S} .dg-git-id{fill:${z(`--dg-text-muted`)};font-size:12px}`,`${S} .dg-git-tag{fill:${z(`--dg-note-fill`)};stroke:${z(`--dg-note-stroke`)};stroke-width:1px}`,`${S} .dg-git-tag-text{fill:${z(`--dg-note-text`)};font-size:12px}`].join(``);return U({id:n,type:`gitgraph`,width:b,height:x,title:r??e.accessibility.title??`Git graph`,description:e.accessibility.description,body:[B(`g`,{class:`dg-git-lines`},h),B(`g`,{class:`dg-git-commits`},g),B(`g`,{class:`dg-git-texts`},_)],css:C})}var ff=1e3;function pf(e){let t=[],n=0;for(;n<=e.length;)if(e[n]===`"`){let r=``;for(n++;;){if(n>=e.length)return null;if(e[n]===`"`&&e[n+1]===`"`)r+=`"`,n+=2;else if(e[n]===`"`){n++;break}else r+=e[n++]}for(t.push(r.trim());n<e.length&&e[n]!==`,`;)if(e[n++]!==` `)return null;n++}else{let r=e.indexOf(`,`,n),i=r<0?e.length:r;t.push(e.slice(n,i).trim()),n=i+1}return t}function mf(e){let t=q(e),n=t[0];if(!n||!/^sankey(-beta)?$/.test(n.text))throw new L(`A sankey diagram starts with "sankey-beta"`,n?.line??1,1);let r={type:`sankey`,nodes:[],links:[],accessibility:{}};for(let e=1;e<t.length;e++){let n=t[e],i=J(t,e,r.accessibility);if(i>0){e+=i-1;continue}let a=pf(n.text);if(!a||a.length!==3)throw new L(`"${n.text}" is not a flow`,n.line,n.column,`Source,Target,42`);let o=Number(a[2]);if(!Number.isFinite(o)||o<0)throw new L(`"${a[2]}" is not a value`,n.line,n.column);if(a[0]===``||a[1]===``)throw new L(`A flow needs a source and a target`,n.line,n.column);for(let e of[a[0],a[1]])r.nodes.includes(e)||r.nodes.push(e);if(r.links.push({source:a[0],target:a[1],value:o}),r.links.length>ff)throw we(`flows`,r.links.length,ff)}if(r.links.length===0)throw new L(`The diagram has no flows`,0,0,`Source,Target,42`);return r}var hf=420,gf=14,_f=14,vf=170;function yf(e,t,n,r){let i=new Map(e.nodes.map(e=>[e,[]])),a=new Map(e.nodes.map(e=>[e,[]]));for(let t of e.links)i.get(t.source).push(t),a.get(t.target).push(t);let o=new Map,s=new Map,c=e=>{if(s.get(e)===`done`)return o.get(e);if(s.get(e)===`visiting`)throw new L(`The flows go round in a circle through "${e}"`);s.set(e,`visiting`);let t=Math.max(0,...a.get(e).map(e=>c(e.source)+1));return s.set(e,`done`),o.set(e,t),t};for(let t of e.nodes)c(t);let l=Math.max(...o.values());for(let t of e.nodes)i.get(t).length===0&&o.set(t,l);let u=e=>Math.max(bf(a.get(e)),bf(i.get(e))),d=Array.from({length:l+1},()=>[]);for(let t of e.nodes)d[o.get(t)].push(t);let f=Math.min(...d.filter(e=>e.length>0).map(e=>(hf-_f*(e.length-1))/Math.max(1e-9,e.reduce((e,t)=>e+u(t),0)))),p=new Map(e.nodes.map(e=>[e,X(Y(`${e} ${xf(u(e))}`),R,t)])),m=Math.max(0,...d[l].map(e=>p.get(e).width))+10,h=new Map;d.forEach((e,t)=>{let n=(hf-(e.reduce((e,t)=>e+u(t),0)*f+_f*(e.length-1)))/2;for(let r of e){let e=Math.max(1,u(r)*f);h.set(r,{x:0+t*vf,y:n,h:e}),n+=e+_f}});let g=new Map(e.nodes.map(e=>[e,h.get(e).y])),_=new Map(e.nodes.map(e=>[e,h.get(e).y])),v=[...e.links].sort((e,t)=>h.get(e.target).y-h.get(t.target).y||h.get(e.source).y-h.get(t.source).y),y=[];for(let t of v){let n=t.value*f,r=h.get(t.source),i=h.get(t.target),a=g.get(t.source)+n/2,o=_.get(t.target)+n/2;g.set(t.source,g.get(t.source)+n),_.set(t.target,_.get(t.target)+n);let s=r.x+gf,c=i.x,l=(s+c)/2;y.push(B(`path`,{class:`dg-sankey-link`,d:new H().moveTo(Sf(s),Sf(a)).curveTo(Sf(l),Sf(a),Sf(l),Sf(o),Sf(c),Sf(o)).toString(),style:`stroke:${Oe(e.nodes.indexOf(t.source))};stroke-width:${Sf(Math.max(1,n))}px`},[B(`title`,{},[{text:`${t.source} → ${t.target}: ${xf(t.value)}`}])]))}let b=e.nodes.map((e,t)=>{let n=h.get(e),r=p.get(e),i=o.get(e)===l&&l>0;return B(`g`,{class:`dg-sankey-node`,"data-id":e},[B(`rect`,{class:`dg-sankey-bar`,x:Sf(n.x),y:Sf(n.y),width:gf,height:Sf(n.h),style:`fill:${Oe(t)}`}),Z(r,Sf(i?n.x-6:n.x+gf+6),Sf(n.y+n.h/2),{anchor:i?`end`:`start`,className:`dg-sankey-label`})])}),x=`#${n}`,S=[`${x} .dg-sankey-link{fill:none;stroke-opacity:0.35}`,`${x} .dg-sankey-link:hover{stroke-opacity:0.6}`,`${x} .dg-sankey-label{fill:${z(`--dg-text`)};paint-order:stroke;stroke:${z(`--dg-row-fill`)};stroke-width:3px;stroke-linejoin:round}`].join(``);return U({id:n,type:`sankey`,width:0+l*vf+gf+(l===0?m:0),height:hf,title:r??e.accessibility.title??`Sankey diagram`,description:e.accessibility.description,body:[B(`g`,{class:`dg-sankey-links`},y),B(`g`,{class:`dg-sankey-nodes`},b)],css:S})}function bf(e){return e.reduce((e,t)=>e+t.value,0)}function xf(e){return String(Number.isInteger(e)?e:Math.round(e*100)/100)}function Sf(e){return Math.round(e*100)/100}var Cf=14,wf=720,Tf=22,Ef=26,Df=28;function Of(e){let t=e/6,n=10**Math.floor(Math.log10(t||1));for(let e of[1,2,5,10])if(e*n>=t)return e*n;return 10*n}var $=e=>Math.round(e*100)/100;function kf(e,t,n,r){let i=e.signals.map(e=>X(Y(e.label),{...R,weight:`bold`},t)),a=e.signals.map(e=>e.kind===`robust`?e.states.map(e=>X(Y(e),R,t)):[]),o=Math.max(40,...i.map(e=>e.width)),s=Math.max(0,...a.flat().map(e=>e.width)),c=8+o+(s>0?16+s:0)+12,l=[0,...e.signals.flatMap(e=>e.changes.map(e=>e.at)),...e.messages.flatMap(e=>[e.at,e.until]),...e.highlights.flatMap(e=>[e.from,e.to])],u=Math.min(...l),d=Math.max(...l);for(let t of e.signals)t.clock&&(d=Math.max(d,u+t.clock.period*4));d===u&&(d=u+100);let f=Of(d-u);d=Math.ceil(d/f)*f+f;let p=wf/(d-u),m=e=>c+(e-u)*p,h=e.title?X(Y(e.title),{...R,size:18,weight:`bold`},t):null,g=h?h.height+14:0,_=g,v=[];e.signals.forEach((e,t)=>{let n=e.kind===`robust`?Math.max(2,e.states.length)*Tf+10:38;v.push({signal:e,top:g,height:n,label:i[t],levels:a[t]}),g+=n+Cf});let y=g-Cf,b=new Map(v.map(e=>[e.signal.id,e])),x=[];h&&x.push(Z(h,(c+wf)/2,h.height/2,{className:`dg-title`}));for(let n of e.highlights){let e=n.text?X(Y(n.text),R,t):null;x.push(B(`g`,{class:`dg-timing-highlight`},[B(`rect`,{class:`dg-timing-highlight-box`,x:$(m(n.from)),y:_,width:$((n.to-n.from)*p),height:y-_,style:n.color?`fill:${n.color};fill-opacity:0.45`:void 0}),e?Z(e,$(m((n.from+n.to)/2)),_+e.height/2+2,{className:`dg-timing-highlight-text`}):null]))}let S=[];for(let e=Math.ceil(u/f)*f;e<=d;e+=f){S.push(B(`line`,{class:`dg-timing-grid`,x1:$(m(e)),y1:_,x2:$(m(e)),y2:y+4}));let n=X(Y(String($(e))),{...R,size:12},t);S.push(Z(n,$(m(e)),y+8+n.height/2,{className:`dg-timing-tick`}))}x.push(B(`g`,{class:`dg-timing-axis`},S));for(let e of v){let n=e.signal,r=[Z(e.label,8,e.top+12,{anchor:`start`,className:`dg-timing-name`})],i=e.top+e.height/2;if(n.kind===`robust`){let t=t=>{let r=Math.max(0,n.states.indexOf(t));return e.top+e.height-5-Tf/2-r*Tf};if(e.levels.forEach((t,n)=>r.push(Z(t,c-8,e.top+e.height-5-Tf/2-n*Tf,{anchor:`end`,className:`dg-timing-level`}))),n.changes.length>0){let e=new H().moveTo($(m(n.changes[0].at)),$(t(n.changes[0].state)));n.changes.forEach((r,i)=>{i>0&&e.lineTo($(m(r.at)),$(t(n.changes[i-1].state))).lineTo($(m(r.at)),$(t(r.state)))}),e.lineTo($(m(d)),$(t(n.changes[n.changes.length-1].state))),r.push(B(`path`,{class:`dg-timing-wave`,d:e.toString()}))}}else if(n.kind===`concise`)n.changes.forEach((e,a)=>{let o=n.changes[a+1]?.at??d;if(/^\{(-|hidden)\}$/.test(e.state))return;let s=m(e.at),c=m(o),l=Ef/2,u=Math.min(5,(c-s)/3),f=[[s,i],[s+u,i-l],[c-u,i-l],[c,i],[c-u,i+l],[s+u,i+l]];r.push(B(`polygon`,{class:`dg-timing-band`,points:f.map(([e,t])=>`${$(e)},${$(t)}`).join(` `)}));let p=X(Y(e.state),{...R,size:13},t);p.width<c-s-2*u&&r.push(Z(p,$((s+c)/2),i,{className:`dg-timing-state`}))});else{let t=e.top+8,i=e.top+e.height-8,a=new H;if(n.kind===`clock`&&n.clock){let{period:e,pulse:r,offset:o}=n.clock;a.moveTo($(m(u)),i);for(let n=u+o;n<d;n+=e){let e=Math.min(n+r,d);a.lineTo($(m(n)),i).lineTo($(m(n)),t).lineTo($(m(e)),t).lineTo($(m(e)),i)}a.lineTo($(m(d)),i)}else{let e=e=>/^(high|1|on|true)$/i.test(e)?t:i;n.changes.length>0&&(a.moveTo($(m(n.changes[0].at)),e(n.changes[0].state)),n.changes.forEach((t,r)=>{r>0&&a.lineTo($(m(t.at)),e(n.changes[r-1].state)).lineTo($(m(t.at)),e(t.state))}),a.lineTo($(m(d)),e(n.changes[n.changes.length-1].state)))}r.push(B(`path`,{class:`dg-timing-wave`,d:a.toString()}))}x.push(B(`g`,{class:`dg-timing-signal dg-timing-${n.kind}`,"data-id":n.id},r))}for(let r of e.messages){let e=b.get(r.from),i=b.get(r.to);if(!e||!i)continue;let a=$(m(r.at)),o=$(m(r.until)),s=e.top+e.height/2,c=i.top+i.height/2,l=r.text?X(Y(r.text),{...R,size:13},t):null;x.push(B(`g`,{class:`dg-timing-message`},[B(`line`,{class:`dg-timing-arrow`,x1:a,y1:s,x2:o,y2:c,"marker-end":`url(#${ra(n,`arrow`)})`}),l?Z(l,$((a+o)/2+l.width/2+4),$((s+c)/2),{className:`dg-timing-message-text`}):null]))}let C=`#${n}`,w=[`${C} .dg-title{fill:${z(`--dg-text`)};font-size:18px;font-weight:bold}`,`${C} .dg-timing-grid{stroke:${z(`--dg-grid`)};stroke-width:1px}`,`${C} .dg-timing-tick{fill:${z(`--dg-text-muted`)};font-size:12px}`,`${C} .dg-timing-name{fill:${z(`--dg-text`)};font-weight:bold}`,`${C} .dg-timing-level{fill:${z(`--dg-text-muted`)}}`,`${C} .dg-timing-wave{fill:none;stroke:${z(`--dg-node-stroke`)};stroke-width:2px}`,`${C} .dg-timing-band{fill:${z(`--dg-node-fill`)};stroke:${z(`--dg-node-stroke`)};stroke-width:1.5px}`,`${C} .dg-timing-state{fill:${z(`--dg-node-text`)};font-size:13px}`,`${C} .dg-timing-arrow{stroke:${z(`--dg-line`)};stroke-width:1.5px}`,`${C} .dg-timing-message-text{fill:${z(`--dg-text`)};font-size:13px}`,`${C} .dg-timing-highlight-box{fill:${z(`--dg-rect-fill`)}}`,`${C} .dg-timing-highlight-text{fill:${z(`--dg-text-muted`)}}`].join(``);return U({id:n,type:`timing`,width:c+wf+8,height:y+Df,title:r??e.accessibility.title??e.title??`Timing diagram`,description:e.accessibility.description,defs:e.messages.length>0?ia(n,[`arrow`]):[],body:x,css:w})}var Af={pie:{parse:Sa,render:Ea},gantt:{parse:Bn,render:Va},flowchart:{parse:Za,render:os},sequence:{parse:Ps,render:Us},state:{parse:si,render:qs},timeline:{parse:Qs,render:sc},xychart:{parse:vc,render:Fc},mindmap:{parse:Hc,render:sl},er:{parse:Sl,render:Zl},class:{parse:vr,render:pu},c4:{parse:kt,render:cd},journey:{parse:vd,render:wd},quadrant:{parse:jd,render:Nd},kanban:{parse:Ed,render:kd},requirement:{parse:Bd,render:pu},architecture:{parse:Kd,render:os},sankey:{parse:mf,render:yf},gitgraph:{parse:sf,render:df},block:{parse:$d,render:nf},wardley:{parse:ha,render:xa},timing:{parse:()=>jf(`timing`),render:kf},salt:{parse:()=>jf(`salt`),render:_d}};function jf(e){throw new L(`${e} diagrams are written in PlantUML`,0,0,`Start the source with @startuml.`)}var Mf={pie:`pie`,gantt:`gantt`,flowchart:`flowchart`,graph:`flowchart`,"flowchart-elk":`flowchart`,sequenceDiagram:`sequence`,stateDiagram:`state`,"stateDiagram-v2":`state`,timeline:`timeline`,"xychart-beta":`xychart`,xychart:`xychart`,mindmap:`mindmap`,erDiagram:`er`,classDiagram:`class`,"classDiagram-v2":`class`,C4Context:`c4`,C4Container:`c4`,C4Component:`c4`,C4Dynamic:`c4`,C4Deployment:`c4`,journey:`journey`,quadrantChart:`quadrant`,kanban:`kanban`,requirementDiagram:`requirement`,"architecture-beta":`architecture`,"sankey-beta":`sankey`,sankey:`sankey`,gitGraph:`gitgraph`,"block-beta":`block`,block:`block`};function Nf(e){if(Xe(e))return`plantuml`;if(Ui(e))return`dot`;if(Ii(e))return`dbml`;if(Qi(e))return`structurizr`;if(da(e))return`wardley`;let t=lt(e);return t&&Mf[t.keyword]?`mermaid`:ji(e)?`d2`:`mermaid`}var Pf={dot:{type:`flowchart`,parse:Zi},d2:{type:`flowchart`,parse:Mi},dbml:{type:`er`,parse:Hi},structurizr:{type:`c4`,parse:ta},wardley:{type:`wardley`,parse:ha}};function Ff(e){let t=lt(e);if(!t)throw new L(`The diagram is empty`,0,0);let n=Mf[t.keyword];if(!n)throw new L(`"${t.keyword}" is not a supported diagram type`,t.statement.line,t.statement.column,`Supported: ${Object.keys(Mf).join(`, `)}.`);return Af[n]}function If(e,t={}){let n=Le(t.idPrefix??Ie(e)),r=t.measureText??Jt(),i=t.syntax??Nf(e);if(i!==`mermaid`&&i!==`plantuml`){let{type:a,parse:o}=Pf[i];return Af[a].render(o(e),r,n,t.title,t.today)}if(i===`plantuml`){let{kind:i,model:a}=bi(e);return Af[fi[i]].render(a,r,n,t.title,t.today)}let a=Ff(e),o=a.parse(e);return a.render(o,r,n,t.title,t.today)}var Lf=`:where(dsk-diagram,dsk-flow,dsk-board,dsk-openapi,dsk-asyncapi,dsk-bpmn,dsk-dmn,dsk-drawio)[data-dsk-state=ready]{position:relative}.dsk-fs-button{z-index:20;border:1px solid var(--uid-border-subtle,#e5e7eb);border-radius:var(--uid-radius-md,8px);background:var(--uid-surface-raised,#fff);width:30px;height:30px;color:var(--uid-text-secondary,#4b5563);cursor:pointer;opacity:0;justify-content:center;align-items:center;padding:0;transition:opacity .15s;display:inline-flex;position:absolute;top:8px;right:8px;box-shadow:0 2px 8px #0f172a14}:where(dsk-diagram,dsk-flow,dsk-board,dsk-openapi,dsk-asyncapi,dsk-bpmn,dsk-dmn,dsk-drawio):hover>.dsk-fs-button,.dsk-fs-button:focus-visible,[data-dsk-fullscreen]>.dsk-fs-button{opacity:1}.dsk-fs-button:hover{color:var(--uid-text-primary,#111827)}@media (hover:none){.dsk-fs-button{opacity:1}}dsk-board>.dsk-fs-button,dsk-flow>.dsk-fs-button{left:8px;right:auto}dsk-openapi>.dsk-fs-button,dsk-asyncapi>.dsk-fs-button{top:auto;bottom:8px}dsk-bpmn>.dsk-fs-button,dsk-dmn>.dsk-fs-button{left:8px;right:auto}:where(dsk-diagram,dsk-flow,dsk-board,dsk-openapi,dsk-asyncapi,dsk-bpmn,dsk-dmn,dsk-drawio)[data-dsk-fullscreen]{--dsk-flow-height:100vh;--dsk-board-height:100vh;--dsk-openapi-height:calc(100vh - 32px);--dsk-bpmn-height:100vh;--dsk-dmn-height:100vh;box-sizing:border-box;background:var(--uid-surface,#fff);overflow:auto}:where(dsk-diagram,dsk-openapi,dsk-asyncapi,dsk-drawio)[data-dsk-fullscreen]{padding:16px}[data-dsk-fullscreen] .dsk-flow-frame,[data-dsk-fullscreen] .dsk-board-frame,[data-dsk-fullscreen] .dsk-bpmn-frame{border:0;border-radius:0}dsk-diagram[data-dsk-fullscreen] .dsk-diagram{justify-content:center;align-items:center;min-height:calc(100vh - 32px);display:flex}dsk-diagram[data-dsk-fullscreen] .dsk-diagram svg{width:100%!important;max-width:none!important;height:calc(100vh - 32px)!important}dsk-drawio[data-dsk-fullscreen] .dsk-drawio__page svg{width:100%!important;max-width:none!important;height:calc(100vh - 80px)!important}.dsk-fs-fallback{z-index:2147483000;inset:0;margin:0!important;position:fixed!important}.dsk-fs-locked,.dsk-fs-locked body{overflow:hidden!important}`,Rf={en:{enter:`Full screen`,exit:`Exit full screen`},ru:{enter:`Во весь экран`,exit:`Выйти из полноэкранного режима`}},zf=`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3"/></svg>`,Bf=`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3v3a2 2 0 0 1-2 2H3M21 8h-3a2 2 0 0 1-2-2V3M3 16h3a2 2 0 0 1 2 2v3M16 21v-3a2 2 0 0 1 2-2h3"/></svg>`;function Vf(e,t,n){be(`fullscreen`,Lf,e.ownerDocument);let r=document.createElement(`button`);r.type=`button`,r.className=`dsk-fs-button`;let i=Rf[t===`ru`?`ru`:`en`],a=!1,o=!1,s=()=>{let e=a?i.exit:i.enter;r.innerHTML=a?Bf:zf,r.setAttribute(`aria-label`,e),r.title=e,r.setAttribute(`aria-pressed`,String(a))},c=t=>{t!==a&&(a=t,t?document.addEventListener(`keydown`,l):document.removeEventListener(`keydown`,l),e.toggleAttribute(`data-dsk-fullscreen`,t),s(),n(t))},l=e=>{e.key===`Escape`&&a&&p()},u=()=>{o||c(document.fullscreenElement===e)};function d(){o=!0,e.classList.add(`dsk-fs-fallback`),document.documentElement.classList.add(`dsk-fs-locked`),c(!0)}function f(){if(a)return;let t=e.requestFullscreen;document.fullscreenEnabled&&typeof t==`function`?t.call(e).catch(d):d()}function p(){a&&(o?(o=!1,e.classList.remove(`dsk-fs-fallback`),document.documentElement.classList.remove(`dsk-fs-locked`),c(!1)):document.fullscreenElement===e?document.exitFullscreen().catch(()=>c(!1)):c(!1))}return r.addEventListener(`click`,e=>{e.stopPropagation(),a?p():f()}),r.addEventListener(`pointerdown`,e=>e.stopPropagation()),document.addEventListener(`fullscreenchange`,u),s(),e.appendChild(r),{get active(){return a},enter:f,exit:p,toggle:()=>a?p():f(),relabel(e){i=Rf[e===`ru`?`ru`:`en`],s()},destroy(){p(),document.removeEventListener(`fullscreenchange`,u),r.remove()}}}function Hf(e,t){return e.el.getAttribute(`fullscreen`)===`false`?null:Vf(e.el,e.locale(),n=>{if(e.emit(`fullscreen`,{active:n}),!t)return;let r=!1,i=()=>{r||(r=!0,a?.disconnect(),requestAnimationFrame(()=>{try{t()}catch{}}))},a=typeof ResizeObserver==`function`?new ResizeObserver(()=>setTimeout(i,50)):null;a?.observe(e.el),setTimeout(i,400)})}var Uf=t({LANGUAGES:()=>Yf,mountElement:()=>Jf,renderers:()=>Zf}),Wf=0,Gf=new Map;function Kf(e){let t=Gf.get(e);return t||(t=fetch(e,{credentials:`same-origin`}).then(t=>{if(!t.ok)throw Error(`${e}: HTTP ${t.status}`);return t.text()}),t.catch(()=>Gf.delete(e)),Gf.set(e,t)),t}function qf(e){if(e instanceof L){let t=e.line>0?` (line ${e.line}${e.column>0?`, column ${e.column}`:``})`:``;return`${e.message}${t}${e.hint?`. ${e.hint}`:``}`}return e instanceof Error?e.message:String(e)}function Jf(e){let t=document.createElement(`div`);t.className=`dsk-diagram`,e.container.appendChild(t);let n=0,r=``;async function i(){let i=++n,o=e.props(),s=typeof o.label==`string`?o.label:void 0,c;try{c=typeof o.src==`string`&&o.src!==``?await Kf(o.src):e.source()}catch(e){i===n&&a(e);return}if(i!==n)return;let l=`${s??``}\n${c}`;if(l!==r){r=l;try{let n=typeof o.syntax==`string`?o.syntax:void 0,r=If(c,{idPrefix:`dsk-dg-${++Wf}`,...n?{syntax:n}:{},...s?{title:s}:{}});t.innerHTML=r.svg,e.emit(`render`,{type:r.type,width:r.width,height:r.height})}catch(e){a(e)}}}function a(n){r=``;let i=document.createElement(`div`);i.className=`dsk-error`,i.setAttribute(`role`,`alert`),i.textContent=qf(n),t.replaceChildren(i);let a={message:qf(n)};n instanceof L&&Object.assign(a,{line:n.line,column:n.column,hint:n.hint}),e.emit(`error`,a)}i();let o=Hf(e);return{update:()=>void i(),destroy:()=>{o?.destroy(),t.remove()},api:{enterFullscreen:()=>o?.enter(),exitFullscreen:()=>o?.exit(),get fullscreen(){return o?.active??!1},get svg(){return t.querySelector(`svg`)}}}}var Yf={mermaid:`mermaid`,plantuml:`plantuml`,puml:`plantuml`,dot:`dot`,graphviz:`dot`,d2:`d2`,dbml:`dbml`,structurizr:`structurizr`,wardley:`wardley`};function Xf(e){return t=>{try{return{html:If(t,{syntax:e,idPrefix:`dsk-dg-${++Wf}`}).svg}}catch(e){if(e instanceof L)return{error:qf(e)};throw e}}}var Zf=Object.fromEntries(Object.entries(Yf).map(([e,t])=>[e,Xf(t)]));xe({diagram:Uf},Se.diagram.map(e=>[e,Ce[e]]))})();