domma-cms 1.6.41 → 1.6.43

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.
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Tools CSS v0.51.14
2
+ * Domma Tools CSS v0.52.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-13T15:59:11.655Z
6
- * Commit: 9c8f7d3
5
+ * Built: 2026-10-14T07:30:24.896Z
6
+ * Commit: 17bea57
7
7
  */
8
8
 
9
9
  /*!
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Tools v0.51.14
2
+ * Domma Tools v0.52.0
3
3
  * Developer tools: Theme Roller & Page Roller
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-13T15:58:56.767Z
6
- * Commit: 9c8f7d3
5
+ * Built: 2026-10-14T07:30:09.523Z
6
+ * Commit: 17bea57
7
7
  *
8
8
  * Requires: domma.min.js
9
9
  */
@@ -1 +1 @@
1
- const a="dm-custom-themes";export function applyAdminTheme(e,{init:s=!1}={}){const o=e?.dommaTheme||"charcoal-dark";s?Domma.theme.init({theme:o,persist:!0}):Domma.theme.set(o);let t=document.getElementById(a);e?.css?(t||(t=document.createElement("style"),t.id=a,document.head.appendChild(t)),t.textContent=e.css):t&&t.remove();const m=document.body;for(const c of[...m.classList])c.startsWith("dm-custom-")&&m.classList.remove(c);e?.customClass&&m.classList.add(e.customClass)}export async function refreshAdminTheme(e,s={}){try{applyAdminTheme(await e.theme.admin(),s)}catch{applyAdminTheme({dommaTheme:"charcoal-dark"},s)}}
1
+ const c="dm-custom-themes";export function applyAdminTheme(e){const s=e?.dommaTheme||"charcoal-dark";Domma.theme.init({theme:s,persist:!1,target:document.body});let t=document.getElementById(c);e?.css?(t||(t=document.createElement("style"),t.id=c,document.head.appendChild(t)),t.textContent=e.css):t&&t.remove();const m=document.body;for(const o of[...m.classList])o.startsWith("dm-custom-")&&m.classList.remove(o);e?.customClass&&m.classList.add(e.customClass)}export async function refreshAdminTheme(e,s={}){try{applyAdminTheme(await e.theme.admin(),s)}catch{applyAdminTheme({dommaTheme:"charcoal-dark"},s)}}
@@ -33,7 +33,7 @@ Banner content
33
33
  [/accordion]`,children:{name:"item",min:2,max:12},attrs:[{name:"multiple",type:"checkbox",label:"Allow multiple open"},{name:"id",type:"text",label:"ID"}]},{name:"item",label:"Item",icon:"list",category:"Components",child:!0,selfClosing:!1,container:!0,wrappable:!1,template:'[item title="Item title"]Content[/item]',inline:!0,attrs:[{name:"title",type:"text",label:"Title"}]},{name:"carousel",label:"Carousel",icon:"carousel-insert",category:"Components",selfClosing:!1,container:!0,wrappable:!1,template:`[carousel autoplay="true" interval="5000"]
34
34
  [slide title="Slide 1" image="/media/photo.jpg"]Caption.[/slide]
35
35
  [slide title="Slide 2"]Text-only slide.[/slide]
36
- [/carousel]`,children:{name:"slide",min:2,max:12},quickAttrs:["arrow-position","background","arrow-background","arrow-color"],attrs:[{name:"autoplay",type:"checkbox",label:"Autoplay"},{name:"interval",type:"number",label:"Interval (ms)"},{name:"loop",type:"checkbox",label:"Loop"},{name:"animation",type:"select",label:"Animation",options:[["slide","Slide"],["fade","Fade"],["crossfade","Crossfade"]]},{name:"animation-duration",type:"number",label:"Animation duration (ms)"},{name:"animation-easing",type:"text",label:"Animation easing"},{name:"arrow-position",type:"select",label:"Arrow position",options:[["middle","Middle"],["top","Top"],["bottom","Bottom"]]},{name:"background",type:"colour",label:"Background colour"},{name:"arrow-background",type:"colour",label:"Arrow background"},{name:"arrow-color",type:"colour",label:"Arrow colour"},{name:"id",type:"text",label:"ID"}]},{name:"slide",label:"Slide",icon:"image",category:"Components",child:!0,selfClosing:!1,container:!0,wrappable:!1,template:'[slide title="Slide title" image="/media/photo.jpg"]Caption[/slide]',inline:!0,attrs:[{name:"title",type:"text",label:"Title"},{name:"image",type:"image",label:"Image"}]},{name:"countdown",label:"Countdown",icon:"stopwatch",category:"Components",selfClosing:!0,container:!1,wrappable:!1,template:'[countdown to="2026-12-31" format="DD:HH:mm:ss" /]',attrs:[{name:"to",type:"text",label:"Target date (ISO)"},{name:"duration",type:"number",label:"Duration (seconds)"},{name:"format",type:"select",label:"Format",options:[["mm:ss","mm:ss"],["HH:mm:ss","HH:mm:ss"],["DD:HH:mm:ss","DD:HH:mm:ss"]]},{name:"id",type:"text",label:"ID"}]},{name:"timeline",label:"Timeline",icon:"activity",category:"Components",selfClosing:!1,container:!0,wrappable:!1,template:`[timeline layout="vertical" theme="modern"]
36
+ [/carousel]`,children:{name:"slide",min:2,max:12},quickAttrs:["height-mode","height","arrow-position","background","arrow-background","arrow-color"],attrs:[{name:"autoplay",type:"checkbox",label:"Autoplay"},{name:"interval",type:"number",label:"Interval (ms)"},{name:"loop",type:"checkbox",label:"Loop"},{name:"animation",type:"select",label:"Animation",options:[["slide","Slide"],["fade","Fade"],["crossfade","Crossfade"]]},{name:"animation-duration",type:"number",label:"Animation duration (ms)"},{name:"animation-easing",type:"text",label:"Animation easing"},{name:"height-mode",type:"select",label:"Image height",options:[["crop","Top-aligned crop (shortest image)"],["average","Average of shortest and tallest images"]]},{name:"height",type:"number",label:"Fixed height (px, optional)"},{name:"arrow-position",type:"select",label:"Arrow position",options:[["middle","Middle"],["top","Top"],["bottom","Bottom"]]},{name:"background",type:"colour",label:"Background colour"},{name:"arrow-background",type:"colour",label:"Arrow background"},{name:"arrow-color",type:"colour",label:"Arrow colour"},{name:"id",type:"text",label:"ID"}]},{name:"slide",label:"Slide",icon:"image",category:"Components",child:!0,selfClosing:!1,container:!0,wrappable:!1,template:'[slide title="Slide title" image="/media/photo.jpg"]Caption[/slide]',inline:!0,attrs:[{name:"title",type:"text",label:"Title"},{name:"image",type:"image",label:"Image"}]},{name:"countdown",label:"Countdown",icon:"stopwatch",category:"Components",selfClosing:!0,container:!1,wrappable:!1,template:'[countdown to="2026-12-31" format="DD:HH:mm:ss" /]',attrs:[{name:"to",type:"text",label:"Target date (ISO)"},{name:"duration",type:"number",label:"Duration (seconds)"},{name:"format",type:"select",label:"Format",options:[["mm:ss","mm:ss"],["HH:mm:ss","HH:mm:ss"],["DD:HH:mm:ss","DD:HH:mm:ss"]]},{name:"id",type:"text",label:"ID"}]},{name:"timeline",label:"Timeline",icon:"activity",category:"Components",selfClosing:!1,container:!0,wrappable:!1,template:`[timeline layout="vertical" theme="modern"]
37
37
  [event title="Launch" date="2025-01-15" status="completed"]Launched.[/event]
38
38
  [/timeline]`,children:{name:"event",min:1,max:20},custom:"timeline",attrs:[{name:"layout",type:"select",label:"Layout",options:[["vertical","Vertical"],["centred","Centred"],["horizontal","Horizontal"]]},{name:"theme",type:"select",label:"Theme",options:[["minimal","Minimal"],["corporate","Corporate"],["modern","Modern"]]},{name:"mode",type:"select",label:"Mode",options:[["timeline","Timeline"],["roadmap","Roadmap"]]},{name:"class",type:"text",label:"CSS class"},{name:"id",type:"text",label:"ID"}]},{name:"event",label:"Event",icon:"dot",category:"Components",child:!0,selfClosing:!1,container:!0,wrappable:!1,template:'[event title="Milestone" date="2025-01-15" status="completed"]Description[/event]',inline:!0,attrs:[{name:"title",type:"text",label:"Title"},{name:"date",type:"text",label:"Date"},{name:"status",type:"select",label:"Status",options:[["planned","Planned"],["in-progress","In progress"],["completed","Completed"],["blocked","Blocked"]]},{name:"icon",type:"icon",label:"Icon"}]},{name:"hero",label:"Hero",icon:"hero",category:"Content",selfClosing:!1,container:!0,wrappable:!0,template:`[hero title="Welcome" tagline="Build something great" size="lg" variant="gradient-blue"]
39
39
  Optional body content.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-cms",
3
- "version": "1.6.41",
3
+ "version": "1.6.43",
4
4
  "description": "File-based CMS powered by Domma and Fastify. Run npx domma-cms my-site to create a new project.",
5
5
  "type": "module",
6
6
  "main": "server/server.js",
@@ -84,7 +84,7 @@
84
84
  "@fastify/rate-limit": "^10.3.0",
85
85
  "@fastify/static": "9.1.1",
86
86
  "bcryptjs": "^3.0.3",
87
- "domma-js": "0.51.14",
87
+ "domma-js": "0.52.0",
88
88
  "dotenv": "^17.2.3",
89
89
  "fastify": "5.8.5",
90
90
  "gray-matter": "^4.0.3",
@@ -1 +1 @@
1
- body,button,input,select,textarea{font-family:Roboto,sans-serif}.navbar-brand-logo{height:32px;width:auto;display:inline-block;vertical-align:middle;margin-right:.4em}.navbar-brand-tagline{display:block;font-size:.65em;opacity:.75;line-height:1.2;letter-spacing:.02em}.navbar-brand-text.navbar-brand-sm{font-size:.85em}.navbar-brand-text.navbar-brand-lg{font-size:1.25em}@media(min-width:993px){#site-navbar:not(.dm-nav-vertical) .navbar-container{display:grid;align-items:center;gap:var(--dm-space-4, 1rem)}#site-navbar:not(.dm-nav-vertical) .navbar-collapse{display:contents}#site-navbar:not(.dm-nav-vertical) .navbar-brand{grid-column:1;justify-self:start}#site-navbar:not(.dm-nav-vertical) .navbar-nav{grid-column:2;flex:0 1 auto;min-width:0}#site-navbar:not(.dm-nav-vertical) .navbar-actions{grid-column:3;justify-self:end;margin-left:0}#site-navbar.dm-nav-align-centre:not(.dm-nav-vertical) .navbar-container{grid-template-columns:minmax(max-content,1fr) auto minmax(max-content,1fr)}#site-navbar.dm-nav-align-centre:not(.dm-nav-vertical) .navbar-nav{justify-content:center}#site-navbar:is(.dm-nav-align-left,.dm-nav-align-right,.dm-nav-align-spread):not(.dm-nav-vertical) .navbar-container{grid-template-columns:auto minmax(0,1fr) auto}#site-navbar.dm-nav-align-left:not(.dm-nav-vertical) .navbar-nav{justify-content:flex-start}#site-navbar.dm-nav-align-right:not(.dm-nav-vertical) .navbar-nav{justify-content:flex-end}#site-navbar.dm-nav-align-spread:not(.dm-nav-vertical) .navbar-nav{justify-content:space-between;width:100%}}.navbar-actions{order:4;margin-left:auto;display:flex;align-items:center;gap:.5rem}#site-navbar.navbar-dark .navbar-actions,#site-navbar.navbar-light .navbar-actions{color:var(--dm-navbar-text)}#site-navbar.navbar-dark .site-search-shortcut-hint,#site-navbar.navbar-light .site-search-shortcut-hint{color:color-mix(in srgb,var(--dm-navbar-text) 65%,var(--dm-navbar-bg));border-color:color-mix(in srgb,var(--dm-navbar-text) 28%,transparent)}.site-main{min-height:calc(100vh - 60px);padding-top:2rem;padding-bottom:4rem}.site-main.with-sidebar{display:grid;grid-template-columns:var(--dm-contents-width, 260px) 1fr;gap:0}.site-sidebar{min-height:100%;border-right:1px solid var(--dm-border, rgba(255,255,255,.08))}.site-main.with-sidebar{overflow-x:clip;overflow-y:visible}.site-main.with-sidebar>#site-sidebar{position:sticky;top:var(--site-navbar-height, 4rem);align-self:start;min-height:0;max-height:calc(100vh - var(--site-navbar-height, 4rem));overflow-y:auto;width:auto}.site-main.with-sidebar.sidebar-right{grid-template-columns:1fr var(--dm-contents-width, 260px)}.site-main.with-sidebar.sidebar-right>#site-sidebar{order:2;border-right:0;border-left:1px solid var(--dm-border, rgba(255,255,255,.08))}.site-main.with-sidebar.no-sidebar-items{grid-template-columns:1fr}.site-main.with-sidebar.no-sidebar-items .site-sidebar{display:none}.dm-contents{padding:var(--dm-space-3, .75rem) 0}.dm-contents-head{display:flex;align-items:center;gap:.5rem;padding:0 var(--dm-space-3, .75rem)}.dm-contents-title{margin:0;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--dm-text-muted)}.dm-contents-title:empty{display:none}.dm-contents-list{margin:.25rem 0 0;padding:0;list-style:none;counter-reset:dm-contents-h2}.dm-contents-item>a{display:block;padding:.45rem var(--dm-space-3, .75rem) .45rem calc(var(--dm-space-3, .75rem) + 3px);border-left:3px solid transparent;color:var(--dm-text-secondary);text-decoration:none;line-height:1.35;font-size:.9rem}.dm-contents-item>a:hover{color:var(--dm-text);background:var(--dm-hover-bg, rgba(255, 255, 255, .04))}.dm-contents:not([data-menu-active]) .dm-contents-item>a.is-active{color:var(--dm-text);font-weight:600;border-left-color:var(--dm-menu-highlight, var(--dm-primary));background:var(--dm-hover-bg, rgba(255, 255, 255, .04))}.dm-contents-h3>a{padding-left:calc(var(--dm-space-3, .75rem) + 1.1rem);font-size:.85rem}.dm-contents-list.is-numbered .dm-contents-h2{counter-increment:dm-contents-h2;counter-reset:dm-contents-h3}.dm-contents-list.is-numbered .dm-contents-h3{counter-increment:dm-contents-h3}.dm-contents-list.is-numbered .dm-contents-h2>a:before{content:counter(dm-contents-h2) ". ";color:var(--dm-text-muted)}.dm-contents-list.is-numbered .dm-contents-h3>a:before{content:counter(dm-contents-h2) "." counter(dm-contents-h3) " ";color:var(--dm-text-muted)}.dm-contents-toggle{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:28px;height:28px;padding:0;border:1px solid var(--dm-border);border-radius:6px;background:transparent;color:var(--dm-text-secondary);cursor:pointer}.dm-contents-toggle:hover{color:var(--dm-text);border-color:var(--dm-primary)}.dm-contents-toggle svg{width:16px;height:16px}.site-main.with-sidebar.contents-static>#site-sidebar{position:static;max-height:none;overflow:visible}.site-main.with-sidebar.contents-collapsed{grid-template-columns:52px 1fr}.site-main.with-sidebar.sidebar-right.contents-collapsed{grid-template-columns:1fr 52px}.site-main.contents-collapsed .dm-contents-list,.site-main.contents-collapsed .dm-contents-title{display:none}.site-main.contents-collapsed .dm-contents-head{justify-content:center;padding:0}.site-main.with-sidebar:is(.contents-floating,.contents-autohide){grid-template-columns:1fr}.site-main.with-sidebar:is(.contents-floating,.contents-autohide)>#site-sidebar{position:fixed;z-index:90;width:var(--dm-contents-width, 260px);max-height:70vh;overflow-y:auto;border:1px solid var(--dm-border);border-radius:10px;background:var(--dm-surface);box-shadow:var(--dm-shadow-lg)}.site-main.with-sidebar.contents-float-tl>#site-sidebar{top:calc(var(--site-navbar-height, 0px) + 1rem);bottom:auto;left:1rem;right:auto}.site-main.with-sidebar.contents-float-tr>#site-sidebar{top:calc(var(--site-navbar-height, 0px) + 1rem);bottom:auto;right:1rem;left:auto}.site-main.with-sidebar.contents-float-bl>#site-sidebar{top:auto;bottom:1rem;left:1rem;right:auto}.site-main.with-sidebar.contents-float-br>#site-sidebar{top:auto;bottom:1rem;right:1rem;left:auto}.site-main.with-sidebar.contents-float-l>#site-sidebar{top:50%;bottom:auto;left:1rem;right:auto;transform:translateY(-50%)}.site-main.with-sidebar.contents-float-r>#site-sidebar{top:50%;bottom:auto;right:1rem;left:auto;transform:translateY(-50%)}body.dm-vnav-right .site-main.with-sidebar:is(.contents-float-tr,.contents-float-br,.contents-float-r)>#site-sidebar{right:calc(var(--dm-vnav-width, 240px) + 1rem)}body.dm-vnav-left .site-main.with-sidebar:is(.contents-float-tl,.contents-float-bl,.contents-float-l)>#site-sidebar{left:calc(var(--dm-vnav-width, 240px) + 1rem)}.dm-contents.is-movable .dm-contents-head{cursor:move}.site-main.contents-autohide>#site-sidebar{top:50%;transition:transform .25s ease,box-shadow .25s ease;box-shadow:none}.site-main.contents-autohide:not(.sidebar-right)>#site-sidebar{left:0;transform:translate(calc(-100% + 10px),-50%);border-radius:0 10px 10px 0}.site-main.contents-autohide.sidebar-right>#site-sidebar{right:0;transform:translate(calc(100% - 10px),-50%);border-radius:10px 0 0 10px}body.dm-vnav-left .site-main.contents-autohide:not(.sidebar-right)>#site-sidebar{left:var(--dm-vnav-width, 240px)}body.dm-vnav-right .site-main.contents-autohide.sidebar-right>#site-sidebar{right:var(--dm-vnav-width, 240px)}.site-main.contents-autohide>#site-sidebar:is(:hover,:focus-within,.is-revealed){transform:translateY(-50%);box-shadow:var(--dm-shadow-lg)}@media(prefers-reduced-motion:reduce){.site-main.contents-autohide>#site-sidebar{transition:none}}html.dm-reduced-motion .site-main.contents-autohide>#site-sidebar{transition:none}.site-content{overflow:hidden}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}.container{padding:0 1.5rem}.page-title{font-size:clamp(1.5rem,4vw,2rem);font-weight:700;margin-bottom:1.5rem;line-height:1.2}.page-body{line-height:1.7;font-size:1rem}.page-body h1,.page-body h2,.page-body h3,.page-body h4{margin-top:2rem;margin-bottom:.75rem;font-weight:600}.page-body h2{font-size:clamp(1.2rem,3vw,1.5rem)}.page-body h3{font-size:clamp(1.1rem,2.5vw,1.25rem)}.page-body p{margin-bottom:1rem}.page-body ul,.page-body ol{margin-bottom:1rem;padding-left:1.5rem}.page-body a{color:var(--dm-link, var(--dm-primary, #5b8cff))}.page-body a:hover{text-decoration:underline}.page-body code{font-family:Fira Code,Courier New,monospace;font-size:.9em;background:var(--dm-code-bg, rgba(255,255,255,.06));color:var(--dm-code-text, inherit);padding:.15em .35em;border-radius:3px}.page-body pre{background:var(--dm-code-bg, rgba(0,0,0,.3));color:var(--dm-code-text, inherit);border:1px solid var(--dm-code-border, rgba(255,255,255,.08));border-radius:6px;padding:1rem;overflow-x:auto;margin-bottom:1rem}.page-body pre code{background:none;padding:0}.page-body img{max-width:100%;border-radius:6px}.page-body blockquote{border-left:3px solid var(--dm-primary, #5b8cff);margin:1.5rem 0;padding:.75rem 1rem;background:color-mix(in srgb,var(--dm-primary, #5b8cff) 8%,transparent);border-radius:0 6px 6px 0}h3.accordion-header{margin:0}.accordion-button{all:unset;display:flex;align-items:center;justify-content:space-between;width:100%;cursor:pointer;font:inherit}.page-body .card-header h2{margin:0;font-size:1rem;font-weight:600;line-height:1.4}.card[data-collapsible] .card-header{cursor:pointer;user-select:none;display:flex;align-items:center;justify-content:space-between}.card[data-collapsible] .card-header:after{content:"\25be";font-size:1.1em;line-height:1;display:inline-block;transition:transform .25s ease;flex-shrink:0}.card[data-collapsible].is-collapsed .card-header:after{transform:rotate(-90deg)}.card[data-collapsible] .card-body{overflow:hidden;max-height:4000px;opacity:1;transition:max-height .3s ease,opacity .25s ease}.card[data-collapsible].is-collapsed .card-body{max-height:0;opacity:0}.card-primary>.card-header,.card-primary>.card-footer{background-color:color-mix(in srgb,var(--dm-primary) 18%,var(--dm-surface));color:var(--dm-text);border-color:var(--dm-primary)}.card-primary>.card-header .card-title{color:var(--dm-text)}.navbar-link span[data-icon],.navbar-link svg,.navbar-dropdown-toggle span[data-icon],.navbar-dropdown-toggle svg,.navbar-dropdown-item span[data-icon],.navbar-dropdown-item svg{width:13px!important;height:13px!important;margin-right:10px!important}#site-navbar .navbar-dropdown-toggle,#site-navbar .navbar-dropdown-item{font-size:var(--dm-font-size-base)}@media(min-width:993px){#site-navbar .navbar-dropdown-toggle,#site-navbar .navbar-dropdown-item{font-size:var(--dm-font-size-sm)}}@media(min-width:1201px){#site-navbar .navbar-dropdown-toggle,#site-navbar .navbar-dropdown-item{font-size:var(--dm-font-size-xs)}}#site-navbar .navbar-dropdown-item{transition:none}[data-mode=light] #site-navbar.navbar:not(.navbar-light):not(.navbar-dark) .navbar-link,[data-mode=light] #site-navbar.navbar:not(.navbar-light):not(.navbar-dark) .navbar-dropdown-toggle{transition:all .15s ease,color 0s,background-color 0s}[data-mode=light] #site-navbar.navbar:not(.navbar-light):not(.navbar-dark) .navbar-link:hover,[data-mode=light] #site-navbar.navbar:not(.navbar-light):not(.navbar-dark) .navbar-dropdown-toggle:hover,[data-mode=light] #site-navbar .navbar-dropdown-item:hover{background-color:var(--dm-hover-bg, rgba(128, 128, 128, .14))!important;color:var(--dm-text, #1f2937)!important;text-decoration:underline;text-underline-offset:3px}.dm-reduced-motion *,.dm-reduced-motion *:before,.dm-reduced-motion *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.page-footer{border-top:1px solid var(--dm-border, rgba(255,255,255,.08));padding:1.5rem 0}.footer-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;max-width:1200px;margin:0 auto}.footer-inner p{margin:0;color:var(--dm-text-muted, #888);font-size:.875rem}.footer-links{display:flex;gap:1.25rem}.footer-links a{color:var(--dm-text-muted, #888);font-size:.875rem;text-decoration:none}.footer-links a:hover{color:var(--dm-text, #eee)}.footer-social{display:flex;gap:.5rem;align-items:center}.footer-social-link{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;color:var(--dm-text-muted, #888);transition:color .15s}.footer-social-link:hover{color:var(--dm-text, #eee)}.footer-social-link svg{width:1rem;height:1rem}.footer-motion-switch{font-size:.8rem;color:var(--dm-text-muted, #888);white-space:nowrap}.footer-motion-check{display:inline-flex;align-items:center;gap:.5rem;margin-top:var(--dm-space-3, .75rem);font-size:.85rem;color:var(--dm-text-secondary);cursor:pointer}.footer-motion-check .footer-motion-checkbox{width:1rem;height:1rem;margin:0;accent-color:var(--dm-primary)}.footer-motion-switch .form-switch-label{color:var(--dm-text-muted, #888)}.footer-motion-switch .form-switch-input{width:2rem;height:1.125rem}.footer-motion-switch .form-switch-input:after{width:.875rem;height:.875rem}.footer-motion-switch .form-switch-input:checked:after{transform:translate(.875rem)}.dm-slideover-header{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.25rem;border-bottom:1px solid var(--dm-border, rgba(255, 255, 255, .08));flex-shrink:0}.dm-slideover-title{margin:0;font-size:1rem;font-weight:600;line-height:1.4}.dm-slideover-body{padding:1.25rem;overflow:auto;overscroll-behavior:contain;flex:1;min-height:0;scrollbar-width:thin;scrollbar-color:var(--dm-border) transparent}.dm-slideover-body::-webkit-scrollbar{width:8px;height:8px}.dm-slideover-body::-webkit-scrollbar-track{background:transparent}.dm-slideover-body::-webkit-scrollbar-thumb{background:var(--dm-border);border-radius:4px}.dm-slideover-body::-webkit-scrollbar-thumb:hover{background:var(--dm-text-muted)}@media(max-width:768px){.site-main.with-sidebar{grid-template-columns:1fr}.site-sidebar{display:none}}.dm-spacer{display:block;width:100%}.hero-breakout{width:calc(100vw - 2rem);margin-left:calc(50% - 50vw + 1rem);margin-right:calc(50% - 50vw + 1rem)}.site-main:has(.page-body>.hero-breakout:first-child){padding-top:0}body[data-layout=landing]>.site-main{padding-top:0}body[data-layout=landing]>.site-main .container{max-width:none;padding:0}body[data-layout=landing] .page-body{padding-left:1.5rem;padding-right:1.5rem}body[data-layout=landing] .page-body>p,body[data-layout=landing] .page-body>h1,body[data-layout=landing] .page-body>h2,body[data-layout=landing] .page-body>h3,body[data-layout=landing] .page-body>ul,body[data-layout=landing] .page-body>ol,body[data-layout=landing] .page-body>blockquote{max-width:860px;margin-left:auto;margin-right:auto}.hero-breakout{width:100vw;margin-left:calc((100% - 100vw)/2);max-width:none}body[data-layout=landing] .page-body .hero-breakout{width:calc(100% + 3rem);margin-left:-1.5rem;margin-right:-1.5rem}body[data-layout=landing] .page-body .grid-breakout{width:calc(100% + 3rem);margin-left:-1.5rem;margin-right:-1.5rem;padding-left:1.5rem;padding-right:1.5rem}.page-body .card{transition:border-color .2s ease}.page-body .card:not(.card-no-hover):hover{border-color:var(--dm-primary, #0d6efd)}.page-body .card-header-icon-inline{display:flex;align-items:center;gap:.6rem}.page-body .card-header-icon-inline [data-icon]{flex-shrink:0;line-height:0}.page-body .card-header-icon-inline [data-icon] svg,.page-body .card-header-icon-inline>svg{display:block;width:1.25rem;height:1.25rem}.page-body .card-header-icon-stacked{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.35rem;padding-top:.25rem}.page-body .card-header-icon-stacked [data-icon],.page-body .card-header-icon-stacked svg{width:2rem;height:2rem}.card-header.card-icon-sized [data-icon],.card-header.card-icon-sized .card-icon{width:var(--dm-card-icon-size)!important;height:var(--dm-card-icon-size)!important;font-size:var(--dm-card-icon-size)!important}.card-header.card-icon-align-left,.card-header.card-icon-align-left .card-avatar-wrap{text-align:left}.card-header.card-icon-align-center,.card-header.card-icon-align-center .card-avatar-wrap{text-align:center}.card-header.card-icon-align-right,.card-header.card-icon-align-right .card-avatar-wrap{text-align:right}.card-header-icon-inline.card-icon-align-left{justify-content:flex-start}.card-header-icon-inline.card-icon-align-center{justify-content:center}.card-header-icon-inline.card-icon-align-right{justify-content:flex-end}.card-header-icon-stacked.card-icon-align-left{align-items:flex-start}.card-header-icon-stacked.card-icon-align-center{align-items:center}.card-header-icon-stacked.card-icon-align-right{align-items:flex-end}.card-header-icon-stacked[class*=card-icon-align-] .card-avatar-wrap{align-self:stretch}.card-header-icon-stacked[class*=card-icon-align-] [data-icon]{display:block}.card-header-icon-stacked.card-icon-align-left [data-icon]{margin-left:0;margin-right:auto}.card-header-icon-stacked.card-icon-align-center [data-icon]{margin-left:auto;margin-right:auto}.card-header-icon-stacked.card-icon-align-right [data-icon]{margin-left:auto;margin-right:0}.page-body .dm-card-clean{background:var(--dm-surface);border:1px solid var(--dm-border);box-shadow:0 1px 4px #0000000f,0 2px 8px #0000000a;transition:transform .2s ease,box-shadow .2s ease}.page-body .dm-card-clean:not(.card-no-hover):hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000001a,0 2px 8px #0000000f}.page-body .dm-card-clean .card-header{color:var(--dm-text)}.page-body .dm-card-clean .card-body{color:var(--dm-text-secondary)}.page-body .dm-card-clean .card-footer{color:var(--dm-text-secondary);border-top:1px solid var(--dm-border)}.page-body .dm-card-gradient{background:var(--dm-card-bg, #fff);border:none;box-shadow:0 4px 20px #6366f124;transition:transform .2s ease,box-shadow .2s ease}.page-body .dm-card-gradient:not(.card-no-hover):hover{transform:translateY(-5px);box-shadow:0 16px 40px #6366f140}.page-body .dm-card-gradient .card-header{background:linear-gradient(135deg,var(--dm-card-g-start, #6366f1),var(--dm-card-g-end, #8b5cf6));color:#fff;border-bottom:none}.page-body .dm-card-gradient .card-body{color:var(--dm-text-secondary)}.page-body .dm-card-gradient .card-footer{color:var(--dm-text-secondary);border-top:1px solid var(--dm-border)}.page-body .dm-card-glass{background:color-mix(in srgb,var(--dm-surface) 62%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid color-mix(in srgb,var(--dm-border) 75%,transparent);box-shadow:0 4px 24px #00000014;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.page-body .dm-card-glass:not(.card-no-hover):hover{transform:translateY(-4px);box-shadow:0 12px 36px #00000024;background:color-mix(in srgb,var(--dm-surface) 78%,transparent)}.page-body .dm-card-glass .card-header{background:transparent;border-bottom:1px solid color-mix(in srgb,var(--dm-border) 60%,transparent);color:var(--dm-text)}.page-body .dm-card-glass .card-body{color:var(--dm-text-secondary)}.page-body .dm-card-glass .card-footer{color:var(--dm-text-secondary);background:transparent}.page-body .dm-card-accent{background:var(--dm-surface);border:1px solid var(--dm-border);border-left:4px solid var(--dm-primary, #6366f1);box-shadow:0 1px 4px #0000000d;transition:transform .2s ease,box-shadow .2s ease,border-left-color .2s ease}.page-body .dm-card-accent:not(.card-no-hover):hover{transform:translateY(-3px);border-left-color:var(--dm-primary-hover, #4f46e5);box-shadow:0 8px 24px #6366f11f}.page-body .dm-card-accent .card-header{color:var(--dm-primary);border-bottom:none}.page-body .dm-card-accent .card-body{color:var(--dm-text-secondary)}.page-body .dm-card-accent .card-footer{color:var(--dm-text-secondary);border-top:1px solid var(--dm-border)}.page-body .dm-card-dark{--cms-link-color: color-mix(in srgb, var(--dm-primary) 40%, #fff);--cms-link-hover-color: color-mix(in srgb, var(--dm-primary) 20%, #fff);background:linear-gradient(160deg,color-mix(in srgb,var(--dm-primary) 8%,#1e293b),#0f172a);color:#cbd5e1;border:1px solid rgba(255,255,255,.06);box-shadow:0 4px 20px #0000004d;transition:transform .2s ease,box-shadow .2s ease}.page-body .dm-card-dark:not(.card-no-hover):hover{transform:translateY(-4px) scale(1.012);box-shadow:0 16px 40px #00000073}.page-body .dm-card-dark .card-header{background:transparent;color:#f1f5f9;border-bottom:1px solid rgba(255,255,255,.08)}.page-body .dm-card-dark :is(h1,h2,h3,h4,h5,h6,strong,b){color:#f1f5f9}.page-body .dm-card-dark .card-title{color:#f1f5f9!important}.page-body .dm-card-dark .card-subtitle{color:#94a3b8}.page-body .dm-card-dark .card-body{color:#cbd5e1}.page-body .dm-card-dark :is(code,pre){background:#ffffff14;border-color:#ffffff1f;color:#f1f5f9}.page-body .dm-card-dark pre code{background:none}.page-body .dm-card-dark .card-footer{background:transparent;color:#94a3b8;border-top:1px solid rgba(255,255,255,.08)}.page-body .dm-card-glow{background:var(--dm-surface);border:1px solid color-mix(in srgb,var(--dm-primary, #6366f1) 45%,transparent);box-shadow:0 0 #6366f100;transition:transform .2s ease,box-shadow .3s ease,border-color .2s ease}.page-body .dm-card-glow:not(.card-no-hover):hover{transform:translateY(-3px);border-color:var(--dm-primary, #818cf8);box-shadow:0 0 0 4px color-mix(in srgb,var(--dm-primary, #6366f1) 14%,transparent),0 0 28px color-mix(in srgb,var(--dm-primary, #6366f1) 22%,transparent)}.page-body .dm-card-glow .card-header{color:var(--dm-primary);border-bottom:1px solid color-mix(in srgb,var(--dm-primary, #6366f1) 20%,transparent)}.page-body .dm-card-glow .card-body{color:var(--dm-text-secondary)}.page-body .dm-card-glow .card-footer{border-top:1px solid color-mix(in srgb,var(--dm-primary, #6366f1) 20%,transparent);color:var(--dm-text-secondary)}.page-body .card-hover{transition:border-color .2s ease}.page-body .card-hover:not(.card-no-hover):hover{border-color:var(--dm-primary, #0d6efd)}.card-gradient-indigo{background:linear-gradient(135deg,#6366f1,#8b5cf6)}.card-gradient-ocean{background:linear-gradient(135deg,#0891b2,#2563eb)}.card-gradient-sunset{background:linear-gradient(135deg,#f59e0b,#ef4444,#ec4899)}.card-gradient-forest{background:linear-gradient(135deg,#10b981,#0d9488)}.card-gradient-rose{background:linear-gradient(135deg,#fb7185,#e11d48)}.card-gradient-midnight{background:linear-gradient(135deg,#1e1b4b,#4338ca)}.card-gradient-aurora{background:linear-gradient(135deg,#06b6d4,#6366f1,#a855f7)}.card-gradient-fire{background:linear-gradient(135deg,#ef4444,#f97316,#fbbf24)}.card-gradient-lagoon{background:linear-gradient(135deg,#06b6d4,#0e7490)}.card-gradient-dusk{background:linear-gradient(135deg,#7c3aed,#db2777)}.card-gradient-lime{background:linear-gradient(135deg,#84cc16,#10b981)}.card-gradient-gold{background:linear-gradient(135deg,#f59e0b,#b45309)}.card-gradient-arctic{background:linear-gradient(135deg,#bae6fd,#e0f2fe);color:#1e293b}.card-gradient-slate{background:linear-gradient(135deg,#475569,#1e293b)}[class*=card-gradient-]:not(.card-gradient-arctic){color:#fff}.page-body .card-font-serif{font-family:Georgia,Times New Roman,serif}.page-body .card-font-mono{font-family:SF Mono,Fira Code,Courier New,monospace}.page-body .card-text-sm{font-size:.85rem}.page-body .card-text-lg{font-size:1.1rem}.page-body .card-text-xl{font-size:1.25rem}.page-body .card-borderless{border:none!important}.page-body .card-shadow-none{box-shadow:none!important}.page-body .card-shadow-md{box-shadow:0 4px 12px #0000001a}.page-body .card-shadow-lg{box-shadow:0 10px 30px #0000002e}.page-body .card-rounded-none{border-radius:0}.page-body .card-rounded-xs{border-radius:2px}.page-body .card-rounded-sm{border-radius:4px}.page-body .dm-box-primary{--cms-box-tone: var(--dm-primary)}.page-body .dm-box-secondary{--cms-box-tone: var(--dm-secondary)}.page-body .dm-box-success{--cms-box-tone: var(--dm-success)}.page-body .dm-box-info{--cms-box-tone: var(--dm-info)}.page-body .dm-box-warning{--cms-box-tone: var(--dm-warning)}.page-body .dm-box-danger{--cms-box-tone: var(--dm-danger)}.page-body .dm-box-tone{--cms-link-color: color-mix(in srgb, var(--cms-box-tone) 40%, var(--dm-text));--cms-link-hover-color: var(--dm-text);background:color-mix(in srgb,var(--cms-box-tone) 12%,var(--dm-card-bg));border-color:color-mix(in srgb,var(--cms-box-tone) 45%,var(--dm-card-border));color:var(--dm-text)}.page-body .dm-box-tone:not(.card-no-hover):hover{border-color:var(--cms-box-tone)}.page-body .dm-box-tone>.card-body{color:var(--dm-text)}.page-body .dm-box-tone>.card-footer{background:color-mix(in srgb,var(--cms-box-tone) 20%,var(--dm-card-bg));border-top-color:color-mix(in srgb,var(--cms-box-tone) 35%,var(--dm-card-border));color:var(--dm-text)}.page-body .dm-box-custom{--cms-link-color: currentColor;--cms-link-hover-color: currentColor;background:var(--cms-box-bg);border-color:color-mix(in srgb,var(--cms-box-fg) 25%,var(--cms-box-bg));color:var(--cms-box-fg)}.page-body .dm-box-custom>:is(.card-body,.card-footer),.page-body .dm-box-custom :is(h1,h2,h3,h4,h5,h6,strong,b){color:var(--cms-box-fg)}.page-body .dm-box-custom>.card-footer{background:color-mix(in srgb,var(--cms-box-shade) 10%,var(--cms-box-bg));border-top-color:color-mix(in srgb,var(--cms-box-fg) 20%,var(--cms-box-bg))}.page-body .dm-box-custom a{text-decoration-color:currentColor!important}.page-body .dm-box-custom :is(code,pre){background:color-mix(in srgb,var(--cms-box-shade) 15%,var(--cms-box-bg));border-color:color-mix(in srgb,var(--cms-box-fg) 20%,var(--cms-box-bg));color:var(--cms-box-fg)}.page-body .dm-box-custom pre code{background:none}.page-body .card-rounded-lg{border-radius:20px}.page-body .card-rounded-full{border-radius:9999px}.page-body .card-align-center{text-align:center}.page-body .card-align-right{text-align:right}.page-body .card-pad-compact .card-body,.page-body .card-pad-compact .card-header,.page-body .card-pad-compact .card-footer{padding:8px 12px}.page-body .card-pad-spacious .card-body,.page-body .card-pad-spacious .card-header,.page-body .card-pad-spacious .card-footer{padding:24px 28px}.grid>:is(.card-span-full,.col:has(>.card-span-full)){grid-column:1 / -1}.grid>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:span 5 / span 5}.grid>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:span 6 / span 6}.grid.grid-cols-1>:is(.card-span-2,.col:has(>.card-span-2)),.grid.grid-cols-1>:is(.card-span-3,.col:has(>.card-span-3)),.grid.grid-cols-1>:is(.card-span-4,.col:has(>.card-span-4)),.grid.grid-cols-1>:is(.card-span-5,.col:has(>.card-span-5)),.grid.grid-cols-1>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-2>:is(.card-span-3,.col:has(>.card-span-3)),.grid.grid-cols-2>:is(.card-span-4,.col:has(>.card-span-4)),.grid.grid-cols-2>:is(.card-span-5,.col:has(>.card-span-5)),.grid.grid-cols-2>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-3>:is(.card-span-4,.col:has(>.card-span-4)),.grid.grid-cols-3>:is(.card-span-5,.col:has(>.card-span-5)),.grid.grid-cols-3>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-4>:is(.card-span-5,.col:has(>.card-span-5)),.grid.grid-cols-4>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-5>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}@media(min-width:768px){.grid.grid-cols-md-1>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:1 / -1}.grid.grid-cols-md-1>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:1 / -1}.grid.grid-cols-md-1>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-md-1>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-md-1>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-md-2>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-md-2>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:1 / -1}.grid.grid-cols-md-2>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-md-2>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-md-2>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-md-3>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-md-3>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-md-3>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-md-3>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-md-3>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-md-4>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-md-4>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-md-4>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-md-4>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-md-4>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-md-5>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-md-5>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-md-5>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-md-5>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:span 5 / span 5}.grid.grid-cols-md-5>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-md-6>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-md-6>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-md-6>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-md-6>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:span 5 / span 5}.grid.grid-cols-md-6>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:span 6 / span 6}}@media(min-width:1024px){.grid.grid-cols-lg-1>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:1 / -1}.grid.grid-cols-lg-1>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:1 / -1}.grid.grid-cols-lg-1>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-lg-1>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-lg-1>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-lg-2>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-lg-2>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:1 / -1}.grid.grid-cols-lg-2>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-lg-2>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-lg-2>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-lg-3>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-lg-3>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-lg-3>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-lg-3>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-lg-3>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-lg-4>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-lg-4>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-lg-4>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-lg-4>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-lg-4>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-lg-5>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-lg-5>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-lg-5>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-lg-5>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:span 5 / span 5}.grid.grid-cols-lg-5>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-lg-6>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-lg-6>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-lg-6>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-lg-6>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:span 5 / span 5}.grid.grid-cols-lg-6>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:span 6 / span 6}}.card-img-top{width:100%;height:180px;background-size:cover;background-position:center;background-color:var(--dm-border,#e2e8f0);display:flex;align-items:center;justify-content:center;font-size:2.5rem;color:color-mix(in srgb,var(--dm-text) 15%,transparent)}.card-img-left,.card-img-right{width:90px;flex-shrink:0;background-size:cover;background-position:center;background-color:var(--dm-border,#e2e8f0);display:flex;align-items:center;justify-content:center;font-size:1.75rem;color:color-mix(in srgb,var(--dm-text) 20%,transparent)}.card-img-wide{width:130px;flex-shrink:0;background-size:cover;background-position:center;background-color:var(--dm-border,#e2e8f0);display:flex;align-items:center;justify-content:center;font-size:2rem;color:color-mix(in srgb,var(--dm-text) 20%,transparent)}.card-layout-horizontal,.card-layout-thumb-left,.card-layout-thumb-right{display:flex}.card-layout-thumb-left .card-body,.card-layout-thumb-right .card-body,.card-layout-horizontal .card-body{flex:1;min-width:0}.card-layout-split{display:flex;min-height:140px}.card-split-left{width:50%;display:flex;align-items:center;justify-content:center;font-size:2.25rem;flex-shrink:0;background:linear-gradient(160deg,#6366f1,#8b5cf6)}.card-split-right{flex:1;background:#1e293b;display:flex;flex-direction:column;justify-content:center}.card-split-right .card-body{color:#94a3b8}.card-split-right .card-title{color:#f1f5f9}.card-img-overlay{position:relative;height:180px;overflow:hidden;background-size:cover;background-position:center;background-color:#1e293b;display:flex;align-items:flex-end}.card-overlay-text{width:100%;padding:40px 16px 14px;background:linear-gradient(to top,rgba(0,0,0,.75),transparent)}.card-overlay-text .card-title{color:#fff}.dm-card-dark .card-img-top,.dm-card-dark .card-img-left,.dm-card-dark .card-img-right,.dm-card-dark .card-img-wide{filter:brightness(.7)}.card-stat-value{font-size:2.4rem;font-weight:800;color:var(--dm-text);line-height:1.1}.card-stat-delta{font-size:.8rem;font-weight:600;margin-top:2px}.card-stat-delta.positive{color:var(--dm-success, #10b981)}.card-stat-delta.negative{color:var(--dm-danger, #ef4444)}.card-stat-bar{height:5px;background:var(--dm-border);border-radius:3px;margin-top:14px;overflow:hidden}.card-stat-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,#6366f1,#8b5cf6)}.card-progress-bar{height:8px;background:var(--dm-border);border-radius:4px;overflow:hidden;margin:8px 0}.card-progress-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,#6366f1,#8b5cf6)}.card-milestone{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--dm-text-secondary);padding:3px 0}.card-milestone-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.card-milestone-dot.done{background:var(--dm-success, #10b981)}.card-milestone-dot.pending{background:var(--dm-border, #e5e7eb)}.card-header-icon-stacked{text-align:center;padding:20px 16px 12px}.card-header-icon-stacked [data-icon],.card-header-icon-stacked .card-icon{font-size:2rem;display:block;margin-bottom:8px}.card-step-bg{position:relative;overflow:hidden;min-height:60px;display:flex;align-items:center;padding:14px 16px}.card-step-ghost{position:absolute;right:8px;top:-10px;font-size:5rem;font-weight:900;color:color-mix(in srgb,var(--dm-primary, #6366f1) 12%,transparent);line-height:1;pointer-events:none}.card-step-badge{width:32px;height:32px;border-radius:50%;background:var(--dm-primary, #6366f1);color:var(--dm-primary-text, #fff);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;z-index:1;flex-shrink:0}.card-corner-badge-wrap{position:relative}.card-corner-badge{position:absolute;top:10px;right:10px;background:var(--dm-danger, #ef4444);color:#fff;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 8px;border-radius:20px}.card-callout{border-left:4px solid var(--dm-primary, #6366f1)}.card-callout.warn{border-left-color:var(--dm-warning, #f59e0b)}.card-callout.success{border-left-color:var(--dm-success, #10b981)}.card-callout.error{border-left-color:var(--dm-danger, #ef4444)}.card-callout-inner{display:flex;gap:12px;align-items:flex-start}.card-callout-icon{font-size:1.2rem;flex-shrink:0;margin-top:1px}.card-quote-mark{font-size:3.5rem;color:color-mix(in srgb,var(--dm-primary, #6366f1) 18%,transparent);line-height:.8;padding:14px 16px 0;font-family:Georgia,serif;display:block}.card-quote-text{padding:4px 16px 14px;font-style:italic;color:var(--dm-text-secondary);line-height:1.7}.card-quote-attr{display:flex;align-items:center;gap:10px}.card-quote-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:.85rem;color:#fff;flex-shrink:0}.card-video-thumb{position:relative;height:160px;background:#1e293b;display:flex;align-items:center;justify-content:center;background-size:cover;background-position:center}.card-play-btn{width:52px;height:52px;border-radius:50%;background:#ffffffe6;display:flex;align-items:center;justify-content:center;font-size:1.2rem;box-shadow:0 4px 16px #0000004d}.card-video-duration{position:absolute;bottom:8px;right:10px;background:#000000b3;color:#fff;font-size:.65rem;font-weight:600;padding:2px 7px;border-radius:4px}.card-map-placeholder{height:130px;background:linear-gradient(160deg,#bfdbfe,#dbeafe);position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.card-map-grid{position:absolute;inset:0;background-image:repeating-linear-gradient(0deg,rgba(59,130,246,.08) 0,rgba(59,130,246,.08) 1px,transparent 1px,transparent 32px),repeating-linear-gradient(90deg,rgba(59,130,246,.08) 0,rgba(59,130,246,.08) 1px,transparent 1px,transparent 32px)}.card-map-pin{font-size:2rem;z-index:1}.card-avatar{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:1.8rem;color:#fff;margin:0 auto 12px}.card-avatar-wrap{text-align:center;padding:24px 16px 16px}.card-tag-pills{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:10px}.card-pill{background:color-mix(in srgb,var(--dm-primary, #7c3aed) 15%,transparent);color:var(--dm-primary, #7c3aed);font-size:.7rem;font-weight:700;padding:3px 9px;border-radius:20px}.card-tag-cloud{padding:14px 16px;display:flex;flex-wrap:wrap;gap:7px}.card-tag{padding:4px 11px;border-radius:20px;font-size:.78rem;font-weight:600}.card-file-row{display:flex;gap:14px;align-items:center;padding:16px}.card-file-icon{width:48px;height:58px;border-radius:7px;background:linear-gradient(160deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:1.4rem;color:#fff;flex-shrink:0;position:relative}.card-file-ext{position:absolute;bottom:4px;left:0;right:0;text-align:center;font-size:.55rem;font-weight:800;color:#ffffffe6;letter-spacing:.05em}.card-file-dl{font-size:.78rem;font-weight:700;color:var(--dm-link, var(--dm-primary, #6366f1));display:inline-block;margin-top:4px}.card-stars{color:#f59e0b;letter-spacing:2px;padding:14px 16px 0;display:block}.card-verified{display:inline-block;background:color-mix(in srgb,var(--dm-success, #10b981) 18%,transparent);color:var(--dm-success, #065f46);font-size:.6rem;font-weight:700;padding:1px 5px;border-radius:3px;margin-left:6px}.card-activity-item{display:flex;gap:10px;align-items:flex-start;padding:8px 14px;border-bottom:1px solid var(--dm-border)}.card-activity-item:last-child{border-bottom:none}.card-activity-avatar{width:30px;height:30px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:.8rem;color:#fff}.card-compare-grid{display:grid;grid-template-columns:1fr 1fr}.card-compare-col{padding:12px 14px}.card-compare-col+.card-compare-col{border-left:1px solid var(--dm-border)}.card-compare-label{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px;display:block}.card-compare-label.before{color:var(--dm-danger, #ef4444)}.card-compare-label.after{color:var(--dm-success, #10b981)}.card-compare-item{display:flex;gap:7px;align-items:flex-start;font-size:.78rem;color:var(--dm-text-secondary);padding:3px 0;line-height:1.4}.card-compare-x{color:var(--dm-danger, #ef4444);flex-shrink:0}.card-compare-check{color:var(--dm-success, #10b981);flex-shrink:0}.card-pricing-features{padding:14px 16px}.card-pricing-feature{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--dm-text-secondary);padding:4px 0}.card-pricing-check{color:var(--dm-success, #10b981)}.card-pricing-cta{display:block;text-align:center;background:var(--dm-primary, #6366f1);color:var(--dm-primary-text, #fff);font-size:.82rem;font-weight:700;padding:9px;border-radius:8px;text-decoration:none;margin:0 16px 14px}.page-body a.card-pricing-cta,.page-body a.card-pricing-cta:hover{color:var(--dm-primary-text, #fff);text-decoration:none}.page-body a.card-pricing-cta:hover{filter:brightness(1.08)}.card-timeline-row{display:flex}.card-timeline-side{width:44px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;padding-top:14px}.card-timeline-dot{width:12px;height:12px;border-radius:50%;background:var(--dm-primary, #6366f1);flex-shrink:0}.card-timeline-line{width:2px;background:var(--dm-border, #e5e7eb);flex:1;margin-top:4px}.card-timeline-body{flex:1;padding:12px 14px 12px 0}.card-timeline-date{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--dm-text-muted)}.card-timeline-tag{display:inline-block;background:color-mix(in srgb,var(--dm-success, #10b981) 18%,transparent);color:var(--dm-success, #065f46);font-size:.65rem;font-weight:700;padding:2px 6px;border-radius:4px;margin-top:6px}.card-code-header{background:#1e293b;display:flex;justify-content:space-between;align-items:center;padding:8px 14px}.card-code-lang{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#6366f1}.card-code-body{background:#0f172a;padding:14px;font-family:Courier New,monospace;font-size:.78rem;line-height:1.8;color:#94a3b8;overflow-x:auto}.card-glass-outer{background:linear-gradient(135deg,#6366f1,#8b5cf6,#ec4899);border-radius:12px;padding:2px}.card-glass-inner{background:#ffffffeb;backdrop-filter:blur(10px);border-radius:10px;padding:16px}.card-badge-band{display:flex;align-items:center;justify-content:space-between;padding:12px 16px}.card-badge-band-label{background:#fff3;color:#fff;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px;border-radius:4px}.card-badge-band-icon{font-size:1.4rem}.dm-card-full-bg{background:linear-gradient(160deg,#1e293b,#0f172a);color:#cbd5e1}.dm-card-full-bg .card-body{color:#94a3b8}.dm-card-full-bg .card-title{color:#f1f5f9;font-size:1rem}.dm-card-full-bg .card-footer{border-top-color:#ffffff14;color:#64748b}.card-fc-row{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;border-bottom:1px solid var(--dm-border);font-size:.82rem;color:var(--dm-text-secondary)}.card-fc-row:last-child{border-bottom:none}.card-fc-yes{color:var(--dm-success, #10b981)}.card-fc-no{color:var(--dm-text-disabled, #d1d5db)}@media(max-width:480px){.card-layout-thumb-left,.card-layout-thumb-right,.card-layout-horizontal{flex-direction:column}.card-img-left,.card-img-right,.card-img-wide{width:100%;height:120px}.card-layout-split{flex-direction:column}.card-split-left{width:100%;height:100px}}.hero.hero-dark{background:linear-gradient(135deg,#1f2937,#111827);color:#e2e8f0}.hero.hero-xl{min-height:75vh;box-sizing:border-box;display:flex;align-items:center;justify-content:center}.hero .hero-content{position:relative;z-index:2}.hero.hero-left .hero-content{text-align:left;align-items:flex-start;max-width:62%}@media(max-width:768px){.hero.hero-left .hero-content{max-width:100%}}.hero .hero-cta{display:flex;gap:.85rem;flex-wrap:wrap;margin-top:1.75rem}.hero .hero-cta a{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.35rem;border-radius:6px;font-size:.95rem;font-weight:500;text-decoration:none;transition:background .2s ease,border-color .2s ease,transform .15s ease,box-shadow .2s ease}.hero .hero-cta a:first-child{background:#ffffffeb;color:#111;border:1px solid transparent}.hero .hero-cta a:first-child:hover{background:#fff;box-shadow:0 4px 16px #00000040;transform:translateY(-2px)}.hero .hero-cta a:last-child{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4)}.hero .hero-cta a:last-child:hover{border-color:#ffffffbf;background:#ffffff14;transform:translateY(-2px)}.hero .hero-label{display:inline-block;margin-bottom:.9rem;padding:.2rem .8rem;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:#ffffffb3;border:1px solid rgba(255,255,255,.22)}.grid-breakout{width:calc(100vw - 2rem);margin-left:calc(50% - 50vw + 1rem);margin-right:calc(50% - 50vw + 1rem)}.dm-breadcrumbs{position:fixed;z-index:200;display:inline-flex;align-items:center;gap:.2rem;padding:.3rem .8rem;border-radius:999px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);background:#00000047;border:1px solid rgba(255,255,255,.11);box-shadow:0 2px 10px #00000038;font-size:.72rem;font-weight:500;letter-spacing:.01em;line-height:1.4;max-width:calc(100vw - 2rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dm-breadcrumbs .dm-breadcrumbs-item{color:#ffffffa6}.dm-breadcrumbs .dm-breadcrumbs-link{display:inline-flex;align-items:center;gap:.25rem;color:#ffffff8c;text-decoration:none;transition:color .15s}.dm-breadcrumbs .dm-breadcrumbs-home-icon{flex-shrink:0;vertical-align:middle}.dm-breadcrumbs .dm-breadcrumbs-link:hover{color:#fffffff2}.dm-breadcrumbs .dm-breadcrumbs-current{color:#ffffffeb;font-weight:600}.dm-breadcrumbs .dm-breadcrumbs-separator{color:#ffffff47;font-size:.8em;line-height:1;margin:0 .05rem}body[class*=-light] .dm-breadcrumbs{background:#ffffff8c;border-color:#00000012;box-shadow:0 2px 10px #00000014}body[class*=-light] .dm-breadcrumbs .dm-breadcrumbs-item,body[class*=-light] .dm-breadcrumbs .dm-breadcrumbs-link{color:#0000008c}body[class*=-light] .dm-breadcrumbs .dm-breadcrumbs-link:hover{color:#000000e6}body[class*=-light] .dm-breadcrumbs .dm-breadcrumbs-current{color:#000000d9}body[class*=-light] .dm-breadcrumbs .dm-breadcrumbs-separator{color:#00000040}.dm-collection-display{margin:1.5rem 0}.dm-collection-list{display:flex;flex-direction:column;gap:0}.dm-collection-list-item{padding:1rem 0;border-bottom:1px solid var(--dm-border, rgba(255, 255, 255, .08))}.dm-collection-list-item:last-child{border-bottom:none}.dm-collection-list-item strong{display:block;font-size:1rem;margin-bottom:.25rem}.dm-collection-list-item p{margin:0;color:var(--dm-text-muted, #888);font-size:.9rem}.dm-collection-empty p{color:var(--dm-text-muted, #888);font-style:italic}.hero-gradient-purple,.hero-gradient-blue,.hero-gradient-green,.hero-gradient-sunset,.hero-gradient-ocean,.hero-gradient-rose,.hero-gradient-forest{background:linear-gradient(135deg,color-mix(in srgb,var(--hero-hue) 22%,var(--dm-background)),color-mix(in srgb,var(--hero-hue) 10%,var(--dm-background)));color:var(--dm-text)}.hero-gradient-purple{--hero-hue: #8b5cf6}.hero-gradient-blue{--hero-hue: #3b82f6}.hero-gradient-green{--hero-hue: #10b981}.hero-gradient-sunset{--hero-hue: #f59e0b}.hero-gradient-ocean{--hero-hue: #0ea5e9}.hero-gradient-rose{--hero-hue: #ec4899}.hero-gradient-forest{--hero-hue: #16a34a}.hero-gradient-night{background:linear-gradient(135deg,#334155,#1e293b);color:#e2e8f0}.hero-gradient-ocean-light{background:linear-gradient(135deg,#e0f2fe,#caf0f8);color:#1e293b}.hero-gradient-ocean-dark{background:linear-gradient(135deg,#0c4a6e,#164e63);color:#e2e8f0}.hero-gradient-forest-light{background:linear-gradient(135deg,#d1fae5,#c6f6dc);color:#1e293b}.hero-gradient-forest-dark{background:linear-gradient(135deg,#1a4731,#166534);color:#e2e8f0}.hero-gradient-sunset-light{background:linear-gradient(135deg,#fde8d8,#fddcc9);color:#1e293b}.hero-gradient-sunset-dark{background:linear-gradient(135deg,#6b3727,#7c4036);color:#f5ede8}.hero-gradient-royal-light{background:linear-gradient(135deg,#e8f0fd,#dce8fc);color:#1e293b}.hero-gradient-royal-dark{background:linear-gradient(135deg,#1e3465,#263d7a);color:#e2e8f0}.hero-gradient-lemon-light{background:linear-gradient(135deg,#fefce8,#fef9c3);color:#1e293b}.hero-gradient-lemon-dark{background:linear-gradient(135deg,#5c4d1a,#6b5920);color:#fefce8}.hero-gradient-silver-light{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);color:#1e293b}.hero-gradient-silver-dark{background:linear-gradient(135deg,#2d3748,#374151);color:#e2e8f0}.hero-gradient-charcoal-light{background:linear-gradient(135deg,#eceff1,#e1e7eb);color:#1e293b}.hero-gradient-charcoal-dark{background:linear-gradient(135deg,#2c3843,#374451);color:#e2e8f0}.hero-gradient-christmas-light{background:linear-gradient(135deg,#fde8ea,#fdd5d8);color:#1e293b}.hero-gradient-christmas-dark{background:linear-gradient(135deg,#5c0f1d,#7a1525);color:#fde8ea}.hero-gradient-unicorn-light{background:linear-gradient(135deg,#f5e8fd,#edd6fb);color:#1e293b}.hero-gradient-unicorn-dark{background:linear-gradient(135deg,#3d1a5a,#4a2068);color:#f5e8fd}.hero-gradient-dreamy-light{background:linear-gradient(135deg,#f5ede8,#eeddd4);color:#1e293b}.hero-gradient-dreamy-dark{background:linear-gradient(135deg,#3d2820,#503328);color:#f5ede8}.hero-gradient-grayve-light{background:linear-gradient(135deg,#e0f7f9,#cbf2f5);color:#1e293b}.hero-gradient-grayve-dark{background:linear-gradient(135deg,#00363d,#00444d);color:#e0f7f9}.hero-gradient-mint-light{background:linear-gradient(135deg,#d8f5ea,#c5efdd);color:#1e293b}.hero-gradient-mint-dark{background:linear-gradient(135deg,#134d33,#195f3f);color:#d8f5ea}.hero-gradient-wedding-light{background:linear-gradient(135deg,#faf3e0,#f5e9c7);color:#1e293b}.hero-gradient-wedding-dark{background:linear-gradient(135deg,#5c4418,#6f5320);color:#faf3e0}.tabs-centered{text-align:center}.tabs-centered .tab-list{display:inline-flex}.tabs-centered .tab-content{text-align:left}.site-main{overflow-x:hidden}@media(max-width:768px){.hero .hero-cta a,.dm-so-trigger,.dm-cta-trigger{min-height:44px;padding:.6rem 1.25rem}}.dm-banner{position:relative;display:flex;flex-direction:row;align-items:flex-start;gap:.75rem;padding:.85rem 2.5rem .85rem 1rem;border-radius:var(--dm-radius-md, 6px);border-left:4px solid transparent;margin-bottom:1rem}.dm-banner__icon{flex-shrink:0;margin-top:.1rem;width:1.15rem;height:1.15rem}.dm-banner__icon svg{width:1.15rem;height:1.15rem}.dm-banner__body{flex:1;min-width:0}.dm-banner__title{display:block;margin-bottom:.2rem;font-size:.9em;font-weight:600}.dm-banner__dismiss{position:absolute;top:.5rem;right:.5rem;background:transparent;border:none;cursor:pointer;font-size:1.1rem;line-height:1;padding:.1rem .3rem;opacity:.6}.dm-banner__dismiss:hover{opacity:1}.dm-banner--info{background:color-mix(in srgb,var(--dm-info, #3b82f6) 12%,transparent);border-left-color:var(--dm-info, #3b82f6);color:inherit}.dm-banner--success{background:color-mix(in srgb,var(--dm-success, #22c55e) 12%,transparent);border-left-color:var(--dm-success, #22c55e);color:inherit}.dm-banner--warning{background:color-mix(in srgb,var(--dm-warning, #f59e0b) 12%,transparent);border-left-color:var(--dm-warning, #f59e0b);color:inherit}.dm-banner--danger{background:color-mix(in srgb,var(--dm-danger, #ef4444) 12%,transparent);border-left-color:var(--dm-danger, #ef4444);color:inherit}.dm-banner--neutral{background:color-mix(in srgb,var(--dm-text-muted, #888) 12%,transparent);border-left-color:var(--dm-text-muted, #888);color:inherit}body.dm-layout-narrow .page-body{max-width:768px;margin-inline:auto}body.dm-layout-normal .page-body{max-width:1100px;margin-inline:auto}body.dm-layout-wide .page-body{max-width:min(75vw,2000px);margin-inline:auto}body.dm-layout-full .page-body{max-width:none}.hero h1{font-size:clamp(2.4rem,4.5vw,3.75rem);font-weight:900;line-height:1.08;letter-spacing:-.03em}.hero-gradient-dreamy-light h1{color:#1e293b}.hero-gradient-dreamy-light p{font-size:1.125rem;line-height:1.7;color:#1e293bcc;max-width:48ch}.hero-center.hero-gradient-dreamy-light p{margin-left:auto;margin-right:auto}.page-body h2{font-weight:800;letter-spacing:-.025em}.page-body h3{font-weight:700;letter-spacing:-.015em}.hero-gradient-dreamy-light .hero-cta a:first-child{background:#1e293b!important;color:#f5ede8!important;border-color:#1e293b!important}.hero-gradient-dreamy-light .hero-cta a:first-child:hover{background:#0f172a!important;color:#fff!important}.hero-gradient-dreamy-light .hero-cta a:last-child{background:transparent!important;color:#1e293b!important;border:1px solid rgba(30,41,59,.45)!important}.hero-gradient-dreamy-light .hero-cta a:last-child:hover{background:#1e293b14!important;border-color:#1e293bb3!important}.card[data-hover=true]{transition:transform .22s ease,box-shadow .22s ease!important;will-change:transform}.card[data-hover=true]:not(.card-no-hover):hover{transform:translateY(-5px)!important;box-shadow:0 24px 64px #0003,0 8px 24px #0000001f!important}.card-icon{font-size:2.5rem!important;margin-bottom:12px!important;opacity:.95}.card-avatar-wrap{padding:20px 16px 12px!important;gap:.5rem}.mk-card-icon-wrap,.card-icon-wrap{width:3rem;height:3rem;border-radius:.75rem;background:#ffffff2e;display:flex;align-items:center;justify-content:center;margin-bottom:1.125rem;font-size:1.3rem;flex-shrink:0;box-shadow:0 2px 8px #0000001f}.mk-card-corner-badge,.card-corner-badge{position:absolute;top:1rem;right:1rem;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;font-size:.6875rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:.25rem .7rem;border-radius:99px;box-shadow:0 2px 10px #f59e0b73}.card-premium .card-subtitle{display:inline-block!important;font-size:.6875rem!important;font-weight:700!important;letter-spacing:.07em!important;text-transform:uppercase!important;opacity:1!important;color:#fff!important;background:linear-gradient(135deg,#f59e0b,#d97706)!important;padding:.2rem .65rem!important;border-radius:99px!important;box-shadow:0 2px 8px #f59e0b66!important;margin-bottom:.75rem!important}.mk-card-badge-band,.card-badge-band{display:inline-flex;align-items:center;gap:.35rem;font-size:.6875rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:.2rem .6rem;border-radius:99px;margin-bottom:.875rem;background:#fff3;border:1px solid rgba(255,255,255,.3)}.mk-card-stars,.card-stars{color:#f59e0b;font-size:1rem;letter-spacing:.12em;margin-bottom:.75rem}.mk-card-reviewer,.card-reviewer{display:flex;flex-direction:column;gap:.15rem;margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.15)}.mk-card-reviewer-name,.card-reviewer-name{font-weight:700;font-size:.9375rem}.mk-card-reviewer-role,.card-reviewer-role{font-size:.8125rem;opacity:.65}.mk-banner.type-info,[class*=banner-info],.mk-banner[data-type=info]{border-left:4px solid var(--dm-primary, #5c3d2e)}.mk-banner.type-success,[class*=banner-success],.mk-banner[data-type=success]{border-left:4px solid var(--dm-success, #22c55e)}.mk-banner.type-warning,[class*=banner-warning],.mk-banner[data-type=warning]{border-left:4px solid var(--dm-warning, #f59e0b)}.mk-stat-number{font-size:5rem;font-weight:900;line-height:1;letter-spacing:-.03em;color:var(--dm-primary, #5c3d2e)}.mk-stat-label{font-size:.9375rem;font-weight:600;opacity:.65;margin-top:.5rem;letter-spacing:.02em;text-transform:uppercase}.mk-footer-inner{max-width:1200px;margin:0 auto;padding:3rem 2rem 1.5rem}.mk-footer-columns{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem;margin-bottom:2.5rem}@media(max-width:900px){.mk-footer-columns{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.mk-footer-columns{grid-template-columns:1fr}}.mk-footer-col-title{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.5;margin:0 0 .75rem}.mk-footer-col-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.mk-footer-col-links a{font-size:.875rem;opacity:.75;text-decoration:none;transition:opacity .15s}.mk-footer-col-links a:hover{opacity:1}.mk-footer-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding-top:1.5rem;border-top:1px solid var(--dm-border, rgba(0, 0, 0, .08))}.mk-footer-copyright{font-size:.8125rem;opacity:.5;margin:0}.mk-footer-bottom-right{display:flex;align-items:center;gap:1.25rem}.mk-footer-social{display:flex;gap:.75rem}.mk-footer-social-link{opacity:.5;transition:opacity .15s;font-size:1.125rem}.mk-footer-social-link:hover{opacity:1}.mk-motion-label{display:flex;align-items:center;gap:.4rem;font-size:.75rem;opacity:.5;cursor:pointer;user-select:none}.mk-motion-label:hover{opacity:.75}.dm-static-block{display:contents}.mk-window{border-radius:10px;overflow:hidden;box-shadow:0 16px 56px #0000002e,0 4px 16px #0000001a;background:#fff;border:1px solid rgba(0,0,0,.06)}.mk-window-bar{background:#e8e8e8;padding:10px 16px;display:flex;gap:7px;align-items:center}.mk-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.mk-dot-red{background:#ff5f57}.mk-dot-amber{background:#febc2e}.mk-dot-green{background:#28c840}.page-body .carousel-slide{display:flex;flex-direction:column;justify-content:center}.page-body .carousel-slide>img{object-position:center center}.mk-window-body img{width:100%;display:block;max-height:480px;object-fit:cover;object-position:top}.dm-static-block+p{margin-top:.5rem}#site-navbar:not([data-menu-active]) .navbar-link.active:not([data-menu-item-active]){opacity:1!important;font-weight:700!important;position:relative}#site-navbar:not([data-menu-active]) .navbar-link.active:not([data-menu-item-active]):after{content:"";position:absolute;bottom:-3px;left:0;right:0;height:2px;background:currentColor;border-radius:2px;opacity:.6}.mk-divider{border:none;border-top:1px solid var(--dm-border-light, rgba(0, 0, 0, .07));margin:0}.page-body .mk-tabs,.page-body .tabs-wrapper,.page-body>.tabs{padding-left:1.5rem;padding-right:1.5rem}.mk-section-label,.section-label{display:inline-block;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .875rem;border-radius:99px;margin-bottom:1.125rem;background:color-mix(in srgb,var(--dm-primary, #5c3d2e) 10%,transparent);color:var(--dm-primary, #5c3d2e);border:1px solid color-mix(in srgb,var(--dm-primary, #5c3d2e) 20%,transparent)}.page-body .btn-primary,.page-body a.btn-primary{background-color:var(--dm-primary, #8d6e63)!important;color:var(--dm-text-inverse, #ffffff)!important;border:1px solid var(--dm-primary, #8d6e63)!important;text-decoration:none!important;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.page-body .btn-primary:hover,.page-body a.btn-primary:hover{background-color:var(--dm-primary-hover, #6d4c41)!important;color:var(--dm-text-inverse, #ffffff)!important;border-color:var(--dm-primary-hover, #6d4c41)!important;text-decoration:none!important}.page-body .btn-outline,.page-body a.btn-outline{background-color:transparent!important;color:var(--dm-primary, #8d6e63)!important;border:1.5px solid var(--dm-primary, #8d6e63)!important;text-decoration:none!important;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.page-body .btn-outline:hover,.page-body a.btn-outline:hover{background-color:var(--dm-primary, #8d6e63)!important;color:var(--dm-text-inverse, #ffffff)!important;border-color:var(--dm-primary, #8d6e63)!important;text-decoration:none!important}.page-body .btn-ghost,.page-body a.btn-ghost{background-color:transparent!important;color:var(--dm-primary, #8d6e63)!important;border:1px solid transparent!important;text-decoration:none!important;transition:background-color .15s ease,color .15s ease}.page-body .btn-ghost:hover,.page-body a.btn-ghost:hover{background-color:var(--dm-primary-light, rgba(141, 110, 99, .1))!important;color:var(--dm-primary-hover, #6d4c41)!important;text-decoration:none!important}.mk-card-step-number,.card-step-number{font-size:3rem;font-weight:900;line-height:1;letter-spacing:-.04em;opacity:.25;margin-bottom:.75rem}.mk-card-step-title,.card-step-title{font-size:1rem;font-weight:700;margin-bottom:.5rem}.card[data-badge=Enterprise] .mk-card-corner-badge,.card[data-badge=Enterprise] .card-corner-badge{background:linear-gradient(135deg,#1e293b,#334155);box-shadow:0 2px 10px #1e293b80}.card-badge-band-icon{font-size:1.75rem!important}.card-badge-band{padding:14px 18px!important;gap:.5rem}.card-badge-band-label{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.card-title{font-size:1.2rem!important;font-weight:800!important;letter-spacing:-.015em!important;line-height:1.25!important;margin-bottom:.4rem!important;color:var(--dm-text, #f1f5f9)!important}.card-subtitle{font-size:.8125rem!important;opacity:.7!important;margin-bottom:.5rem!important;font-weight:500!important;color:var(--dm-text, #f1f5f9)!important}.mk-card-body p,.card-body p,.card>p{font-size:.9375rem;line-height:1.65;opacity:.88}.card-gradient-purple{background:linear-gradient(135deg,#ede9fe,#ddd6fe)!important;color:#1e1b4b!important}.card-gradient-blue{background:linear-gradient(135deg,#dbeafe,#bfdbfe)!important;color:#1e3a5f!important}.card-gradient-green{background:linear-gradient(135deg,#d1fae5,#a7f3d0)!important;color:#064e3b!important}.card-gradient-night{background:linear-gradient(135deg,#334155,#1e293b)!important;color:#e2e8f0!important}.card-gradient-ocean-light{background:linear-gradient(135deg,#e0f2fe,#caf0f8)!important;color:#1e293b!important}.card-gradient-ocean-dark{background:linear-gradient(135deg,#0c4a6e,#164e63)!important;color:#e2e8f0!important}.card-gradient-forest-light{background:linear-gradient(135deg,#d1fae5,#c6f6dc)!important;color:#1e293b!important}.card-gradient-forest-dark{background:linear-gradient(135deg,#1a4731,#166534)!important;color:#e2e8f0!important}.card-gradient-sunset-light{background:linear-gradient(135deg,#fde8d8,#fddcc9)!important;color:#1e293b!important}.card-gradient-sunset-dark{background:linear-gradient(135deg,#6b3727,#7c4036)!important;color:#f5ede8!important}.card-gradient-royal-light{background:linear-gradient(135deg,#e8f0fd,#dce8fc)!important;color:#1e293b!important}.card-gradient-royal-dark{background:linear-gradient(135deg,#1e3465,#263d7a)!important;color:#e2e8f0!important}.card-gradient-lemon-light{background:linear-gradient(135deg,#fefce8,#fef9c3)!important;color:#1e293b!important}.card-gradient-lemon-dark{background:linear-gradient(135deg,#5c4d1a,#6b5920)!important;color:#fefce8!important}.card-gradient-silver-light{background:linear-gradient(135deg,#f1f5f9,#e2e8f0)!important;color:#1e293b!important}.card-gradient-silver-dark{background:linear-gradient(135deg,#2d3748,#374151)!important;color:#e2e8f0!important}.card-gradient-charcoal-light{background:linear-gradient(135deg,#eceff1,#e1e7eb)!important;color:#1e293b!important}.card-gradient-charcoal-dark{background:linear-gradient(135deg,#2c3843,#374451)!important;color:#e2e8f0!important}.card-gradient-christmas-light{background:linear-gradient(135deg,#fde8ea,#fdd5d8)!important;color:#1e293b!important}.card-gradient-christmas-dark{background:linear-gradient(135deg,#5c0f1d,#7a1525)!important;color:#fde8ea!important}.card-gradient-unicorn-light{background:linear-gradient(135deg,#f5e8fd,#edd6fb)!important;color:#1e293b!important}.card-gradient-unicorn-dark{background:linear-gradient(135deg,#3d1a5a,#4a2068)!important;color:#f5e8fd!important}.card-gradient-dreamy-light{background:linear-gradient(135deg,#f5ede8,#eeddd4)!important;color:#1e293b!important}.card-gradient-dreamy-dark{background:linear-gradient(135deg,#3d2820,#503328)!important;color:#f5ede8!important}.card-gradient-grayve-light{background:linear-gradient(135deg,#e0f7f9,#cbf2f5)!important;color:#1e293b!important}.card-gradient-grayve-dark{background:linear-gradient(135deg,#00363d,#00444d)!important;color:#e0f7f9!important}.card-gradient-mint-light{background:linear-gradient(135deg,#d8f5ea,#c5efdd)!important;color:#1e293b!important}.card-gradient-mint-dark{background:linear-gradient(135deg,#134d33,#195f3f)!important;color:#d8f5ea!important}.card-gradient-wedding-light{background:linear-gradient(135deg,#faf3e0,#f5e9c7)!important;color:#1e293b!important}.card-gradient-wedding-dark{background:linear-gradient(135deg,#5c4418,#6f5320)!important;color:#faf3e0!important}.card-gradient-slate{--dm-card-g-start: #475569;--dm-card-g-end: #1e293b}.card-gradient-dusk{--dm-card-g-start: #7c3aed;--dm-card-g-end: #db2777}.card-gradient-sunset{--dm-card-g-start: #f59e0b;--dm-card-g-end: #ec4899}.card-gradient-rose{--dm-card-g-start: #fb7185;--dm-card-g-end: #e11d48}.card-gradient-gold{--dm-card-g-start: #f59e0b;--dm-card-g-end: #b45309}.card-gradient-fire{--dm-card-g-start: #ef4444;--dm-card-g-end: #fbbf24}.page-body .card.dm-card-gradient.card-gradient-sunset .card-header,.page-body .card.dm-card-gradient.card-gradient-rose .card-header,.page-body .card.dm-card-gradient.card-gradient-gold .card-header,.page-body .card.dm-card-gradient.card-gradient-fire .card-header{color:#1e293b!important}.page-body .card.dm-card-gradient[class*=-light] .card-header,.page-body .card.dm-card-gradient[class*=-dark] .card-header,.page-body .card.dm-card-gradient.card-gradient-purple .card-header,.page-body .card.dm-card-gradient.card-gradient-blue .card-header,.page-body .card.dm-card-gradient.card-gradient-green .card-header,.page-body .card.dm-card-gradient.card-gradient-night .card-header{background:transparent!important;color:inherit!important;border-bottom:1px solid rgba(0,0,0,.08)}.card[class*=card-gradient-] .card-title,.card[class*=card-gradient-] .card-subtitle{color:inherit!important}.card[class*=gradient] .mk-window-bar,.card[data-gradient] .mk-window-bar{background:#00000040}.card[class*=gradient] .mk-dot-red{background:#ff5f57b3}.card[class*=gradient] .mk-dot-amber{background:#febc2eb3}.card[class*=gradient] .mk-dot-green{background:#28c840b3}.hero .card .mk-listgroup-item,.hero .card .list-group-item{padding-top:.45rem;padding-bottom:.45rem;font-size:.9rem}.card .dm-static-block{display:block;width:100%}.card .mk-window{margin-bottom:0}.wf-feature{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--dm-card-bg, #ffffff);border:1px solid var(--dm-card-border, #e2e8f0);border-radius:8px;box-shadow:0 1px 3px #0f172a0a;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.wf-feature:hover{border-color:var(--dm-border-dark, #475569);box-shadow:0 6px 18px #0f172a14;transform:translateY(-1px)}.wf-feature-icon{flex-shrink:0;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#475569,#1e293b);color:#f1f5f9;border-radius:8px;font-size:1.1rem}.wf-feature-text{font-size:.9rem;font-weight:500;color:var(--dm-text, #1e293b);line-height:1.4;flex:1 1 auto}.plugin-card{display:flex;flex-direction:column;background:var(--dm-card-bg, #ffffff);border:1px solid var(--dm-card-border, #e2e8f0);border-radius:12px;overflow:hidden;box-shadow:0 2px 6px #0f172a0d;text-decoration:none!important;color:inherit!important;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;height:100%;min-height:340px}.plugin-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px #0f172a1f;border-color:var(--dm-border-dark, #475569)}.plugin-card-cover{position:relative;width:100%;height:150px;background-size:cover;background-position:center;background-color:var(--dm-background-alt, #e2e8f0);flex-shrink:0}.plugin-card-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0000001a,#0f172a8c)}.plugin-card-tier-badge{position:absolute;top:12px;right:12px;z-index:2;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:4px 10px;border-radius:20px;color:#1e293b;background:#fff;box-shadow:0 2px 8px #0f172a40}.plugin-card[data-tier=free] .plugin-card-tier-badge:before{content:"Free"}.plugin-card[data-tier=premium] .plugin-card-tier-badge:before{content:"Premium"}.plugin-card[data-tier=premium] .plugin-card-tier-badge{color:#f1f5f9;background:linear-gradient(135deg,#475569,#1e293b)}.plugin-card-body{flex:1 1 auto;padding:20px;display:flex;flex-direction:column;gap:10px;background:var(--dm-card-bg, #fff);color:var(--dm-text, #1e293b)}.plugin-card-head{display:flex;align-items:center;gap:12px}.plugin-card-icon{flex-shrink:0;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#475569,#1e293b);color:#f1f5f9;border-radius:10px;font-size:1.3rem;box-shadow:0 2px 6px #0f172a2e}.plugin-card-title{font-size:1.15rem!important;font-weight:700!important;color:var(--dm-text, #1e293b)!important;line-height:1.2!important;margin:0!important}.plugin-card-desc{font-size:.88rem!important;color:var(--dm-text-secondary, #475569)!important;line-height:1.5!important;margin:0!important;flex:1 1 auto}.plugin-card-cta{display:inline-flex;align-items:center;gap:4px;font-size:.82rem;font-weight:600;color:var(--dm-text-secondary, #475569);margin-top:8px;transition:color .15s ease,gap .15s ease}.plugin-card:hover .plugin-card-cta{color:var(--dm-text, #1e293b);gap:8px}.page-body a:not([class*=btn]):not(.plugin-card):not([class*=nav]):not([class*=footer]):not([data-menu-hover] a):not([data-menu-active] a){color:var(--cms-link-color, var(--dm-link, var(--dm-primary, var(--dm-text, #5d4037))))!important;text-decoration:underline;text-decoration-color:var(--dm-border, rgba(0, 0, 0, .2));text-underline-offset:3px;text-decoration-thickness:1.5px;transition:color .15s ease,text-decoration-color .15s ease}.page-body a:not([class*=btn]):not(.plugin-card):not([class*=nav]):not([class*=footer]):not([data-menu-hover] a):not([data-menu-active] a):hover{color:var(--cms-link-hover-color, var(--dm-link-hover, var(--dm-primary-hover, var(--dm-text, #3e2723))))!important;text-decoration-color:var(--cms-link-color, var(--dm-link, var(--dm-primary, currentColor)))}.page-body .dm-card-gradient .card-body a:not([class*=btn]){color:var(--dm-link, var(--dm-primary, var(--dm-text, #5d4037)))!important}.page-body .dm-card-gradient .card-body a:not([class*=btn]):hover{color:var(--dm-link-hover, var(--dm-primary-hover, var(--dm-text, #3e2723)))!important}html body .page-body a[href]:not([class*=btn]):not(.plugin-card):not([class*=nav]):not([class*=footer]):not(.dm-breadcrumbs-link):not([data-menu-hover] a):not([data-menu-active] a){color:var(--cms-link-color, var(--dm-link, var(--dm-primary, #8d6e63)))!important}html body .page-body a[href]:not([class*=btn]):not(.plugin-card):not([class*=nav]):not([class*=footer]):not(.dm-breadcrumbs-link):not([data-menu-hover] a):not([data-menu-active] a):hover{color:var(--cms-link-hover-color, var(--dm-link-hover, var(--dm-primary-hover, #6d4c41)))!important}.page-body .hero-cta:not(.hero .hero-cta) a:not([class*=btn]),.page-body>* .hero-cta a:not([class*=btn]){color:var(--dm-primary, #8d6e63)!important;text-decoration:none!important;background:transparent;border:1px solid var(--dm-border, rgba(141, 110, 99, .35));padding:.55rem 1.35rem;border-radius:6px;font-weight:500;display:inline-flex;align-items:center;gap:.4rem;transition:background .15s ease,border-color .15s ease,color .15s ease}.page-body .hero-cta:not(.hero .hero-cta) a:not([class*=btn]):hover,.page-body>* .hero-cta a:not([class*=btn]):hover{color:var(--dm-primary-hover, #6d4c41)!important;background:var(--dm-primary-light, rgba(141, 110, 99, .08));border-color:var(--dm-primary, #8d6e63)}.feature-image{width:100%;max-height:420px;object-fit:cover;border-radius:12px;box-shadow:0 12px 36px #0f172a26;display:block}.page-body .grid>.col:has(>.feature-image),.page-body .grid>.col:has(.reveal>.feature-image),.page-body .grid>.col:has(.feature-image){display:flex;flex-direction:column;justify-content:center}.code-label{display:inline-flex;align-items:center;gap:8px;font-family:Fira Code,Consolas,Monaco,monospace;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#f1f5f9bf;background:#0f172a8c;padding:6px 12px;border-radius:6px 6px 0 0;border-bottom:1px solid rgba(241,245,249,.12)}.code-label+.code-block{margin-top:0!important;border-top-left-radius:0;border-top-right-radius:0}.code-block{display:block;background:#0f172a!important;color:#e2e8f0!important;padding:18px 20px!important;border-radius:8px;overflow-x:auto;font-size:.85rem;line-height:1.55;margin:0 0 20px;box-shadow:inset 0 0 0 1px #f1f5f914;white-space:pre;font-family:Fira Code,Consolas,Monaco,Courier New,monospace}.code-block code{background:transparent!important;color:inherit!important;padding:0!important;font-family:inherit!important;font-size:inherit;white-space:pre;display:block}.page-body .card-body>pre>code,.page-body .card-body pre.code-block>code{color:#e2e8f0!important}.run-option-card{display:flex;flex-direction:column;background:var(--dm-card-bg, #ffffff);border:1px solid var(--dm-card-border, #e2e8f0);border-radius:14px;overflow:hidden;box-shadow:0 4px 14px #0f172a14;height:100%;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.run-option-card:hover{transform:translateY(-3px);box-shadow:0 20px 48px #0f172a24;border-color:var(--dm-border-dark, #475569)}.run-option-banner{position:relative;width:100%;height:180px;background-size:cover;background-position:center;background-color:var(--dm-background-alt, #e2e8f0);flex-shrink:0}.run-option-banner:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0f172a1a,#0f172ab3)}.run-option-icon-chip{position:absolute;bottom:-26px;left:24px;z-index:2;width:56px;height:56px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#475569,#1e293b);color:#f1f5f9;border-radius:14px;font-size:1.6rem;box-shadow:0 8px 20px #0f172a4d;border:3px solid var(--dm-card-bg, #fff)}.run-option-card-body{flex:1 1 auto;padding:40px 24px 24px;display:flex;flex-direction:column;gap:10px}.run-option-title{font-size:1.5rem!important;font-weight:800!important;color:var(--dm-text, #1e293b)!important;margin:0!important;line-height:1.15!important;letter-spacing:-.01em!important}.run-option-sub{font-size:.9rem!important;font-weight:600!important;color:var(--dm-primary, #5d4037)!important;margin:0 0 8px!important;text-transform:uppercase;letter-spacing:.06em}.run-option-content{flex:1 1 auto;font-size:.92rem;line-height:1.55;color:var(--dm-text-secondary, #475569)}.run-option-content p{margin:0 0 12px}.run-option-content .run-option-intro{font-size:.98rem;color:var(--dm-text, #1e293b);font-weight:500;margin-bottom:16px}.run-option-content .run-option-body-label{font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;color:var(--dm-primary, #5d4037);margin-bottom:8px}.run-option-content .run-option-req{font-size:.82rem;color:var(--dm-text-muted, #64748b);margin-top:14px}.run-option-content .code-block{margin:8px 0 14px}.run-option-list{list-style:none;padding:0;margin:0 0 14px;display:flex;flex-direction:column;gap:8px}.run-option-list li{display:flex;align-items:center;gap:10px;font-size:.9rem;color:var(--dm-text, #1e293b)}.run-option-list li [data-icon]{color:var(--dm-primary, #5d4037);flex-shrink:0}.run-option-ctas{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px;padding-top:20px;border-top:1px solid var(--dm-border, #e2e8f0)}.run-option-ctas .btn{flex:1 1 auto;text-align:center;white-space:nowrap;min-width:fit-content}.quickstart-step{position:relative;padding:28px 22px 24px;background:var(--dm-card-bg, #ffffff);border:1px solid var(--dm-card-border, #e2e8f0);border-radius:12px;box-shadow:0 2px 8px #0f172a0d;overflow:hidden;height:100%;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.quickstart-step:hover{transform:translateY(-3px);box-shadow:0 16px 36px #0f172a1f;border-color:var(--dm-border-dark, #475569)}.quickstart-step-number{position:absolute;top:8px;right:14px;font-size:5rem;font-weight:900;line-height:1;color:color-mix(in srgb,var(--dm-text) 8%,transparent);font-variant-numeric:tabular-nums;pointer-events:none;user-select:none}.quickstart-step-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;background:linear-gradient(135deg,#475569,#1e293b);color:#f1f5f9;border-radius:10px;font-size:1.3rem;margin-bottom:14px;box-shadow:0 4px 12px #0f172a2e;position:relative;z-index:1}.quickstart-step-title{font-size:1.1rem!important;font-weight:800!important;color:var(--dm-text, #1e293b)!important;margin:0 0 8px!important;line-height:1.2!important;letter-spacing:-.01em!important;position:relative;z-index:1}.quickstart-step-desc{font-size:.86rem;line-height:1.55;color:var(--dm-text-secondary, #475569);margin:0;position:relative;z-index:1}:not(:defined){visibility:hidden}.dm-collection-browser{display:block;margin:1.5rem 0}.dm-collection-browser.dm-cb-hydrated .dm-cb-fallback{display:none}.dm-cb-header{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;margin-bottom:1rem}.dm-cb-search{flex:1 1 240px;min-width:200px}.dm-cb-search-input{width:100%;padding:.5rem .75rem;border:1px solid var(--dm-border, #d1d5db);border-radius:var(--dm-radius-md, 6px);background:var(--dm-background, #fff);color:var(--dm-text, #111827);font-size:.95rem}.dm-cb-sort{display:flex;align-items:center;gap:.5rem;flex:0 0 auto}.dm-cb-sort-label{font-size:.85rem;color:var(--dm-text-muted, #6b7280);margin:0}.dm-cb-sort-select{padding:.45rem .6rem;border:1px solid var(--dm-border, #d1d5db);border-radius:var(--dm-radius-md, 6px);background:var(--dm-background, #fff);color:var(--dm-text, #111827)}.dm-cb-sort-dir{width:2rem;height:2rem;border:1px solid var(--dm-border, #d1d5db);border-radius:var(--dm-radius-md, 6px);background:var(--dm-background, #fff);cursor:pointer;font-weight:700}.dm-cb-sort-dir:hover{background:var(--dm-background-alt, #f3f4f6)}.dm-cb-layout{display:grid;grid-template-columns:minmax(220px,1fr) 3fr;gap:1.5rem;align-items:start}@media(max-width:768px){.dm-cb-layout{grid-template-columns:1fr}.dm-cb-filter-rail{border:1px solid var(--dm-border, #e5e7eb);border-radius:var(--dm-radius-md, 6px);padding:.75rem}}.dm-cb-filter-rail{padding:.5rem 0;font-size:.92rem}.dm-cb-filter-heading{margin:0 0 .75rem;font-size:.95rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--dm-text-muted, #6b7280)}.dm-cb-filter{margin-bottom:1rem;display:flex;flex-direction:column;gap:.35rem}.dm-cb-filter-label{font-weight:600;font-size:.85rem;color:var(--dm-text, #111827)}.dm-cb-text,.dm-cb-select,.dm-cb-range input{width:100%;padding:.4rem .55rem;border:1px solid var(--dm-border, #d1d5db);border-radius:var(--dm-radius-md, 6px);background:var(--dm-background, #fff);color:var(--dm-text, #111827);font-size:.9rem}.dm-cb-range{display:flex;align-items:center;gap:.4rem}.dm-cb-range input{flex:1;min-width:0}.dm-cb-multiselect{display:flex;flex-direction:column;gap:.3rem;max-height:11rem;overflow-y:auto;padding:.4rem .55rem;border:1px solid var(--dm-border, #d1d5db);border-radius:var(--dm-radius-md, 6px)}.dm-cb-check{display:flex;align-items:center;gap:.4rem;font-size:.88rem;cursor:pointer;margin:0}.dm-cb-filter-reset{width:100%;margin-top:.5rem;padding:.45rem .6rem;border:1px solid var(--dm-border, #d1d5db);background:transparent;color:var(--dm-text, #374151);border-radius:var(--dm-radius-md, 6px);cursor:pointer;font-size:.85rem}.dm-cb-filter-reset:hover{background:var(--dm-background-alt, #f3f4f6)}.dm-cb-body{min-height:4rem}.dm-cb-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--dm-border, #e5e7eb)}.dm-cb-page-info{font-size:.88rem;color:var(--dm-text-muted, #6b7280)}.dm-cb-page-prev[disabled],.dm-cb-page-next[disabled]{opacity:.45;cursor:not-allowed}.dm-cb-chips{display:flex;flex-wrap:wrap;gap:.35rem;padding:.1rem 0}.dm-cb-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .6rem;border:1px solid var(--dm-border, #d1d5db);background:var(--dm-background, #fff);color:var(--dm-text, #111827);border-radius:999px;cursor:pointer;font-size:.82rem;transition:background-color .12s ease,border-color .12s ease}.dm-cb-chip:hover{background:var(--dm-background-alt, #f3f4f6)}.dm-cb-chip-active{background:var(--dm-primary, #2563eb);color:var(--dm-primary-text, #fff);border-color:var(--dm-primary, #2563eb)}.dm-cb-chip-count{font-size:.75rem;opacity:.75;font-variant-numeric:tabular-nums}.dm-cb-chip-active .dm-cb-chip-count{opacity:.85}.dm-cb-slider{position:relative;height:1.5rem;margin:.5rem .25rem}.dm-cb-slider-track{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);height:4px;background:var(--dm-border, #e5e7eb);border-radius:2px}.dm-cb-slider-fill{position:absolute;top:0;bottom:0;background:var(--dm-primary, #2563eb);border-radius:2px}.dm-cb-slider-handle{position:absolute;inset:0;width:100%;height:100%;margin:0;background:transparent;pointer-events:none;-webkit-appearance:none;appearance:none}.dm-cb-slider-handle::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:1rem;width:1rem;border-radius:50%;background:var(--dm-primary, #2563eb);border:2px solid var(--dm-background, #fff);box-shadow:0 1px 3px #00000026;pointer-events:auto;cursor:grab}.dm-cb-slider-handle::-moz-range-thumb{height:1rem;width:1rem;border-radius:50%;background:var(--dm-primary, #2563eb);border:2px solid var(--dm-background, #fff);box-shadow:0 1px 3px #00000026;pointer-events:auto;cursor:grab}.dm-cb-range-inputs{display:flex;gap:.4rem;align-items:center}.dm-cb-saved{position:relative}.dm-cb-saved-menu{position:absolute;right:0;top:calc(100% + .25rem);min-width:12rem;padding:.5rem;background:var(--dm-background, #fff);border:1px solid var(--dm-border, #e5e7eb);border-radius:var(--dm-radius-md, 6px);box-shadow:0 8px 24px #0f172a1f;z-index:20}.dm-cb-saved-empty{margin:0 0 .5rem;font-size:.85rem;color:var(--dm-text-muted, #6b7280)}.dm-cb-saved-item{display:flex;align-items:center;gap:.4rem;margin-bottom:.25rem}.dm-cb-saved-apply{flex:1;text-align:left;padding:.35rem .5rem;background:transparent;border:0;border-radius:var(--dm-radius-md, 6px);cursor:pointer;font-size:.88rem;color:var(--dm-text, #111827)}.dm-cb-saved-apply:hover{background:var(--dm-background-alt, #f3f4f6)}.dm-cb-saved-del{width:1.5rem;height:1.5rem;padding:0;background:transparent;border:0;color:var(--dm-text-muted, #9ca3af);cursor:pointer;font-size:1.1rem}.dm-cb-saved-del:hover{color:var(--dm-danger, #dc2626)}.dm-cb-saved-actions{border-top:1px solid var(--dm-border, #e5e7eb);padding-top:.5rem;margin-top:.5rem}.dm-cb-saved-create{width:100%;padding:.45rem .6rem;font-size:.85rem}.dm-cb-export{padding:.45rem .7rem;font-size:.85rem}.dm-cb-empty-clear{margin-top:.75rem}.dm-cb-scroll-sentinel{text-align:center;padding:1rem 0;font-size:.85rem;color:var(--dm-text-muted, #6b7280)}.dm-cb-scroll-end{text-align:center;margin:1rem 0 0;font-size:.85rem;color:var(--dm-text-muted, #9ca3af);font-style:italic}.dm-cb-block-loading{text-align:center;padding:2rem 0;color:var(--dm-text-muted, #9ca3af);font-style:italic}.dm-cb-drawer-toggle{display:none;align-items:center;gap:.4rem;padding:.45rem .75rem;font-size:.88rem}.dm-cb-drawer-count{font-variant-numeric:tabular-nums;font-weight:600;color:var(--dm-primary, #2563eb)}.dm-cb-drawer-count:empty{display:none}@media(max-width:768px){.dm-cb-drawer-toggle{display:inline-flex}.dm-cb-filter-rail{position:fixed;top:0;left:-100%;width:85%;max-width:22rem;height:100vh;background:var(--dm-background, #fff);border-right:1px solid var(--dm-border, #e5e7eb);box-shadow:4px 0 16px #00000014;padding:1.25rem;z-index:100;overflow-y:auto;transition:left .22s ease}.dm-cb-drawer-open .dm-cb-filter-rail{left:0}.dm-cb-drawer-open:before{content:"";position:fixed;inset:0;background:#00000059;z-index:99}}.dm-file-thumb{max-width:180px;max-height:120px;border-radius:var(--dm-radius-md, 6px);border:1px solid var(--dm-border, #e5e7eb);display:inline-block;object-fit:cover}.dm-cb-transitions{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem;font-size:.85rem;color:var(--dm-text-muted, #6b7280)}.dm-cb-transitions:empty{display:none}.dm-cb-transition-btn{padding:.35rem .7rem;font-size:.82rem}.dm-menu-sep,.footer-sep{list-style:none}.dm-menu-sep hr,.footer-sep hr{border:0;border-top:1px solid var(--dm-border, rgba(128, 128, 128, .35));margin:.4rem 0}.dm-menu-spacer{list-style:none;pointer-events:none;padding:0;margin:0;border:0}.dm-menu-spacer--xs{height:var(--dm-space-1, .25rem)}.dm-menu-spacer--sm{height:var(--dm-space-2, .5rem)}.dm-menu-spacer--md{height:var(--dm-space-4, 1rem)}.dm-menu-spacer--lg{height:var(--dm-space-6, 1.5rem)}.dm-menu-spacer--xl{height:var(--dm-space-10, 2.5rem)}.dm-menu--horizontal>ul>.dm-menu-spacer--xs,.navbar-nav>.dm-menu-spacer--xs{height:auto;width:var(--dm-space-1, .25rem)}.dm-menu--horizontal>ul>.dm-menu-spacer--sm,.navbar-nav>.dm-menu-spacer--sm{height:auto;width:var(--dm-space-2, .5rem)}.dm-menu--horizontal>ul>.dm-menu-spacer--md,.navbar-nav>.dm-menu-spacer--md{height:auto;width:var(--dm-space-4, 1rem)}.dm-menu--horizontal>ul>.dm-menu-spacer--lg,.navbar-nav>.dm-menu-spacer--lg{height:auto;width:var(--dm-space-6, 1.5rem)}.dm-menu--horizontal>ul>.dm-menu-spacer--xl,.navbar-nav>.dm-menu-spacer--xl{height:auto;width:var(--dm-space-10, 2.5rem)}.dm-menu--has-flex-spacer>ul{display:flex;flex-direction:column}.dm-menu--has-flex-spacer.dm-menu--horizontal>ul{flex-direction:row;align-items:center}.dm-menu-spacer--flex{flex:1 1 auto;height:auto;width:auto}.dm-menu-floating .dm-menu-spacer--flex{min-height:var(--dm-space-4, 1rem)}@media(max-width:768px){.dm-menu--has-flex-spacer.dm-menu--horizontal>ul{flex-wrap:wrap}}#site-navbar .navbar-dropdown-divider{background:var(--dm-border, rgba(128, 128, 128, .5));opacity:.8}.dm-menu-badge{display:inline-block;margin-left:6px;padding:1px 7px;font-size:.7em;font-weight:700;line-height:1.4;border-radius:999px;background:var(--dm-text-muted);color:var(--dm-text-inverse, #fff);vertical-align:middle}.dm-nav-pill{border-radius:999px;padding:6px 14px;font-weight:600}.dm-nav-pill--outline{background:transparent!important;border:1px solid currentColor}@media(max-width:992px){#site-navbar .navbar-toggle{order:0;margin-right:var(--dm-space-2)}#site-navbar .navbar-brand{order:1}#site-navbar .navbar-collapse{position:fixed;top:0;left:0;bottom:0;width:86vw;max-width:340px;z-index:1100;margin:0;padding:var(--dm-space-3) 0 var(--dm-space-6);background:var(--dm-navbar-bg, var(--dm-surface));border-top:none;border-right:1px solid var(--dm-border);box-shadow:4px 0 18px #00000059;transform:translate(-100%);transition:transform .25s ease;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}#site-navbar .navbar-collapse.show{transform:translate(0)}body.dm-drawer-open #site-navbar{z-index:1100}#site-navbar .navbar-nav{max-height:none;overflow:visible}#site-navbar .navbar-dropdown-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--dm-space-3) var(--dm-space-4);font-size:var(--dm-font-size-base)}#site-navbar .navbar-caret{margin-left:auto;flex:none;width:16px;height:16px;opacity:.9}#site-navbar .navbar-dropdown-menu{position:static;display:none;min-width:0;width:100%;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:color-mix(in srgb,var(--dm-text) 8%,transparent)}#site-navbar .navbar-dropdown.open>.navbar-dropdown-menu{display:block}#site-navbar .navbar-dropdown-item{padding-left:calc(var(--dm-space-4) + var(--dm-space-5))}.dm-navbar-backdrop{position:fixed;inset:0;z-index:1090;background:#00000073;border:0;padding:0;cursor:pointer}body.dm-drawer-open{overflow:hidden}}.dm-embed{margin:1.5rem 0}.dm-embed-frame{overflow:hidden;border-radius:8px;background:#000}.dm-embed-caption{margin-top:.5rem;font-size:.85rem;color:var(--dm-text-muted, #6b7280);text-align:center}.dm-embed-blocked{margin:1.5rem 0;padding:.75rem 1rem;border:1px dashed var(--dm-border, #d1d5db);border-radius:8px;background:var(--dm-background-alt, #f9fafb);color:var(--dm-text-muted, #6b7280);font-size:.9rem}.dm-menu-missing{margin:1rem 0;padding:.6rem .9rem;border:1px dashed var(--dm-border, #d1d5db);border-radius:8px;background:var(--dm-background-alt, #f9fafb);color:var(--dm-text-muted, #6b7280);font-size:.9rem}.dm-embed-blocked code{font-family:var(--dm-font-mono, monospace);font-size:.85em}.dm-menu-floating{overflow:auto;overscroll-behavior:contain;background:var(--dm-surface);color:var(--dm-text);border:1px solid var(--dm-border);border-radius:var(--dm-radius-md, 8px);box-shadow:var(--dm-shadow-lg);scrollbar-width:thin;scrollbar-color:var(--dm-border) transparent}.dm-menu-floating[style*=--dm-menu-accent]{border-left:3px solid var(--dm-menu-accent)}.dm-menu-floating[data-float-anchor=TR][style*=--dm-menu-accent],.dm-menu-floating[data-float-anchor=BR][style*=--dm-menu-accent],.dm-menu-floating[data-float-anchor=R][style*=--dm-menu-accent]{border-left:1px solid var(--dm-menu-accent);border-right:3px solid var(--dm-menu-accent)}.dm-menu-floating[style*=--dm-menu-panel-opacity]{background:color-mix(in srgb,var(--dm-surface) calc(var(--dm-menu-panel-opacity) * 100%),transparent);backdrop-filter:blur(8px)}.dm-menu-float-bar{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:var(--dm-space-2, .5rem);padding:var(--dm-space-2, .5rem) var(--dm-space-3, .75rem);background:inherit;border-bottom:1px solid var(--dm-border);border-radius:inherit;border-bottom-left-radius:0;border-bottom-right-radius:0}.dm-menu-float-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;font-weight:600;letter-spacing:.02em;color:var(--dm-text-muted, #6b7280)}.dm-menu-float-grip{flex:0 0 auto;width:10px;height:16px;background-image:radial-gradient(currentColor 1px,transparent 1px);background-size:5px 5px;background-position:0 2px;color:var(--dm-text-muted, #6b7280);opacity:.6}.dm-menu-floating[data-float-movable] .dm-menu-float-bar{cursor:grab}.dm-menu-floating.is-dragging,.dm-menu-floating.is-dragging .dm-menu-float-bar{cursor:grabbing}.dm-menu-floating.is-dragging{user-select:none}.dm-menu-floating[data-float-movable] .dm-menu-float-bar{touch-action:none}.dm-menu-float-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:0;border-radius:var(--dm-radius-sm, 4px);background:transparent;color:var(--dm-text);cursor:pointer}.dm-menu-float-toggle:hover{background:var(--dm-hover-bg, rgba(128, 128, 128, .14))}.dm-menu-float-toggle:focus-visible{outline:2px solid var(--dm-primary);outline-offset:1px}.dm-menu-float-icon{position:relative;width:16px;height:2px;background:currentColor;border-radius:1px}.dm-menu-float-icon:before,.dm-menu-float-icon:after{content:"";position:absolute;left:0;width:100%;height:2px;background:currentColor;border-radius:1px}.dm-menu-float-icon:before{top:-5px}.dm-menu-float-icon:after{top:5px}.dm-menu-floating.is-collapsed{width:auto!important;max-height:none!important;overflow:visible;padding:0;background:transparent;border:0;box-shadow:none;backdrop-filter:none;resize:none;min-width:0;min-height:0}.dm-menu-floating.is-collapsed>*:not(.dm-menu-float-bar),.dm-menu-floating.is-collapsed .dm-menu-float-grip,.dm-menu-floating.is-collapsed .dm-menu-float-title{display:none}#site-navbar.dm-menu-floating.is-collapsed>*:not(.dm-menu-float-bar){display:none}#site-navbar.dm-menu-floating.is-collapsed{width:auto!important;max-height:none!important;padding:0;background:transparent;border:0;box-shadow:none;backdrop-filter:none}.dm-menu-floating.is-collapsed .dm-menu-float-bar{padding:0;border:0;background:transparent;cursor:default}.dm-menu-floating.is-collapsed .dm-menu-float-toggle{width:44px;height:44px;border-radius:50%;background:var(--dm-surface);border:1px solid var(--dm-menu-accent, var(--dm-border));box-shadow:var(--dm-shadow-lg)}.navbar-transparent,.dm-menu--variant-transparent,.dm-menu-floating.navbar-transparent,.dm-menu-floating.dm-menu--variant-transparent{background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:none}.navbar-transparent.is-collapsed .dm-menu-float-toggle,.dm-menu--variant-transparent.is-collapsed .dm-menu-float-toggle{background:var(--dm-surface)}.navbar-transparent .dm-menu-float-bar,.dm-menu--variant-transparent .dm-menu-float-bar{border-bottom-color:transparent}.dm-menu-floating[data-float-resizable]:not(.is-collapsed){resize:both;min-width:120px;min-height:48px}@media(max-width:768px){.dm-menu-floating{position:static!important;inset:auto!important;width:auto!important;max-height:none!important;transform:none!important;resize:none!important}.dm-menu-floating[data-float-movable] .dm-menu-float-bar{cursor:default}.dm-menu-floating[data-float-movable] .dm-menu-float-grip{display:none}}.dm-menu--vertical ul,.dm-menu--horizontal ul{list-style:none;margin:0;padding:0}.dm-menu--vertical>ul{display:flex;flex-direction:column;gap:2px}.dm-menu--vertical>ul>li>a{display:block;padding:.4rem .75rem;border-radius:var(--dm-radius-md, 6px);text-decoration:none}.dm-menu--vertical>ul>li>a:hover{background:color-mix(in srgb,var(--dm-text) 8%,transparent)}.dm-menu--vertical ul ul{margin-left:.75rem;border-left:1px solid var(--dm-border, rgba(128, 128, 128, .35));padding-left:.4rem}.dm-menu--horizontal>ul{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1rem}.dm-menu--horizontal>ul>li{position:relative}.dm-menu--horizontal>ul>li>a{display:inline-block;padding:.35rem .5rem;text-decoration:none}.dm-menu--horizontal.dm-menu--align-left>ul{justify-content:flex-start}.dm-menu--horizontal.dm-menu--align-centre>ul{justify-content:center}.dm-menu--horizontal.dm-menu--align-right>ul{justify-content:flex-end}.dm-menu--horizontal.dm-menu--align-spread>ul{justify-content:space-between}.dm-menu--horizontal>ul>li>ul{position:absolute;top:100%;left:0;z-index:40;display:none;min-width:180px;padding:.35rem 0;background:var(--dm-surface);border:1px solid var(--dm-border);border-radius:var(--dm-radius-md, 8px);box-shadow:var(--dm-shadow-lg)}.dm-menu--horizontal>ul>li:hover>ul,.dm-menu--horizontal>ul>li:focus-within>ul{display:block}.dm-menu--horizontal>ul>li>ul a{display:block;padding:.35rem .9rem;text-decoration:none}@media(max-width:768px){.dm-menu--horizontal>ul{flex-direction:column;align-items:stretch}.dm-menu--horizontal>ul>li>ul{position:static;display:block;border:0;box-shadow:none;padding-left:.75rem}}:root{--dm-vnav-width: 240px;--dm-vnav-collapsed-width: 64px;--dm-vnav-edge: 10px}.dm-navbar-override,.dm-contents-override,p:has(>.dm-navbar-override:only-child),p:has(>.dm-contents-override:only-child){display:none}#site-navbar.dm-nav-scroll-hide{transition:transform .25s ease}#site-navbar.dm-nav-scroll-hide.dm-nav-scrolled-away{transform:translateY(-100%)}@media(prefers-reduced-motion:reduce){#site-navbar.dm-nav-scroll-hide,body.dm-vnav-autohide #site-navbar.dm-nav-vertical{transition:none!important}}html.dm-reduced-motion #site-navbar.dm-nav-scroll-hide,html.dm-reduced-motion body.dm-vnav-autohide #site-navbar.dm-nav-vertical{transition:none!important}@media(min-width:993px){#site-navbar.dm-nav-vertical:not(.dm-menu-floating){position:fixed;top:0;bottom:0;height:100vh;height:100dvh;width:var(--dm-vnav-width);flex-direction:column;flex-wrap:nowrap;align-items:stretch;justify-content:flex-start;gap:var(--dm-space-2);padding:var(--dm-space-4) var(--dm-space-3);overflow-y:auto;overscroll-behavior:contain;border-bottom:none;z-index:100}#site-navbar.dm-nav-vertical-left:not(.dm-menu-floating){left:0;right:auto;border-right:1px solid var(--dm-border)}#site-navbar.dm-nav-vertical-right:not(.dm-menu-floating){right:0;left:auto;border-left:1px solid var(--dm-border)}body.dm-vnav-left{padding-left:var(--dm-vnav-width)}body.dm-vnav-right{padding-right:var(--dm-vnav-width)}body.dm-vnav-collapsed.dm-vnav-left{padding-left:var(--dm-vnav-collapsed-width)}body.dm-vnav-collapsed.dm-vnav-right{padding-right:var(--dm-vnav-collapsed-width)}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical:not(.dm-menu-floating){width:var(--dm-vnav-collapsed-width);padding-left:var(--dm-space-2);padding-right:var(--dm-space-2);overflow:visible}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-link,body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown-toggle,body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-brand-text{font-size:0!important;justify-content:center!important;gap:0!important;padding-left:0!important;padding-right:0!important}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-link>svg:first-child,body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown-toggle>svg:first-child{width:20px;height:20px;margin:0}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown-toggle>svg:last-child:not(:first-child),body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-caret{display:none}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical [data-initial]:not(:has(>svg)):before{content:attr(data-initial);font-size:.9rem;font-weight:600}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown{position:relative!important}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown-menu{position:absolute!important;top:0;width:auto!important;min-width:220px!important;padding:var(--dm-space-1) 0!important;background:var(--dm-surface)!important;border:1px solid var(--dm-border)!important;border-radius:var(--dm-radius-md, 6px)!important;box-shadow:var(--dm-shadow-lg)!important;z-index:101}body.dm-vnav-collapsed.dm-vnav-right #site-navbar .navbar-dropdown-menu{right:calc(100% + 8px);left:auto}body.dm-vnav-collapsed.dm-vnav-left #site-navbar .navbar-dropdown-menu{left:calc(100% + 8px);right:auto}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown-menu .navbar-dropdown-item{display:flex!important;align-items:center;gap:var(--dm-space-2);padding:var(--dm-space-2) var(--dm-space-3)!important;font-size:var(--dm-font-size-sm)!important;white-space:nowrap}#site-navbar .dm-nav-collapse-toggle{display:none;align-self:flex-end;width:28px;height:28px;padding:0;border:1px solid var(--dm-border);border-radius:6px;background:transparent;color:var(--dm-text-secondary);cursor:pointer}body.dm-vnav-collapsible #site-navbar .dm-nav-collapse-toggle{display:inline-flex;align-items:center;justify-content:center}body.dm-vnav-collapsed #site-navbar .dm-nav-collapse-toggle{align-self:center}#site-navbar .dm-nav-collapse-toggle:hover{color:var(--dm-text);border-color:var(--dm-primary)}#site-navbar .dm-nav-collapse-toggle svg{width:16px;height:16px}body.dm-vnav-autohide.dm-vnav-left,body.dm-vnav-autohide.dm-vnav-right{padding-left:0;padding-right:0}body.dm-vnav-autohide #site-navbar.dm-nav-vertical:not(.dm-menu-floating){transition:transform .25s ease,box-shadow .25s ease;box-shadow:none}body.dm-vnav-autohide.dm-vnav-right #site-navbar.dm-nav-vertical:not(.dm-menu-floating){transform:translate(calc(100% - var(--dm-vnav-edge)))}body.dm-vnav-autohide.dm-vnav-left #site-navbar.dm-nav-vertical:not(.dm-menu-floating){transform:translate(calc(-100% + var(--dm-vnav-edge)))}body.dm-vnav-autohide #site-navbar.dm-nav-vertical:not(.dm-menu-floating):is(:hover,:focus-within,.dm-nav-revealed){transform:none;box-shadow:var(--dm-shadow-lg)}#site-navbar.dm-nav-vertical .navbar-container{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:var(--dm-space-2);width:100%;min-height:100%;padding:0;margin:0}#site-navbar.dm-nav-vertical .navbar-toggle{display:none!important}#site-navbar.dm-nav-vertical .navbar-brand{padding:0 var(--dm-space-2) var(--dm-space-3);margin:0;width:100%}#site-navbar.dm-nav-vertical .navbar-collapse{display:flex!important;flex-direction:column!important;align-items:stretch!important;width:100%!important;flex-grow:1!important;padding:0!important;border:none!important}#site-navbar.dm-nav-vertical .navbar-nav{display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:2px!important;width:100%!important;flex:none!important;margin:0!important;padding:0!important}#site-navbar.dm-nav-vertical .navbar-nav li,#site-navbar.dm-nav-vertical .navbar-nav .navbar-item{width:100%!important;display:block!important}#site-navbar.dm-nav-vertical .navbar-link,#site-navbar.dm-nav-vertical .navbar-dropdown-toggle{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:var(--dm-space-2)!important;width:100%!important;padding:var(--dm-space-2) var(--dm-space-3)!important;font-size:var(--dm-font-size-sm)!important;text-align:left!important;border-radius:var(--dm-radius-md)!important;white-space:normal!important}#site-navbar.dm-nav-vertical .navbar-link:hover,#site-navbar.dm-nav-vertical .navbar-dropdown-toggle:hover{background-color:color-mix(in srgb,var(--dm-text) 8%,transparent)}#site-navbar.dm-nav-vertical .navbar-dropdown-toggle .navbar-caret{margin-left:auto}#site-navbar.dm-nav-vertical .navbar-dropdown{position:static!important;width:100%!important}#site-navbar.dm-nav-vertical .navbar-dropdown-menu{position:static!important;display:none;width:100%!important;min-width:0!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:color-mix(in srgb,var(--dm-text) 8%,transparent)!important}#site-navbar.dm-nav-vertical .navbar-dropdown.open>.navbar-dropdown-menu{display:block!important}#site-navbar.dm-nav-vertical .navbar-dropdown-item{display:block!important;width:100%!important;padding:var(--dm-space-2) var(--dm-space-3) var(--dm-space-2) calc(var(--dm-space-3) + var(--dm-space-5))!important}#site-navbar.dm-nav-vertical .navbar-actions{display:flex;flex-direction:column;align-items:stretch;margin-left:0;margin-top:auto;padding-top:var(--dm-space-3)}}@media print{body.dm-ctx-printing *{visibility:hidden}body.dm-ctx-printing [data-dm-print],body.dm-ctx-printing [data-dm-print] *{visibility:visible}body.dm-ctx-printing [data-dm-print]{position:absolute;left:0;top:0;width:100%}body.dm-ctx-printing [data-dm-print] .accordion-content{display:block!important;height:auto!important}body.dm-ctx-printing .dm-ctx-hidden{display:none!important}}:where(.page-footer) .footer-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem 1.25rem}:where(.page-footer) .footer-nav li{margin:0}:where(.page-footer) .footer-nav a{color:var(--dm-text-secondary, inherit);text-decoration:none;font-size:.9rem}:where(.page-footer) .footer-nav a:hover,:where(.page-footer) .footer-nav a:focus-visible{color:var(--dm-primary, inherit);text-decoration:underline}:where(.page-footer) .footer-inner--columns{display:block;padding:1.5rem 1.5rem 0}:where(.page-footer) .cms-footer-top{display:grid;grid-template-columns:minmax(12rem,1.4fr) 3fr;gap:2.5rem;padding-bottom:2rem}:where(.page-footer) .cms-footer-brand{display:flex;flex-direction:column;gap:.75rem;min-width:0}:where(.page-footer) .cms-footer-brand-name{display:inline-flex;align-items:center;gap:.5rem;font-size:1.15rem;font-weight:700;color:var(--dm-text, inherit);text-decoration:none}:where(.page-footer) .cms-footer-brand-logo{height:1.75rem;width:auto}:where(.page-footer) .cms-footer-brand-icon{width:1.25rem;height:1.25rem}:where(.page-footer) .cms-footer-blurb{margin:0;max-width:22rem;font-size:.9rem;line-height:1.55;color:var(--dm-text-secondary, inherit)}:where(.page-footer) .cms-footer-brand .footer-social{margin-left:-.35rem}:where(.page-footer) .footer-nav--columns{display:block}:where(.page-footer) .footer-nav--columns>ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:1.5rem 2rem;justify-content:stretch;align-items:start}:where(.page-footer) .cms-footer-col{display:flex;flex-direction:column;gap:.6rem}:where(.page-footer) .cms-footer-col-title{font-size:.78rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--dm-text, inherit)}:where(.page-footer) a.cms-footer-col-title{text-decoration:none}:where(.page-footer) .cms-footer-col>ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}:where(.page-footer) .cms-footer-bottom{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;padding:1rem 0 1.25rem;border-top:1px solid var(--dm-border, rgba(255,255,255,.08));font-size:.85rem}:where(.page-footer) .cms-footer-bottom .cms-footer-copyright{margin:0 auto 0 0}:where(.page-footer) .cms-footer-bottom .footer-nav ul{justify-content:flex-start}:where(.page-footer) .cms-footer-bottom .footer-nav a{font-size:.85rem}:where(.page-footer) .cms-footer-bottom .footer-motion-check{margin-top:0}@media(max-width:720px){:where(.page-footer) .cms-footer-top{grid-template-columns:1fr;gap:1.75rem}:where(.page-footer) .footer-nav--columns>ul{grid-template-columns:repeat(2,minmax(0,1fr))}:where(.page-footer) .cms-footer-bottom .cms-footer-copyright{margin-right:0;flex-basis:100%}}.dm-scribe-controls{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.5rem}.carousel.dm-carousel-custom-background{background-color:var(--dm-carousel-background)!important}.carousel .carousel-arrow{color:var(--dm-carousel-arrow-color, #fff)!important;background:var(--dm-carousel-arrow-background, rgba(15, 23, 42, .84))!important;border:1px solid rgba(255,255,255,.72)!important;box-shadow:0 2px 8px #0f172a57!important}.carousel .carousel-arrow:hover{color:var(--dm-carousel-arrow-color, #fff)!important;background:var(--dm-carousel-arrow-background, #0f172a)!important;filter:brightness(.88)}.carousel .carousel-arrow:focus-visible{outline:3px solid var(--dm-primary, #6495ed);outline-offset:3px}.carousel.dm-carousel-arrows-top .carousel-arrow{top:1rem!important;transform:none!important}.carousel.dm-carousel-arrows-middle .carousel-arrow{top:50%!important;transform:translateY(-50%)!important}.carousel.dm-carousel-arrows-bottom .carousel-arrow{top:auto!important;bottom:1rem!important;transform:none!important}
1
+ body,button,input,select,textarea{font-family:Roboto,sans-serif}.navbar-brand-logo{height:32px;width:auto;display:inline-block;vertical-align:middle;margin-right:.4em}.navbar-brand-tagline{display:block;font-size:.65em;opacity:.75;line-height:1.2;letter-spacing:.02em}.navbar-brand-text.navbar-brand-sm{font-size:.85em}.navbar-brand-text.navbar-brand-lg{font-size:1.25em}@media(min-width:993px){#site-navbar:not(.dm-nav-vertical) .navbar-container{display:grid;align-items:center;gap:var(--dm-space-4, 1rem)}#site-navbar:not(.dm-nav-vertical) .navbar-collapse{display:contents}#site-navbar:not(.dm-nav-vertical) .navbar-brand{grid-column:1;justify-self:start}#site-navbar:not(.dm-nav-vertical) .navbar-nav{grid-column:2;flex:0 1 auto;min-width:0}#site-navbar:not(.dm-nav-vertical) .navbar-actions{grid-column:3;justify-self:end;margin-left:0}#site-navbar.dm-nav-align-centre:not(.dm-nav-vertical) .navbar-container{grid-template-columns:minmax(max-content,1fr) auto minmax(max-content,1fr)}#site-navbar.dm-nav-align-centre:not(.dm-nav-vertical) .navbar-nav{justify-content:center}#site-navbar:is(.dm-nav-align-left,.dm-nav-align-right,.dm-nav-align-spread):not(.dm-nav-vertical) .navbar-container{grid-template-columns:auto minmax(0,1fr) auto}#site-navbar.dm-nav-align-left:not(.dm-nav-vertical) .navbar-nav{justify-content:flex-start}#site-navbar.dm-nav-align-right:not(.dm-nav-vertical) .navbar-nav{justify-content:flex-end}#site-navbar.dm-nav-align-spread:not(.dm-nav-vertical) .navbar-nav{justify-content:space-between;width:100%}}.navbar-actions{order:4;margin-left:auto;display:flex;align-items:center;gap:.5rem}#site-navbar.navbar-dark .navbar-actions,#site-navbar.navbar-light .navbar-actions{color:var(--dm-navbar-text)}#site-navbar.navbar-dark .site-search-shortcut-hint,#site-navbar.navbar-light .site-search-shortcut-hint{color:color-mix(in srgb,var(--dm-navbar-text) 65%,var(--dm-navbar-bg));border-color:color-mix(in srgb,var(--dm-navbar-text) 28%,transparent)}.site-main{min-height:calc(100vh - 60px);padding-top:2rem;padding-bottom:4rem}.site-main.with-sidebar{display:grid;grid-template-columns:var(--dm-contents-width, 260px) 1fr;gap:0}.site-sidebar{min-height:100%;border-right:1px solid var(--dm-border, rgba(255,255,255,.08))}.site-main.with-sidebar{overflow-x:clip;overflow-y:visible}.site-main.with-sidebar>#site-sidebar{position:sticky;top:var(--site-navbar-height, 4rem);align-self:start;min-height:0;max-height:calc(100vh - var(--site-navbar-height, 4rem));overflow-y:auto;width:auto}.site-main.with-sidebar.sidebar-right{grid-template-columns:1fr var(--dm-contents-width, 260px)}.site-main.with-sidebar.sidebar-right>#site-sidebar{order:2;border-right:0;border-left:1px solid var(--dm-border, rgba(255,255,255,.08))}.site-main.with-sidebar.no-sidebar-items{grid-template-columns:1fr}.site-main.with-sidebar.no-sidebar-items .site-sidebar{display:none}.dm-contents{padding:var(--dm-space-3, .75rem) 0}.dm-contents-head{display:flex;align-items:center;gap:.5rem;padding:0 var(--dm-space-3, .75rem)}.dm-contents-title{margin:0;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--dm-text-muted)}.dm-contents-title:empty{display:none}.dm-contents-list{margin:.25rem 0 0;padding:0;list-style:none;counter-reset:dm-contents-h2}.dm-contents-item>a{display:block;padding:.45rem var(--dm-space-3, .75rem) .45rem calc(var(--dm-space-3, .75rem) + 3px);border-left:3px solid transparent;color:var(--dm-text-secondary);text-decoration:none;line-height:1.35;font-size:.9rem}.dm-contents-item>a:hover{color:var(--dm-text);background:var(--dm-hover-bg, rgba(255, 255, 255, .04))}.dm-contents:not([data-menu-active]) .dm-contents-item>a.is-active{color:var(--dm-text);font-weight:600;border-left-color:var(--dm-menu-highlight, var(--dm-primary));background:var(--dm-hover-bg, rgba(255, 255, 255, .04))}.dm-contents-h3>a{padding-left:calc(var(--dm-space-3, .75rem) + 1.1rem);font-size:.85rem}.dm-contents-list.is-numbered .dm-contents-h2{counter-increment:dm-contents-h2;counter-reset:dm-contents-h3}.dm-contents-list.is-numbered .dm-contents-h3{counter-increment:dm-contents-h3}.dm-contents-list.is-numbered .dm-contents-h2>a:before{content:counter(dm-contents-h2) ". ";color:var(--dm-text-muted)}.dm-contents-list.is-numbered .dm-contents-h3>a:before{content:counter(dm-contents-h2) "." counter(dm-contents-h3) " ";color:var(--dm-text-muted)}.dm-contents-toggle{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:28px;height:28px;padding:0;border:1px solid var(--dm-border);border-radius:6px;background:transparent;color:var(--dm-text-secondary);cursor:pointer}.dm-contents-toggle:hover{color:var(--dm-text);border-color:var(--dm-primary)}.dm-contents-toggle svg{width:16px;height:16px}.site-main.with-sidebar.contents-static>#site-sidebar{position:static;max-height:none;overflow:visible}.site-main.with-sidebar.contents-collapsed{grid-template-columns:52px 1fr}.site-main.with-sidebar.sidebar-right.contents-collapsed{grid-template-columns:1fr 52px}.site-main.contents-collapsed .dm-contents-list,.site-main.contents-collapsed .dm-contents-title{display:none}.site-main.contents-collapsed .dm-contents-head{justify-content:center;padding:0}.site-main.with-sidebar:is(.contents-floating,.contents-autohide){grid-template-columns:1fr}.site-main.with-sidebar:is(.contents-floating,.contents-autohide)>#site-sidebar{position:fixed;z-index:90;width:var(--dm-contents-width, 260px);max-height:70vh;overflow-y:auto;border:1px solid var(--dm-border);border-radius:10px;background:var(--dm-surface);box-shadow:var(--dm-shadow-lg)}.site-main.with-sidebar.contents-float-tl>#site-sidebar{top:calc(var(--site-navbar-height, 0px) + 1rem);bottom:auto;left:1rem;right:auto}.site-main.with-sidebar.contents-float-tr>#site-sidebar{top:calc(var(--site-navbar-height, 0px) + 1rem);bottom:auto;right:1rem;left:auto}.site-main.with-sidebar.contents-float-bl>#site-sidebar{top:auto;bottom:1rem;left:1rem;right:auto}.site-main.with-sidebar.contents-float-br>#site-sidebar{top:auto;bottom:1rem;right:1rem;left:auto}.site-main.with-sidebar.contents-float-l>#site-sidebar{top:50%;bottom:auto;left:1rem;right:auto;transform:translateY(-50%)}.site-main.with-sidebar.contents-float-r>#site-sidebar{top:50%;bottom:auto;right:1rem;left:auto;transform:translateY(-50%)}body.dm-vnav-right .site-main.with-sidebar:is(.contents-float-tr,.contents-float-br,.contents-float-r)>#site-sidebar{right:calc(var(--dm-vnav-width, 240px) + 1rem)}body.dm-vnav-left .site-main.with-sidebar:is(.contents-float-tl,.contents-float-bl,.contents-float-l)>#site-sidebar{left:calc(var(--dm-vnav-width, 240px) + 1rem)}.dm-contents.is-movable .dm-contents-head{cursor:move}.site-main.contents-autohide>#site-sidebar{top:50%;transition:transform .25s ease,box-shadow .25s ease;box-shadow:none}.site-main.contents-autohide:not(.sidebar-right)>#site-sidebar{left:0;transform:translate(calc(-100% + 10px),-50%);border-radius:0 10px 10px 0}.site-main.contents-autohide.sidebar-right>#site-sidebar{right:0;transform:translate(calc(100% - 10px),-50%);border-radius:10px 0 0 10px}body.dm-vnav-left .site-main.contents-autohide:not(.sidebar-right)>#site-sidebar{left:var(--dm-vnav-width, 240px)}body.dm-vnav-right .site-main.contents-autohide.sidebar-right>#site-sidebar{right:var(--dm-vnav-width, 240px)}.site-main.contents-autohide>#site-sidebar:is(:hover,:focus-within,.is-revealed){transform:translateY(-50%);box-shadow:var(--dm-shadow-lg)}@media(prefers-reduced-motion:reduce){.site-main.contents-autohide>#site-sidebar{transition:none}}html.dm-reduced-motion .site-main.contents-autohide>#site-sidebar{transition:none}.site-content{overflow:hidden}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}.container{padding:0 1.5rem}.page-title{font-size:clamp(1.5rem,4vw,2rem);font-weight:700;margin-bottom:1.5rem;line-height:1.2}.page-body{line-height:1.7;font-size:1rem}.page-body h1,.page-body h2,.page-body h3,.page-body h4{margin-top:2rem;margin-bottom:.75rem;font-weight:600}.page-body h2{font-size:clamp(1.2rem,3vw,1.5rem)}.page-body h3{font-size:clamp(1.1rem,2.5vw,1.25rem)}.page-body p{margin-bottom:1rem}.page-body ul,.page-body ol{margin-bottom:1rem;padding-left:1.5rem}.page-body a{color:var(--dm-link, var(--dm-primary, #5b8cff))}.page-body a:hover{text-decoration:underline}.page-body code{font-family:Fira Code,Courier New,monospace;font-size:.9em;background:var(--dm-code-bg, rgba(255,255,255,.06));color:var(--dm-code-text, inherit);padding:.15em .35em;border-radius:3px}.page-body pre{background:var(--dm-code-bg, rgba(0,0,0,.3));color:var(--dm-code-text, inherit);border:1px solid var(--dm-code-border, rgba(255,255,255,.08));border-radius:6px;padding:1rem;overflow-x:auto;margin-bottom:1rem}.page-body pre code{background:none;padding:0}.page-body img{max-width:100%;border-radius:6px}.page-body blockquote{border-left:3px solid var(--dm-primary, #5b8cff);margin:1.5rem 0;padding:.75rem 1rem;background:color-mix(in srgb,var(--dm-primary, #5b8cff) 8%,transparent);border-radius:0 6px 6px 0}h3.accordion-header{margin:0}.accordion-button{all:unset;display:flex;align-items:center;justify-content:space-between;width:100%;cursor:pointer;font:inherit}.page-body .card-header h2{margin:0;font-size:1rem;font-weight:600;line-height:1.4}.card[data-collapsible] .card-header{cursor:pointer;user-select:none;display:flex;align-items:center;justify-content:space-between}.card[data-collapsible] .card-header:after{content:"\25be";font-size:1.1em;line-height:1;display:inline-block;transition:transform .25s ease;flex-shrink:0}.card[data-collapsible].is-collapsed .card-header:after{transform:rotate(-90deg)}.card[data-collapsible] .card-body{overflow:hidden;max-height:4000px;opacity:1;transition:max-height .3s ease,opacity .25s ease}.card[data-collapsible].is-collapsed .card-body{max-height:0;opacity:0}.card-primary>.card-header,.card-primary>.card-footer{background-color:color-mix(in srgb,var(--dm-primary) 18%,var(--dm-surface));color:var(--dm-text);border-color:var(--dm-primary)}.card-primary>.card-header .card-title{color:var(--dm-text)}.navbar-link span[data-icon],.navbar-link svg,.navbar-dropdown-toggle span[data-icon],.navbar-dropdown-toggle svg,.navbar-dropdown-item span[data-icon],.navbar-dropdown-item svg{width:13px!important;height:13px!important;margin-right:10px!important}#site-navbar .navbar-dropdown-toggle,#site-navbar .navbar-dropdown-item{font-size:var(--dm-font-size-base)}@media(min-width:993px){#site-navbar .navbar-dropdown-toggle,#site-navbar .navbar-dropdown-item{font-size:var(--dm-font-size-sm)}}@media(min-width:1201px){#site-navbar .navbar-dropdown-toggle,#site-navbar .navbar-dropdown-item{font-size:var(--dm-font-size-xs)}}#site-navbar .navbar-dropdown-item{transition:none}[data-mode=light] #site-navbar.navbar:not(.navbar-light):not(.navbar-dark) .navbar-link,[data-mode=light] #site-navbar.navbar:not(.navbar-light):not(.navbar-dark) .navbar-dropdown-toggle{transition:all .15s ease,color 0s,background-color 0s}[data-mode=light] #site-navbar.navbar:not(.navbar-light):not(.navbar-dark) .navbar-link:hover,[data-mode=light] #site-navbar.navbar:not(.navbar-light):not(.navbar-dark) .navbar-dropdown-toggle:hover,[data-mode=light] #site-navbar .navbar-dropdown-item:hover{background-color:var(--dm-hover-bg, rgba(128, 128, 128, .14))!important;color:var(--dm-text, #1f2937)!important;text-decoration:underline;text-underline-offset:3px}.dm-reduced-motion *,.dm-reduced-motion *:before,.dm-reduced-motion *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.page-footer{border-top:1px solid var(--dm-border, rgba(255,255,255,.08));padding:1.5rem 0}.footer-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;max-width:1200px;margin:0 auto}.footer-inner p{margin:0;color:var(--dm-text-muted, #888);font-size:.875rem}.footer-links{display:flex;gap:1.25rem}.footer-links a{color:var(--dm-text-muted, #888);font-size:.875rem;text-decoration:none}.footer-links a:hover{color:var(--dm-text, #eee)}.footer-social{display:flex;gap:.5rem;align-items:center}.footer-social-link{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;color:var(--dm-text-muted, #888);transition:color .15s}.footer-social-link:hover{color:var(--dm-text, #eee)}.footer-social-link svg{width:1rem;height:1rem}.footer-motion-switch{font-size:.8rem;color:var(--dm-text-muted, #888);white-space:nowrap}.footer-motion-check{display:inline-flex;align-items:center;gap:.5rem;margin-top:var(--dm-space-3, .75rem);font-size:.85rem;color:var(--dm-text-secondary);cursor:pointer}.footer-motion-check .footer-motion-checkbox{width:1rem;height:1rem;margin:0;accent-color:var(--dm-primary)}.footer-motion-switch .form-switch-label{color:var(--dm-text-muted, #888)}.footer-motion-switch .form-switch-input{width:2rem;height:1.125rem}.footer-motion-switch .form-switch-input:after{width:.875rem;height:.875rem}.footer-motion-switch .form-switch-input:checked:after{transform:translate(.875rem)}.dm-slideover-header{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.25rem;border-bottom:1px solid var(--dm-border, rgba(255, 255, 255, .08));flex-shrink:0}.dm-slideover-title{margin:0;font-size:1rem;font-weight:600;line-height:1.4}.dm-slideover-body{padding:1.25rem;overflow:auto;overscroll-behavior:contain;flex:1;min-height:0;scrollbar-width:thin;scrollbar-color:var(--dm-border) transparent}.dm-slideover-body::-webkit-scrollbar{width:8px;height:8px}.dm-slideover-body::-webkit-scrollbar-track{background:transparent}.dm-slideover-body::-webkit-scrollbar-thumb{background:var(--dm-border);border-radius:4px}.dm-slideover-body::-webkit-scrollbar-thumb:hover{background:var(--dm-text-muted)}@media(max-width:768px){.site-main.with-sidebar{grid-template-columns:1fr}.site-sidebar{display:none}}.dm-spacer{display:block;width:100%}.hero-breakout{width:calc(100vw - 2rem);margin-left:calc(50% - 50vw + 1rem);margin-right:calc(50% - 50vw + 1rem)}.site-main:has(.page-body>.hero-breakout:first-child){padding-top:0}body[data-layout=landing]>.site-main{padding-top:0}body[data-layout=landing]>.site-main .container{max-width:none;padding:0}body[data-layout=landing] .page-body{padding-left:1.5rem;padding-right:1.5rem}body[data-layout=landing] .page-body>p,body[data-layout=landing] .page-body>h1,body[data-layout=landing] .page-body>h2,body[data-layout=landing] .page-body>h3,body[data-layout=landing] .page-body>ul,body[data-layout=landing] .page-body>ol,body[data-layout=landing] .page-body>blockquote{max-width:860px;margin-left:auto;margin-right:auto}.hero-breakout{width:100vw;margin-left:calc((100% - 100vw)/2);max-width:none}body[data-layout=landing] .page-body .hero-breakout{width:calc(100% + 3rem);margin-left:-1.5rem;margin-right:-1.5rem}body[data-layout=landing] .page-body .grid-breakout{width:calc(100% + 3rem);margin-left:-1.5rem;margin-right:-1.5rem;padding-left:1.5rem;padding-right:1.5rem}.page-body .card{transition:border-color .2s ease}.page-body :is(.grid,.row):has(>.card,>:is(.col,[class*=col-])>.card){align-items:stretch}.page-body :is(.grid,.row)>:is(.col,[class*=col-]):has(>.card){display:flex;flex-direction:column;min-width:0}.page-body :is(.grid,.row)>.card,.page-body :is(.grid,.row)>:is(.col,[class*=col-])>.card{align-self:stretch;flex:1 1 auto;display:flex;flex-direction:column}.page-body :is(.grid,.row)>.card>.card-body,.page-body :is(.grid,.row)>:is(.col,[class*=col-])>.card>.card-body{flex:1 1 auto}.page-body :is(.grid,.row)>:is(.card-layout-horizontal,.card-layout-thumb-left,.card-layout-thumb-right,.card-layout-split),.page-body :is(.grid,.row)>:is(.col,[class*=col-])>:is(.card-layout-horizontal,.card-layout-thumb-left,.card-layout-thumb-right,.card-layout-split){flex-direction:row}.page-body .card:not(.card-no-hover):hover{border-color:var(--dm-primary, #0d6efd)}.page-body .card-header-icon-inline{display:flex;align-items:center;gap:.6rem}.page-body .card-header-icon-inline [data-icon]{flex-shrink:0;line-height:0}.page-body .card-header-icon-inline [data-icon] svg,.page-body .card-header-icon-inline>svg{display:block;width:1.25rem;height:1.25rem}.page-body .card-header-icon-stacked{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.35rem;padding-top:.25rem}.page-body .card-header-icon-stacked [data-icon],.page-body .card-header-icon-stacked svg{width:2rem;height:2rem}.card-header.card-icon-sized [data-icon],.card-header.card-icon-sized .card-icon{width:var(--dm-card-icon-size)!important;height:var(--dm-card-icon-size)!important;font-size:var(--dm-card-icon-size)!important}.card-header.card-icon-align-left,.card-header.card-icon-align-left .card-avatar-wrap{text-align:left}.card-header.card-icon-align-center,.card-header.card-icon-align-center .card-avatar-wrap{text-align:center}.card-header.card-icon-align-right,.card-header.card-icon-align-right .card-avatar-wrap{text-align:right}.card-header-icon-inline.card-icon-align-left{justify-content:flex-start}.card-header-icon-inline.card-icon-align-center{justify-content:center}.card-header-icon-inline.card-icon-align-right{justify-content:flex-end}.card-header-icon-stacked.card-icon-align-left{align-items:flex-start}.card-header-icon-stacked.card-icon-align-center{align-items:center}.card-header-icon-stacked.card-icon-align-right{align-items:flex-end}.card-header-icon-stacked[class*=card-icon-align-] .card-avatar-wrap{align-self:stretch}.card-header-icon-stacked[class*=card-icon-align-] [data-icon]{display:block}.card-header-icon-stacked.card-icon-align-left [data-icon]{margin-left:0;margin-right:auto}.card-header-icon-stacked.card-icon-align-center [data-icon]{margin-left:auto;margin-right:auto}.card-header-icon-stacked.card-icon-align-right [data-icon]{margin-left:auto;margin-right:0}.page-body .dm-card-clean{background:var(--dm-surface);border:1px solid var(--dm-border);box-shadow:0 1px 4px #0000000f,0 2px 8px #0000000a;transition:transform .2s ease,box-shadow .2s ease}.page-body .dm-card-clean:not(.card-no-hover):hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000001a,0 2px 8px #0000000f}.page-body .dm-card-clean .card-header{color:var(--dm-text)}.page-body .dm-card-clean .card-body{color:var(--dm-text-secondary)}.page-body .dm-card-clean .card-footer{color:var(--dm-text-secondary);border-top:1px solid var(--dm-border)}.page-body .dm-card-gradient{background:var(--dm-card-bg, #fff);border:none;box-shadow:0 4px 20px #6366f124;transition:transform .2s ease,box-shadow .2s ease}.page-body .dm-card-gradient:not(.card-no-hover):hover{transform:translateY(-5px);box-shadow:0 16px 40px #6366f140}.page-body .dm-card-gradient .card-header{background:linear-gradient(135deg,var(--dm-card-g-start, #6366f1),var(--dm-card-g-end, #8b5cf6));color:#fff;border-bottom:none}.page-body .dm-card-gradient .card-body{color:var(--dm-text-secondary)}.page-body .dm-card-gradient .card-footer{color:var(--dm-text-secondary);border-top:1px solid var(--dm-border)}.page-body .dm-card-glass{background:color-mix(in srgb,var(--dm-surface) 62%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid color-mix(in srgb,var(--dm-border) 75%,transparent);box-shadow:0 4px 24px #00000014;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.page-body .dm-card-glass:not(.card-no-hover):hover{transform:translateY(-4px);box-shadow:0 12px 36px #00000024;background:color-mix(in srgb,var(--dm-surface) 78%,transparent)}.page-body .dm-card-glass .card-header{background:transparent;border-bottom:1px solid color-mix(in srgb,var(--dm-border) 60%,transparent);color:var(--dm-text)}.page-body .dm-card-glass .card-body{color:var(--dm-text-secondary)}.page-body .dm-card-glass .card-footer{color:var(--dm-text-secondary);background:transparent}.page-body .dm-card-accent{background:var(--dm-surface);border:1px solid var(--dm-border);border-left:4px solid var(--dm-primary, #6366f1);box-shadow:0 1px 4px #0000000d;transition:transform .2s ease,box-shadow .2s ease,border-left-color .2s ease}.page-body .dm-card-accent:not(.card-no-hover):hover{transform:translateY(-3px);border-left-color:var(--dm-primary-hover, #4f46e5);box-shadow:0 8px 24px #6366f11f}.page-body .dm-card-accent .card-header{color:var(--dm-primary);border-bottom:none}.page-body .dm-card-accent .card-body{color:var(--dm-text-secondary)}.page-body .dm-card-accent .card-footer{color:var(--dm-text-secondary);border-top:1px solid var(--dm-border)}.page-body .dm-card-dark{--cms-link-color: color-mix(in srgb, var(--dm-primary) 40%, #fff);--cms-link-hover-color: color-mix(in srgb, var(--dm-primary) 20%, #fff);background:linear-gradient(160deg,color-mix(in srgb,var(--dm-primary) 8%,#1e293b),#0f172a);color:#cbd5e1;border:1px solid rgba(255,255,255,.06);box-shadow:0 4px 20px #0000004d;transition:transform .2s ease,box-shadow .2s ease}.page-body .dm-card-dark:not(.card-no-hover):hover{transform:translateY(-4px) scale(1.012);box-shadow:0 16px 40px #00000073}.page-body .dm-card-dark .card-header{background:transparent;color:#f1f5f9;border-bottom:1px solid rgba(255,255,255,.08)}.page-body .dm-card-dark :is(h1,h2,h3,h4,h5,h6,strong,b){color:#f1f5f9}.page-body .dm-card-dark .card-title{color:#f1f5f9!important}.page-body .dm-card-dark .card-subtitle{color:#94a3b8}.page-body .dm-card-dark .card-body{color:#cbd5e1}.page-body .dm-card-dark :is(code,pre){background:#ffffff14;border-color:#ffffff1f;color:#f1f5f9}.page-body .dm-card-dark pre code{background:none}.page-body .dm-card-dark .card-footer{background:transparent;color:#94a3b8;border-top:1px solid rgba(255,255,255,.08)}.page-body .dm-card-glow{background:var(--dm-surface);border:1px solid color-mix(in srgb,var(--dm-primary, #6366f1) 45%,transparent);box-shadow:0 0 #6366f100;transition:transform .2s ease,box-shadow .3s ease,border-color .2s ease}.page-body .dm-card-glow:not(.card-no-hover):hover{transform:translateY(-3px);border-color:var(--dm-primary, #818cf8);box-shadow:0 0 0 4px color-mix(in srgb,var(--dm-primary, #6366f1) 14%,transparent),0 0 28px color-mix(in srgb,var(--dm-primary, #6366f1) 22%,transparent)}.page-body .dm-card-glow .card-header{color:var(--dm-primary);border-bottom:1px solid color-mix(in srgb,var(--dm-primary, #6366f1) 20%,transparent)}.page-body .dm-card-glow .card-body{color:var(--dm-text-secondary)}.page-body .dm-card-glow .card-footer{border-top:1px solid color-mix(in srgb,var(--dm-primary, #6366f1) 20%,transparent);color:var(--dm-text-secondary)}.page-body .card-hover{transition:border-color .2s ease}.page-body .card-hover:not(.card-no-hover):hover{border-color:var(--dm-primary, #0d6efd)}.card-gradient-indigo{background:linear-gradient(135deg,#6366f1,#8b5cf6)}.card-gradient-ocean{background:linear-gradient(135deg,#0891b2,#2563eb)}.card-gradient-sunset{background:linear-gradient(135deg,#f59e0b,#ef4444,#ec4899)}.card-gradient-forest{background:linear-gradient(135deg,#10b981,#0d9488)}.card-gradient-rose{background:linear-gradient(135deg,#fb7185,#e11d48)}.card-gradient-midnight{background:linear-gradient(135deg,#1e1b4b,#4338ca)}.card-gradient-aurora{background:linear-gradient(135deg,#06b6d4,#6366f1,#a855f7)}.card-gradient-fire{background:linear-gradient(135deg,#ef4444,#f97316,#fbbf24)}.card-gradient-lagoon{background:linear-gradient(135deg,#06b6d4,#0e7490)}.card-gradient-dusk{background:linear-gradient(135deg,#7c3aed,#db2777)}.card-gradient-lime{background:linear-gradient(135deg,#84cc16,#10b981)}.card-gradient-gold{background:linear-gradient(135deg,#f59e0b,#b45309)}.card-gradient-arctic{background:linear-gradient(135deg,#bae6fd,#e0f2fe);color:#1e293b}.card-gradient-slate{background:linear-gradient(135deg,#475569,#1e293b)}[class*=card-gradient-]:not(.card-gradient-arctic){color:#fff}.page-body .card-font-serif{font-family:Georgia,Times New Roman,serif}.page-body .card-font-mono{font-family:SF Mono,Fira Code,Courier New,monospace}.page-body .card-text-sm{font-size:.85rem}.page-body .card-text-lg{font-size:1.1rem}.page-body .card-text-xl{font-size:1.25rem}.page-body .card-borderless{border:none!important}.page-body .card-shadow-none{box-shadow:none!important}.page-body .card-shadow-md{box-shadow:0 4px 12px #0000001a}.page-body .card-shadow-lg{box-shadow:0 10px 30px #0000002e}.page-body .card-rounded-none{border-radius:0}.page-body .card-rounded-xs{border-radius:2px}.page-body .card-rounded-sm{border-radius:4px}.page-body .dm-box-primary{--cms-box-tone: var(--dm-primary)}.page-body .dm-box-secondary{--cms-box-tone: var(--dm-secondary)}.page-body .dm-box-success{--cms-box-tone: var(--dm-success)}.page-body .dm-box-info{--cms-box-tone: var(--dm-info)}.page-body .dm-box-warning{--cms-box-tone: var(--dm-warning)}.page-body .dm-box-danger{--cms-box-tone: var(--dm-danger)}.page-body .dm-box-tone{--cms-link-color: color-mix(in srgb, var(--cms-box-tone) 40%, var(--dm-text));--cms-link-hover-color: var(--dm-text);background:color-mix(in srgb,var(--cms-box-tone) 12%,var(--dm-card-bg));border-color:color-mix(in srgb,var(--cms-box-tone) 45%,var(--dm-card-border));color:var(--dm-text)}.page-body .dm-box-tone:not(.card-no-hover):hover{border-color:var(--cms-box-tone)}.page-body .dm-box-tone>.card-body{color:var(--dm-text)}.page-body .dm-box-tone>.card-footer{background:color-mix(in srgb,var(--cms-box-tone) 20%,var(--dm-card-bg));border-top-color:color-mix(in srgb,var(--cms-box-tone) 35%,var(--dm-card-border));color:var(--dm-text)}.page-body .dm-box-custom{--cms-link-color: currentColor;--cms-link-hover-color: currentColor;background:var(--cms-box-bg);border-color:color-mix(in srgb,var(--cms-box-fg) 25%,var(--cms-box-bg));color:var(--cms-box-fg)}.page-body .dm-box-custom>:is(.card-body,.card-footer),.page-body .dm-box-custom :is(h1,h2,h3,h4,h5,h6,strong,b){color:var(--cms-box-fg)}.page-body .dm-box-custom>.card-footer{background:color-mix(in srgb,var(--cms-box-shade) 10%,var(--cms-box-bg));border-top-color:color-mix(in srgb,var(--cms-box-fg) 20%,var(--cms-box-bg))}.page-body .dm-box-custom a{text-decoration-color:currentColor!important}.page-body .dm-box-custom :is(code,pre){background:color-mix(in srgb,var(--cms-box-shade) 15%,var(--cms-box-bg));border-color:color-mix(in srgb,var(--cms-box-fg) 20%,var(--cms-box-bg));color:var(--cms-box-fg)}.page-body .dm-box-custom pre code{background:none}.page-body .card-rounded-lg{border-radius:20px}.page-body .card-rounded-full{border-radius:9999px}.page-body .card-align-center{text-align:center}.page-body .card-align-right{text-align:right}.page-body .card-pad-compact .card-body,.page-body .card-pad-compact .card-header,.page-body .card-pad-compact .card-footer{padding:8px 12px}.page-body .card-pad-spacious .card-body,.page-body .card-pad-spacious .card-header,.page-body .card-pad-spacious .card-footer{padding:24px 28px}.grid>:is(.card-span-full,.col:has(>.card-span-full)){grid-column:1 / -1}.grid>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:span 5 / span 5}.grid>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:span 6 / span 6}.grid.grid-cols-1>:is(.card-span-2,.col:has(>.card-span-2)),.grid.grid-cols-1>:is(.card-span-3,.col:has(>.card-span-3)),.grid.grid-cols-1>:is(.card-span-4,.col:has(>.card-span-4)),.grid.grid-cols-1>:is(.card-span-5,.col:has(>.card-span-5)),.grid.grid-cols-1>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-2>:is(.card-span-3,.col:has(>.card-span-3)),.grid.grid-cols-2>:is(.card-span-4,.col:has(>.card-span-4)),.grid.grid-cols-2>:is(.card-span-5,.col:has(>.card-span-5)),.grid.grid-cols-2>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-3>:is(.card-span-4,.col:has(>.card-span-4)),.grid.grid-cols-3>:is(.card-span-5,.col:has(>.card-span-5)),.grid.grid-cols-3>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-4>:is(.card-span-5,.col:has(>.card-span-5)),.grid.grid-cols-4>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-5>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}@media(min-width:768px){.grid.grid-cols-md-1>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:1 / -1}.grid.grid-cols-md-1>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:1 / -1}.grid.grid-cols-md-1>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-md-1>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-md-1>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-md-2>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-md-2>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:1 / -1}.grid.grid-cols-md-2>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-md-2>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-md-2>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-md-3>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-md-3>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-md-3>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-md-3>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-md-3>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-md-4>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-md-4>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-md-4>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-md-4>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-md-4>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-md-5>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-md-5>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-md-5>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-md-5>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:span 5 / span 5}.grid.grid-cols-md-5>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-md-6>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-md-6>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-md-6>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-md-6>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:span 5 / span 5}.grid.grid-cols-md-6>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:span 6 / span 6}}@media(min-width:1024px){.grid.grid-cols-lg-1>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:1 / -1}.grid.grid-cols-lg-1>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:1 / -1}.grid.grid-cols-lg-1>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-lg-1>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-lg-1>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-lg-2>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-lg-2>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:1 / -1}.grid.grid-cols-lg-2>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-lg-2>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-lg-2>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-lg-3>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-lg-3>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-lg-3>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:1 / -1}.grid.grid-cols-lg-3>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-lg-3>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-lg-4>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-lg-4>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-lg-4>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-lg-4>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:1 / -1}.grid.grid-cols-lg-4>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-lg-5>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-lg-5>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-lg-5>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-lg-5>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:span 5 / span 5}.grid.grid-cols-lg-5>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:1 / -1}.grid.grid-cols-lg-6>:is(.card-span-2,.col:has(>.card-span-2)){grid-column:span 2 / span 2}.grid.grid-cols-lg-6>:is(.card-span-3,.col:has(>.card-span-3)){grid-column:span 3 / span 3}.grid.grid-cols-lg-6>:is(.card-span-4,.col:has(>.card-span-4)){grid-column:span 4 / span 4}.grid.grid-cols-lg-6>:is(.card-span-5,.col:has(>.card-span-5)){grid-column:span 5 / span 5}.grid.grid-cols-lg-6>:is(.card-span-6,.col:has(>.card-span-6)){grid-column:span 6 / span 6}}.card-img-top{width:100%;height:180px;background-size:cover;background-position:center;background-color:var(--dm-border,#e2e8f0);display:flex;align-items:center;justify-content:center;font-size:2.5rem;color:color-mix(in srgb,var(--dm-text) 15%,transparent)}.card-img-left,.card-img-right{width:90px;flex-shrink:0;background-size:cover;background-position:center;background-color:var(--dm-border,#e2e8f0);display:flex;align-items:center;justify-content:center;font-size:1.75rem;color:color-mix(in srgb,var(--dm-text) 20%,transparent)}.card-img-wide{width:130px;flex-shrink:0;background-size:cover;background-position:center;background-color:var(--dm-border,#e2e8f0);display:flex;align-items:center;justify-content:center;font-size:2rem;color:color-mix(in srgb,var(--dm-text) 20%,transparent)}.card-layout-horizontal,.card-layout-thumb-left,.card-layout-thumb-right{display:flex}.card-layout-thumb-left .card-body,.card-layout-thumb-right .card-body,.card-layout-horizontal .card-body{flex:1;min-width:0}.card-layout-split{display:flex;min-height:140px}.card-split-left{width:50%;display:flex;align-items:center;justify-content:center;font-size:2.25rem;flex-shrink:0;background:linear-gradient(160deg,#6366f1,#8b5cf6)}.card-split-right{flex:1;background:#1e293b;display:flex;flex-direction:column;justify-content:center}.card-split-right .card-body{color:#94a3b8}.card-split-right .card-title{color:#f1f5f9}.card-img-overlay{position:relative;height:180px;overflow:hidden;background-size:cover;background-position:center;background-color:#1e293b;display:flex;align-items:flex-end}.card-overlay-text{width:100%;padding:40px 16px 14px;background:linear-gradient(to top,rgba(0,0,0,.75),transparent)}.card-overlay-text .card-title{color:#fff}.dm-card-dark .card-img-top,.dm-card-dark .card-img-left,.dm-card-dark .card-img-right,.dm-card-dark .card-img-wide{filter:brightness(.7)}.card-stat-value{font-size:2.4rem;font-weight:800;color:var(--dm-text);line-height:1.1}.card-stat-delta{font-size:.8rem;font-weight:600;margin-top:2px}.card-stat-delta.positive{color:var(--dm-success, #10b981)}.card-stat-delta.negative{color:var(--dm-danger, #ef4444)}.card-stat-bar{height:5px;background:var(--dm-border);border-radius:3px;margin-top:14px;overflow:hidden}.card-stat-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,#6366f1,#8b5cf6)}.card-progress-bar{height:8px;background:var(--dm-border);border-radius:4px;overflow:hidden;margin:8px 0}.card-progress-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,#6366f1,#8b5cf6)}.card-milestone{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--dm-text-secondary);padding:3px 0}.card-milestone-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.card-milestone-dot.done{background:var(--dm-success, #10b981)}.card-milestone-dot.pending{background:var(--dm-border, #e5e7eb)}.card-header-icon-stacked{text-align:center;padding:20px 16px 12px}.card-header-icon-stacked [data-icon],.card-header-icon-stacked .card-icon{font-size:2rem;display:block;margin-bottom:8px}.card-step-bg{position:relative;overflow:hidden;min-height:60px;display:flex;align-items:center;padding:14px 16px}.card-step-ghost{position:absolute;right:8px;top:-10px;font-size:5rem;font-weight:900;color:color-mix(in srgb,var(--dm-primary, #6366f1) 12%,transparent);line-height:1;pointer-events:none}.card-step-badge{width:32px;height:32px;border-radius:50%;background:var(--dm-primary, #6366f1);color:var(--dm-primary-text, #fff);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;z-index:1;flex-shrink:0}.card-corner-badge-wrap{position:relative}.card-corner-badge{position:absolute;top:10px;right:10px;background:var(--dm-danger, #ef4444);color:#fff;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 8px;border-radius:20px}.card-callout{border-left:4px solid var(--dm-primary, #6366f1)}.card-callout.warn{border-left-color:var(--dm-warning, #f59e0b)}.card-callout.success{border-left-color:var(--dm-success, #10b981)}.card-callout.error{border-left-color:var(--dm-danger, #ef4444)}.card-callout-inner{display:flex;gap:12px;align-items:flex-start}.card-callout-icon{font-size:1.2rem;flex-shrink:0;margin-top:1px}.card-quote-mark{font-size:3.5rem;color:color-mix(in srgb,var(--dm-primary, #6366f1) 18%,transparent);line-height:.8;padding:14px 16px 0;font-family:Georgia,serif;display:block}.card-quote-text{padding:4px 16px 14px;font-style:italic;color:var(--dm-text-secondary);line-height:1.7}.card-quote-attr{display:flex;align-items:center;gap:10px}.card-quote-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:.85rem;color:#fff;flex-shrink:0}.card-video-thumb{position:relative;height:160px;background:#1e293b;display:flex;align-items:center;justify-content:center;background-size:cover;background-position:center}.card-play-btn{width:52px;height:52px;border-radius:50%;background:#ffffffe6;display:flex;align-items:center;justify-content:center;font-size:1.2rem;box-shadow:0 4px 16px #0000004d}.card-video-duration{position:absolute;bottom:8px;right:10px;background:#000000b3;color:#fff;font-size:.65rem;font-weight:600;padding:2px 7px;border-radius:4px}.card-map-placeholder{height:130px;background:linear-gradient(160deg,#bfdbfe,#dbeafe);position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.card-map-grid{position:absolute;inset:0;background-image:repeating-linear-gradient(0deg,rgba(59,130,246,.08) 0,rgba(59,130,246,.08) 1px,transparent 1px,transparent 32px),repeating-linear-gradient(90deg,rgba(59,130,246,.08) 0,rgba(59,130,246,.08) 1px,transparent 1px,transparent 32px)}.card-map-pin{font-size:2rem;z-index:1}.card-avatar{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:1.8rem;color:#fff;margin:0 auto 12px}.card-avatar-wrap{text-align:center;padding:24px 16px 16px}.card-tag-pills{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:10px}.card-pill{background:color-mix(in srgb,var(--dm-primary, #7c3aed) 15%,transparent);color:var(--dm-primary, #7c3aed);font-size:.7rem;font-weight:700;padding:3px 9px;border-radius:20px}.card-tag-cloud{padding:14px 16px;display:flex;flex-wrap:wrap;gap:7px}.card-tag{padding:4px 11px;border-radius:20px;font-size:.78rem;font-weight:600}.card-file-row{display:flex;gap:14px;align-items:center;padding:16px}.card-file-icon{width:48px;height:58px;border-radius:7px;background:linear-gradient(160deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:1.4rem;color:#fff;flex-shrink:0;position:relative}.card-file-ext{position:absolute;bottom:4px;left:0;right:0;text-align:center;font-size:.55rem;font-weight:800;color:#ffffffe6;letter-spacing:.05em}.card-file-dl{font-size:.78rem;font-weight:700;color:var(--dm-link, var(--dm-primary, #6366f1));display:inline-block;margin-top:4px}.card-stars{color:#f59e0b;letter-spacing:2px;padding:14px 16px 0;display:block}.card-verified{display:inline-block;background:color-mix(in srgb,var(--dm-success, #10b981) 18%,transparent);color:var(--dm-success, #065f46);font-size:.6rem;font-weight:700;padding:1px 5px;border-radius:3px;margin-left:6px}.card-activity-item{display:flex;gap:10px;align-items:flex-start;padding:8px 14px;border-bottom:1px solid var(--dm-border)}.card-activity-item:last-child{border-bottom:none}.card-activity-avatar{width:30px;height:30px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:.8rem;color:#fff}.card-compare-grid{display:grid;grid-template-columns:1fr 1fr}.card-compare-col{padding:12px 14px}.card-compare-col+.card-compare-col{border-left:1px solid var(--dm-border)}.card-compare-label{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px;display:block}.card-compare-label.before{color:var(--dm-danger, #ef4444)}.card-compare-label.after{color:var(--dm-success, #10b981)}.card-compare-item{display:flex;gap:7px;align-items:flex-start;font-size:.78rem;color:var(--dm-text-secondary);padding:3px 0;line-height:1.4}.card-compare-x{color:var(--dm-danger, #ef4444);flex-shrink:0}.card-compare-check{color:var(--dm-success, #10b981);flex-shrink:0}.card-pricing-features{padding:14px 16px}.card-pricing-feature{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--dm-text-secondary);padding:4px 0}.card-pricing-check{color:var(--dm-success, #10b981)}.card-pricing-cta{display:block;text-align:center;background:var(--dm-primary, #6366f1);color:var(--dm-primary-text, #fff);font-size:.82rem;font-weight:700;padding:9px;border-radius:8px;text-decoration:none;margin:0 16px 14px}.page-body a.card-pricing-cta,.page-body a.card-pricing-cta:hover{color:var(--dm-primary-text, #fff);text-decoration:none}.page-body a.card-pricing-cta:hover{filter:brightness(1.08)}.card-timeline-row{display:flex}.card-timeline-side{width:44px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;padding-top:14px}.card-timeline-dot{width:12px;height:12px;border-radius:50%;background:var(--dm-primary, #6366f1);flex-shrink:0}.card-timeline-line{width:2px;background:var(--dm-border, #e5e7eb);flex:1;margin-top:4px}.card-timeline-body{flex:1;padding:12px 14px 12px 0}.card-timeline-date{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--dm-text-muted)}.card-timeline-tag{display:inline-block;background:color-mix(in srgb,var(--dm-success, #10b981) 18%,transparent);color:var(--dm-success, #065f46);font-size:.65rem;font-weight:700;padding:2px 6px;border-radius:4px;margin-top:6px}.card-code-header{background:#1e293b;display:flex;justify-content:space-between;align-items:center;padding:8px 14px}.card-code-lang{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#6366f1}.card-code-body{background:#0f172a;padding:14px;font-family:Courier New,monospace;font-size:.78rem;line-height:1.8;color:#94a3b8;overflow-x:auto}.card-glass-outer{background:linear-gradient(135deg,#6366f1,#8b5cf6,#ec4899);border-radius:12px;padding:2px}.card-glass-inner{background:#ffffffeb;backdrop-filter:blur(10px);border-radius:10px;padding:16px}.card-badge-band{display:flex;align-items:center;justify-content:space-between;padding:12px 16px}.card-badge-band-label{background:#fff3;color:#fff;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px;border-radius:4px}.card-badge-band-icon{font-size:1.4rem}.dm-card-full-bg{background:linear-gradient(160deg,#1e293b,#0f172a);color:#cbd5e1}.dm-card-full-bg .card-body{color:#94a3b8}.dm-card-full-bg .card-title{color:#f1f5f9;font-size:1rem}.dm-card-full-bg .card-footer{border-top-color:#ffffff14;color:#64748b}.card-fc-row{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;border-bottom:1px solid var(--dm-border);font-size:.82rem;color:var(--dm-text-secondary)}.card-fc-row:last-child{border-bottom:none}.card-fc-yes{color:var(--dm-success, #10b981)}.card-fc-no{color:var(--dm-text-disabled, #d1d5db)}@media(max-width:480px){.page-body :is(.grid,.row)>.card-layout-split,.page-body :is(.grid,.row)>:is(.col,[class*=col-])>.card-layout-split{flex-direction:column}.card-layout-thumb-left,.card-layout-thumb-right,.card-layout-horizontal{flex-direction:column}.card-img-left,.card-img-right,.card-img-wide{width:100%;height:120px}.card-layout-split{flex-direction:column}.card-split-left{width:100%;height:100px}}.hero.hero-dark{background:linear-gradient(135deg,#1f2937,#111827);color:#e2e8f0}.hero.hero-xl{min-height:75vh;box-sizing:border-box;display:flex;align-items:center;justify-content:center}.hero .hero-content{position:relative;z-index:2}.hero.hero-left .hero-content{text-align:left;align-items:flex-start;max-width:62%}@media(max-width:768px){.hero.hero-left .hero-content{max-width:100%}}.hero .hero-cta{display:flex;gap:.85rem;flex-wrap:wrap;margin-top:1.75rem}.hero .hero-cta a{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.35rem;border-radius:6px;font-size:.95rem;font-weight:500;text-decoration:none;transition:background .2s ease,border-color .2s ease,transform .15s ease,box-shadow .2s ease}.hero .hero-cta a:first-child{background:#ffffffeb;color:#111;border:1px solid transparent}.hero .hero-cta a:first-child:hover{background:#fff;box-shadow:0 4px 16px #00000040;transform:translateY(-2px)}.hero .hero-cta a:last-child{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4)}.hero .hero-cta a:last-child:hover{border-color:#ffffffbf;background:#ffffff14;transform:translateY(-2px)}.hero .hero-label{display:inline-block;margin-bottom:.9rem;padding:.2rem .8rem;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:#ffffffb3;border:1px solid rgba(255,255,255,.22)}.grid-breakout{width:calc(100vw - 2rem);margin-left:calc(50% - 50vw + 1rem);margin-right:calc(50% - 50vw + 1rem)}.dm-breadcrumbs{position:fixed;z-index:200;display:inline-flex;align-items:center;gap:.2rem;padding:.3rem .8rem;border-radius:999px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);background:#00000047;border:1px solid rgba(255,255,255,.11);box-shadow:0 2px 10px #00000038;font-size:.72rem;font-weight:500;letter-spacing:.01em;line-height:1.4;max-width:calc(100vw - 2rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dm-breadcrumbs .dm-breadcrumbs-item{color:#ffffffa6}.dm-breadcrumbs .dm-breadcrumbs-link{display:inline-flex;align-items:center;gap:.25rem;color:#ffffff8c;text-decoration:none;transition:color .15s}.dm-breadcrumbs .dm-breadcrumbs-home-icon{flex-shrink:0;vertical-align:middle}.dm-breadcrumbs .dm-breadcrumbs-link:hover{color:#fffffff2}.dm-breadcrumbs .dm-breadcrumbs-current{color:#ffffffeb;font-weight:600}.dm-breadcrumbs .dm-breadcrumbs-separator{color:#ffffff47;font-size:.8em;line-height:1;margin:0 .05rem}body[class*=-light] .dm-breadcrumbs{background:#ffffff8c;border-color:#00000012;box-shadow:0 2px 10px #00000014}body[class*=-light] .dm-breadcrumbs .dm-breadcrumbs-item,body[class*=-light] .dm-breadcrumbs .dm-breadcrumbs-link{color:#0000008c}body[class*=-light] .dm-breadcrumbs .dm-breadcrumbs-link:hover{color:#000000e6}body[class*=-light] .dm-breadcrumbs .dm-breadcrumbs-current{color:#000000d9}body[class*=-light] .dm-breadcrumbs .dm-breadcrumbs-separator{color:#00000040}.dm-collection-display{margin:1.5rem 0}.dm-collection-list{display:flex;flex-direction:column;gap:0}.dm-collection-list-item{padding:1rem 0;border-bottom:1px solid var(--dm-border, rgba(255, 255, 255, .08))}.dm-collection-list-item:last-child{border-bottom:none}.dm-collection-list-item strong{display:block;font-size:1rem;margin-bottom:.25rem}.dm-collection-list-item p{margin:0;color:var(--dm-text-muted, #888);font-size:.9rem}.dm-collection-empty p{color:var(--dm-text-muted, #888);font-style:italic}.hero-gradient-purple,.hero-gradient-blue,.hero-gradient-green,.hero-gradient-sunset,.hero-gradient-ocean,.hero-gradient-rose,.hero-gradient-forest{background:linear-gradient(135deg,color-mix(in srgb,var(--hero-hue) 22%,var(--dm-background)),color-mix(in srgb,var(--hero-hue) 10%,var(--dm-background)));color:var(--dm-text)}.hero-gradient-purple{--hero-hue: #8b5cf6}.hero-gradient-blue{--hero-hue: #3b82f6}.hero-gradient-green{--hero-hue: #10b981}.hero-gradient-sunset{--hero-hue: #f59e0b}.hero-gradient-ocean{--hero-hue: #0ea5e9}.hero-gradient-rose{--hero-hue: #ec4899}.hero-gradient-forest{--hero-hue: #16a34a}.hero-gradient-night{background:linear-gradient(135deg,#334155,#1e293b);color:#e2e8f0}.hero-gradient-ocean-light{background:linear-gradient(135deg,#e0f2fe,#caf0f8);color:#1e293b}.hero-gradient-ocean-dark{background:linear-gradient(135deg,#0c4a6e,#164e63);color:#e2e8f0}.hero-gradient-forest-light{background:linear-gradient(135deg,#d1fae5,#c6f6dc);color:#1e293b}.hero-gradient-forest-dark{background:linear-gradient(135deg,#1a4731,#166534);color:#e2e8f0}.hero-gradient-sunset-light{background:linear-gradient(135deg,#fde8d8,#fddcc9);color:#1e293b}.hero-gradient-sunset-dark{background:linear-gradient(135deg,#6b3727,#7c4036);color:#f5ede8}.hero-gradient-royal-light{background:linear-gradient(135deg,#e8f0fd,#dce8fc);color:#1e293b}.hero-gradient-royal-dark{background:linear-gradient(135deg,#1e3465,#263d7a);color:#e2e8f0}.hero-gradient-lemon-light{background:linear-gradient(135deg,#fefce8,#fef9c3);color:#1e293b}.hero-gradient-lemon-dark{background:linear-gradient(135deg,#5c4d1a,#6b5920);color:#fefce8}.hero-gradient-silver-light{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);color:#1e293b}.hero-gradient-silver-dark{background:linear-gradient(135deg,#2d3748,#374151);color:#e2e8f0}.hero-gradient-charcoal-light{background:linear-gradient(135deg,#eceff1,#e1e7eb);color:#1e293b}.hero-gradient-charcoal-dark{background:linear-gradient(135deg,#2c3843,#374451);color:#e2e8f0}.hero-gradient-christmas-light{background:linear-gradient(135deg,#fde8ea,#fdd5d8);color:#1e293b}.hero-gradient-christmas-dark{background:linear-gradient(135deg,#5c0f1d,#7a1525);color:#fde8ea}.hero-gradient-unicorn-light{background:linear-gradient(135deg,#f5e8fd,#edd6fb);color:#1e293b}.hero-gradient-unicorn-dark{background:linear-gradient(135deg,#3d1a5a,#4a2068);color:#f5e8fd}.hero-gradient-dreamy-light{background:linear-gradient(135deg,#f5ede8,#eeddd4);color:#1e293b}.hero-gradient-dreamy-dark{background:linear-gradient(135deg,#3d2820,#503328);color:#f5ede8}.hero-gradient-grayve-light{background:linear-gradient(135deg,#e0f7f9,#cbf2f5);color:#1e293b}.hero-gradient-grayve-dark{background:linear-gradient(135deg,#00363d,#00444d);color:#e0f7f9}.hero-gradient-mint-light{background:linear-gradient(135deg,#d8f5ea,#c5efdd);color:#1e293b}.hero-gradient-mint-dark{background:linear-gradient(135deg,#134d33,#195f3f);color:#d8f5ea}.hero-gradient-wedding-light{background:linear-gradient(135deg,#faf3e0,#f5e9c7);color:#1e293b}.hero-gradient-wedding-dark{background:linear-gradient(135deg,#5c4418,#6f5320);color:#faf3e0}.tabs-centered{text-align:center}.tabs-centered .tab-list{display:inline-flex}.tabs-centered .tab-content{text-align:left}.site-main{overflow-x:hidden}@media(max-width:768px){.hero .hero-cta a,.dm-so-trigger,.dm-cta-trigger{min-height:44px;padding:.6rem 1.25rem}}.dm-banner{position:relative;display:flex;flex-direction:row;align-items:flex-start;gap:.75rem;padding:.85rem 2.5rem .85rem 1rem;border-radius:var(--dm-radius-md, 6px);border-left:4px solid transparent;margin-bottom:1rem}.dm-banner__icon{flex-shrink:0;margin-top:.1rem;width:1.15rem;height:1.15rem}.dm-banner__icon svg{width:1.15rem;height:1.15rem}.dm-banner__body{flex:1;min-width:0}.dm-banner__title{display:block;margin-bottom:.2rem;font-size:.9em;font-weight:600}.dm-banner__dismiss{position:absolute;top:.5rem;right:.5rem;background:transparent;border:none;cursor:pointer;font-size:1.1rem;line-height:1;padding:.1rem .3rem;opacity:.6}.dm-banner__dismiss:hover{opacity:1}.dm-banner--info{background:color-mix(in srgb,var(--dm-info, #3b82f6) 12%,transparent);border-left-color:var(--dm-info, #3b82f6);color:inherit}.dm-banner--success{background:color-mix(in srgb,var(--dm-success, #22c55e) 12%,transparent);border-left-color:var(--dm-success, #22c55e);color:inherit}.dm-banner--warning{background:color-mix(in srgb,var(--dm-warning, #f59e0b) 12%,transparent);border-left-color:var(--dm-warning, #f59e0b);color:inherit}.dm-banner--danger{background:color-mix(in srgb,var(--dm-danger, #ef4444) 12%,transparent);border-left-color:var(--dm-danger, #ef4444);color:inherit}.dm-banner--neutral{background:color-mix(in srgb,var(--dm-text-muted, #888) 12%,transparent);border-left-color:var(--dm-text-muted, #888);color:inherit}body.dm-layout-narrow .page-body{max-width:768px;margin-inline:auto}body.dm-layout-normal .page-body{max-width:1100px;margin-inline:auto}body.dm-layout-wide .page-body{max-width:min(75vw,2000px);margin-inline:auto}body.dm-layout-full .page-body{max-width:none}.hero h1{font-size:clamp(2.4rem,4.5vw,3.75rem);font-weight:900;line-height:1.08;letter-spacing:-.03em}.hero-gradient-dreamy-light h1{color:#1e293b}.hero-gradient-dreamy-light p{font-size:1.125rem;line-height:1.7;color:#1e293bcc;max-width:48ch}.hero-center.hero-gradient-dreamy-light p{margin-left:auto;margin-right:auto}.page-body h2{font-weight:800;letter-spacing:-.025em}.page-body h3{font-weight:700;letter-spacing:-.015em}.hero-gradient-dreamy-light .hero-cta a:first-child{background:#1e293b!important;color:#f5ede8!important;border-color:#1e293b!important}.hero-gradient-dreamy-light .hero-cta a:first-child:hover{background:#0f172a!important;color:#fff!important}.hero-gradient-dreamy-light .hero-cta a:last-child{background:transparent!important;color:#1e293b!important;border:1px solid rgba(30,41,59,.45)!important}.hero-gradient-dreamy-light .hero-cta a:last-child:hover{background:#1e293b14!important;border-color:#1e293bb3!important}.card[data-hover=true]{transition:transform .22s ease,box-shadow .22s ease!important;will-change:transform}.card[data-hover=true]:not(.card-no-hover):hover{transform:translateY(-5px)!important;box-shadow:0 24px 64px #0003,0 8px 24px #0000001f!important}.card-icon{font-size:2.5rem!important;margin-bottom:12px!important;opacity:.95}.card-avatar-wrap{padding:20px 16px 12px!important;gap:.5rem}.mk-card-icon-wrap,.card-icon-wrap{width:3rem;height:3rem;border-radius:.75rem;background:#ffffff2e;display:flex;align-items:center;justify-content:center;margin-bottom:1.125rem;font-size:1.3rem;flex-shrink:0;box-shadow:0 2px 8px #0000001f}.mk-card-corner-badge,.card-corner-badge{position:absolute;top:1rem;right:1rem;background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;font-size:.6875rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:.25rem .7rem;border-radius:99px;box-shadow:0 2px 10px #f59e0b73}.card-premium .card-subtitle{display:inline-block!important;font-size:.6875rem!important;font-weight:700!important;letter-spacing:.07em!important;text-transform:uppercase!important;opacity:1!important;color:#fff!important;background:linear-gradient(135deg,#f59e0b,#d97706)!important;padding:.2rem .65rem!important;border-radius:99px!important;box-shadow:0 2px 8px #f59e0b66!important;margin-bottom:.75rem!important}.mk-card-badge-band,.card-badge-band{display:inline-flex;align-items:center;gap:.35rem;font-size:.6875rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:.2rem .6rem;border-radius:99px;margin-bottom:.875rem;background:#fff3;border:1px solid rgba(255,255,255,.3)}.mk-card-stars,.card-stars{color:#f59e0b;font-size:1rem;letter-spacing:.12em;margin-bottom:.75rem}.mk-card-reviewer,.card-reviewer{display:flex;flex-direction:column;gap:.15rem;margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.15)}.mk-card-reviewer-name,.card-reviewer-name{font-weight:700;font-size:.9375rem}.mk-card-reviewer-role,.card-reviewer-role{font-size:.8125rem;opacity:.65}.mk-banner.type-info,[class*=banner-info],.mk-banner[data-type=info]{border-left:4px solid var(--dm-primary, #5c3d2e)}.mk-banner.type-success,[class*=banner-success],.mk-banner[data-type=success]{border-left:4px solid var(--dm-success, #22c55e)}.mk-banner.type-warning,[class*=banner-warning],.mk-banner[data-type=warning]{border-left:4px solid var(--dm-warning, #f59e0b)}.mk-stat-number{font-size:5rem;font-weight:900;line-height:1;letter-spacing:-.03em;color:var(--dm-primary, #5c3d2e)}.mk-stat-label{font-size:.9375rem;font-weight:600;opacity:.65;margin-top:.5rem;letter-spacing:.02em;text-transform:uppercase}.mk-footer-inner{max-width:1200px;margin:0 auto;padding:3rem 2rem 1.5rem}.mk-footer-columns{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem;margin-bottom:2.5rem}@media(max-width:900px){.mk-footer-columns{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.mk-footer-columns{grid-template-columns:1fr}}.mk-footer-col-title{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.5;margin:0 0 .75rem}.mk-footer-col-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.mk-footer-col-links a{font-size:.875rem;opacity:.75;text-decoration:none;transition:opacity .15s}.mk-footer-col-links a:hover{opacity:1}.mk-footer-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding-top:1.5rem;border-top:1px solid var(--dm-border, rgba(0, 0, 0, .08))}.mk-footer-copyright{font-size:.8125rem;opacity:.5;margin:0}.mk-footer-bottom-right{display:flex;align-items:center;gap:1.25rem}.mk-footer-social{display:flex;gap:.75rem}.mk-footer-social-link{opacity:.5;transition:opacity .15s;font-size:1.125rem}.mk-footer-social-link:hover{opacity:1}.mk-motion-label{display:flex;align-items:center;gap:.4rem;font-size:.75rem;opacity:.5;cursor:pointer;user-select:none}.mk-motion-label:hover{opacity:.75}.dm-static-block{display:contents}.mk-window{border-radius:10px;overflow:hidden;box-shadow:0 16px 56px #0000002e,0 4px 16px #0000001a;background:#fff;border:1px solid rgba(0,0,0,.06)}.mk-window-bar{background:#e8e8e8;padding:10px 16px;display:flex;gap:7px;align-items:center}.mk-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.mk-dot-red{background:#ff5f57}.mk-dot-amber{background:#febc2e}.mk-dot-green{background:#28c840}.page-body .carousel-slide{display:flex;flex-direction:column;justify-content:flex-start}.page-body .carousel-slide>img{object-position:center top}.mk-window-body img{width:100%;display:block;max-height:480px;object-fit:cover;object-position:top}.dm-static-block+p{margin-top:.5rem}#site-navbar:not([data-menu-active]) .navbar-link.active:not([data-menu-item-active]){opacity:1!important;font-weight:700!important;position:relative}#site-navbar:not([data-menu-active]) .navbar-link.active:not([data-menu-item-active]):after{content:"";position:absolute;bottom:-3px;left:0;right:0;height:2px;background:currentColor;border-radius:2px;opacity:.6}.mk-divider{border:none;border-top:1px solid var(--dm-border-light, rgba(0, 0, 0, .07));margin:0}.page-body .mk-tabs,.page-body .tabs-wrapper,.page-body>.tabs{padding-left:1.5rem;padding-right:1.5rem}.mk-section-label,.section-label{display:inline-block;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .875rem;border-radius:99px;margin-bottom:1.125rem;background:color-mix(in srgb,var(--dm-primary, #5c3d2e) 10%,transparent);color:var(--dm-primary, #5c3d2e);border:1px solid color-mix(in srgb,var(--dm-primary, #5c3d2e) 20%,transparent)}.page-body .btn-primary,.page-body a.btn-primary{background-color:var(--dm-primary, #8d6e63)!important;color:var(--dm-text-inverse, #ffffff)!important;border:1px solid var(--dm-primary, #8d6e63)!important;text-decoration:none!important;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.page-body .btn-primary:hover,.page-body a.btn-primary:hover{background-color:var(--dm-primary-hover, #6d4c41)!important;color:var(--dm-text-inverse, #ffffff)!important;border-color:var(--dm-primary-hover, #6d4c41)!important;text-decoration:none!important}.page-body .btn-outline,.page-body a.btn-outline{background-color:transparent!important;color:var(--dm-primary, #8d6e63)!important;border:1.5px solid var(--dm-primary, #8d6e63)!important;text-decoration:none!important;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.page-body .btn-outline:hover,.page-body a.btn-outline:hover{background-color:var(--dm-primary, #8d6e63)!important;color:var(--dm-text-inverse, #ffffff)!important;border-color:var(--dm-primary, #8d6e63)!important;text-decoration:none!important}.page-body .btn-ghost,.page-body a.btn-ghost{background-color:transparent!important;color:var(--dm-primary, #8d6e63)!important;border:1px solid transparent!important;text-decoration:none!important;transition:background-color .15s ease,color .15s ease}.page-body .btn-ghost:hover,.page-body a.btn-ghost:hover{background-color:var(--dm-primary-light, rgba(141, 110, 99, .1))!important;color:var(--dm-primary-hover, #6d4c41)!important;text-decoration:none!important}.mk-card-step-number,.card-step-number{font-size:3rem;font-weight:900;line-height:1;letter-spacing:-.04em;opacity:.25;margin-bottom:.75rem}.mk-card-step-title,.card-step-title{font-size:1rem;font-weight:700;margin-bottom:.5rem}.card[data-badge=Enterprise] .mk-card-corner-badge,.card[data-badge=Enterprise] .card-corner-badge{background:linear-gradient(135deg,#1e293b,#334155);box-shadow:0 2px 10px #1e293b80}.card-badge-band-icon{font-size:1.75rem!important}.card-badge-band{padding:14px 18px!important;gap:.5rem}.card-badge-band-label{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.card-title{font-size:1.2rem!important;font-weight:800!important;letter-spacing:-.015em!important;line-height:1.25!important;margin-bottom:.4rem!important;color:var(--dm-text, #f1f5f9)!important}.card-subtitle{font-size:.8125rem!important;opacity:.7!important;margin-bottom:.5rem!important;font-weight:500!important;color:var(--dm-text, #f1f5f9)!important}.mk-card-body p,.card-body p,.card>p{font-size:.9375rem;line-height:1.65;opacity:.88}.card-gradient-purple{background:linear-gradient(135deg,#ede9fe,#ddd6fe)!important;color:#1e1b4b!important}.card-gradient-blue{background:linear-gradient(135deg,#dbeafe,#bfdbfe)!important;color:#1e3a5f!important}.card-gradient-green{background:linear-gradient(135deg,#d1fae5,#a7f3d0)!important;color:#064e3b!important}.card-gradient-night{background:linear-gradient(135deg,#334155,#1e293b)!important;color:#e2e8f0!important}.card-gradient-ocean-light{background:linear-gradient(135deg,#e0f2fe,#caf0f8)!important;color:#1e293b!important}.card-gradient-ocean-dark{background:linear-gradient(135deg,#0c4a6e,#164e63)!important;color:#e2e8f0!important}.card-gradient-forest-light{background:linear-gradient(135deg,#d1fae5,#c6f6dc)!important;color:#1e293b!important}.card-gradient-forest-dark{background:linear-gradient(135deg,#1a4731,#166534)!important;color:#e2e8f0!important}.card-gradient-sunset-light{background:linear-gradient(135deg,#fde8d8,#fddcc9)!important;color:#1e293b!important}.card-gradient-sunset-dark{background:linear-gradient(135deg,#6b3727,#7c4036)!important;color:#f5ede8!important}.card-gradient-royal-light{background:linear-gradient(135deg,#e8f0fd,#dce8fc)!important;color:#1e293b!important}.card-gradient-royal-dark{background:linear-gradient(135deg,#1e3465,#263d7a)!important;color:#e2e8f0!important}.card-gradient-lemon-light{background:linear-gradient(135deg,#fefce8,#fef9c3)!important;color:#1e293b!important}.card-gradient-lemon-dark{background:linear-gradient(135deg,#5c4d1a,#6b5920)!important;color:#fefce8!important}.card-gradient-silver-light{background:linear-gradient(135deg,#f1f5f9,#e2e8f0)!important;color:#1e293b!important}.card-gradient-silver-dark{background:linear-gradient(135deg,#2d3748,#374151)!important;color:#e2e8f0!important}.card-gradient-charcoal-light{background:linear-gradient(135deg,#eceff1,#e1e7eb)!important;color:#1e293b!important}.card-gradient-charcoal-dark{background:linear-gradient(135deg,#2c3843,#374451)!important;color:#e2e8f0!important}.card-gradient-christmas-light{background:linear-gradient(135deg,#fde8ea,#fdd5d8)!important;color:#1e293b!important}.card-gradient-christmas-dark{background:linear-gradient(135deg,#5c0f1d,#7a1525)!important;color:#fde8ea!important}.card-gradient-unicorn-light{background:linear-gradient(135deg,#f5e8fd,#edd6fb)!important;color:#1e293b!important}.card-gradient-unicorn-dark{background:linear-gradient(135deg,#3d1a5a,#4a2068)!important;color:#f5e8fd!important}.card-gradient-dreamy-light{background:linear-gradient(135deg,#f5ede8,#eeddd4)!important;color:#1e293b!important}.card-gradient-dreamy-dark{background:linear-gradient(135deg,#3d2820,#503328)!important;color:#f5ede8!important}.card-gradient-grayve-light{background:linear-gradient(135deg,#e0f7f9,#cbf2f5)!important;color:#1e293b!important}.card-gradient-grayve-dark{background:linear-gradient(135deg,#00363d,#00444d)!important;color:#e0f7f9!important}.card-gradient-mint-light{background:linear-gradient(135deg,#d8f5ea,#c5efdd)!important;color:#1e293b!important}.card-gradient-mint-dark{background:linear-gradient(135deg,#134d33,#195f3f)!important;color:#d8f5ea!important}.card-gradient-wedding-light{background:linear-gradient(135deg,#faf3e0,#f5e9c7)!important;color:#1e293b!important}.card-gradient-wedding-dark{background:linear-gradient(135deg,#5c4418,#6f5320)!important;color:#faf3e0!important}.card-gradient-slate{--dm-card-g-start: #475569;--dm-card-g-end: #1e293b}.card-gradient-dusk{--dm-card-g-start: #7c3aed;--dm-card-g-end: #db2777}.card-gradient-sunset{--dm-card-g-start: #f59e0b;--dm-card-g-end: #ec4899}.card-gradient-rose{--dm-card-g-start: #fb7185;--dm-card-g-end: #e11d48}.card-gradient-gold{--dm-card-g-start: #f59e0b;--dm-card-g-end: #b45309}.card-gradient-fire{--dm-card-g-start: #ef4444;--dm-card-g-end: #fbbf24}.page-body .card.dm-card-gradient.card-gradient-sunset .card-header,.page-body .card.dm-card-gradient.card-gradient-rose .card-header,.page-body .card.dm-card-gradient.card-gradient-gold .card-header,.page-body .card.dm-card-gradient.card-gradient-fire .card-header{color:#1e293b!important}.page-body .card.dm-card-gradient[class*=-light] .card-header,.page-body .card.dm-card-gradient[class*=-dark] .card-header,.page-body .card.dm-card-gradient.card-gradient-purple .card-header,.page-body .card.dm-card-gradient.card-gradient-blue .card-header,.page-body .card.dm-card-gradient.card-gradient-green .card-header,.page-body .card.dm-card-gradient.card-gradient-night .card-header{background:transparent!important;color:inherit!important;border-bottom:1px solid rgba(0,0,0,.08)}.card[class*=card-gradient-] .card-title,.card[class*=card-gradient-] .card-subtitle{color:inherit!important}.card[class*=gradient] .mk-window-bar,.card[data-gradient] .mk-window-bar{background:#00000040}.card[class*=gradient] .mk-dot-red{background:#ff5f57b3}.card[class*=gradient] .mk-dot-amber{background:#febc2eb3}.card[class*=gradient] .mk-dot-green{background:#28c840b3}.hero .card .mk-listgroup-item,.hero .card .list-group-item{padding-top:.45rem;padding-bottom:.45rem;font-size:.9rem}.card .dm-static-block{display:block;width:100%}.card .mk-window{margin-bottom:0}.wf-feature{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--dm-card-bg, #ffffff);border:1px solid var(--dm-card-border, #e2e8f0);border-radius:8px;box-shadow:0 1px 3px #0f172a0a;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.wf-feature:hover{border-color:var(--dm-border-dark, #475569);box-shadow:0 6px 18px #0f172a14;transform:translateY(-1px)}.wf-feature-icon{flex-shrink:0;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#475569,#1e293b);color:#f1f5f9;border-radius:8px;font-size:1.1rem}.wf-feature-text{font-size:.9rem;font-weight:500;color:var(--dm-text, #1e293b);line-height:1.4;flex:1 1 auto}.plugin-card{display:flex;flex-direction:column;background:var(--dm-card-bg, #ffffff);border:1px solid var(--dm-card-border, #e2e8f0);border-radius:12px;overflow:hidden;box-shadow:0 2px 6px #0f172a0d;text-decoration:none!important;color:inherit!important;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;height:100%;min-height:340px}.plugin-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px #0f172a1f;border-color:var(--dm-border-dark, #475569)}.plugin-card-cover{position:relative;width:100%;height:150px;background-size:cover;background-position:center;background-color:var(--dm-background-alt, #e2e8f0);flex-shrink:0}.plugin-card-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0000001a,#0f172a8c)}.plugin-card-tier-badge{position:absolute;top:12px;right:12px;z-index:2;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:4px 10px;border-radius:20px;color:#1e293b;background:#fff;box-shadow:0 2px 8px #0f172a40}.plugin-card[data-tier=free] .plugin-card-tier-badge:before{content:"Free"}.plugin-card[data-tier=premium] .plugin-card-tier-badge:before{content:"Premium"}.plugin-card[data-tier=premium] .plugin-card-tier-badge{color:#f1f5f9;background:linear-gradient(135deg,#475569,#1e293b)}.plugin-card-body{flex:1 1 auto;padding:20px;display:flex;flex-direction:column;gap:10px;background:var(--dm-card-bg, #fff);color:var(--dm-text, #1e293b)}.plugin-card-head{display:flex;align-items:center;gap:12px}.plugin-card-icon{flex-shrink:0;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#475569,#1e293b);color:#f1f5f9;border-radius:10px;font-size:1.3rem;box-shadow:0 2px 6px #0f172a2e}.plugin-card-title{font-size:1.15rem!important;font-weight:700!important;color:var(--dm-text, #1e293b)!important;line-height:1.2!important;margin:0!important}.plugin-card-desc{font-size:.88rem!important;color:var(--dm-text-secondary, #475569)!important;line-height:1.5!important;margin:0!important;flex:1 1 auto}.plugin-card-cta{display:inline-flex;align-items:center;gap:4px;font-size:.82rem;font-weight:600;color:var(--dm-text-secondary, #475569);margin-top:8px;transition:color .15s ease,gap .15s ease}.plugin-card:hover .plugin-card-cta{color:var(--dm-text, #1e293b);gap:8px}.page-body a:not([class*=btn]):not(.plugin-card):not([class*=nav]):not([class*=footer]):not([data-menu-hover] a):not([data-menu-active] a){color:var(--cms-link-color, var(--dm-link, var(--dm-primary, var(--dm-text, #5d4037))))!important;text-decoration:underline;text-decoration-color:var(--dm-border, rgba(0, 0, 0, .2));text-underline-offset:3px;text-decoration-thickness:1.5px;transition:color .15s ease,text-decoration-color .15s ease}.page-body a:not([class*=btn]):not(.plugin-card):not([class*=nav]):not([class*=footer]):not([data-menu-hover] a):not([data-menu-active] a):hover{color:var(--cms-link-hover-color, var(--dm-link-hover, var(--dm-primary-hover, var(--dm-text, #3e2723))))!important;text-decoration-color:var(--cms-link-color, var(--dm-link, var(--dm-primary, currentColor)))}.page-body .dm-card-gradient .card-body a:not([class*=btn]){color:var(--dm-link, var(--dm-primary, var(--dm-text, #5d4037)))!important}.page-body .dm-card-gradient .card-body a:not([class*=btn]):hover{color:var(--dm-link-hover, var(--dm-primary-hover, var(--dm-text, #3e2723)))!important}html body .page-body a[href]:not([class*=btn]):not(.plugin-card):not([class*=nav]):not([class*=footer]):not(.dm-breadcrumbs-link):not([data-menu-hover] a):not([data-menu-active] a){color:var(--cms-link-color, var(--dm-link, var(--dm-primary, #8d6e63)))!important}html body .page-body a[href]:not([class*=btn]):not(.plugin-card):not([class*=nav]):not([class*=footer]):not(.dm-breadcrumbs-link):not([data-menu-hover] a):not([data-menu-active] a):hover{color:var(--cms-link-hover-color, var(--dm-link-hover, var(--dm-primary-hover, #6d4c41)))!important}.page-body .hero-cta:not(.hero .hero-cta) a:not([class*=btn]),.page-body>* .hero-cta a:not([class*=btn]){color:var(--dm-primary, #8d6e63)!important;text-decoration:none!important;background:transparent;border:1px solid var(--dm-border, rgba(141, 110, 99, .35));padding:.55rem 1.35rem;border-radius:6px;font-weight:500;display:inline-flex;align-items:center;gap:.4rem;transition:background .15s ease,border-color .15s ease,color .15s ease}.page-body .hero-cta:not(.hero .hero-cta) a:not([class*=btn]):hover,.page-body>* .hero-cta a:not([class*=btn]):hover{color:var(--dm-primary-hover, #6d4c41)!important;background:var(--dm-primary-light, rgba(141, 110, 99, .08));border-color:var(--dm-primary, #8d6e63)}.feature-image{width:100%;max-height:420px;object-fit:cover;border-radius:12px;box-shadow:0 12px 36px #0f172a26;display:block}.page-body .grid>.col:has(>.feature-image),.page-body .grid>.col:has(.reveal>.feature-image),.page-body .grid>.col:has(.feature-image){display:flex;flex-direction:column;justify-content:center}.code-label{display:inline-flex;align-items:center;gap:8px;font-family:Fira Code,Consolas,Monaco,monospace;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#f1f5f9bf;background:#0f172a8c;padding:6px 12px;border-radius:6px 6px 0 0;border-bottom:1px solid rgba(241,245,249,.12)}.code-label+.code-block{margin-top:0!important;border-top-left-radius:0;border-top-right-radius:0}.code-block{display:block;background:#0f172a!important;color:#e2e8f0!important;padding:18px 20px!important;border-radius:8px;overflow-x:auto;font-size:.85rem;line-height:1.55;margin:0 0 20px;box-shadow:inset 0 0 0 1px #f1f5f914;white-space:pre;font-family:Fira Code,Consolas,Monaco,Courier New,monospace}.code-block code{background:transparent!important;color:inherit!important;padding:0!important;font-family:inherit!important;font-size:inherit;white-space:pre;display:block}.page-body .card-body>pre>code,.page-body .card-body pre.code-block>code{color:#e2e8f0!important}.run-option-card{display:flex;flex-direction:column;background:var(--dm-card-bg, #ffffff);border:1px solid var(--dm-card-border, #e2e8f0);border-radius:14px;overflow:hidden;box-shadow:0 4px 14px #0f172a14;height:100%;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.run-option-card:hover{transform:translateY(-3px);box-shadow:0 20px 48px #0f172a24;border-color:var(--dm-border-dark, #475569)}.run-option-banner{position:relative;width:100%;height:180px;background-size:cover;background-position:center;background-color:var(--dm-background-alt, #e2e8f0);flex-shrink:0}.run-option-banner:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0f172a1a,#0f172ab3)}.run-option-icon-chip{position:absolute;bottom:-26px;left:24px;z-index:2;width:56px;height:56px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#475569,#1e293b);color:#f1f5f9;border-radius:14px;font-size:1.6rem;box-shadow:0 8px 20px #0f172a4d;border:3px solid var(--dm-card-bg, #fff)}.run-option-card-body{flex:1 1 auto;padding:40px 24px 24px;display:flex;flex-direction:column;gap:10px}.run-option-title{font-size:1.5rem!important;font-weight:800!important;color:var(--dm-text, #1e293b)!important;margin:0!important;line-height:1.15!important;letter-spacing:-.01em!important}.run-option-sub{font-size:.9rem!important;font-weight:600!important;color:var(--dm-primary, #5d4037)!important;margin:0 0 8px!important;text-transform:uppercase;letter-spacing:.06em}.run-option-content{flex:1 1 auto;font-size:.92rem;line-height:1.55;color:var(--dm-text-secondary, #475569)}.run-option-content p{margin:0 0 12px}.run-option-content .run-option-intro{font-size:.98rem;color:var(--dm-text, #1e293b);font-weight:500;margin-bottom:16px}.run-option-content .run-option-body-label{font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;color:var(--dm-primary, #5d4037);margin-bottom:8px}.run-option-content .run-option-req{font-size:.82rem;color:var(--dm-text-muted, #64748b);margin-top:14px}.run-option-content .code-block{margin:8px 0 14px}.run-option-list{list-style:none;padding:0;margin:0 0 14px;display:flex;flex-direction:column;gap:8px}.run-option-list li{display:flex;align-items:center;gap:10px;font-size:.9rem;color:var(--dm-text, #1e293b)}.run-option-list li [data-icon]{color:var(--dm-primary, #5d4037);flex-shrink:0}.run-option-ctas{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px;padding-top:20px;border-top:1px solid var(--dm-border, #e2e8f0)}.run-option-ctas .btn{flex:1 1 auto;text-align:center;white-space:nowrap;min-width:fit-content}.quickstart-step{position:relative;padding:28px 22px 24px;background:var(--dm-card-bg, #ffffff);border:1px solid var(--dm-card-border, #e2e8f0);border-radius:12px;box-shadow:0 2px 8px #0f172a0d;overflow:hidden;height:100%;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.quickstart-step:hover{transform:translateY(-3px);box-shadow:0 16px 36px #0f172a1f;border-color:var(--dm-border-dark, #475569)}.quickstart-step-number{position:absolute;top:8px;right:14px;font-size:5rem;font-weight:900;line-height:1;color:color-mix(in srgb,var(--dm-text) 8%,transparent);font-variant-numeric:tabular-nums;pointer-events:none;user-select:none}.quickstart-step-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;background:linear-gradient(135deg,#475569,#1e293b);color:#f1f5f9;border-radius:10px;font-size:1.3rem;margin-bottom:14px;box-shadow:0 4px 12px #0f172a2e;position:relative;z-index:1}.quickstart-step-title{font-size:1.1rem!important;font-weight:800!important;color:var(--dm-text, #1e293b)!important;margin:0 0 8px!important;line-height:1.2!important;letter-spacing:-.01em!important;position:relative;z-index:1}.quickstart-step-desc{font-size:.86rem;line-height:1.55;color:var(--dm-text-secondary, #475569);margin:0;position:relative;z-index:1}:not(:defined){visibility:hidden}.dm-collection-browser{display:block;margin:1.5rem 0}.dm-collection-browser.dm-cb-hydrated .dm-cb-fallback{display:none}.dm-cb-header{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;margin-bottom:1rem}.dm-cb-search{flex:1 1 240px;min-width:200px}.dm-cb-search-input{width:100%;padding:.5rem .75rem;border:1px solid var(--dm-border, #d1d5db);border-radius:var(--dm-radius-md, 6px);background:var(--dm-background, #fff);color:var(--dm-text, #111827);font-size:.95rem}.dm-cb-sort{display:flex;align-items:center;gap:.5rem;flex:0 0 auto}.dm-cb-sort-label{font-size:.85rem;color:var(--dm-text-muted, #6b7280);margin:0}.dm-cb-sort-select{padding:.45rem .6rem;border:1px solid var(--dm-border, #d1d5db);border-radius:var(--dm-radius-md, 6px);background:var(--dm-background, #fff);color:var(--dm-text, #111827)}.dm-cb-sort-dir{width:2rem;height:2rem;border:1px solid var(--dm-border, #d1d5db);border-radius:var(--dm-radius-md, 6px);background:var(--dm-background, #fff);cursor:pointer;font-weight:700}.dm-cb-sort-dir:hover{background:var(--dm-background-alt, #f3f4f6)}.dm-cb-layout{display:grid;grid-template-columns:minmax(220px,1fr) 3fr;gap:1.5rem;align-items:start}@media(max-width:768px){.dm-cb-layout{grid-template-columns:1fr}.dm-cb-filter-rail{border:1px solid var(--dm-border, #e5e7eb);border-radius:var(--dm-radius-md, 6px);padding:.75rem}}.dm-cb-filter-rail{padding:.5rem 0;font-size:.92rem}.dm-cb-filter-heading{margin:0 0 .75rem;font-size:.95rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--dm-text-muted, #6b7280)}.dm-cb-filter{margin-bottom:1rem;display:flex;flex-direction:column;gap:.35rem}.dm-cb-filter-label{font-weight:600;font-size:.85rem;color:var(--dm-text, #111827)}.dm-cb-text,.dm-cb-select,.dm-cb-range input{width:100%;padding:.4rem .55rem;border:1px solid var(--dm-border, #d1d5db);border-radius:var(--dm-radius-md, 6px);background:var(--dm-background, #fff);color:var(--dm-text, #111827);font-size:.9rem}.dm-cb-range{display:flex;align-items:center;gap:.4rem}.dm-cb-range input{flex:1;min-width:0}.dm-cb-multiselect{display:flex;flex-direction:column;gap:.3rem;max-height:11rem;overflow-y:auto;padding:.4rem .55rem;border:1px solid var(--dm-border, #d1d5db);border-radius:var(--dm-radius-md, 6px)}.dm-cb-check{display:flex;align-items:center;gap:.4rem;font-size:.88rem;cursor:pointer;margin:0}.dm-cb-filter-reset{width:100%;margin-top:.5rem;padding:.45rem .6rem;border:1px solid var(--dm-border, #d1d5db);background:transparent;color:var(--dm-text, #374151);border-radius:var(--dm-radius-md, 6px);cursor:pointer;font-size:.85rem}.dm-cb-filter-reset:hover{background:var(--dm-background-alt, #f3f4f6)}.dm-cb-body{min-height:4rem}.dm-cb-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--dm-border, #e5e7eb)}.dm-cb-page-info{font-size:.88rem;color:var(--dm-text-muted, #6b7280)}.dm-cb-page-prev[disabled],.dm-cb-page-next[disabled]{opacity:.45;cursor:not-allowed}.dm-cb-chips{display:flex;flex-wrap:wrap;gap:.35rem;padding:.1rem 0}.dm-cb-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .6rem;border:1px solid var(--dm-border, #d1d5db);background:var(--dm-background, #fff);color:var(--dm-text, #111827);border-radius:999px;cursor:pointer;font-size:.82rem;transition:background-color .12s ease,border-color .12s ease}.dm-cb-chip:hover{background:var(--dm-background-alt, #f3f4f6)}.dm-cb-chip-active{background:var(--dm-primary, #2563eb);color:var(--dm-primary-text, #fff);border-color:var(--dm-primary, #2563eb)}.dm-cb-chip-count{font-size:.75rem;opacity:.75;font-variant-numeric:tabular-nums}.dm-cb-chip-active .dm-cb-chip-count{opacity:.85}.dm-cb-slider{position:relative;height:1.5rem;margin:.5rem .25rem}.dm-cb-slider-track{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);height:4px;background:var(--dm-border, #e5e7eb);border-radius:2px}.dm-cb-slider-fill{position:absolute;top:0;bottom:0;background:var(--dm-primary, #2563eb);border-radius:2px}.dm-cb-slider-handle{position:absolute;inset:0;width:100%;height:100%;margin:0;background:transparent;pointer-events:none;-webkit-appearance:none;appearance:none}.dm-cb-slider-handle::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:1rem;width:1rem;border-radius:50%;background:var(--dm-primary, #2563eb);border:2px solid var(--dm-background, #fff);box-shadow:0 1px 3px #00000026;pointer-events:auto;cursor:grab}.dm-cb-slider-handle::-moz-range-thumb{height:1rem;width:1rem;border-radius:50%;background:var(--dm-primary, #2563eb);border:2px solid var(--dm-background, #fff);box-shadow:0 1px 3px #00000026;pointer-events:auto;cursor:grab}.dm-cb-range-inputs{display:flex;gap:.4rem;align-items:center}.dm-cb-saved{position:relative}.dm-cb-saved-menu{position:absolute;right:0;top:calc(100% + .25rem);min-width:12rem;padding:.5rem;background:var(--dm-background, #fff);border:1px solid var(--dm-border, #e5e7eb);border-radius:var(--dm-radius-md, 6px);box-shadow:0 8px 24px #0f172a1f;z-index:20}.dm-cb-saved-empty{margin:0 0 .5rem;font-size:.85rem;color:var(--dm-text-muted, #6b7280)}.dm-cb-saved-item{display:flex;align-items:center;gap:.4rem;margin-bottom:.25rem}.dm-cb-saved-apply{flex:1;text-align:left;padding:.35rem .5rem;background:transparent;border:0;border-radius:var(--dm-radius-md, 6px);cursor:pointer;font-size:.88rem;color:var(--dm-text, #111827)}.dm-cb-saved-apply:hover{background:var(--dm-background-alt, #f3f4f6)}.dm-cb-saved-del{width:1.5rem;height:1.5rem;padding:0;background:transparent;border:0;color:var(--dm-text-muted, #9ca3af);cursor:pointer;font-size:1.1rem}.dm-cb-saved-del:hover{color:var(--dm-danger, #dc2626)}.dm-cb-saved-actions{border-top:1px solid var(--dm-border, #e5e7eb);padding-top:.5rem;margin-top:.5rem}.dm-cb-saved-create{width:100%;padding:.45rem .6rem;font-size:.85rem}.dm-cb-export{padding:.45rem .7rem;font-size:.85rem}.dm-cb-empty-clear{margin-top:.75rem}.dm-cb-scroll-sentinel{text-align:center;padding:1rem 0;font-size:.85rem;color:var(--dm-text-muted, #6b7280)}.dm-cb-scroll-end{text-align:center;margin:1rem 0 0;font-size:.85rem;color:var(--dm-text-muted, #9ca3af);font-style:italic}.dm-cb-block-loading{text-align:center;padding:2rem 0;color:var(--dm-text-muted, #9ca3af);font-style:italic}.dm-cb-drawer-toggle{display:none;align-items:center;gap:.4rem;padding:.45rem .75rem;font-size:.88rem}.dm-cb-drawer-count{font-variant-numeric:tabular-nums;font-weight:600;color:var(--dm-primary, #2563eb)}.dm-cb-drawer-count:empty{display:none}@media(max-width:768px){.dm-cb-drawer-toggle{display:inline-flex}.dm-cb-filter-rail{position:fixed;top:0;left:-100%;width:85%;max-width:22rem;height:100vh;background:var(--dm-background, #fff);border-right:1px solid var(--dm-border, #e5e7eb);box-shadow:4px 0 16px #00000014;padding:1.25rem;z-index:100;overflow-y:auto;transition:left .22s ease}.dm-cb-drawer-open .dm-cb-filter-rail{left:0}.dm-cb-drawer-open:before{content:"";position:fixed;inset:0;background:#00000059;z-index:99}}.dm-file-thumb{max-width:180px;max-height:120px;border-radius:var(--dm-radius-md, 6px);border:1px solid var(--dm-border, #e5e7eb);display:inline-block;object-fit:cover}.dm-cb-transitions{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem;font-size:.85rem;color:var(--dm-text-muted, #6b7280)}.dm-cb-transitions:empty{display:none}.dm-cb-transition-btn{padding:.35rem .7rem;font-size:.82rem}.dm-menu-sep,.footer-sep{list-style:none}.dm-menu-sep hr,.footer-sep hr{border:0;border-top:1px solid var(--dm-border, rgba(128, 128, 128, .35));margin:.4rem 0}.dm-menu-spacer{list-style:none;pointer-events:none;padding:0;margin:0;border:0}.dm-menu-spacer--xs{height:var(--dm-space-1, .25rem)}.dm-menu-spacer--sm{height:var(--dm-space-2, .5rem)}.dm-menu-spacer--md{height:var(--dm-space-4, 1rem)}.dm-menu-spacer--lg{height:var(--dm-space-6, 1.5rem)}.dm-menu-spacer--xl{height:var(--dm-space-10, 2.5rem)}.dm-menu--horizontal>ul>.dm-menu-spacer--xs,.navbar-nav>.dm-menu-spacer--xs{height:auto;width:var(--dm-space-1, .25rem)}.dm-menu--horizontal>ul>.dm-menu-spacer--sm,.navbar-nav>.dm-menu-spacer--sm{height:auto;width:var(--dm-space-2, .5rem)}.dm-menu--horizontal>ul>.dm-menu-spacer--md,.navbar-nav>.dm-menu-spacer--md{height:auto;width:var(--dm-space-4, 1rem)}.dm-menu--horizontal>ul>.dm-menu-spacer--lg,.navbar-nav>.dm-menu-spacer--lg{height:auto;width:var(--dm-space-6, 1.5rem)}.dm-menu--horizontal>ul>.dm-menu-spacer--xl,.navbar-nav>.dm-menu-spacer--xl{height:auto;width:var(--dm-space-10, 2.5rem)}.dm-menu--has-flex-spacer>ul{display:flex;flex-direction:column}.dm-menu--has-flex-spacer.dm-menu--horizontal>ul{flex-direction:row;align-items:center}.dm-menu-spacer--flex{flex:1 1 auto;height:auto;width:auto}.dm-menu-floating .dm-menu-spacer--flex{min-height:var(--dm-space-4, 1rem)}@media(max-width:768px){.dm-menu--has-flex-spacer.dm-menu--horizontal>ul{flex-wrap:wrap}}#site-navbar .navbar-dropdown-divider{background:var(--dm-border, rgba(128, 128, 128, .5));opacity:.8}.dm-menu-badge{display:inline-block;margin-left:6px;padding:1px 7px;font-size:.7em;font-weight:700;line-height:1.4;border-radius:999px;background:var(--dm-text-muted);color:var(--dm-text-inverse, #fff);vertical-align:middle}.dm-nav-pill{border-radius:999px;padding:6px 14px;font-weight:600}.dm-nav-pill--outline{background:transparent!important;border:1px solid currentColor}@media(max-width:992px){#site-navbar .navbar-toggle{order:0;margin-right:var(--dm-space-2)}#site-navbar .navbar-brand{order:1}#site-navbar .navbar-collapse{position:fixed;top:0;left:0;bottom:0;width:86vw;max-width:340px;z-index:1100;margin:0;padding:var(--dm-space-3) 0 var(--dm-space-6);background:var(--dm-navbar-bg, var(--dm-surface));border-top:none;border-right:1px solid var(--dm-border);box-shadow:4px 0 18px #00000059;transform:translate(-100%);transition:transform .25s ease;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}#site-navbar .navbar-collapse.show{transform:translate(0)}body.dm-drawer-open #site-navbar{z-index:1100}#site-navbar .navbar-nav{max-height:none;overflow:visible}#site-navbar .navbar-dropdown-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--dm-space-3) var(--dm-space-4);font-size:var(--dm-font-size-base)}#site-navbar .navbar-caret{margin-left:auto;flex:none;width:16px;height:16px;opacity:.9}#site-navbar .navbar-dropdown-menu{position:static;display:none;min-width:0;width:100%;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:color-mix(in srgb,var(--dm-text) 8%,transparent)}#site-navbar .navbar-dropdown.open>.navbar-dropdown-menu{display:block}#site-navbar .navbar-dropdown-item{padding-left:calc(var(--dm-space-4) + var(--dm-space-5))}.dm-navbar-backdrop{position:fixed;inset:0;z-index:1090;background:#00000073;border:0;padding:0;cursor:pointer}body.dm-drawer-open{overflow:hidden}}.dm-embed{margin:1.5rem 0}.dm-embed-frame{overflow:hidden;border-radius:8px;background:#000}.dm-embed-caption{margin-top:.5rem;font-size:.85rem;color:var(--dm-text-muted, #6b7280);text-align:center}.dm-embed-blocked{margin:1.5rem 0;padding:.75rem 1rem;border:1px dashed var(--dm-border, #d1d5db);border-radius:8px;background:var(--dm-background-alt, #f9fafb);color:var(--dm-text-muted, #6b7280);font-size:.9rem}.dm-menu-missing{margin:1rem 0;padding:.6rem .9rem;border:1px dashed var(--dm-border, #d1d5db);border-radius:8px;background:var(--dm-background-alt, #f9fafb);color:var(--dm-text-muted, #6b7280);font-size:.9rem}.dm-embed-blocked code{font-family:var(--dm-font-mono, monospace);font-size:.85em}.dm-menu-floating{overflow:auto;overscroll-behavior:contain;background:var(--dm-surface);color:var(--dm-text);border:1px solid var(--dm-border);border-radius:var(--dm-radius-md, 8px);box-shadow:var(--dm-shadow-lg);scrollbar-width:thin;scrollbar-color:var(--dm-border) transparent}.dm-menu-floating[style*=--dm-menu-accent]{border-left:3px solid var(--dm-menu-accent)}.dm-menu-floating[data-float-anchor=TR][style*=--dm-menu-accent],.dm-menu-floating[data-float-anchor=BR][style*=--dm-menu-accent],.dm-menu-floating[data-float-anchor=R][style*=--dm-menu-accent]{border-left:1px solid var(--dm-menu-accent);border-right:3px solid var(--dm-menu-accent)}.dm-menu-floating[style*=--dm-menu-panel-opacity]{background:color-mix(in srgb,var(--dm-surface) calc(var(--dm-menu-panel-opacity) * 100%),transparent);backdrop-filter:blur(8px)}.dm-menu-float-bar{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:var(--dm-space-2, .5rem);padding:var(--dm-space-2, .5rem) var(--dm-space-3, .75rem);background:inherit;border-bottom:1px solid var(--dm-border);border-radius:inherit;border-bottom-left-radius:0;border-bottom-right-radius:0}.dm-menu-float-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;font-weight:600;letter-spacing:.02em;color:var(--dm-text-muted, #6b7280)}.dm-menu-float-grip{flex:0 0 auto;width:10px;height:16px;background-image:radial-gradient(currentColor 1px,transparent 1px);background-size:5px 5px;background-position:0 2px;color:var(--dm-text-muted, #6b7280);opacity:.6}.dm-menu-floating[data-float-movable] .dm-menu-float-bar{cursor:grab}.dm-menu-floating.is-dragging,.dm-menu-floating.is-dragging .dm-menu-float-bar{cursor:grabbing}.dm-menu-floating.is-dragging{user-select:none}.dm-menu-floating[data-float-movable] .dm-menu-float-bar{touch-action:none}.dm-menu-float-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:0;border-radius:var(--dm-radius-sm, 4px);background:transparent;color:var(--dm-text);cursor:pointer}.dm-menu-float-toggle:hover{background:var(--dm-hover-bg, rgba(128, 128, 128, .14))}.dm-menu-float-toggle:focus-visible{outline:2px solid var(--dm-primary);outline-offset:1px}.dm-menu-float-icon{position:relative;width:16px;height:2px;background:currentColor;border-radius:1px}.dm-menu-float-icon:before,.dm-menu-float-icon:after{content:"";position:absolute;left:0;width:100%;height:2px;background:currentColor;border-radius:1px}.dm-menu-float-icon:before{top:-5px}.dm-menu-float-icon:after{top:5px}.dm-menu-floating.is-collapsed{width:auto!important;max-height:none!important;overflow:visible;padding:0;background:transparent;border:0;box-shadow:none;backdrop-filter:none;resize:none;min-width:0;min-height:0}.dm-menu-floating.is-collapsed>*:not(.dm-menu-float-bar),.dm-menu-floating.is-collapsed .dm-menu-float-grip,.dm-menu-floating.is-collapsed .dm-menu-float-title{display:none}#site-navbar.dm-menu-floating.is-collapsed>*:not(.dm-menu-float-bar){display:none}#site-navbar.dm-menu-floating.is-collapsed{width:auto!important;max-height:none!important;padding:0;background:transparent;border:0;box-shadow:none;backdrop-filter:none}.dm-menu-floating.is-collapsed .dm-menu-float-bar{padding:0;border:0;background:transparent;cursor:default}.dm-menu-floating.is-collapsed .dm-menu-float-toggle{width:44px;height:44px;border-radius:50%;background:var(--dm-surface);border:1px solid var(--dm-menu-accent, var(--dm-border));box-shadow:var(--dm-shadow-lg)}.navbar-transparent,.dm-menu--variant-transparent,.dm-menu-floating.navbar-transparent,.dm-menu-floating.dm-menu--variant-transparent{background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:none}.navbar-transparent.is-collapsed .dm-menu-float-toggle,.dm-menu--variant-transparent.is-collapsed .dm-menu-float-toggle{background:var(--dm-surface)}.navbar-transparent .dm-menu-float-bar,.dm-menu--variant-transparent .dm-menu-float-bar{border-bottom-color:transparent}.dm-menu-floating[data-float-resizable]:not(.is-collapsed){resize:both;min-width:120px;min-height:48px}@media(max-width:768px){.dm-menu-floating{position:static!important;inset:auto!important;width:auto!important;max-height:none!important;transform:none!important;resize:none!important}.dm-menu-floating[data-float-movable] .dm-menu-float-bar{cursor:default}.dm-menu-floating[data-float-movable] .dm-menu-float-grip{display:none}}.dm-menu--vertical ul,.dm-menu--horizontal ul{list-style:none;margin:0;padding:0}.dm-menu--vertical>ul{display:flex;flex-direction:column;gap:2px}.dm-menu--vertical>ul>li>a{display:block;padding:.4rem .75rem;border-radius:var(--dm-radius-md, 6px);text-decoration:none}.dm-menu--vertical>ul>li>a:hover{background:color-mix(in srgb,var(--dm-text) 8%,transparent)}.dm-menu--vertical ul ul{margin-left:.75rem;border-left:1px solid var(--dm-border, rgba(128, 128, 128, .35));padding-left:.4rem}.dm-menu--horizontal>ul{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1rem}.dm-menu--horizontal>ul>li{position:relative}.dm-menu--horizontal>ul>li>a{display:inline-block;padding:.35rem .5rem;text-decoration:none}.dm-menu--horizontal.dm-menu--align-left>ul{justify-content:flex-start}.dm-menu--horizontal.dm-menu--align-centre>ul{justify-content:center}.dm-menu--horizontal.dm-menu--align-right>ul{justify-content:flex-end}.dm-menu--horizontal.dm-menu--align-spread>ul{justify-content:space-between}.dm-menu--horizontal>ul>li>ul{position:absolute;top:100%;left:0;z-index:40;display:none;min-width:180px;padding:.35rem 0;background:var(--dm-surface);border:1px solid var(--dm-border);border-radius:var(--dm-radius-md, 8px);box-shadow:var(--dm-shadow-lg)}.dm-menu--horizontal>ul>li:hover>ul,.dm-menu--horizontal>ul>li:focus-within>ul{display:block}.dm-menu--horizontal>ul>li>ul a{display:block;padding:.35rem .9rem;text-decoration:none}@media(max-width:768px){.dm-menu--horizontal>ul{flex-direction:column;align-items:stretch}.dm-menu--horizontal>ul>li>ul{position:static;display:block;border:0;box-shadow:none;padding-left:.75rem}}:root{--dm-vnav-width: 240px;--dm-vnav-collapsed-width: 64px;--dm-vnav-edge: 10px}.dm-navbar-override,.dm-contents-override,p:has(>.dm-navbar-override:only-child),p:has(>.dm-contents-override:only-child){display:none}#site-navbar.dm-nav-scroll-hide{transition:transform .25s ease}#site-navbar.dm-nav-scroll-hide.dm-nav-scrolled-away{transform:translateY(-100%)}@media(prefers-reduced-motion:reduce){#site-navbar.dm-nav-scroll-hide,body.dm-vnav-autohide #site-navbar.dm-nav-vertical{transition:none!important}}html.dm-reduced-motion #site-navbar.dm-nav-scroll-hide,html.dm-reduced-motion body.dm-vnav-autohide #site-navbar.dm-nav-vertical{transition:none!important}@media(min-width:993px){#site-navbar.dm-nav-vertical:not(.dm-menu-floating){position:fixed;top:0;bottom:0;height:100vh;height:100dvh;width:var(--dm-vnav-width);flex-direction:column;flex-wrap:nowrap;align-items:stretch;justify-content:flex-start;gap:var(--dm-space-2);padding:var(--dm-space-4) var(--dm-space-3);overflow-y:auto;overscroll-behavior:contain;border-bottom:none;z-index:100}#site-navbar.dm-nav-vertical-left:not(.dm-menu-floating){left:0;right:auto;border-right:1px solid var(--dm-border)}#site-navbar.dm-nav-vertical-right:not(.dm-menu-floating){right:0;left:auto;border-left:1px solid var(--dm-border)}body.dm-vnav-left{padding-left:var(--dm-vnav-width)}body.dm-vnav-right{padding-right:var(--dm-vnav-width)}body.dm-vnav-collapsed.dm-vnav-left{padding-left:var(--dm-vnav-collapsed-width)}body.dm-vnav-collapsed.dm-vnav-right{padding-right:var(--dm-vnav-collapsed-width)}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical:not(.dm-menu-floating){width:var(--dm-vnav-collapsed-width);padding-left:var(--dm-space-2);padding-right:var(--dm-space-2);overflow:visible}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-link,body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown-toggle,body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-brand-text{font-size:0!important;justify-content:center!important;gap:0!important;padding-left:0!important;padding-right:0!important}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-link>svg:first-child,body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown-toggle>svg:first-child{width:20px;height:20px;margin:0}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown-toggle>svg:last-child:not(:first-child),body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-caret{display:none}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical [data-initial]:not(:has(>svg)):before{content:attr(data-initial);font-size:.9rem;font-weight:600}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown{position:relative!important}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown-menu{position:absolute!important;top:0;width:auto!important;min-width:220px!important;padding:var(--dm-space-1) 0!important;background:var(--dm-surface)!important;border:1px solid var(--dm-border)!important;border-radius:var(--dm-radius-md, 6px)!important;box-shadow:var(--dm-shadow-lg)!important;z-index:101}body.dm-vnav-collapsed.dm-vnav-right #site-navbar .navbar-dropdown-menu{right:calc(100% + 8px);left:auto}body.dm-vnav-collapsed.dm-vnav-left #site-navbar .navbar-dropdown-menu{left:calc(100% + 8px);right:auto}body.dm-vnav-collapsed #site-navbar.dm-nav-vertical .navbar-dropdown-menu .navbar-dropdown-item{display:flex!important;align-items:center;gap:var(--dm-space-2);padding:var(--dm-space-2) var(--dm-space-3)!important;font-size:var(--dm-font-size-sm)!important;white-space:nowrap}#site-navbar .dm-nav-collapse-toggle{display:none;align-self:flex-end;width:28px;height:28px;padding:0;border:1px solid var(--dm-border);border-radius:6px;background:transparent;color:var(--dm-text-secondary);cursor:pointer}body.dm-vnav-collapsible #site-navbar .dm-nav-collapse-toggle{display:inline-flex;align-items:center;justify-content:center}body.dm-vnav-collapsed #site-navbar .dm-nav-collapse-toggle{align-self:center}#site-navbar .dm-nav-collapse-toggle:hover{color:var(--dm-text);border-color:var(--dm-primary)}#site-navbar .dm-nav-collapse-toggle svg{width:16px;height:16px}body.dm-vnav-autohide.dm-vnav-left,body.dm-vnav-autohide.dm-vnav-right{padding-left:0;padding-right:0}body.dm-vnav-autohide #site-navbar.dm-nav-vertical:not(.dm-menu-floating){transition:transform .25s ease,box-shadow .25s ease;box-shadow:none}body.dm-vnav-autohide.dm-vnav-right #site-navbar.dm-nav-vertical:not(.dm-menu-floating){transform:translate(calc(100% - var(--dm-vnav-edge)))}body.dm-vnav-autohide.dm-vnav-left #site-navbar.dm-nav-vertical:not(.dm-menu-floating){transform:translate(calc(-100% + var(--dm-vnav-edge)))}body.dm-vnav-autohide #site-navbar.dm-nav-vertical:not(.dm-menu-floating):is(:hover,:focus-within,.dm-nav-revealed){transform:none;box-shadow:var(--dm-shadow-lg)}#site-navbar.dm-nav-vertical .navbar-container{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:var(--dm-space-2);width:100%;min-height:100%;padding:0;margin:0}#site-navbar.dm-nav-vertical .navbar-toggle{display:none!important}#site-navbar.dm-nav-vertical .navbar-brand{padding:0 var(--dm-space-2) var(--dm-space-3);margin:0;width:100%}#site-navbar.dm-nav-vertical .navbar-collapse{display:flex!important;flex-direction:column!important;align-items:stretch!important;width:100%!important;flex-grow:1!important;padding:0!important;border:none!important}#site-navbar.dm-nav-vertical .navbar-nav{display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:2px!important;width:100%!important;flex:none!important;margin:0!important;padding:0!important}#site-navbar.dm-nav-vertical .navbar-nav li,#site-navbar.dm-nav-vertical .navbar-nav .navbar-item{width:100%!important;display:block!important}#site-navbar.dm-nav-vertical .navbar-link,#site-navbar.dm-nav-vertical .navbar-dropdown-toggle{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:var(--dm-space-2)!important;width:100%!important;padding:var(--dm-space-2) var(--dm-space-3)!important;font-size:var(--dm-font-size-sm)!important;text-align:left!important;border-radius:var(--dm-radius-md)!important;white-space:normal!important}#site-navbar.dm-nav-vertical .navbar-link:hover,#site-navbar.dm-nav-vertical .navbar-dropdown-toggle:hover{background-color:color-mix(in srgb,var(--dm-text) 8%,transparent)}#site-navbar.dm-nav-vertical .navbar-dropdown-toggle .navbar-caret{margin-left:auto}#site-navbar.dm-nav-vertical .navbar-dropdown{position:static!important;width:100%!important}#site-navbar.dm-nav-vertical .navbar-dropdown-menu{position:static!important;display:none;width:100%!important;min-width:0!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:color-mix(in srgb,var(--dm-text) 8%,transparent)!important}#site-navbar.dm-nav-vertical .navbar-dropdown.open>.navbar-dropdown-menu{display:block!important}#site-navbar.dm-nav-vertical .navbar-dropdown-item{display:block!important;width:100%!important;padding:var(--dm-space-2) var(--dm-space-3) var(--dm-space-2) calc(var(--dm-space-3) + var(--dm-space-5))!important}#site-navbar.dm-nav-vertical .navbar-actions{display:flex;flex-direction:column;align-items:stretch;margin-left:0;margin-top:auto;padding-top:var(--dm-space-3)}}@media print{body.dm-ctx-printing *{visibility:hidden}body.dm-ctx-printing [data-dm-print],body.dm-ctx-printing [data-dm-print] *{visibility:visible}body.dm-ctx-printing [data-dm-print]{position:absolute;left:0;top:0;width:100%}body.dm-ctx-printing [data-dm-print] .accordion-content{display:block!important;height:auto!important}body.dm-ctx-printing .dm-ctx-hidden{display:none!important}}:where(.page-footer) .footer-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem 1.25rem}:where(.page-footer) .footer-nav li{margin:0}:where(.page-footer) .footer-nav a{color:var(--dm-text-secondary, inherit);text-decoration:none;font-size:.9rem}:where(.page-footer) .footer-nav a:hover,:where(.page-footer) .footer-nav a:focus-visible{color:var(--dm-primary, inherit);text-decoration:underline}:where(.page-footer) .footer-inner--columns{display:block;padding:1.5rem 1.5rem 0}:where(.page-footer) .cms-footer-top{display:grid;grid-template-columns:minmax(12rem,1.4fr) 3fr;gap:2.5rem;padding-bottom:2rem}:where(.page-footer) .cms-footer-brand{display:flex;flex-direction:column;gap:.75rem;min-width:0}:where(.page-footer) .cms-footer-brand-name{display:inline-flex;align-items:center;gap:.5rem;font-size:1.15rem;font-weight:700;color:var(--dm-text, inherit);text-decoration:none}:where(.page-footer) .cms-footer-brand-logo{height:1.75rem;width:auto}:where(.page-footer) .cms-footer-brand-icon{width:1.25rem;height:1.25rem}:where(.page-footer) .cms-footer-blurb{margin:0;max-width:22rem;font-size:.9rem;line-height:1.55;color:var(--dm-text-secondary, inherit)}:where(.page-footer) .cms-footer-brand .footer-social{margin-left:-.35rem}:where(.page-footer) .footer-nav--columns{display:block}:where(.page-footer) .footer-nav--columns>ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:1.5rem 2rem;justify-content:stretch;align-items:start}:where(.page-footer) .cms-footer-col{display:flex;flex-direction:column;gap:.6rem}:where(.page-footer) .cms-footer-col-title{font-size:.78rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--dm-text, inherit)}:where(.page-footer) a.cms-footer-col-title{text-decoration:none}:where(.page-footer) .cms-footer-col>ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}:where(.page-footer) .cms-footer-bottom{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;padding:1rem 0 1.25rem;border-top:1px solid var(--dm-border, rgba(255,255,255,.08));font-size:.85rem}:where(.page-footer) .cms-footer-bottom .cms-footer-copyright{margin:0 auto 0 0}:where(.page-footer) .cms-footer-bottom .footer-nav ul{justify-content:flex-start}:where(.page-footer) .cms-footer-bottom .footer-nav a{font-size:.85rem}:where(.page-footer) .cms-footer-bottom .footer-motion-check{margin-top:0}@media(max-width:720px){:where(.page-footer) .cms-footer-top{grid-template-columns:1fr;gap:1.75rem}:where(.page-footer) .footer-nav--columns>ul{grid-template-columns:repeat(2,minmax(0,1fr))}:where(.page-footer) .cms-footer-bottom .cms-footer-copyright{margin-right:0;flex-basis:100%}}.dm-scribe-controls{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.5rem}.carousel.dm-carousel-custom-background{background-color:var(--dm-carousel-background)!important}.carousel .carousel-arrow{color:var(--dm-carousel-arrow-color, #fff)!important;background:var(--dm-carousel-arrow-background, rgba(15, 23, 42, .84))!important;border:1px solid rgba(255,255,255,.72)!important;box-shadow:0 2px 8px #0f172a57!important}.carousel .carousel-arrow:hover{color:var(--dm-carousel-arrow-color, #fff)!important;background:var(--dm-carousel-arrow-background, #0f172a)!important;filter:brightness(.88)}.carousel .carousel-arrow:focus-visible{outline:3px solid var(--dm-primary, #6495ed);outline-offset:3px}.carousel.dm-carousel-arrows-top .carousel-arrow{top:1rem!important;transform:none!important}.carousel.dm-carousel-arrows-middle .carousel-arrow{top:50%!important;transform:translateY(-50%)!important}.carousel.dm-carousel-arrows-bottom .carousel-arrow{top:auto!important;bottom:1rem!important;transform:none!important}
package/public/js/site.js CHANGED
@@ -1 +1 @@
1
- import{decodeBase64Json as P}from"/public/js/utf8-base64.mjs";import{makeBadgeEl as Y,applyColour as J,applyPill as te,applyFloat as oe,applyHighlight as R,applyItemHighlight as ne,itemHighlightAttrs as ae,isCurrentItem as X,menuAlign as se,applyClasses as O,cssClasses as W}from"/public/js/menu-decor.mjs?v=20261009-hover-darken";import{initFloatingMenus as ie}from"/public/js/menu-float.js?v=20260829-float-panel";import{enhancePickerFields as U,markInvalidFields as G,showValidationPopup as K}from"/public/js/forms.js?v=20261009-form-classes";import{buildWizardSteps as re}from"/public/js/form-steps.mjs";import{applyFormClasses as Q,applySubmitButtons as ce,applyWizardButtons as le}from"/public/js/form-submit.mjs";document.addEventListener("click",f=>{const l=f.target?.closest?.(".dm-banner__dismiss");l&&(f.preventDefault(),l.closest(".dm-banner")?.remove())}),$(()=>{const f=window.__CMS_NAV__||{},l=window.__CMS_SITE__||{};if(l.autoTheme?.enabled){let o=function(e){const a=(e||"07:00").split(":");return+a[0]*60+(+a[1]||0)},s=function(){const e=new Date,a=e.getHours()*60+e.getMinutes();return a>=o(n.dayStart)&&a<o(n.nightStart)?n.dayTheme:n.nightTheme},t=function(e){const a=n.apply&&n.apply[e]||{theme:e,custom:""};Domma.theme.set(a.theme);for(const p of[...document.body.classList])p.startsWith("dm-custom-")&&document.body.classList.remove(p);a.custom&&document.body.classList.add(a.custom)};const n=l.autoTheme;t(s()),setInterval(()=>t(s()),6e4)}const x=$("#site-navbar");if(x.length&&f.brand){let s=function(d,m=0){return Array.isArray(d)?d.filter(u=>!(u&&(u.type==="spacer"||u.type==="theme-switcher"))).filter(u=>!(u&&u.type==="separator"&&m===0)).map(u=>u&&u.type==="separator"?{divider:!0}:Array.isArray(u?.items)?{...u,items:s(u.items,m+1)}:u):d},t=function(d){return Array.isArray(d)?d.filter(m=>!(m&&(m.type==="separator"||m.type==="spacer"||m.type==="theme-switcher"))):[]};const n={...f.brand},o=n.size&&n.size!=="md"?` navbar-brand-${n.size}`:"";if(n.logo||n.icon||n.tagline){let d="";n.logo?d+=`<img src="${n.logo}" class="navbar-brand-logo" alt="${n.text||""}">`:n.icon&&(d+=`<span data-icon="${n.icon}" style="width:1.1em;height:1.1em;margin-right:.35em;vertical-align:middle;"></span>`),n.text&&(d+=`<span class="navbar-brand-text${o}">${n.text}</span>`),n.tagline&&(d+=`<small class="navbar-brand-tagline">${n.tagline}</small>`),n.html=d}else o&&n.text&&(n.html=`<span class="navbar-brand-text${o}">${n.text}</span>`);const e=f.position==="floating",a=f.orientation==="vertical";Domma.elements.navbar("#site-navbar",{brand:n,items:s(f.items||[]),variant:f.variant||"dark",position:e?"static":f.position||"sticky",collapsible:!0,appearOnHover:!!f.appearOnHover}),Domma.icons.scan("#site-navbar");const p=x.get(0);p.classList.add(`dm-nav-align-${se(f)||"centre"}`),a&&x.get(0).classList.add("dm-nav-vertical",f.side==="right"?"dm-nav-vertical-right":"dm-nav-vertical-left");const g=f.dock||{};a&&!e&&de(p,f.side==="right"),!a&&g.hideOnScroll&&me(p),R(p,f),O(p,f.class),e&&(oe(x.get(0),f),ie(x.get(0).parentNode||document));const i=p.querySelector(".navbar-toggle"),c=p.querySelector(".navbar-collapse");if(i&&c){let d=null;const m=()=>{c.classList.contains("show")&&i.click()},u=()=>{d&&(d.remove(),d=null),document.body.classList.remove("dm-drawer-open")},y=()=>{d||(d=document.createElement("div"),d.className="dm-navbar-backdrop",d.addEventListener("click",m),document.body.appendChild(d),document.body.classList.add("dm-drawer-open"))};i.addEventListener("click",()=>{requestAnimationFrame(()=>{c.classList.contains("show")?y():u()})}),c.addEventListener("click",C=>{C.target.closest("a")&&requestAnimationFrame(u)}),document.addEventListener("keydown",C=>{C.key==="Escape"&&c.classList.contains("show")&&m()})}const h=p.querySelector(".navbar-nav");if(h){const d=Array.from(h.children);let m=0;for(const u of f.items||[])if(!(u&&u.type==="separator")){if(u&&u.type==="spacer"){const y=document.createElement("li"),C=["xs","sm","md","lg","xl","flex"].includes(u.size)?u.size:"md";y.className=`dm-menu-spacer dm-menu-spacer--${C}`,y.setAttribute("aria-hidden","true"),h.insertBefore(y,d[m]||null);continue}if(u&&u.type==="theme-switcher"){const y=document.createElement("li");y.className="dm-menu-theme-switcher";const C=document.createElement("span");C.dataset.themeSwitcher="menu",C.dataset.position="inline",y.appendChild(C),h.insertBefore(y,d[m]||null);continue}m++}window.CMSThemeSwitcher?.scan(h)}const b=t(f.items||[]);p.querySelectorAll(".navbar-link[data-index], .navbar-dropdown-item[data-index]").forEach(d=>{const m=b[parseInt(d.dataset.index,10)];if(!m)return;const u=d.dataset.subindex!=null,y=u&&Array.isArray(m.items)?m.items[parseInt(d.dataset.subindex,10)]:m;if(!y)return;y.colour&&J(d,y.colour),y.pill&&!u&&te(d,y.pill),ne(d,y),O(d.closest("li"),y.class);const C=Y(y.badge);C&&d.appendChild(C),X(y.url,location.pathname)&&(d.classList.add("active"),d.setAttribute("aria-current","page"))})}const v=$("#site-footer");if(v.length){let e=function(r){return String(r??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},a=function(r){return e(r).replace(/'/g,"&#39;")},p=function(r){if(r&&r.type==="separator")return'<li class="footer-sep"><hr></li>';if(r&&r.type==="spacer")return`<li class="dm-menu-spacer dm-menu-spacer--${["xs","sm","md","lg","xl","flex"].includes(r.size)?r.size:"md"}" aria-hidden="true"></li>`;if(r&&r.type==="theme-switcher")return'<li class="dm-menu-theme-switcher"><span data-theme-switcher="menu" data-position="inline"></span></li>';const A=a(r.url||"#"),L=e(r.text||""),q=Array.isArray(r.items)&&r.items.length?`<ul>${r.items.map(p).join("")}</ul>`:"",N=ae(r),Z=[N.hover&&` data-menu-item-hover="${a(N.hover)}"`,N.active&&` data-menu-item-active="${a(N.active)}"`].filter(Boolean).join(""),ee=N.accent?` style="--dm-menu-highlight:${a(N.accent)}"`:"",V=W(r.class).join(" ");return`<li${V?` class="${a(V)}"`:""}><a href="${A}"${Z}${ee}>${L}</a>${q}</li>`},g=function(){if(!l.footer)return"";const r=Object.keys(o).filter(L=>n[L]);if(!r.length)return"";const A=W(l.footer.socialClass).join(" ");return`<div class="footer-social">${r.map(L=>{const{label:q,svg:N}=o[L];return`<a href="${n[L]}" target="_blank" rel="noopener noreferrer" aria-label="${q}" class="footer-social-link${A?` ${a(A)}`:""}">${N}</a>`}).join("")}</div>`},b=function(r){if(!r||r.type==="separator"||r.type==="spacer")return"";if(r.type==="theme-switcher")return`<li class="cms-footer-col">${p(r).replace(/^<li[^>]*>|<\/li>$/g,"")}</li>`;const A=Array.isArray(r.items)&&r.items.length?`<ul>${r.items.map(p).join("")}</ul>`:"",L=h(r)?`<span class="cms-footer-col-title">${e(r.text||"")}</span>`:`<a class="cms-footer-col-title" href="${a(r.url||"#")}">${e(r.text||"")}</a>`,q=["cms-footer-col",...W(r.class)].join(" ");return`<li class="${a(q)}">${L}${A}</li>`},m=function(r,A,L=!1){return(r||[]).forEach(q=>{q&&(q.type==="separator"||q.type==="spacer"||q.type==="theme-switcher")||(L&&h(q)||A.push(q),Array.isArray(q.items)&&q.items.length&&m(q.items,A))}),A};const n=l.social||{},o={twitter:{label:"X / Twitter",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.742l7.73-8.835L1.254 2.25H8.08l4.259 5.629L18.244 2.25zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>'},facebook:{label:"Facebook",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>'},instagram:{label:"Instagram",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>'},linkedin:{label:"LinkedIn",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>'},github:{label:"GitHub",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>'},youtube:{label:"YouTube",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M23.495 6.205a3.007 3.007 0 00-2.088-2.088c-1.87-.501-9.396-.501-9.396-.501s-7.507-.01-9.396.501A3.007 3.007 0 00.527 6.205a31.247 31.247 0 00-.522 5.805 31.247 31.247 0 00.522 5.783 3.007 3.007 0 002.088 2.088c1.868.502 9.396.502 9.396.502s7.506 0 9.396-.502a3.007 3.007 0 002.088-2.088 31.247 31.247 0 00.5-5.783 31.247 31.247 0 00-.5-5.805zM9.609 15.601V8.408l6.264 3.602z"/></svg>'}};let s='<div class="footer-inner container">';const t=window.__CMS_FOOTER__||{primary:[],legal:[],copyright:""},i=["columns","row"].includes(l.footer?.layout)?l.footer.layout:"auto",c=i==="columns"||i==="auto"&&t.primary.some(r=>Array.isArray(r?.items)&&r.items.length),h=r=>c&&!r.url&&Array.isArray(r.items)&&r.items.length>0;if(c){const r=f.brand||{},A=r.text||l.title||"",L=r.logo?`<img src="${a(r.logo)}" class="cms-footer-brand-logo" alt="">`:r.icon?'<span class="cms-footer-brand-icon"></span>':"",q=String(l.footer?.blurb||"").trim();s='<div class="footer-inner footer-inner--columns container"><div class="cms-footer-top">',s+=`<div class="cms-footer-brand">${A||L?`<a class="cms-footer-brand-name" href="${a(r.url||"/")}">${L}<span>${e(A)}</span></a>`:""}${q?`<p class="cms-footer-blurb">${e(q)}</p>`:""}${g()}</div>`,t.primary.length&&(s+=`<nav class="footer-nav footer-nav--primary footer-nav--columns" aria-label="Footer"><ul>${t.primary.map(b).join("")}</ul></nav>`),s+='</div><div class="cms-footer-bottom">',t.copyright&&(s+=`<p class="cms-footer-copyright">${e(t.copyright)}</p>`),t.legal.length&&(s+=`<nav class="footer-nav footer-nav--legal" aria-label="Legal"><ul>${t.legal.map(p).join("")}</ul></nav>`),s+="</div>"}else t.copyright&&(s+=`<p>${e(t.copyright)}</p>`),t.primary.length&&(s+=`<nav class="footer-nav footer-nav--primary"><ul>${t.primary.map(p).join("")}</ul></nav>`),t.legal.length&&(s+=`<nav class="footer-nav footer-nav--legal"><ul>${t.legal.map(p).join("")}</ul></nav>`),s+=g();s+="</div>",v.html(s),window.CMSThemeSwitcher?.scan(v.get(0));const d=v.get(0).querySelector(".cms-footer-brand-icon");d&&f.brand?.icon&&d.setAttribute("data-icon",f.brand.icon),O(v.get(0),l.footer?.class);const u=[...m(t.primary,[],!0),...m(t.legal,[])];v.get(0).querySelectorAll(".footer-nav a").forEach((r,A)=>{const L=u[A];if(!L)return;L.colour&&J(r,L.colour);const q=Y(L.badge);q&&r.appendChild(q),X(L.url,location.pathname)&&(r.classList.add("is-active"),r.setAttribute("aria-current","page"))}),R(v.get(0).querySelector(".footer-nav--primary"),{highlight:t.primaryHighlight}),R(v.get(0).querySelector(".footer-nav--legal"),{highlight:t.legalHighlight}),O(v.get(0).querySelector(".footer-nav--primary"),t.primaryClass),O(v.get(0).querySelector(".footer-nav--legal"),t.legalClass);const C=l.footer?.showMotionToggle!==!1,M=S.get("reduced_motion"),D=l.footer?.motionDefault,z=M!=null?!!M:D==="on"?!0:D==="off"?!1:!!(window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches),B=l.footer?.motionControl==="checkbox",I=v.get(0).querySelector(".cms-footer-bottom")||v.get(0).querySelector(".footer-inner");if(C&&I){const r=document.createElement("input");r.type="checkbox",r.className=B?"footer-motion-checkbox":"form-switch-input",r.id="dm-motion-switch",r.checked=z,r.addEventListener("change",function(){S.set("reduced_motion",this.checked),window.location.reload()});const A=document.createElement("span");A.className=B?"footer-motion-label":"form-switch-label",A.textContent="Reduce motion";const L=document.createElement("label");L.className=B?"footer-motion-check":"form-switch footer-motion-switch",L.title="Reduce motion",L.appendChild(r),L.appendChild(A),I.appendChild(L)}}const k=document.getElementById("site-sidebar");k&&ue(k),Domma.icons.scan(),Domma.syntax?.scan&&Domma.syntax.scan();const w=$(".page-body");if(w.length){w.find(".accordion").each(function(){Domma.elements.accordion(this,{allowMultiple:this.dataset.multi==="true"})}),w.find(".tabs").each(function(){Domma.elements.tabs(this)}),w.find(".carousel").each(function(){const n={primary:"--dm-primary",secondary:"--dm-secondary",accent:"--dm-primary",text:"--dm-text",surface:"--dm-surface",background:"--dm-background",success:"--dm-success",warning:"--dm-warning",danger:"--dm-danger",info:"--dm-info"},o=g=>{const i=String(g||"").trim();return i?n[i.toLowerCase()]?`var(${n[i.toLowerCase()]})`:CSS.supports("color",i)?i:"":""},s=o(this.dataset.background),t=o(this.dataset.arrowBackground),e=o(this.dataset.arrowColor);s&&(this.style.setProperty("--dm-carousel-background",s),this.classList.add("dm-carousel-custom-background")),t&&this.style.setProperty("--dm-carousel-arrow-background",t),e&&this.style.setProperty("--dm-carousel-arrow-color",e);const a=["top","middle","bottom"].includes(this.dataset.arrowPosition)?this.dataset.arrowPosition:"middle";this.classList.add(`dm-carousel-arrows-${a}`);const p={autoplay:this.dataset.autoplay==="true",interval:parseInt(this.dataset.interval,10)||5e3,loop:this.dataset.loop!=="false",animation:this.dataset.animation||"slide"};if(this.dataset.animationDuration){const g=parseInt(this.dataset.animationDuration,10);Number.isFinite(g)&&(p.animationDuration=g)}this.dataset.animationEasing&&(p.animationEasing=this.dataset.animationEasing),this.dataset.ctx&&(this._dmCtxSlides=Array.from(this.querySelectorAll(".carousel-slide")).map(g=>g.cloneNode(!0)),this._dmCarouselOpts=p),this._dmCarousel=Domma.elements.carousel(this,p)}),w.find(".dm-countdown").each(function(){const n={autoStart:!0},o=String(this.dataset.format||"").trim(),s=String(this.dataset.to||"").trim(),t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(s),e=t?new Date(+t[1],+t[2]-1,+t[3]).getTime():s?new Date(s).getTime():NaN;Number.isFinite(e)?n.duration=Math.max(0,e-Date.now()):this.dataset.duration&&(n.duration=(parseInt(this.dataset.duration,10)||0)*1e3);const a=/^dd:/i.test(o);n.format=a?"hh:mm:ss":o||(n.duration>=36e5?"hh:mm:ss":"mm:ss");const p=this,g=c=>String(c).padStart(2,"0"),i=c=>{const h=Math.max(0,Math.floor(c/1e3)),b=p.querySelector(".dm-timer-time");b&&(b.textContent=`${g(Math.floor(h/86400))}:${g(Math.floor(h%86400/3600))}:${g(Math.floor(h%3600/60))}:${g(h%60)}`)};a&&(n.onTick=i),Domma.elements.timer(this,n),a&&i(n.duration||0)}),w.find("[data-tooltip]").each(function(){Domma.elements.tooltip(this,{content:$(this).data("tooltip"),position:$(this).data("tooltip-position")||"top"})}),w.find(".dm-progression").each(function(){const n=Array.from(this.querySelectorAll(".dm-progression-item")).map(t=>{const e={title:t.querySelector(".dm-progression-item-title")?.textContent?.trim()||"",description:t.querySelector(".dm-progression-item-body")?.innerHTML?.trim()||""};return t.dataset.date&&(e.date=t.dataset.date),t.dataset.status&&(e.status=t.dataset.status),t.dataset.eventIcon&&(e.icon=t.dataset.eventIcon),t.dataset.entryId&&(e._entryId=t.dataset.entryId),e}),o=this.dataset.layout==="centred"?"centered":this.dataset.layout||"vertical",s=Domma.elements.progression(this,{layout:o,theme:this.dataset.theme||"minimal",mode:this.dataset.mode||"timeline",statusIcons:!0,allowHtml:!0,...n.length?{items:n}:{}});if((this.dataset.mode||"timeline")==="timeline"){const t={completed:{label:"Completed",icon:"check-circle",tone:"success"},planned:{label:"Planned",icon:"circle",tone:"secondary"},"in-progress":{label:"In progress",icon:"clock",tone:"primary"},blocked:{label:"Blocked",icon:"alert-circle",tone:"danger"}};this.querySelectorAll(".dm-progression-item").forEach((e,a)=>{const p=n[a];if(!p)return;const g=e.querySelector(".dm-progression-title");if(p.icon&&g){const c=document.createElement("span");c.dataset.icon=p.icon,c.style.cssText="display:inline-flex;vertical-align:middle;margin-right:.4em",c.setAttribute("aria-hidden","true"),g.prepend(c)}const i=t[p.status];if(i&&g){const c=document.createElement("span");c.className=`badge badge-${i.tone} cms-timeline-status`,c.style.cssText="display:inline-flex;align-items:center;gap:.35em;margin:.4rem 0";const h=document.createElement("span");h.dataset.icon=i.icon,h.dataset.iconSize="14",h.setAttribute("aria-hidden","true"),c.append(h,document.createTextNode(i.label)),g.after(c)}})}Domma.icons.scan(this),n.length&&(this._dmCtx={instance:s,items:n})});try{Domma.effects.reveal(".page-body .hero",{animation:"slide-up",duration:480,threshold:.06,stagger:60,once:!1})}catch{}document.querySelectorAll(".page-body .row[data-reveal]").forEach(n=>{const o=n.dataset.revealMode||"stagger",s=n.dataset.revealAnimation||"slide-up",t=parseInt(n.dataset.revealDuration,10)||400,e=parseInt(n.dataset.revealStagger,10)||60,a=parseInt(n.dataset.revealDelay,10)||0,p=n.dataset.revealDirection==="rtl",g=Array.from(n.children),i={"slide-up":"translateY(30px)","slide-down":"translateY(-30px)","slide-left":"translateX(30px)","slide-right":"translateX(-30px)",zoom:"scale(0.85)",flip:"perspective(600px) rotateX(15deg)"};g.forEach((c,h)=>{c.style.opacity="0",c.style.transform=i[s]||"",c.style.transition=`opacity ${t}ms ease, transform ${t}ms ease`;const b=p?g.length-1-h:h;c.style.transitionDelay=o==="stagger"?`${a+b*e}ms`:`${a}ms`}),requestAnimationFrame(()=>requestAnimationFrame(()=>{const c=new IntersectionObserver(h=>{h.forEach(b=>{b.isIntersecting&&(b.target.offsetWidth,b.target.style.opacity="1",b.target.style.transform="none",c.unobserve(b.target))})},{threshold:.1});g.forEach(h=>c.observe(h))}))}),w.find(".card[data-collapsible]").each(function(){const n=this.querySelector(".card-header");n&&n.addEventListener("click",()=>this.classList.toggle("is-collapsed"))}),w.find(".dm-so-trigger").each(function(){this.addEventListener("click",()=>{const n=this.dataset.soTarget,o=document.getElementById(n);if(!o)return;const s=E.slideover({title:o.dataset.soTitle||"",size:o.dataset.soSize||"md",position:o.dataset.soPosition||"right"});o.style.display="",s.setContent(o),s.open()})})}if(typeof $.setup=="function"){const n=Object.assign({},window.__CMS_DCONFIG__||{});if(document.querySelectorAll(".dm-page-config[data-config]").forEach(o=>{try{const s=P(o.dataset.config);Object.assign(n,s)}catch{}}),Object.keys(n).length>0){const o={};for(const[s,t]of Object.entries(n)){const e=t?.events?.click,{confirm:a,toast:p,alert:g,prompt:i,...c}=e||{};a||p||g||i?($(s).on("click",async function(b){if(b.preventDefault(),a&&!await E.confirm(a))return;let d=null;if(!(i&&(d=await E.prompt(i,{inputPlaceholder:c.promptPlaceholder||"",inputValue:c.promptDefault||""}),d===null))){if(c.target){const m=$(c.target);c.toggleClass&&m.toggleClass(c.toggleClass),c.addClass&&m.addClass(c.addClass),c.removeClass&&m.removeClass(c.removeClass),d!==null&&(c.setText&&m.text(d),c.setVal&&m.val(d),c.setAttr&&m.attr(c.setAttr,d))}c.href&&(window.location.href=c.href),p&&E.toast(p,{type:c.toastType||"success"}),g&&E.alert(g)}}),Object.keys(c).length&&(o[s]={...t,events:{...t.events,click:c}})):o[s]=t}$.setup(o)}}w.length&&j(w.get(0))}),window.wireCTAButtons=j;function j(f){f.querySelectorAll(".dm-cta-trigger").forEach(l=>{l.__ctaWired||(l.__ctaWired=!0,l.addEventListener("click",async()=>{const x=l.dataset.action,v=l.dataset.entry,k=l.dataset.confirm;let w=S.get("auth_token");if(!w){E.toast("Please log in to perform this action.",{type:"warning"});return}if(k&&!await E.confirm(k))return;const n=Array.from(l.childNodes).map(s=>s.cloneNode(!0));l.disabled=!0,l.textContent="Running\u2026";const o=s=>fetch(`/api/actions/${x}/public`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify(l.dataset.scope?{entryId:v,scope:l.dataset.scope}:{entryId:v})});try{let s=await o(w);if(s.status===401){const e=S.get("auth_refresh_token");if(e){const a=await fetch("/api/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:e})});if(a.ok){const{token:p}=await a.json();S.set("auth_token",p),w=p,s=await o(w)}}}const t=await s.json().catch(()=>({}));if(!s.ok||t.success===!1)throw new Error(t.error||t.message||`Error ${s.status}`);E.toast(t.message||"Action completed.",{type:"success"})}catch(s){E.toast(s.message||"Action failed.",{type:"error"})}finally{l.disabled=!1,l.textContent="",n.forEach(s=>l.appendChild(s)),Domma.icons.scan(l)}}))})}(function(){const l=document.querySelectorAll('.dm-collection-hydrate[data-collection-scope="mine"]');if(!l.length)return;const x=S.get("auth_token");function v(w,n){const o=document.createElement("div");o.className="dm-collection-display dm-collection-empty";const s=document.createElement("p");if(n){s.appendChild(document.createTextNode("Please "));const t=document.createElement("a");t.href="/login",t.textContent="sign in",s.appendChild(t),s.appendChild(document.createTextNode(" to view your entries."))}else s.textContent=w;return o.appendChild(s),o}function k(w,n){const o=document.createElement("template");o.innerHTML=n||"",w.replaceWith(o.content)}l.forEach(async w=>{const n=w.dataset.collectionAttrs;if(!n)return;if(!x){w.replaceChildren(v("",!0));return}const o=s=>fetch("/api/collections/render-scope",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify({attrs:n})});try{let s=x,t=await o(s);if(t.status===401){const a=S.get("auth_refresh_token");if(a){const p=await fetch("/api/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:a})});if(p.ok){const{token:g}=await p.json();S.set("auth_token",g),s=g,t=await o(s)}}}if(!t.ok){const{error:a}=await t.json().catch(()=>({}));w.replaceChildren(v(a||"Unable to load entries.",!1));return}const{html:e}=await t.json();k(w,e),window.DommaCollectionBrowser?.hydrate&&window.DommaCollectionBrowser.hydrate(document)}catch{w.replaceChildren(v("Unable to load entries.",!1))}}),setTimeout(()=>{typeof Domma<"u"&&Domma.icons?.scan&&Domma.icons.scan(),typeof Domma<"u"&&Domma.syntax?.scan&&Domma.syntax.scan(),j(document.body)},100)})(),(function(){const l=document.querySelectorAll("[data-collection-table]");!l.length||typeof T>"u"||!T.create||l.forEach(x=>{let v;try{v=P(x.dataset.payload)}catch{return}const{columns:k,rows:w,search:n,sortable:o,exportable:s,pageSize:t,empty:e,ctaConfig:a,slug:p,exportCfg:g}=v;if(!k?.length)return;if(a){const h=k.findIndex(b=>b.key==="_cta");h!==-1&&(k[h]={key:"_cta",title:"",render:(b,d)=>{const m=document.createElement("button");if(m.className=`btn btn-${a.style||"primary"} dm-cta-trigger`,m.dataset.action=a.action||"",a.scope&&(m.dataset.scope=a.scope),m.dataset.entry=d._entryId||"",a.confirm&&(m.dataset.confirm=a.confirm),a.icon){const u=document.createElement("span");u.dataset.icon=a.icon,m.appendChild(u),m.appendChild(document.createTextNode(" "))}return m.appendChild(document.createTextNode(a.label||"Run")),m}})}const i="col-table-"+Math.random().toString(36).slice(2,7),c=document.createElement("div");c.id=i,x.replaceChildren(c),T.create("#"+i,{data:w,columns:k,search:n,sortable:o,exportable:s,pageSize:t,emptyMessage:e}),a&&j(c),x._dmTable={columns:k,rows:w,slug:p,exportCfg:g,render(h){T.create("#"+i,{data:h,columns:k,search:n,sortable:o,exportable:s,pageSize:t,emptyMessage:e}),a&&j(c)}}})})(),(function(){const l=document.querySelectorAll("[data-form-inline]");if(!l.length||typeof F>"u")return;function x(o){const s=o&&o.logic;return!!(s&&(s.visibility||s.requirement))}function v(o,s){const t={};return(o||[]).forEach(e=>{if(e.type==="page-break"||e.type==="spacer"||!e.name)return;const a=e.type==="chooser"||!!(e.variant&&["select","radio","checkbox-group"].includes(e.type)),p=e.type==="checkbox"?"boolean":e.type==="date"||e.type==="icon"||e.type==="image"?"string":a?"chooser":e.type,g={...e.formConfig||{}};g.span==="full"&&s&&(g.span=s);const i={type:p,required:x(e)?!1:e.required,label:e.label,options:e.options,formConfig:{...e.placeholder&&{placeholder:e.placeholder},...e.helper&&{hint:e.helper},...e.tooltip&&{tooltip:e.tooltip},...g}};e.minLength!==void 0&&(i.minLength=e.minLength),e.maxLength!==void 0&&(i.maxLength=e.maxLength),e.min!==void 0&&(i.min=e.min),e.max!==void 0&&(i.max=e.max),a&&(e.variant&&(i.variant=e.variant),(e.multiple||e.type==="checkbox-group")&&(i.multiple=!0),e.density&&(i.density=e.density),e.columns&&(i.columns=e.columns),e.accent&&(i.accent=e.accent),e.accentStyle&&(i.accentStyle=e.accentStyle),e.glow&&(i.glow=!0),e.glowColour&&(i.glowColour=e.glowColour),e.shadow&&(i.shadow=e.shadow),e.shadowColour&&(i.shadowColour=e.shadowColour)),t[e.name]=i}),t}function k(o){const s={};return(o||[]).forEach(t=>{if(!(!t.name||t.type==="page-break"||t.type==="spacer")&&(t.type==="select"||t.type==="multiselect")&&t.required){const e=(t.options||[])[0];e&&(s[t.name]=typeof e=="object"?e.value:e)}}),s}function w(o,s){(s||[]).forEach(t=>{if(t.type!=="date"||!t.name)return;const e=o.querySelector(`[name="${t.name}"]`);e&&e.type!=="date"&&(e.type="date")})}function n(o,s,t){let e=o.querySelector(".cms-form-message");e||(e=document.createElement("p"),e.className="cms-form-message",o.appendChild(e)),e.textContent=s,e.style.cssText=t?"color:var(--dm-danger);margin-top:.75rem;":"color:var(--dm-success);margin-top:.75rem;"}l.forEach(o=>{let s;try{s=P(o.dataset.formInline)}catch{return}const t=s.fields||[],e=s.settings||{},a=Number(e.columns)===3?3:2,p=e.layout||"grid",g=t.some(m=>m.type==="page-break"),i=async m=>{if(o.dataset.triggerBlocked==="true"){const u=o._formLogicRuntime,y=u&&u.submitBlock?u.submitBlock().reasons:[];n(o,y.join(" ")||"This form cannot be submitted yet.",!0);const C=new Error("Blocked by a form trigger");throw C.formSubmitFailed=!0,C}try{const u=o.querySelector(".fb-form-honeypot"),y=u?.querySelector('input[type="text"]')||null,C=u?.querySelector('[name="_t"]')||null,M=Object.assign({},m);delete M._t,u?.dataset.hpName&&delete M[u.dataset.hpName],y!==null&&(M._hp=y.value),C!==null&&(M._t=C.value);const D=await H.post(`/api/forms/submit/${s.slug}`,M);if(D&&D.error){n(o,D.error,!0);const z=new Error(D.error);throw z.formSubmitFailed=!0,z}if(D?.redirect){window.location.href=D.redirect;return}for(;o.firstChild;)o.removeChild(o.firstChild);n(o,D?.message||e.successMessage||"Thank you for your submission.",!1)}catch(u){throw u.formSubmitFailed||n(o,u.message||"Submission failed. Please try again.",!0),u}},c=Date.now();function h(m){const u=m.querySelector("form");if(!u||u.querySelector(".fb-form-honeypot"))return;const y=document.createElement("div");y.className="fb-form-honeypot",y.setAttribute("aria-hidden","true");const C=document.createElement("input");C.name=u.querySelector('[name="website"]')?"_website":"website",y.dataset.hpName=C.name,C.type="text",C.tabIndex=-1,C.autocomplete="url",C.placeholder="https://",y.appendChild(C);const M=document.createElement("input");M.name="_t",M.type="hidden",M.value=c,y.appendChild(M),u.appendChild(y)}function b(m){if(!window.FormLogicEngine||!t.some(y=>y.logic||Array.isArray(y.triggers)&&y.triggers.length))return null;const u=new window.FormLogicEngine.FormLogicRuntime(s,o,m?{baseValues:m}:void 0);if(u.init(),o._formLogicRuntime=u,o._formLogicObserved)return u;if(o._formLogicObserved=!0,o.parentNode&&typeof MutationObserver<"u"){const y=new MutationObserver(function(C){for(const M of C)for(const D of M.removedNodes)if(D===o||D.nodeType===1&&D.contains&&D.contains(o)){o._formLogicRuntime&&o._formLogicRuntime.destroy(),y.disconnect();return}});y.observe(o.parentNode,{childList:!0,subtree:!1}),o._formLogicObserver=y}return u}let d=!1;if(o.addEventListener("dm-form-end",m=>{const u=m.detail?.validation;if(u&&!u.valid){G(o,u.missing),K(u);return}d||(d=!0,i(m.detail?.values||{}).catch(()=>{}).finally(()=>{d=!1}))}),g&&F.wizard){const m=re(t,s.title),u=m.map(I=>({title:I.title,description:I.description,fields:v(I.fields,a)})),y=m.map(I=>I.fields);let C=0,M=null,D=null;const z=I=>{const r=window.FormLogicEngine;if(!r||!r.validateFields)return;const A=r.validateFields(o,y[C]||[]);A.valid||(I.preventDefault(),I.stopImmediatePropagation(),G(o,A.missing),K(A))},B=()=>{const I=y[C]||t;le(o,e),Q(o,e,I),w(o,I),U(o,I),e.honeypot!==!1&&h(o),M&&M.destroy(),M=b(D?.getStepData?D.getStepData():void 0),o.querySelectorAll(".wizard-next, .wizard-submit").forEach(r=>r.addEventListener("click",z,!0))};D=F.wizard(o,{schema:{steps:u},layout:p,columns:a,finishText:e.submitText||"Finish",onSubmit:i,onStepChange:I=>{C=I,setTimeout(B,0)}}),o.addEventListener("dm-form-trigger",I=>{if(I.detail?.type!=="goto-step"||!D?.goToStep)return;const r=Number(I.detail.action.step);!Number.isFinite(r)||r<0||r>=u.length||r!==C&&D.goToStep(r)}),Promise.resolve(D).then(B)}else if(F.render){const m=F.render(o,v(t,a),k(t),{submitText:e.submitText||"Submit",layout:p,columns:a,onSubmit:i});Promise.resolve(m).then(function(){ce(o,e,p),Q(o,e,t),w(o,t),U(o,t),e.honeypot!==!1&&h(o),b()})}})})();function de(f,l){const x=document.body,v=x.classList,k=new Set((x.dataset.railSite||"").split(" ").filter(Boolean)),w=()=>window.matchMedia("(min-width: 993px)").matches;f.querySelectorAll(".navbar-link, .navbar-dropdown-toggle").forEach(a=>{const p=a.textContent.trim();p&&(a.setAttribute("title",p),a.querySelector("svg, [data-icon]")||(a.dataset.initial=p.charAt(0).toUpperCase()))});const n=document.createElement("button");n.type="button",n.className="dm-nav-collapse-toggle";const o=()=>{const a=v.contains("dm-vnav-collapsed");n.setAttribute("aria-pressed",String(a)),n.setAttribute("aria-label",a?"Expand menu":"Collapse menu"),n.title=n.getAttribute("aria-label");const p=l?"chevrons-left":"chevrons-right",g=l?"chevrons-right":"chevrons-left";n.innerHTML=`<span data-icon="${a?p:g}"></span>`,window.Domma&&Domma.icons&&Domma.icons.scan(n)},s=a=>{v.toggle("dm-vnav-collapsed",a),S.set("nav_collapsed",a),o()};n.addEventListener("click",()=>s(!v.contains("dm-vnav-collapsed"))),o();const t=f.querySelector(".navbar-container")||f;t.insertBefore(n,t.firstChild?.nextSibling||null);const e=a=>{v.toggle("dm-vnav-autohide",a),v.toggle("dm-vnav-collapsible",!a&&k.has("collapsible")),a?v.remove("dm-vnav-collapsed"):k.has("collapsible")&&S.get("nav_collapsed")===!0&&v.add("dm-vnav-collapsed"),f.classList.remove("dm-nav-revealed"),o()};f.addEventListener("pointerdown",a=>{v.contains("dm-vnav-autohide")&&a.pointerType!=="mouse"&&!f.classList.contains("dm-nav-revealed")&&(f.classList.add("dm-nav-revealed"),a.preventDefault())}),document.addEventListener("pointerdown",a=>{f.contains(a.target)||f.classList.remove("dm-nav-revealed")}),window.E&&typeof E.contextMenu=="function"&&E.contextMenu(f,{items:()=>{const a=v.contains("dm-vnav-autohide"),p=v.contains("dm-vnav-collapsed"),g=S.has("nav_autohide")||S.has("nav_collapsed");return[{header:"Menu"},{label:p?"Expand menu":"Collapse to icons",icon:p?"maximize":"minimize",disabled:!w()||a||!k.has("collapsible"),action:()=>s(!p)},{label:a?"Keep on screen":"Hide when not in use",icon:a?"eye":"eye-off",disabled:!w(),action:()=>{S.set("nav_autohide",!a),e(!a)}},{type:"divider"},{label:"Reset to the site's setting",icon:"refresh",disabled:!g,action:()=>{S.remove("nav_autohide"),S.remove("nav_collapsed"),e(k.has("autohide")),v.toggle("dm-vnav-collapsed",!k.has("autohide")&&k.has("start-collapsed")),o()}}]}})}function me(f){f.classList.add("dm-nav-scroll-hide");let l=window.scrollY,x=!1;window.addEventListener("scroll",()=>{x||(x=!0,requestAnimationFrame(()=>{x=!1;const v=window.scrollY,k=f.matches(":focus-within")||f.querySelector(".navbar-dropdown.open, .navbar-collapse.show");v>l&&v>f.offsetHeight&&!k?f.classList.add("dm-nav-scrolled-away"):v<l&&f.classList.remove("dm-nav-scrolled-away"),l=v}))},{passive:!0})}function ue(f){let l={};try{l=JSON.parse(f.dataset.contents||"{}")}catch{}const x=f.closest(".site-main"),v=document.querySelector(".site-content"),k=new Set(String(l.exclude||"").split(",").map(i=>i.trim().toLowerCase()).filter(Boolean)),w=i=>!i.closest(".hero, .card, .accordion, .tabs, figure, #site-sidebar"),n=i=>(v?[...v.querySelectorAll(i)]:[]).filter(w).filter(c=>!k.has(c.textContent.trim().toLowerCase())),o=l.headings==="h2"?n("h2"):l.headings==="h3"?n("h3"):l.headings==="h2h3"?n("h2, h3"):n("h2").length?n("h2"):n("h3");if(!o.length){x?.classList.add("no-sidebar-items");return}const s=new Set([...document.querySelectorAll("[id]")].map(i=>i.id)),t=document.createElement("nav");t.className="dm-contents",t.setAttribute("aria-label",l.title||"Page contents"),l.hover&&(t.dataset.menuHover=l.hover),l.selected&&(t.dataset.menuActive=l.selected),l.accent&&t.style.setProperty("--dm-menu-highlight",l.accent.startsWith("#")?l.accent:`var(--dm-${l.accent})`),l.font&&(t.style.fontFamily=l.font),l.fontSize&&(t.style.fontSize=l.fontSize),l.fontWeight&&(t.style.fontWeight=l.fontWeight);const e=document.createElement("div");e.className="dm-contents-head";const a=document.createElement("p");a.className="dm-contents-title",a.textContent=l.title||"",e.appendChild(a),t.appendChild(e);const p=document.createElement("ol");p.className="dm-contents-list"+(l.numbered?" is-numbered":"");const g=[];for(const i of o){if(!i.id){const b=(i.textContent||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"section";let d=b;for(let m=2;s.has(d);m++)d=`${b}-${m}`;s.add(d),i.id=d}const c=document.createElement("li");c.className=`dm-contents-item dm-contents-${i.tagName.toLowerCase()}`;const h=document.createElement("a");h.href=`#${i.id}`,h.textContent=i.textContent.trim(),c.appendChild(h),p.appendChild(c),g.push([i,h])}if(t.appendChild(p),f.replaceChildren(t),l.scrollSpy!==!1&&"IntersectionObserver"in window){const i=new Map,c=()=>{const b=g.find(([d])=>i.get(d))||null;g.forEach(([,d])=>{const m=b&&d===b[1];d.classList.toggle("is-active",!!m),m?d.setAttribute("aria-current","location"):d.removeAttribute("aria-current")})},h=new IntersectionObserver(b=>{b.forEach(d=>i.set(d.target,d.isIntersecting)),c()},{rootMargin:"-80px 0px -60% 0px"});g.forEach(([b])=>h.observe(b))}if(x?.classList.contains("contents-collapsible")){const i=document.createElement("button");i.type="button",i.className="dm-contents-toggle";const c=()=>{const h=x.classList.contains("contents-collapsed");i.setAttribute("aria-expanded",String(!h)),i.setAttribute("aria-label",h?"Show the contents":"Hide the contents"),i.title=i.getAttribute("aria-label"),i.innerHTML=`<span data-icon="${h?"list":"x"}"></span>`,window.Domma?.icons&&Domma.icons.scan(i)};i.addEventListener("click",()=>{S.set("contents_collapsed",x.classList.toggle("contents-collapsed")),c()}),c(),e.insertBefore(i,e.firstChild)}if(x?.classList.contains("contents-floating")&&l.movable){t.classList.add("is-movable");const i=S.get("contents_position");i&&Number.isFinite(i.x)&&Object.assign(f.style,{left:`${i.x}px`,top:`${i.y}px`,right:"auto",bottom:"auto"}),e.addEventListener("pointerdown",c=>{if(c.target.closest("button"))return;const h=f.getBoundingClientRect(),b=c.clientX-h.left,d=c.clientY-h.top,m=y=>{const C=Math.max(0,Math.min(window.innerWidth-h.width,y.clientX-b)),M=Math.max(0,Math.min(window.innerHeight-40,y.clientY-d));Object.assign(f.style,{left:`${C}px`,top:`${M}px`,right:"auto",bottom:"auto"})},u=()=>{document.removeEventListener("pointermove",m),S.set("contents_position",{x:parseInt(f.style.left,10),y:parseInt(f.style.top,10)})};document.addEventListener("pointermove",m),document.addEventListener("pointerup",u,{once:!0})})}window.E&&typeof E.contextMenu=="function"&&E.contextMenu(f,{items:()=>{const i=x?.classList.contains("contents-collapsible"),c=x?.classList.contains("contents-collapsed"),h=g.find(([,b])=>b.classList.contains("is-active"));return[{header:"Contents"},...i?[{label:c?"Show the contents":"Collapse to a button",icon:c?"list":"minimize",action:()=>f.querySelector(".dm-contents-toggle")?.click()}]:[],{label:"Copy a link to this section",icon:"link",disabled:!h,action:async()=>{const b=`${location.origin}${location.pathname}#${h[0].id}`;try{await _.copyToClipboard(b),E.toast("Link copied.",{type:"success"})}catch{E.toast("Could not copy the link.",{type:"error"})}}},{label:"Back to the top",icon:"arrow-up",action:()=>window.scrollTo({top:0,behavior:"smooth"})}]}}),x?.classList.contains("contents-autohide")&&(f.addEventListener("pointerdown",i=>{i.pointerType!=="mouse"&&!f.classList.contains("is-revealed")&&(f.classList.add("is-revealed"),i.preventDefault())}),document.addEventListener("pointerdown",i=>{f.contains(i.target)||f.classList.remove("is-revealed")}))}
1
+ import{decodeBase64Json as P}from"/public/js/utf8-base64.mjs";import{makeBadgeEl as Y,applyColour as J,applyPill as te,applyFloat as oe,applyHighlight as R,applyItemHighlight as ne,itemHighlightAttrs as ae,isCurrentItem as X,menuAlign as se,applyClasses as O,cssClasses as W}from"/public/js/menu-decor.mjs?v=20261009-hover-darken";import{initFloatingMenus as ie}from"/public/js/menu-float.js?v=20260829-float-panel";import{enhancePickerFields as U,markInvalidFields as G,showValidationPopup as K}from"/public/js/forms.js?v=20261009-form-classes";import{buildWizardSteps as re}from"/public/js/form-steps.mjs";import{applyFormClasses as Q,applySubmitButtons as ce,applyWizardButtons as le}from"/public/js/form-submit.mjs";document.addEventListener("click",h=>{const l=h.target?.closest?.(".dm-banner__dismiss");l&&(h.preventDefault(),l.closest(".dm-banner")?.remove())}),$(()=>{const h=window.__CMS_NAV__||{},l=window.__CMS_SITE__||{};if(l.autoTheme?.enabled){let o=function(e){const a=(e||"07:00").split(":");return+a[0]*60+(+a[1]||0)},s=function(){const e=new Date,a=e.getHours()*60+e.getMinutes();return a>=o(n.dayStart)&&a<o(n.nightStart)?n.dayTheme:n.nightTheme},t=function(e){const a=n.apply&&n.apply[e]||{theme:e,custom:""};Domma.theme.set(a.theme);for(const u of[...document.body.classList])u.startsWith("dm-custom-")&&document.body.classList.remove(u);a.custom&&document.body.classList.add(a.custom)};const n=l.autoTheme;t(s()),setInterval(()=>t(s()),6e4)}const x=$("#site-navbar");if(x.length&&h.brand){let s=function(d,m=0){return Array.isArray(d)?d.filter(p=>!(p&&(p.type==="spacer"||p.type==="theme-switcher"))).filter(p=>!(p&&p.type==="separator"&&m===0)).map(p=>p&&p.type==="separator"?{divider:!0}:Array.isArray(p?.items)?{...p,items:s(p.items,m+1)}:p):d},t=function(d){return Array.isArray(d)?d.filter(m=>!(m&&(m.type==="separator"||m.type==="spacer"||m.type==="theme-switcher"))):[]};const n={...h.brand},o=n.size&&n.size!=="md"?` navbar-brand-${n.size}`:"";if(n.logo||n.icon||n.tagline){let d="";n.logo?d+=`<img src="${n.logo}" class="navbar-brand-logo" alt="${n.text||""}">`:n.icon&&(d+=`<span data-icon="${n.icon}" style="width:1.1em;height:1.1em;margin-right:.35em;vertical-align:middle;"></span>`),n.text&&(d+=`<span class="navbar-brand-text${o}">${n.text}</span>`),n.tagline&&(d+=`<small class="navbar-brand-tagline">${n.tagline}</small>`),n.html=d}else o&&n.text&&(n.html=`<span class="navbar-brand-text${o}">${n.text}</span>`);const e=h.position==="floating",a=h.orientation==="vertical";Domma.elements.navbar("#site-navbar",{brand:n,items:s(h.items||[]),variant:h.variant||"dark",position:e?"static":h.position||"sticky",collapsible:!0,appearOnHover:!!h.appearOnHover}),Domma.icons.scan("#site-navbar");const u=x.get(0);u.classList.add(`dm-nav-align-${se(h)||"centre"}`),a&&x.get(0).classList.add("dm-nav-vertical",h.side==="right"?"dm-nav-vertical-right":"dm-nav-vertical-left");const f=h.dock||{};a&&!e&&de(u,h.side==="right"),!a&&f.hideOnScroll&&me(u),R(u,h),O(u,h.class),e&&(oe(x.get(0),h),ie(x.get(0).parentNode||document));const i=u.querySelector(".navbar-toggle"),c=u.querySelector(".navbar-collapse");if(i&&c){let d=null;const m=()=>{c.classList.contains("show")&&i.click()},p=()=>{d&&(d.remove(),d=null),document.body.classList.remove("dm-drawer-open")},y=()=>{d||(d=document.createElement("div"),d.className="dm-navbar-backdrop",d.addEventListener("click",m),document.body.appendChild(d),document.body.classList.add("dm-drawer-open"))};i.addEventListener("click",()=>{requestAnimationFrame(()=>{c.classList.contains("show")?y():p()})}),c.addEventListener("click",C=>{C.target.closest("a")&&requestAnimationFrame(p)}),document.addEventListener("keydown",C=>{C.key==="Escape"&&c.classList.contains("show")&&m()})}const g=u.querySelector(".navbar-nav");if(g){const d=Array.from(g.children);let m=0;for(const p of h.items||[])if(!(p&&p.type==="separator")){if(p&&p.type==="spacer"){const y=document.createElement("li"),C=["xs","sm","md","lg","xl","flex"].includes(p.size)?p.size:"md";y.className=`dm-menu-spacer dm-menu-spacer--${C}`,y.setAttribute("aria-hidden","true"),g.insertBefore(y,d[m]||null);continue}if(p&&p.type==="theme-switcher"){const y=document.createElement("li");y.className="dm-menu-theme-switcher";const C=document.createElement("span");C.dataset.themeSwitcher="menu",C.dataset.position="inline",y.appendChild(C),g.insertBefore(y,d[m]||null);continue}m++}window.CMSThemeSwitcher?.scan(g)}const b=t(h.items||[]);u.querySelectorAll(".navbar-link[data-index], .navbar-dropdown-item[data-index]").forEach(d=>{const m=b[parseInt(d.dataset.index,10)];if(!m)return;const p=d.dataset.subindex!=null,y=p&&Array.isArray(m.items)?m.items[parseInt(d.dataset.subindex,10)]:m;if(!y)return;y.colour&&J(d,y.colour),y.pill&&!p&&te(d,y.pill),ne(d,y),O(d.closest("li"),y.class);const C=Y(y.badge);C&&d.appendChild(C),X(y.url,location.pathname)&&(d.classList.add("active"),d.setAttribute("aria-current","page"))})}const v=$("#site-footer");if(v.length){let e=function(r){return String(r??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},a=function(r){return e(r).replace(/'/g,"&#39;")},u=function(r){if(r&&r.type==="separator")return'<li class="footer-sep"><hr></li>';if(r&&r.type==="spacer")return`<li class="dm-menu-spacer dm-menu-spacer--${["xs","sm","md","lg","xl","flex"].includes(r.size)?r.size:"md"}" aria-hidden="true"></li>`;if(r&&r.type==="theme-switcher")return'<li class="dm-menu-theme-switcher"><span data-theme-switcher="menu" data-position="inline"></span></li>';const A=a(r.url||"#"),L=e(r.text||""),q=Array.isArray(r.items)&&r.items.length?`<ul>${r.items.map(u).join("")}</ul>`:"",N=ae(r),Z=[N.hover&&` data-menu-item-hover="${a(N.hover)}"`,N.active&&` data-menu-item-active="${a(N.active)}"`].filter(Boolean).join(""),ee=N.accent?` style="--dm-menu-highlight:${a(N.accent)}"`:"",V=W(r.class).join(" ");return`<li${V?` class="${a(V)}"`:""}><a href="${A}"${Z}${ee}>${L}</a>${q}</li>`},f=function(){if(!l.footer)return"";const r=Object.keys(o).filter(L=>n[L]);if(!r.length)return"";const A=W(l.footer.socialClass).join(" ");return`<div class="footer-social">${r.map(L=>{const{label:q,svg:N}=o[L];return`<a href="${n[L]}" target="_blank" rel="noopener noreferrer" aria-label="${q}" class="footer-social-link${A?` ${a(A)}`:""}">${N}</a>`}).join("")}</div>`},b=function(r){if(!r||r.type==="separator"||r.type==="spacer")return"";if(r.type==="theme-switcher")return`<li class="cms-footer-col">${u(r).replace(/^<li[^>]*>|<\/li>$/g,"")}</li>`;const A=Array.isArray(r.items)&&r.items.length?`<ul>${r.items.map(u).join("")}</ul>`:"",L=g(r)?`<span class="cms-footer-col-title">${e(r.text||"")}</span>`:`<a class="cms-footer-col-title" href="${a(r.url||"#")}">${e(r.text||"")}</a>`,q=["cms-footer-col",...W(r.class)].join(" ");return`<li class="${a(q)}">${L}${A}</li>`},m=function(r,A,L=!1){return(r||[]).forEach(q=>{q&&(q.type==="separator"||q.type==="spacer"||q.type==="theme-switcher")||(L&&g(q)||A.push(q),Array.isArray(q.items)&&q.items.length&&m(q.items,A))}),A};const n=l.social||{},o={twitter:{label:"X / Twitter",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.742l7.73-8.835L1.254 2.25H8.08l4.259 5.629L18.244 2.25zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>'},facebook:{label:"Facebook",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>'},instagram:{label:"Instagram",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>'},linkedin:{label:"LinkedIn",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>'},github:{label:"GitHub",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>'},youtube:{label:"YouTube",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M23.495 6.205a3.007 3.007 0 00-2.088-2.088c-1.87-.501-9.396-.501-9.396-.501s-7.507-.01-9.396.501A3.007 3.007 0 00.527 6.205a31.247 31.247 0 00-.522 5.805 31.247 31.247 0 00.522 5.783 3.007 3.007 0 002.088 2.088c1.868.502 9.396.502 9.396.502s7.506 0 9.396-.502a3.007 3.007 0 002.088-2.088 31.247 31.247 0 00.5-5.783 31.247 31.247 0 00-.5-5.805zM9.609 15.601V8.408l6.264 3.602z"/></svg>'}};let s='<div class="footer-inner container">';const t=window.__CMS_FOOTER__||{primary:[],legal:[],copyright:""},i=["columns","row"].includes(l.footer?.layout)?l.footer.layout:"auto",c=i==="columns"||i==="auto"&&t.primary.some(r=>Array.isArray(r?.items)&&r.items.length),g=r=>c&&!r.url&&Array.isArray(r.items)&&r.items.length>0;if(c){const r=h.brand||{},A=r.text||l.title||"",L=r.logo?`<img src="${a(r.logo)}" class="cms-footer-brand-logo" alt="">`:r.icon?'<span class="cms-footer-brand-icon"></span>':"",q=String(l.footer?.blurb||"").trim();s='<div class="footer-inner footer-inner--columns container"><div class="cms-footer-top">',s+=`<div class="cms-footer-brand">${A||L?`<a class="cms-footer-brand-name" href="${a(r.url||"/")}">${L}<span>${e(A)}</span></a>`:""}${q?`<p class="cms-footer-blurb">${e(q)}</p>`:""}${f()}</div>`,t.primary.length&&(s+=`<nav class="footer-nav footer-nav--primary footer-nav--columns" aria-label="Footer"><ul>${t.primary.map(b).join("")}</ul></nav>`),s+='</div><div class="cms-footer-bottom">',t.copyright&&(s+=`<p class="cms-footer-copyright">${e(t.copyright)}</p>`),t.legal.length&&(s+=`<nav class="footer-nav footer-nav--legal" aria-label="Legal"><ul>${t.legal.map(u).join("")}</ul></nav>`),s+="</div>"}else t.copyright&&(s+=`<p>${e(t.copyright)}</p>`),t.primary.length&&(s+=`<nav class="footer-nav footer-nav--primary"><ul>${t.primary.map(u).join("")}</ul></nav>`),t.legal.length&&(s+=`<nav class="footer-nav footer-nav--legal"><ul>${t.legal.map(u).join("")}</ul></nav>`),s+=f();s+="</div>",v.html(s),window.CMSThemeSwitcher?.scan(v.get(0));const d=v.get(0).querySelector(".cms-footer-brand-icon");d&&h.brand?.icon&&d.setAttribute("data-icon",h.brand.icon),O(v.get(0),l.footer?.class);const p=[...m(t.primary,[],!0),...m(t.legal,[])];v.get(0).querySelectorAll(".footer-nav a").forEach((r,A)=>{const L=p[A];if(!L)return;L.colour&&J(r,L.colour);const q=Y(L.badge);q&&r.appendChild(q),X(L.url,location.pathname)&&(r.classList.add("is-active"),r.setAttribute("aria-current","page"))}),R(v.get(0).querySelector(".footer-nav--primary"),{highlight:t.primaryHighlight}),R(v.get(0).querySelector(".footer-nav--legal"),{highlight:t.legalHighlight}),O(v.get(0).querySelector(".footer-nav--primary"),t.primaryClass),O(v.get(0).querySelector(".footer-nav--legal"),t.legalClass);const C=l.footer?.showMotionToggle!==!1,M=S.get("reduced_motion"),D=l.footer?.motionDefault,z=M!=null?!!M:D==="on"?!0:D==="off"?!1:!!(window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches),B=l.footer?.motionControl==="checkbox",I=v.get(0).querySelector(".cms-footer-bottom")||v.get(0).querySelector(".footer-inner");if(C&&I){const r=document.createElement("input");r.type="checkbox",r.className=B?"footer-motion-checkbox":"form-switch-input",r.id="dm-motion-switch",r.checked=z,r.addEventListener("change",function(){S.set("reduced_motion",this.checked),window.location.reload()});const A=document.createElement("span");A.className=B?"footer-motion-label":"form-switch-label",A.textContent="Reduce motion";const L=document.createElement("label");L.className=B?"footer-motion-check":"form-switch footer-motion-switch",L.title="Reduce motion",L.appendChild(r),L.appendChild(A),I.appendChild(L)}}const k=document.getElementById("site-sidebar");k&&ue(k),Domma.icons.scan(),Domma.syntax?.scan&&Domma.syntax.scan();const w=$(".page-body");if(w.length){w.find(".accordion").each(function(){Domma.elements.accordion(this,{allowMultiple:this.dataset.multi==="true"})}),w.find(".tabs").each(function(){Domma.elements.tabs(this)}),w.find(".carousel").each(function(){const n={primary:"--dm-primary",secondary:"--dm-secondary",accent:"--dm-primary",text:"--dm-text",surface:"--dm-surface",background:"--dm-background",success:"--dm-success",warning:"--dm-warning",danger:"--dm-danger",info:"--dm-info"},o=f=>{const i=String(f||"").trim();return i?n[i.toLowerCase()]?`var(${n[i.toLowerCase()]})`:CSS.supports("color",i)?i:"":""},s=o(this.dataset.background),t=o(this.dataset.arrowBackground),e=o(this.dataset.arrowColor);s&&(this.style.setProperty("--dm-carousel-background",s),this.classList.add("dm-carousel-custom-background")),t&&this.style.setProperty("--dm-carousel-arrow-background",t),e&&this.style.setProperty("--dm-carousel-arrow-color",e);const a=["top","middle","bottom"].includes(this.dataset.arrowPosition)?this.dataset.arrowPosition:"middle";this.classList.add(`dm-carousel-arrows-${a}`);const u={autoplay:this.dataset.autoplay==="true",interval:parseInt(this.dataset.interval,10)||5e3,loop:this.dataset.loop!=="false",animation:this.dataset.animation||"slide",heightMode:this.dataset.heightMode==="average"?"average":"crop"};if(this.dataset.height){const f=Number(this.dataset.height);Number.isFinite(f)&&f>0&&(u.height=f)}if(this.dataset.animationDuration){const f=parseInt(this.dataset.animationDuration,10);Number.isFinite(f)&&(u.animationDuration=f)}this.dataset.animationEasing&&(u.animationEasing=this.dataset.animationEasing),this.dataset.ctx&&(this._dmCtxSlides=Array.from(this.querySelectorAll(".carousel-slide")).map(f=>f.cloneNode(!0)),this._dmCarouselOpts=u),this._dmCarousel=Domma.elements.carousel(this,u)}),w.find(".dm-countdown").each(function(){const n={autoStart:!0},o=String(this.dataset.format||"").trim(),s=String(this.dataset.to||"").trim(),t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(s),e=t?new Date(+t[1],+t[2]-1,+t[3]).getTime():s?new Date(s).getTime():NaN;Number.isFinite(e)?n.duration=Math.max(0,e-Date.now()):this.dataset.duration&&(n.duration=(parseInt(this.dataset.duration,10)||0)*1e3);const a=/^dd:/i.test(o);n.format=a?"hh:mm:ss":o||(n.duration>=36e5?"hh:mm:ss":"mm:ss");const u=this,f=c=>String(c).padStart(2,"0"),i=c=>{const g=Math.max(0,Math.floor(c/1e3)),b=u.querySelector(".dm-timer-time");b&&(b.textContent=`${f(Math.floor(g/86400))}:${f(Math.floor(g%86400/3600))}:${f(Math.floor(g%3600/60))}:${f(g%60)}`)};a&&(n.onTick=i),Domma.elements.timer(this,n),a&&i(n.duration||0)}),w.find("[data-tooltip]").each(function(){Domma.elements.tooltip(this,{content:$(this).data("tooltip"),position:$(this).data("tooltip-position")||"top"})}),w.find(".dm-progression").each(function(){const n=Array.from(this.querySelectorAll(".dm-progression-item")).map(t=>{const e={title:t.querySelector(".dm-progression-item-title")?.textContent?.trim()||"",description:t.querySelector(".dm-progression-item-body")?.innerHTML?.trim()||""};return t.dataset.date&&(e.date=t.dataset.date),t.dataset.status&&(e.status=t.dataset.status),t.dataset.eventIcon&&(e.icon=t.dataset.eventIcon),t.dataset.entryId&&(e._entryId=t.dataset.entryId),e}),o=this.dataset.layout==="centred"?"centered":this.dataset.layout||"vertical",s=Domma.elements.progression(this,{layout:o,theme:this.dataset.theme||"minimal",mode:this.dataset.mode||"timeline",statusIcons:!0,allowHtml:!0,...n.length?{items:n}:{}});if((this.dataset.mode||"timeline")==="timeline"){const t={completed:{label:"Completed",icon:"check-circle",tone:"success"},planned:{label:"Planned",icon:"circle",tone:"secondary"},"in-progress":{label:"In progress",icon:"clock",tone:"primary"},blocked:{label:"Blocked",icon:"alert-circle",tone:"danger"}};this.querySelectorAll(".dm-progression-item").forEach((e,a)=>{const u=n[a];if(!u)return;const f=e.querySelector(".dm-progression-title");if(u.icon&&f){const c=document.createElement("span");c.dataset.icon=u.icon,c.style.cssText="display:inline-flex;vertical-align:middle;margin-right:.4em",c.setAttribute("aria-hidden","true"),f.prepend(c)}const i=t[u.status];if(i&&f){const c=document.createElement("span");c.className=`badge badge-${i.tone} cms-timeline-status`,c.style.cssText="display:inline-flex;align-items:center;gap:.35em;margin:.4rem 0";const g=document.createElement("span");g.dataset.icon=i.icon,g.dataset.iconSize="14",g.setAttribute("aria-hidden","true"),c.append(g,document.createTextNode(i.label)),f.after(c)}})}Domma.icons.scan(this),n.length&&(this._dmCtx={instance:s,items:n})});try{Domma.effects.reveal(".page-body .hero",{animation:"slide-up",duration:480,threshold:.06,stagger:60,once:!1})}catch{}document.querySelectorAll(".page-body .row[data-reveal]").forEach(n=>{const o=n.dataset.revealMode||"stagger",s=n.dataset.revealAnimation||"slide-up",t=parseInt(n.dataset.revealDuration,10)||400,e=parseInt(n.dataset.revealStagger,10)||60,a=parseInt(n.dataset.revealDelay,10)||0,u=n.dataset.revealDirection==="rtl",f=Array.from(n.children),i={"slide-up":"translateY(30px)","slide-down":"translateY(-30px)","slide-left":"translateX(30px)","slide-right":"translateX(-30px)",zoom:"scale(0.85)",flip:"perspective(600px) rotateX(15deg)"};f.forEach((c,g)=>{c.style.opacity="0",c.style.transform=i[s]||"",c.style.transition=`opacity ${t}ms ease, transform ${t}ms ease`;const b=u?f.length-1-g:g;c.style.transitionDelay=o==="stagger"?`${a+b*e}ms`:`${a}ms`}),requestAnimationFrame(()=>requestAnimationFrame(()=>{const c=new IntersectionObserver(g=>{g.forEach(b=>{b.isIntersecting&&(b.target.offsetWidth,b.target.style.opacity="1",b.target.style.transform="none",c.unobserve(b.target))})},{threshold:.1});f.forEach(g=>c.observe(g))}))}),w.find(".card[data-collapsible]").each(function(){const n=this.querySelector(".card-header");n&&n.addEventListener("click",()=>this.classList.toggle("is-collapsed"))}),w.find(".dm-so-trigger").each(function(){this.addEventListener("click",()=>{const n=this.dataset.soTarget,o=document.getElementById(n);if(!o)return;const s=E.slideover({title:o.dataset.soTitle||"",size:o.dataset.soSize||"md",position:o.dataset.soPosition||"right"});o.style.display="",s.setContent(o),s.open()})})}if(typeof $.setup=="function"){const n=Object.assign({},window.__CMS_DCONFIG__||{});if(document.querySelectorAll(".dm-page-config[data-config]").forEach(o=>{try{const s=P(o.dataset.config);Object.assign(n,s)}catch{}}),Object.keys(n).length>0){const o={};for(const[s,t]of Object.entries(n)){const e=t?.events?.click,{confirm:a,toast:u,alert:f,prompt:i,...c}=e||{};a||u||f||i?($(s).on("click",async function(b){if(b.preventDefault(),a&&!await E.confirm(a))return;let d=null;if(!(i&&(d=await E.prompt(i,{inputPlaceholder:c.promptPlaceholder||"",inputValue:c.promptDefault||""}),d===null))){if(c.target){const m=$(c.target);c.toggleClass&&m.toggleClass(c.toggleClass),c.addClass&&m.addClass(c.addClass),c.removeClass&&m.removeClass(c.removeClass),d!==null&&(c.setText&&m.text(d),c.setVal&&m.val(d),c.setAttr&&m.attr(c.setAttr,d))}c.href&&(window.location.href=c.href),u&&E.toast(u,{type:c.toastType||"success"}),f&&E.alert(f)}}),Object.keys(c).length&&(o[s]={...t,events:{...t.events,click:c}})):o[s]=t}$.setup(o)}}w.length&&j(w.get(0))}),window.wireCTAButtons=j;function j(h){h.querySelectorAll(".dm-cta-trigger").forEach(l=>{l.__ctaWired||(l.__ctaWired=!0,l.addEventListener("click",async()=>{const x=l.dataset.action,v=l.dataset.entry,k=l.dataset.confirm;let w=S.get("auth_token");if(!w){E.toast("Please log in to perform this action.",{type:"warning"});return}if(k&&!await E.confirm(k))return;const n=Array.from(l.childNodes).map(s=>s.cloneNode(!0));l.disabled=!0,l.textContent="Running\u2026";const o=s=>fetch(`/api/actions/${x}/public`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify(l.dataset.scope?{entryId:v,scope:l.dataset.scope}:{entryId:v})});try{let s=await o(w);if(s.status===401){const e=S.get("auth_refresh_token");if(e){const a=await fetch("/api/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:e})});if(a.ok){const{token:u}=await a.json();S.set("auth_token",u),w=u,s=await o(w)}}}const t=await s.json().catch(()=>({}));if(!s.ok||t.success===!1)throw new Error(t.error||t.message||`Error ${s.status}`);E.toast(t.message||"Action completed.",{type:"success"})}catch(s){E.toast(s.message||"Action failed.",{type:"error"})}finally{l.disabled=!1,l.textContent="",n.forEach(s=>l.appendChild(s)),Domma.icons.scan(l)}}))})}(function(){const l=document.querySelectorAll('.dm-collection-hydrate[data-collection-scope="mine"]');if(!l.length)return;const x=S.get("auth_token");function v(w,n){const o=document.createElement("div");o.className="dm-collection-display dm-collection-empty";const s=document.createElement("p");if(n){s.appendChild(document.createTextNode("Please "));const t=document.createElement("a");t.href="/login",t.textContent="sign in",s.appendChild(t),s.appendChild(document.createTextNode(" to view your entries."))}else s.textContent=w;return o.appendChild(s),o}function k(w,n){const o=document.createElement("template");o.innerHTML=n||"",w.replaceWith(o.content)}l.forEach(async w=>{const n=w.dataset.collectionAttrs;if(!n)return;if(!x){w.replaceChildren(v("",!0));return}const o=s=>fetch("/api/collections/render-scope",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify({attrs:n})});try{let s=x,t=await o(s);if(t.status===401){const a=S.get("auth_refresh_token");if(a){const u=await fetch("/api/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:a})});if(u.ok){const{token:f}=await u.json();S.set("auth_token",f),s=f,t=await o(s)}}}if(!t.ok){const{error:a}=await t.json().catch(()=>({}));w.replaceChildren(v(a||"Unable to load entries.",!1));return}const{html:e}=await t.json();k(w,e),window.DommaCollectionBrowser?.hydrate&&window.DommaCollectionBrowser.hydrate(document)}catch{w.replaceChildren(v("Unable to load entries.",!1))}}),setTimeout(()=>{typeof Domma<"u"&&Domma.icons?.scan&&Domma.icons.scan(),typeof Domma<"u"&&Domma.syntax?.scan&&Domma.syntax.scan(),j(document.body)},100)})(),(function(){const l=document.querySelectorAll("[data-collection-table]");!l.length||typeof T>"u"||!T.create||l.forEach(x=>{let v;try{v=P(x.dataset.payload)}catch{return}const{columns:k,rows:w,search:n,sortable:o,exportable:s,pageSize:t,empty:e,ctaConfig:a,slug:u,exportCfg:f}=v;if(!k?.length)return;if(a){const g=k.findIndex(b=>b.key==="_cta");g!==-1&&(k[g]={key:"_cta",title:"",render:(b,d)=>{const m=document.createElement("button");if(m.className=`btn btn-${a.style||"primary"} dm-cta-trigger`,m.dataset.action=a.action||"",a.scope&&(m.dataset.scope=a.scope),m.dataset.entry=d._entryId||"",a.confirm&&(m.dataset.confirm=a.confirm),a.icon){const p=document.createElement("span");p.dataset.icon=a.icon,m.appendChild(p),m.appendChild(document.createTextNode(" "))}return m.appendChild(document.createTextNode(a.label||"Run")),m}})}const i="col-table-"+Math.random().toString(36).slice(2,7),c=document.createElement("div");c.id=i,x.replaceChildren(c),T.create("#"+i,{data:w,columns:k,search:n,sortable:o,exportable:s,pageSize:t,emptyMessage:e}),a&&j(c),x._dmTable={columns:k,rows:w,slug:u,exportCfg:f,render(g){T.create("#"+i,{data:g,columns:k,search:n,sortable:o,exportable:s,pageSize:t,emptyMessage:e}),a&&j(c)}}})})(),(function(){const l=document.querySelectorAll("[data-form-inline]");if(!l.length||typeof F>"u")return;function x(o){const s=o&&o.logic;return!!(s&&(s.visibility||s.requirement))}function v(o,s){const t={};return(o||[]).forEach(e=>{if(e.type==="page-break"||e.type==="spacer"||!e.name)return;const a=e.type==="chooser"||!!(e.variant&&["select","radio","checkbox-group"].includes(e.type)),u=e.type==="checkbox"?"boolean":e.type==="date"||e.type==="icon"||e.type==="image"?"string":a?"chooser":e.type,f={...e.formConfig||{}};f.span==="full"&&s&&(f.span=s);const i={type:u,required:x(e)?!1:e.required,label:e.label,options:e.options,formConfig:{...e.placeholder&&{placeholder:e.placeholder},...e.helper&&{hint:e.helper},...e.tooltip&&{tooltip:e.tooltip},...f}};e.minLength!==void 0&&(i.minLength=e.minLength),e.maxLength!==void 0&&(i.maxLength=e.maxLength),e.min!==void 0&&(i.min=e.min),e.max!==void 0&&(i.max=e.max),a&&(e.variant&&(i.variant=e.variant),(e.multiple||e.type==="checkbox-group")&&(i.multiple=!0),e.density&&(i.density=e.density),e.columns&&(i.columns=e.columns),e.accent&&(i.accent=e.accent),e.accentStyle&&(i.accentStyle=e.accentStyle),e.glow&&(i.glow=!0),e.glowColour&&(i.glowColour=e.glowColour),e.shadow&&(i.shadow=e.shadow),e.shadowColour&&(i.shadowColour=e.shadowColour)),t[e.name]=i}),t}function k(o){const s={};return(o||[]).forEach(t=>{if(!(!t.name||t.type==="page-break"||t.type==="spacer")&&(t.type==="select"||t.type==="multiselect")&&t.required){const e=(t.options||[])[0];e&&(s[t.name]=typeof e=="object"?e.value:e)}}),s}function w(o,s){(s||[]).forEach(t=>{if(t.type!=="date"||!t.name)return;const e=o.querySelector(`[name="${t.name}"]`);e&&e.type!=="date"&&(e.type="date")})}function n(o,s,t){let e=o.querySelector(".cms-form-message");e||(e=document.createElement("p"),e.className="cms-form-message",o.appendChild(e)),e.textContent=s,e.style.cssText=t?"color:var(--dm-danger);margin-top:.75rem;":"color:var(--dm-success);margin-top:.75rem;"}l.forEach(o=>{let s;try{s=P(o.dataset.formInline)}catch{return}const t=s.fields||[],e=s.settings||{},a=Number(e.columns)===3?3:2,u=e.layout||"grid",f=t.some(m=>m.type==="page-break"),i=async m=>{if(o.dataset.triggerBlocked==="true"){const p=o._formLogicRuntime,y=p&&p.submitBlock?p.submitBlock().reasons:[];n(o,y.join(" ")||"This form cannot be submitted yet.",!0);const C=new Error("Blocked by a form trigger");throw C.formSubmitFailed=!0,C}try{const p=o.querySelector(".fb-form-honeypot"),y=p?.querySelector('input[type="text"]')||null,C=p?.querySelector('[name="_t"]')||null,M=Object.assign({},m);delete M._t,p?.dataset.hpName&&delete M[p.dataset.hpName],y!==null&&(M._hp=y.value),C!==null&&(M._t=C.value);const D=await H.post(`/api/forms/submit/${s.slug}`,M);if(D&&D.error){n(o,D.error,!0);const z=new Error(D.error);throw z.formSubmitFailed=!0,z}if(D?.redirect){window.location.href=D.redirect;return}for(;o.firstChild;)o.removeChild(o.firstChild);n(o,D?.message||e.successMessage||"Thank you for your submission.",!1)}catch(p){throw p.formSubmitFailed||n(o,p.message||"Submission failed. Please try again.",!0),p}},c=Date.now();function g(m){const p=m.querySelector("form");if(!p||p.querySelector(".fb-form-honeypot"))return;const y=document.createElement("div");y.className="fb-form-honeypot",y.setAttribute("aria-hidden","true");const C=document.createElement("input");C.name=p.querySelector('[name="website"]')?"_website":"website",y.dataset.hpName=C.name,C.type="text",C.tabIndex=-1,C.autocomplete="url",C.placeholder="https://",y.appendChild(C);const M=document.createElement("input");M.name="_t",M.type="hidden",M.value=c,y.appendChild(M),p.appendChild(y)}function b(m){if(!window.FormLogicEngine||!t.some(y=>y.logic||Array.isArray(y.triggers)&&y.triggers.length))return null;const p=new window.FormLogicEngine.FormLogicRuntime(s,o,m?{baseValues:m}:void 0);if(p.init(),o._formLogicRuntime=p,o._formLogicObserved)return p;if(o._formLogicObserved=!0,o.parentNode&&typeof MutationObserver<"u"){const y=new MutationObserver(function(C){for(const M of C)for(const D of M.removedNodes)if(D===o||D.nodeType===1&&D.contains&&D.contains(o)){o._formLogicRuntime&&o._formLogicRuntime.destroy(),y.disconnect();return}});y.observe(o.parentNode,{childList:!0,subtree:!1}),o._formLogicObserver=y}return p}let d=!1;if(o.addEventListener("dm-form-end",m=>{const p=m.detail?.validation;if(p&&!p.valid){G(o,p.missing),K(p);return}d||(d=!0,i(m.detail?.values||{}).catch(()=>{}).finally(()=>{d=!1}))}),f&&F.wizard){const m=re(t,s.title),p=m.map(I=>({title:I.title,description:I.description,fields:v(I.fields,a)})),y=m.map(I=>I.fields);let C=0,M=null,D=null;const z=I=>{const r=window.FormLogicEngine;if(!r||!r.validateFields)return;const A=r.validateFields(o,y[C]||[]);A.valid||(I.preventDefault(),I.stopImmediatePropagation(),G(o,A.missing),K(A))},B=()=>{const I=y[C]||t;le(o,e),Q(o,e,I),w(o,I),U(o,I),e.honeypot!==!1&&g(o),M&&M.destroy(),M=b(D?.getStepData?D.getStepData():void 0),o.querySelectorAll(".wizard-next, .wizard-submit").forEach(r=>r.addEventListener("click",z,!0))};D=F.wizard(o,{schema:{steps:p},layout:u,columns:a,finishText:e.submitText||"Finish",onSubmit:i,onStepChange:I=>{C=I,setTimeout(B,0)}}),o.addEventListener("dm-form-trigger",I=>{if(I.detail?.type!=="goto-step"||!D?.goToStep)return;const r=Number(I.detail.action.step);!Number.isFinite(r)||r<0||r>=p.length||r!==C&&D.goToStep(r)}),Promise.resolve(D).then(B)}else if(F.render){const m=F.render(o,v(t,a),k(t),{submitText:e.submitText||"Submit",layout:u,columns:a,onSubmit:i});Promise.resolve(m).then(function(){ce(o,e,u),Q(o,e,t),w(o,t),U(o,t),e.honeypot!==!1&&g(o),b()})}})})();function de(h,l){const x=document.body,v=x.classList,k=new Set((x.dataset.railSite||"").split(" ").filter(Boolean)),w=()=>window.matchMedia("(min-width: 993px)").matches;h.querySelectorAll(".navbar-link, .navbar-dropdown-toggle").forEach(a=>{const u=a.textContent.trim();u&&(a.setAttribute("title",u),a.querySelector("svg, [data-icon]")||(a.dataset.initial=u.charAt(0).toUpperCase()))});const n=document.createElement("button");n.type="button",n.className="dm-nav-collapse-toggle";const o=()=>{const a=v.contains("dm-vnav-collapsed");n.setAttribute("aria-pressed",String(a)),n.setAttribute("aria-label",a?"Expand menu":"Collapse menu"),n.title=n.getAttribute("aria-label");const u=l?"chevrons-left":"chevrons-right",f=l?"chevrons-right":"chevrons-left";n.innerHTML=`<span data-icon="${a?u:f}"></span>`,window.Domma&&Domma.icons&&Domma.icons.scan(n)},s=a=>{v.toggle("dm-vnav-collapsed",a),S.set("nav_collapsed",a),o()};n.addEventListener("click",()=>s(!v.contains("dm-vnav-collapsed"))),o();const t=h.querySelector(".navbar-container")||h;t.insertBefore(n,t.firstChild?.nextSibling||null);const e=a=>{v.toggle("dm-vnav-autohide",a),v.toggle("dm-vnav-collapsible",!a&&k.has("collapsible")),a?v.remove("dm-vnav-collapsed"):k.has("collapsible")&&S.get("nav_collapsed")===!0&&v.add("dm-vnav-collapsed"),h.classList.remove("dm-nav-revealed"),o()};h.addEventListener("pointerdown",a=>{v.contains("dm-vnav-autohide")&&a.pointerType!=="mouse"&&!h.classList.contains("dm-nav-revealed")&&(h.classList.add("dm-nav-revealed"),a.preventDefault())}),document.addEventListener("pointerdown",a=>{h.contains(a.target)||h.classList.remove("dm-nav-revealed")}),window.E&&typeof E.contextMenu=="function"&&E.contextMenu(h,{items:()=>{const a=v.contains("dm-vnav-autohide"),u=v.contains("dm-vnav-collapsed"),f=S.has("nav_autohide")||S.has("nav_collapsed");return[{header:"Menu"},{label:u?"Expand menu":"Collapse to icons",icon:u?"maximize":"minimize",disabled:!w()||a||!k.has("collapsible"),action:()=>s(!u)},{label:a?"Keep on screen":"Hide when not in use",icon:a?"eye":"eye-off",disabled:!w(),action:()=>{S.set("nav_autohide",!a),e(!a)}},{type:"divider"},{label:"Reset to the site's setting",icon:"refresh",disabled:!f,action:()=>{S.remove("nav_autohide"),S.remove("nav_collapsed"),e(k.has("autohide")),v.toggle("dm-vnav-collapsed",!k.has("autohide")&&k.has("start-collapsed")),o()}}]}})}function me(h){h.classList.add("dm-nav-scroll-hide");let l=window.scrollY,x=!1;window.addEventListener("scroll",()=>{x||(x=!0,requestAnimationFrame(()=>{x=!1;const v=window.scrollY,k=h.matches(":focus-within")||h.querySelector(".navbar-dropdown.open, .navbar-collapse.show");v>l&&v>h.offsetHeight&&!k?h.classList.add("dm-nav-scrolled-away"):v<l&&h.classList.remove("dm-nav-scrolled-away"),l=v}))},{passive:!0})}function ue(h){let l={};try{l=JSON.parse(h.dataset.contents||"{}")}catch{}const x=h.closest(".site-main"),v=document.querySelector(".site-content"),k=new Set(String(l.exclude||"").split(",").map(i=>i.trim().toLowerCase()).filter(Boolean)),w=i=>!i.closest(".hero, .card, .accordion, .tabs, figure, #site-sidebar"),n=i=>(v?[...v.querySelectorAll(i)]:[]).filter(w).filter(c=>!k.has(c.textContent.trim().toLowerCase())),o=l.headings==="h2"?n("h2"):l.headings==="h3"?n("h3"):l.headings==="h2h3"?n("h2, h3"):n("h2").length?n("h2"):n("h3");if(!o.length){x?.classList.add("no-sidebar-items");return}const s=new Set([...document.querySelectorAll("[id]")].map(i=>i.id)),t=document.createElement("nav");t.className="dm-contents",t.setAttribute("aria-label",l.title||"Page contents"),l.hover&&(t.dataset.menuHover=l.hover),l.selected&&(t.dataset.menuActive=l.selected),l.accent&&t.style.setProperty("--dm-menu-highlight",l.accent.startsWith("#")?l.accent:`var(--dm-${l.accent})`),l.font&&(t.style.fontFamily=l.font),l.fontSize&&(t.style.fontSize=l.fontSize),l.fontWeight&&(t.style.fontWeight=l.fontWeight);const e=document.createElement("div");e.className="dm-contents-head";const a=document.createElement("p");a.className="dm-contents-title",a.textContent=l.title||"",e.appendChild(a),t.appendChild(e);const u=document.createElement("ol");u.className="dm-contents-list"+(l.numbered?" is-numbered":"");const f=[];for(const i of o){if(!i.id){const b=(i.textContent||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"section";let d=b;for(let m=2;s.has(d);m++)d=`${b}-${m}`;s.add(d),i.id=d}const c=document.createElement("li");c.className=`dm-contents-item dm-contents-${i.tagName.toLowerCase()}`;const g=document.createElement("a");g.href=`#${i.id}`,g.textContent=i.textContent.trim(),c.appendChild(g),u.appendChild(c),f.push([i,g])}if(t.appendChild(u),h.replaceChildren(t),l.scrollSpy!==!1&&"IntersectionObserver"in window){const i=new Map,c=()=>{const b=f.find(([d])=>i.get(d))||null;f.forEach(([,d])=>{const m=b&&d===b[1];d.classList.toggle("is-active",!!m),m?d.setAttribute("aria-current","location"):d.removeAttribute("aria-current")})},g=new IntersectionObserver(b=>{b.forEach(d=>i.set(d.target,d.isIntersecting)),c()},{rootMargin:"-80px 0px -60% 0px"});f.forEach(([b])=>g.observe(b))}if(x?.classList.contains("contents-collapsible")){const i=document.createElement("button");i.type="button",i.className="dm-contents-toggle";const c=()=>{const g=x.classList.contains("contents-collapsed");i.setAttribute("aria-expanded",String(!g)),i.setAttribute("aria-label",g?"Show the contents":"Hide the contents"),i.title=i.getAttribute("aria-label"),i.innerHTML=`<span data-icon="${g?"list":"x"}"></span>`,window.Domma?.icons&&Domma.icons.scan(i)};i.addEventListener("click",()=>{S.set("contents_collapsed",x.classList.toggle("contents-collapsed")),c()}),c(),e.insertBefore(i,e.firstChild)}if(x?.classList.contains("contents-floating")&&l.movable){t.classList.add("is-movable");const i=S.get("contents_position");i&&Number.isFinite(i.x)&&Object.assign(h.style,{left:`${i.x}px`,top:`${i.y}px`,right:"auto",bottom:"auto"}),e.addEventListener("pointerdown",c=>{if(c.target.closest("button"))return;const g=h.getBoundingClientRect(),b=c.clientX-g.left,d=c.clientY-g.top,m=y=>{const C=Math.max(0,Math.min(window.innerWidth-g.width,y.clientX-b)),M=Math.max(0,Math.min(window.innerHeight-40,y.clientY-d));Object.assign(h.style,{left:`${C}px`,top:`${M}px`,right:"auto",bottom:"auto"})},p=()=>{document.removeEventListener("pointermove",m),S.set("contents_position",{x:parseInt(h.style.left,10),y:parseInt(h.style.top,10)})};document.addEventListener("pointermove",m),document.addEventListener("pointerup",p,{once:!0})})}window.E&&typeof E.contextMenu=="function"&&E.contextMenu(h,{items:()=>{const i=x?.classList.contains("contents-collapsible"),c=x?.classList.contains("contents-collapsed"),g=f.find(([,b])=>b.classList.contains("is-active"));return[{header:"Contents"},...i?[{label:c?"Show the contents":"Collapse to a button",icon:c?"list":"minimize",action:()=>h.querySelector(".dm-contents-toggle")?.click()}]:[],{label:"Copy a link to this section",icon:"link",disabled:!g,action:async()=>{const b=`${location.origin}${location.pathname}#${g[0].id}`;try{await _.copyToClipboard(b),E.toast("Link copied.",{type:"success"})}catch{E.toast("Could not copy the link.",{type:"error"})}}},{label:"Back to the top",icon:"arrow-up",action:()=>window.scrollTo({top:0,behavior:"smooth"})}]}}),x?.classList.contains("contents-autohide")&&(h.addEventListener("pointerdown",i=>{i.pointerType!=="mouse"&&!h.classList.contains("is-revealed")&&(h.classList.add("is-revealed"),i.preventDefault())}),document.addEventListener("pointerdown",i=>{h.contains(i.target)||h.classList.remove("is-revealed")}))}
package/server/server.js CHANGED
@@ -32,7 +32,7 @@ import * as cache from './services/cache/index.js';
32
32
  import {parseTrustProxy} from './services/network.js';
33
33
  import {requestSerializer} from './services/request-log.js';
34
34
  import {rateLimitOptions} from './services/rate-limit.js';
35
- import {frameSources} from './services/embedCsp.js';
35
+ import {connectSources, frameSources} from './services/embedCsp.js';
36
36
 
37
37
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
38
38
  const ROOT = path.resolve(__dirname, '..');
@@ -126,7 +126,8 @@ await app.register(helmet, {
126
126
  styleSrc: ["'self'", "'unsafe-inline'", 'https://cdn.jsdelivr.net', 'https://fonts.googleapis.com'],
127
127
  imgSrc: ["'self'", 'data:', 'blob:'],
128
128
  fontSrc: ["'self'", 'data:', 'https://fonts.gstatic.com'],
129
- connectSrc: ["'self'", 'https://cdn.jsdelivr.net'],
129
+ // config/server.json csp.connectHosts: other sites a page may read from (services/embedCsp.js).
130
+ connectSrc: connectSources(serverConfig.csp?.connectHosts),
130
131
  // [embed] players and config/embeds.json hosts - without this, default-src blocked them all.
131
132
  frameSrc: frameSources((() => { try { return getConfig('embeds')?.allowedHosts; } catch { return []; } })()),
132
133
  upgradeInsecureRequests: null, // prevent browsers forcing HTTPS on HTTP deployments
@@ -31,3 +31,22 @@ export function frameSources(allowedHosts = []) {
31
31
  .map(h => `https://${h}`);
32
32
  return [...new Set(["'self'", ...ALWAYS_FRAMED, ...extra])];
33
33
  }
34
+
35
+ /** What a page may always fetch from: the site itself and the CDN Domma's own assets come from. */
36
+ export const ALWAYS_CONNECTED = ["'self'", 'https://cdn.jsdelivr.net'];
37
+
38
+ /**
39
+ * The connect-src: the site, the CDN, and every host in config/server.json `csp.connectHosts` - for a page
40
+ * that reads another site's public API (domma-cms.com's Pricing page reads the prices dcm sells at). Bare
41
+ * hostnames only, served over https; anything else is dropped. Read at boot, like frame-src.
42
+ *
43
+ * @param {string[]} connectHosts - config/server.json csp.connectHosts
44
+ * @returns {string[]} connect-src sources
45
+ */
46
+ export function connectSources(connectHosts = []) {
47
+ const extra = (Array.isArray(connectHosts) ? connectHosts : [])
48
+ .map(h => String(h).trim().toLowerCase())
49
+ .filter(h => HOST_RE.test(h))
50
+ .map(h => `https://${h}`);
51
+ return [...new Set([...ALWAYS_CONNECTED, ...extra])];
52
+ }
@@ -778,7 +778,7 @@ function renderCollectionCarousel(entries, opts, ctxOpts = {}) {
778
778
  }
779
779
 
780
780
  const passthrough = ['autoplay', 'interval', 'loop', 'animation', 'animation-duration', 'animation-easing', 'arrow-position',
781
- 'background', 'arrow-background', 'arrow-color']
781
+ 'background', 'arrow-background', 'arrow-color', 'height-mode', 'height']
782
782
  .map(k => dataAttrs[k] ? ` data-${k}="${escapeAttr(String(dataAttrs[k]))}"` : '')
783
783
  .join('');
784
784
 
@@ -3137,6 +3137,8 @@ function processAccordionBlocks(markdown) {
3137
3137
  * animation - "slide" | "fade" | "crossfade" (default slide)
3138
3138
  * animation-duration - transition length in milliseconds (default 500)
3139
3139
  * animation-easing - CSS timing function (e.g. ease, linear, ease-in-out, cubic-bezier(...))
3140
+ * height-mode - "crop" (default) | "average"; images fill from the top
3141
+ * height - optional fixed viewport height in pixels
3140
3142
  * id - optional id on the wrapper
3141
3143
  *
3142
3144
  * Supported attributes on [slide]:
@@ -3159,6 +3161,8 @@ function processCarouselBlocks(markdown) {
3159
3161
  attrs.animation ? ` data-animation="${escapeAttr(attrs.animation)}"` : '',
3160
3162
  attrs['animation-duration'] ? ` data-animation-duration="${escapeAttr(attrs['animation-duration'])}"` : '',
3161
3163
  attrs['animation-easing'] ? ` data-animation-easing="${escapeAttr(attrs['animation-easing'])}"` : '',
3164
+ ['crop', 'average'].includes(attrs['height-mode']) ? ` data-height-mode="${attrs['height-mode']}"` : '',
3165
+ Number.isFinite(Number(attrs.height)) && Number(attrs.height) > 0 ? ` data-height="${Number(attrs.height)}"` : '',
3162
3166
  ['top', 'middle', 'bottom'].includes(attrs['arrow-position']) ? ` data-arrow-position="${escapeAttr(attrs['arrow-position'])}"` : '',
3163
3167
  attrs.background ? ` data-background="${escapeAttr(attrs.background)}"` : '',
3164
3168
  attrs['arrow-background'] ? ` data-arrow-background="${escapeAttr(attrs['arrow-background'])}"` : '',
@@ -25,7 +25,7 @@
25
25
  <link rel="stylesheet" href="/dist/domma/themes/domma-themes.css">
26
26
 
27
27
  <!-- Site CSS -->
28
- <link rel="stylesheet" href="/public/css/site.css?v=20261013-carousel-controls">
28
+ <link rel="stylesheet" href="/public/css/site.css?v=20261014-carousel-card-heights">
29
29
  <link rel="stylesheet" href="/public/css/forms.css?v=20260927-submit-btn-css">
30
30
  <!-- Menu item hover / current-page effects. Loaded after site.css so a
31
31
  menu's own highlight wins over the blanket link styling there. -->
@@ -173,7 +173,7 @@
173
173
  </script>
174
174
 
175
175
  <!-- Site initialisation -->
176
- <script src="/public/js/site.js?v=20261013-carousel-colours" type="module"></script>
176
+ <script src="/public/js/site.js?v=20261014-carousel-height" type="module"></script>
177
177
  <script src="/public/js/collection-context.js?v=20261010-utf8-payloads" type="module"></script>
178
178
  {{ctxMenusModule}}
179
179