{"version":3,"file":"XTSpendView.CpotKRaR.mjs","names":["React.useRef","__esmMin","init_ssg_sandbox_shims","init_npm_react_18_3_1","window","ce","init_jsx_runtime","c","p","de","addPropertyControls","ControlType","init_framer_CaDWdxiz","afterPaint","once","track","useAnimated","XT_LOCKUP_CSS","settle","XT_BASE_CSS","hidden","whenSized","XT_FONT_IMPORT","init_XTShared","XTStyle","teardown","install","reduce","uid","nums","s","words","el","n","tag","k","attrs","parent","pathOf","pts","i","smooth","d","p0","p1","p2","p3","t","c1x","c1y","c2x","c2y","lo","hi","money","v","unit","drawForecast","W","box","H","months","actual","budget","series","last","narrow","names","pad","pw","ph","all","max","step","X","Y","id","svg","defs","ga","gf","xT","ca","\"class\"","cf","y","m","fl","bp","half","x0","x1","b","bl","apts","a","gA","dA","gF","start","spts","val","e","lt","drawSpark","mk","min","rng","x","mx","build","wrap","on","base","gap","init","root","panels","tabs","charts","sparks","w","r","active","drawAll","sync","seen","play","panel","current","win","select","name","h","focus","j","raf","lastW","en","io","initAll","XTSpendView","props","animated","host","html","PRESETS","setRootAttr","key","unsettle","cancelSized","untrack","cancel","api","style","CSS","HV2_CSS","init_XTSpendView","\"governance\"","\"enablement\""],"sources":["https:/framerusercontent.com/modules/gnrzEB9JT9Pke7lXmi1E/rPbhwaOnHtEVqUdDHazw/XTSpendView.js"],"sourcesContent":["// @ts-nocheck\n// XT Spend & ROI view. Port of site/visuals/executive-view. Markup presets are copied verbatim from the local pages (copy is not edited here);\n// the behaviour script is the original, verbatim, installed once per page. Text stays DOM text, so it is in the server HTML.\n// Animation starts on the client after first paint, only on the published site/preview; the canvas shows the final frame.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{XTStyle,XT_FONT_IMPORT,XT_BASE_CSS,XT_LOCKUP_CSS,useAnimated,once,afterPaint,teardown,settle,whenSized,track,hidden}from\"https://framerusercontent.com/modules/dJPZ5VRbhPbRDwnU4bd6/SWSCRD2FKFAHO19Do92q/XTShared.js\";const CSS=`/* ==========================================================================\n   Visual \\xb7 Spend &amp; ROI dashboard  \\xb7  executive-view.css\n   Product UI mock of the Spend & ROI and Adoption dashboard.\n   Variants:  data-variant=\"spend\" (Spend & ROI, default) | \"adoption\"\n   Theme:     data-theme=\"light\" (default) | \"dark\" (inside .band-dark)\n   Size:      data-size=\"full\" (default) | \"compact\" (KPI strip + main chart only)\n   Layout responds to its own width (container queries), so it works in a\n   full-width figure, a .split column, and on phones.\n   Requires xt.css tokens. Every selector is scoped under .v-executive-view.\n   ========================================================================== */\n\n.v-executive-view {\n  /* Crux type (round 4). Same values as the retokenized xt.css; kept here so the visual renders right on any page. */\n  --sans: \"Funnel Sans\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n  --mono: \"Fragment Mono\", ui-monospace, \"SFMono-Regular\", Menlo, monospace;\n  /* theme tokens (light) */\n  --xv-surface: color-mix(in oklab, var(--card) 95%, transparent);\n  --xv-bar: color-mix(in oklab, var(--canvas-soft) 82%, transparent);\n  --xv-ink: var(--ink);\n  --xv-text: var(--ink-2);\n  --xv-soft: var(--body);\n  --xv-muted: var(--muted);\n  --xv-faint: var(--muted-soft);\n  --xv-hair: var(--hair);\n  --xv-hair-soft: var(--hair-soft);\n  --xv-plate: var(--strong);\n  --xv-line: var(--ink-2);\n  --xv-area: var(--ink-2);\n  --xv-a1: var(--lavender-deep);   /* wider rollout */\n  --xv-a2: var(--sky-deep);        /* optimized */\n  --xv-fan-1: var(--lavender);\n  --xv-fan-2: var(--sky);\n  --xv-forecast-bg: color-mix(in oklab, var(--canvas) 70%, transparent);\n  --xv-pos: var(--pos);\n  --xv-neg: var(--neg);\n  --xv-shadow: var(--sh-float);\n  --xv-focus: var(--ink);\n\n  container: xv / inline-size;\n  position: relative;\n  font-family: var(--sans);\n  letter-spacing: -0.04em;\n  color: var(--xv-text);\n  font-size: 14px;\n  line-height: 1.4;\n  text-align: left;\n}\n\n.v-executive-view[data-theme=\"dark\"] {\n  --xv-surface: color-mix(in oklab, var(--dark-2) 90%, transparent);\n  --xv-bar: color-mix(in oklab, var(--dark) 40%, transparent);\n  --xv-ink: var(--on-dark);\n  --xv-text: var(--on-dark-soft);\n  --xv-soft: var(--on-dark-soft);\n  --xv-muted: var(--on-dark-muted);\n  --xv-faint: color-mix(in oklab, var(--on-dark-muted) 60%, var(--dark-2));\n  --xv-hair: var(--hair-dark);\n  --xv-hair-soft: rgba(250, 250, 249, .06);\n  --xv-plate: var(--dark-3);\n  --xv-line: var(--on-dark);\n  --xv-area: var(--lavender);\n  --xv-a1: var(--lavender);\n  --xv-a2: var(--sky);\n  --xv-fan-1: var(--lavender-deep);\n  --xv-fan-2: var(--sky-deep);\n  --xv-forecast-bg: rgba(250, 250, 249, .025);\n  --xv-pos: color-mix(in oklab, var(--mint) 85%, var(--on-dark));\n  --xv-neg: color-mix(in oklab, var(--peach) 85%, var(--on-dark));\n  --xv-shadow: 0 0 0 1px var(--hair-dark), 0 40px 80px -30px rgba(0, 0, 0, .6);\n  --xv-focus: var(--on-dark);\n}\n\n.v-executive-view *, .v-executive-view *::before, .v-executive-view *::after { box-sizing: border-box; }\n.v-executive-view h3, .v-executive-view h4, .v-executive-view p, .v-executive-view ul, .v-executive-view ol { margin: 0; padding: 0; }\n.v-executive-view ul, .v-executive-view ol { list-style: none; }\n.v-executive-view .mono-n { font-family: var(--mono); font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }\n\n/* --------------------------------------------------------------------------\n   Window frame\n   -------------------------------------------------------------------------- */\n.v-executive-view .xv-window {\n  position: relative;\n  background: var(--xv-surface);\n  -webkit-backdrop-filter: blur(18px) saturate(1.1); backdrop-filter: blur(18px) saturate(1.1);\n  border-radius: 14px;\n  box-shadow: var(--xv-shadow);\n  overflow: hidden;\n}\n\n/* App bar: product + location on the left, period and export on the right */\n.v-executive-view .xv-appbar {\n  display: flex; align-items: center; gap: 16px;\n  height: 48px; padding: 0 16px;\n  background: var(--xv-bar);\n  border-bottom: 1px solid var(--xv-hair);\n}\n.v-executive-view .xv-brand {\n  font: 400 18px/1 var(--display, var(--sans)); letter-spacing: -0.04em; color: var(--xv-ink);\n  padding-right: 16px; border-right: 1px solid var(--xv-hair); align-self: stretch; display: flex; align-items: center;\n}\n.v-executive-view .xv-crumb { font: 500 14px/1.2 var(--sans); color: var(--xv-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }\n.v-executive-view .xv-crumb span { color: var(--xv-muted); font-weight: 400; }\n.v-executive-view .xv-appbar__end { margin-left: auto; display: flex; align-items: center; gap: 8px; flex: none; }\n.v-executive-view .xv-chip {\n  display: inline-flex; align-items: center; gap: 6px; min-height: 26px; padding: 6px 10px; flex: none; width: max-content; box-sizing: border-box;\n  border-radius: var(--r-pill); box-shadow: inset 0 0 0 1px var(--xv-hair);\n  font: 500 12px/1 var(--sans); color: var(--xv-text); white-space: nowrap;\n}\n.v-executive-view .xv-chip svg { width: 10px; height: 10px; flex: none; color: var(--xv-muted); }\n.v-executive-view .xv-chip--ghost { box-shadow: none; color: var(--xv-muted); }\n.v-executive-view[data-theme=\"dark\"] .tag-illus { color: var(--on-dark-muted); box-shadow: inset 0 0 0 1px var(--hair-dark-strong); background: transparent; }\n\n/* Tabs */\n.v-executive-view .xv-tabs {\n  display: flex; align-items: stretch; gap: 24px; padding: 0 16px;\n  border-bottom: 1px solid var(--xv-hair);\n}\n.v-executive-view .xv-tab {\n  appearance: none; background: none; border: 0; margin: 0 0 -1px; padding: 12px 0 12px;\n  font: 500 12px/1 var(--sans); letter-spacing: -0.04em; color: var(--xv-muted); cursor: pointer;\n  border-bottom: 1.5px solid transparent; white-space: nowrap;\n  transition: color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);\n}\n.v-executive-view .xv-tab:hover { color: var(--xv-ink); }\n.v-executive-view:not([data-variant=\"adoption\"]) .xv-tab[data-tab=\"spend\"],\n.v-executive-view[data-variant=\"adoption\"] .xv-tab[data-tab=\"adoption\"] { color: var(--xv-ink); border-bottom-color: var(--xv-line); }\n.v-executive-view .xv-tab:focus-visible { outline: 2px solid var(--xv-focus); outline-offset: 2px; border-radius: 2px; }\n.v-executive-view .xv-tabs__end { margin-left: auto; display: flex; align-items: center; gap: 6px; font: 400 12px/1 var(--sans); color: var(--xv-muted); white-space: nowrap; }\n.v-executive-view .xv-tabs__end b { font-weight: 500; color: var(--xv-text); }\n\n/* Panels: no-JS fallback picks the panel from data-variant */\n.v-executive-view .xv-panel { display: none; }\n.v-executive-view:not([data-variant=\"adoption\"]) .xv-panel[data-panel=\"spend\"],\n.v-executive-view[data-variant=\"adoption\"] .xv-panel[data-panel=\"adoption\"] { display: block; }\n\n/* --------------------------------------------------------------------------\n   KPI strip\n   -------------------------------------------------------------------------- */\n.v-executive-view .xv-kpis {\n  display: grid; grid-template-columns: repeat(var(--xv-kpi-cols, 4), minmax(0, 1fr));\n  border-bottom: 1px solid var(--xv-hair);\n}\n.v-executive-view .xv-kpis[data-cols=\"3\"] { --xv-kpi-cols: 3; }\n.v-executive-view .xv-kpi { position: relative; padding: 16px 24px 24px; min-width: 0; }\n.v-executive-view .xv-kpi + .xv-kpi { border-left: 1px solid var(--xv-hair); }\n.v-executive-view .xv-kpi__k { font: 500 12px/1.3 var(--sans); color: var(--xv-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.v-executive-view .xv-kpi__row { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-top: 10px; }\n.v-executive-view .xv-kpi__v {\n  font: 400 32px/1 var(--display, var(--sans)); letter-spacing: -0.04em; color: var(--xv-ink);\n  font-variant-numeric: lining-nums tabular-nums; white-space: nowrap;\n}\n.v-executive-view .xv-kpi__v small { font: 400 14px/1 var(--sans); letter-spacing: -0.04em; color: var(--xv-muted); margin-left: 4px; }\n.v-executive-view .xv-kpi__d { margin-top: 10px; font: 400 12px/1.3 var(--sans); color: var(--xv-muted); }\n.v-executive-view .xv-kpi__d .mono-n { font-size: 12px; color: var(--xv-text); }\n.v-executive-view .xv-up { color: var(--xv-pos) !important; }\n.v-executive-view .xv-dn { color: var(--xv-pos) !important; }\n.v-executive-view .xv-bad { color: var(--xv-neg) !important; }\n\n/* Sparkline (rendered by JS from data-points) */\n.v-executive-view .xv-spark { display: block; width: 76px; height: 28px; flex: none; overflow: visible; }\n.v-executive-view .xv-spark path.l { fill: none; stroke: var(--xv-line); stroke-width: 1.25; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }\n.v-executive-view .xv-spark path.l.pre { stroke: var(--xv-faint); }\n.v-executive-view .xv-spark circle { fill: var(--xv-line); }\n.v-executive-view .xv-spark line.m { stroke: var(--xv-faint); stroke-width: 1; stroke-dasharray: 2 2; }\n\n/* Budget vs. actual meter */\n.v-executive-view .xv-meter { position: relative; margin-top: 16px; height: 6px; }\n.v-executive-view .xv-meter__track { position: absolute; inset: 0; border-radius: 4px; background: var(--xv-hair-soft); box-shadow: inset 0 0 0 1px var(--xv-hair); }\n.v-executive-view .xv-meter__fc {\n  position: absolute; left: 0; top: 0; bottom: 0; width: var(--fc); border-radius: 4px;\n  background: repeating-linear-gradient(-45deg, color-mix(in oklab, var(--xv-a1) 55%, transparent) 0 1.5px, transparent 1.5px 4px);\n  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--xv-a1) 45%, transparent);\n}\n.v-executive-view .xv-meter__act { position: absolute; left: 0; top: 0; bottom: 0; width: var(--act); border-radius: 4px; background: var(--xv-line); }\n.v-executive-view .xv-meter__over { position: absolute; top: 1px; bottom: 1px; left: 100%; width: var(--over, 0%); margin-left: 1px; border-radius: 0 3px 3px 0; background: var(--xv-neg); opacity: .85; }\n.v-executive-view .xv-meter__plan { position: absolute; top: -4px; bottom: -4px; left: var(--plan); width: 1.5px; margin-left: -.75px; background: var(--xv-ink); border-radius: 1px; }\n.v-executive-view .xv-meter__end { position: absolute; top: -4px; bottom: -4px; left: 100%; width: 1px; background: var(--xv-faint); }\n.v-executive-view .xv-meter__legend { display: flex; justify-content: space-between; gap: 8px; margin-top: 8px; font: 400 12px/1.3 var(--sans); color: var(--xv-muted); white-space: nowrap; }\n.v-executive-view .xv-meter__legend i { display: inline-block; width: 8px; height: 8px; border-radius: 2px; vertical-align: -0.5px; margin-right: 5px; background: var(--xv-line); }\n.v-executive-view .xv-meter__legend i.fc { background: repeating-linear-gradient(-45deg, var(--xv-a1) 0 1.2px, transparent 1.2px 3px); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--xv-a1) 50%, transparent); }\n\n/* Team tiles (mini) */\n.v-executive-view .xv-tiles { display: grid; grid-template-columns: repeat(var(--n, 23), minmax(0, 1fr)); gap: 2.5px; margin-top: 16px; max-width: 260px; }\n.v-executive-view .xv-tiles span { aspect-ratio: .62; border-radius: 2px; background: var(--xv-hair-soft); box-shadow: inset 0 0 0 1px var(--xv-hair); transition: background .5s var(--ease), box-shadow .5s var(--ease); }\n.v-executive-view .xv-tiles span.on {\n  background: linear-gradient(180deg, color-mix(in oklab, var(--lavender) calc(100% - var(--t, 0) * 100%), var(--sky)), color-mix(in oklab, var(--sky) calc(100% - var(--t, 0) * 100%), var(--mint)));\n  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--sky-deep) 22%, transparent);\n}\n\n/* Segmented progress (standards adopted) */\n.v-executive-view .xv-segs { display: grid; grid-template-columns: repeat(var(--n, 15), minmax(0, 1fr)); gap: 3px; margin-top: 16px; height: 6px; max-width: 260px; }\n.v-executive-view .xv-segs span { border-radius: 1.5px; background: var(--xv-hair-soft); box-shadow: inset 0 0 0 1px var(--xv-hair); }\n.v-executive-view .xv-segs span.on { background: var(--xv-line); box-shadow: none; }\n\n/* --------------------------------------------------------------------------\n   Main grid (chart + side panel)\n   -------------------------------------------------------------------------- */\n.v-executive-view .xv-main { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }\n.v-executive-view .xv-main > * { min-width: 0; padding: 24px 24px 24px; }\n.v-executive-view .xv-main > * + * { border-left: 1px solid var(--xv-hair); }\n.v-executive-view .xv-pane__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 16px; }\n.v-executive-view .xv-pane__title { font: 500 14px/1.3 var(--sans); color: var(--xv-ink); }\n.v-executive-view .xv-pane__sub { font: 400 12px/1.3 var(--sans); color: var(--xv-muted); white-space: nowrap; }\n.v-executive-view .xv-pane__note { margin-top: 12px; font: 400 12px/1.4 var(--sans); color: var(--xv-muted); max-width: 46em; }\n\n/* Legend */\n.v-executive-view .xv-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; }\n.v-executive-view .xv-legend li { display: inline-flex; align-items: center; gap: 8px; font: 400 12px/1.3 var(--sans); color: var(--xv-soft); white-space: nowrap; }\n.v-executive-view .xv-legend b { font: 400 10px/1 var(--mono); color: var(--xv-ink); font-variant-numeric: tabular-nums; }\n.v-executive-view .xv-key { display: inline-block; width: 14px; height: 2px; border-radius: 1px; background: var(--k, var(--xv-line)); flex: none; }\n.v-executive-view .xv-key--dash { background: repeating-linear-gradient(90deg, var(--xv-line) 0 4px, transparent 4px 6px); }\n.v-executive-view .xv-key--dot { height: 1.5px; background: repeating-linear-gradient(90deg, var(--xv-muted) 0 1.5px, transparent 1.5px 4px); }\n.v-executive-view .xv-key--a1 { --k: var(--xv-a1); }\n.v-executive-view .xv-key--a2 { --k: var(--xv-a2); }\n\n/* Forecast chart (SVG drawn by JS at real pixel size) */\n.v-executive-view .xv-chart { position: relative; height: var(--xv-chart-h, 232px); }\n.v-executive-view .xv-chart svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }\n.v-executive-view .xv-chart text { font-family: var(--mono); font-size: 10px; fill: var(--xv-muted); letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }\n.v-executive-view .xv-chart text.lbl-strong { fill: var(--xv-ink); }\n.v-executive-view .xv-chart text.lbl-name { font-family: var(--sans); font-size: 12px; font-weight: 500; fill: var(--xv-text); }\n.v-executive-view .xv-chart text.lbl-sans { font-family: var(--mono); font-size: 10px; font-weight: 400; letter-spacing: -0.02em; text-transform: uppercase; }\n.v-executive-view .xv-chart .grid { stroke: var(--xv-hair); stroke-width: 1; shape-rendering: crispEdges; }\n.v-executive-view .xv-chart .grid--base { stroke: var(--xv-hair); }\n.v-executive-view .xv-chart .fc-bg { fill: var(--xv-forecast-bg); }\n.v-executive-view .xv-chart .today { stroke: var(--xv-faint); stroke-width: 1; stroke-dasharray: 2 3; }\n.v-executive-view .xv-chart .budget { fill: none; stroke: var(--xv-muted); stroke-width: 1; stroke-dasharray: 1 3; stroke-linecap: round; }\n.v-executive-view .xv-chart .actual { fill: none; stroke: var(--xv-line); stroke-width: 1.75; stroke-linejoin: round; stroke-linecap: round; }\n.v-executive-view .xv-chart .area { opacity: .9; }\n.v-executive-view .xv-chart .s-base { fill: none; stroke: var(--xv-line); stroke-width: 1.5; stroke-dasharray: 4 3; stroke-linecap: round; }\n.v-executive-view .xv-chart .s-a1 { fill: none; stroke: var(--xv-a1); stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }\n.v-executive-view .xv-chart .s-a2 { fill: none; stroke: var(--xv-a2); stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }\n.v-executive-view .xv-chart .fan { opacity: .5; }\n.v-executive-view .xv-chart .pt { fill: var(--xv-surface); stroke: var(--xv-line); stroke-width: 1.5; }\n.v-executive-view .xv-chart .pt-end { stroke-width: 1.5; fill: var(--xv-surface); }\n.v-executive-view .xv-chart .halo { fill: var(--xv-line); opacity: .08; }\n\n/* Forecast scenarios strip (full-year totals) */\n.v-executive-view .xv-scen { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 16px; border-top: 1px solid var(--xv-hair); }\n.v-executive-view .xv-scen li { display: grid; gap: 6px; padding: 16px 16px 2px; min-width: 0; }\n.v-executive-view .xv-scen li:first-child { padding-left: 0; }\n.v-executive-view .xv-scen li + li { border-left: 1px solid var(--xv-hair); }\n.v-executive-view .xv-scen__k { display: flex; align-items: center; gap: 8px; font: 500 12px/1.3 var(--sans); color: var(--xv-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.v-executive-view .xv-scen__v { font: 400 24px/1 var(--display, var(--sans)); letter-spacing: -0.04em; color: var(--xv-ink); font-variant-numeric: lining-nums tabular-nums; }\n.v-executive-view .xv-scen__d { font: 400 12px/1.3 var(--sans); color: var(--xv-muted); white-space: nowrap; }\n.v-executive-view .xv-scen__d span { font: 400 10px/1 var(--mono); }\n\n/* Cost per outcome rows */\n.v-executive-view .xv-cpo { display: grid; }\n.v-executive-view .xv-cpo__head, .v-executive-view .xv-cpo__row {\n  display: grid; grid-template-columns: minmax(0, 1fr) auto 64px 52px; align-items: center; column-gap: 16px;\n}\n.v-executive-view .xv-cpo__head { padding-bottom: 8px; border-bottom: 1px solid var(--xv-hair); font: 400 10px/1.3 var(--mono); letter-spacing: -0.02em; text-transform: uppercase; color: var(--xv-muted); }\n.v-executive-view .xv-cpo__head span:nth-child(n+2) { text-align: right; }\n.v-executive-view .xv-cpo__row { padding: 12px 0; border-bottom: 1px solid var(--xv-hair-soft); }\n.v-executive-view .xv-cpo__row:last-child { border-bottom: 0; padding-bottom: 0; }\n.v-executive-view .xv-cpo__name { font: 500 12px/1.3 var(--sans); color: var(--xv-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.v-executive-view .xv-cpo__unit { display: block; font: 400 12px/1.3 var(--sans); color: var(--xv-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.v-executive-view .xv-cpo__v { font: 400 22px/1 var(--display, var(--sans)); letter-spacing: -0.04em; color: var(--xv-ink); text-align: right; font-variant-numeric: lining-nums tabular-nums; }\n.v-executive-view .xv-cpo .xv-spark { width: 64px; height: 22px; }\n.v-executive-view .xv-cpo__d { font: 400 10px/1 var(--mono); text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }\n\n/* Dumbbell: before / after by team */\n.v-executive-view .xv-db { display: grid; gap: 0; }\n.v-executive-view .xv-db__axis, .v-executive-view .xv-db__row { display: grid; grid-template-columns: 128px minmax(0, 1fr) 54px; align-items: center; column-gap: 16px; }\n.v-executive-view .xv-db__row { height: 32px; }\n.v-executive-view .xv-db__name { font: 500 12px/1.2 var(--sans); color: var(--xv-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.v-executive-view .xv-db__track { position: relative; height: 100%; }\n.v-executive-view .xv-db__track::before { content: \"\"; position: absolute; left: 0; right: 0; top: 50%; border-top: 1px solid var(--xv-hair-soft); }\n.v-executive-view .xv-db__track {\n  background:\n    linear-gradient(var(--xv-hair-soft), var(--xv-hair-soft)) 25% 0 / 1px 100% no-repeat,\n    linear-gradient(var(--xv-hair-soft), var(--xv-hair-soft)) 50% 0 / 1px 100% no-repeat,\n    linear-gradient(var(--xv-hair-soft), var(--xv-hair-soft)) 75% 0 / 1px 100% no-repeat;\n}\n.v-executive-view .xv-db__bar {\n  position: absolute; top: 50%; height: 2px; margin-top: -1px; left: var(--b); width: calc(var(--a) - var(--b));\n  background: linear-gradient(90deg, color-mix(in oklab, var(--xv-a2) 25%, transparent), var(--xv-a1));\n  border-radius: 1px; transform-origin: left center;\n}\n.v-executive-view .xv-db__b, .v-executive-view .xv-db__a { position: absolute; top: 50%; width: 9px; height: 9px; margin: -4.5px 0 0 -4.5px; border-radius: 50%; }\n.v-executive-view .xv-db__b { left: var(--b); background: var(--xv-surface); box-shadow: inset 0 0 0 1.5px var(--xv-faint); }\n.v-executive-view .xv-db__a { left: var(--a); background: var(--xv-line); box-shadow: 0 0 0 3px color-mix(in oklab, var(--xv-a1) 22%, transparent); }\n.v-executive-view .xv-db__d { font: 400 10px/1 var(--mono); color: var(--xv-text); text-align: right; font-variant-numeric: tabular-nums; }\n.v-executive-view .xv-db__axis { margin-top: 6px; }\n.v-executive-view .xv-db__ticks { position: relative; height: 14px; font: 400 10px/14px var(--mono); color: var(--xv-muted); }\n.v-executive-view .xv-db__ticks span { position: absolute; top: 0; transform: translateX(-50%); }\n.v-executive-view .xv-db__ticks span:first-child { transform: none; }\n.v-executive-view .xv-db__ticks span:last-child { transform: translateX(-100%); }\n.v-executive-view .xv-db__keys { display: flex; gap: 16px; font: 400 12px/1.3 var(--sans); color: var(--xv-soft); }\n.v-executive-view .xv-db__keys span { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }\n.v-executive-view .xv-db__keys i { width: 8px; height: 8px; border-radius: 50%; }\n.v-executive-view .xv-db__keys i.b { box-shadow: inset 0 0 0 1.5px var(--xv-faint); }\n.v-executive-view .xv-db__keys i.a { background: var(--xv-line); }\n\n/* Practice adoption */\n.v-executive-view .xv-prac { display: grid; }\n.v-executive-view .xv-prac li { padding: 12px 0 12px; border-bottom: 1px solid var(--xv-hair-soft); }\n.v-executive-view .xv-prac li:first-child { padding-top: 2px; }\n.v-executive-view .xv-prac li:last-child { border-bottom: 0; padding-bottom: 0; }\n.v-executive-view .xv-prac__top { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }\n.v-executive-view .xv-prac__name { font: 500 12px/1.3 var(--sans); color: var(--xv-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.v-executive-view .xv-prac__n { font: 400 10px/1 var(--mono); color: var(--xv-muted); white-space: nowrap; font-variant-numeric: tabular-nums; }\n.v-executive-view .xv-prac__n b { font-weight: 500; color: var(--xv-ink); }\n.v-executive-view .xv-prac__bar { position: relative; margin-top: 8px; height: 3px; border-radius: 2px; background: var(--xv-hair-soft); overflow: hidden; }\n.v-executive-view .xv-prac__bar b { position: absolute; left: 0; top: 0; bottom: 0; width: var(--w); border-radius: 2px; background: var(--xv-line); transform-origin: left center; }\n\n/* Footer */\n.v-executive-view .xv-foot {\n  display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap;\n  padding: 12px 24px; border-top: 1px solid var(--xv-hair); background: var(--xv-bar);\n  font: 400 12px/1.3 var(--sans); color: var(--xv-muted);\n}\n.v-executive-view .xv-foot span { display: inline-flex; align-items: center; gap: 8px; }\n.v-executive-view .xv-foot .dot { width: 6px; height: 6px; border-radius: 50%; background: linear-gradient(140deg, var(--mint), var(--sky)); box-shadow: 0 0 0 1px color-mix(in oklab, var(--sky-deep) 35%, transparent); }\n\n.v-executive-view .xv-narrow-only { display: none; }\n\n/* Compact size: KPI strip + main chart only */\n.v-executive-view[data-size=\"compact\"] .xv-side,\n.v-executive-view[data-size=\"compact\"] .xv-foot,\n.v-executive-view[data-size=\"compact\"] .xv-pane__note { display: none; }\n.v-executive-view[data-size=\"compact\"] .xv-main { grid-template-columns: minmax(0, 1fr); }\n.v-executive-view[data-size=\"compact\"] .xv-kpi--opt { display: none; }\n.v-executive-view[data-size=\"compact\"] .xv-kpis:not([data-cols]) { --xv-kpi-cols: 2; }\n\n/* Side panel off (home phone, as home.css @max-width 640px hides .home-hero__fig .xv-side) */\n.v-executive-view[data-side=\"hidden\"] .xv-side { display: none; }\n.v-executive-view[data-side=\"hidden\"] .xv-main { grid-template-columns: minmax(0, 1fr); }\n\n/* --------------------------------------------------------------------------\n   Responsive (container width, not viewport)\n   -------------------------------------------------------------------------- */\n@container xv (max-width: 900px) {\n  .v-executive-view .xv-kpis { --xv-kpi-cols: 2; }\n  .v-executive-view .xv-kpis[data-cols=\"3\"] { --xv-kpi-cols: 3; }\n  .v-executive-view .xv-kpis:not([data-cols=\"3\"]) .xv-kpi:nth-child(3) { border-left: 0; }\n  .v-executive-view .xv-kpis:not([data-cols=\"3\"]) .xv-kpi:nth-child(n+3) { border-top: 1px solid var(--xv-hair); }\n  .v-executive-view .xv-main { grid-template-columns: minmax(0, 1fr); }\n  .v-executive-view .xv-main > * + * { border-left: 0; border-top: 1px solid var(--xv-hair); }\n  .v-executive-view .xv-chip--ghost { display: none; }\n}\n@container xv (max-width: 640px) {\n  .v-executive-view .xv-kpis[data-cols=\"3\"] { --xv-kpi-cols: 2; }\n  .v-executive-view .xv-kpis[data-cols=\"3\"] .xv-kpi:first-child { grid-column: 1 / -1; }\n  .v-executive-view .xv-kpis[data-cols=\"3\"] .xv-kpi:nth-child(2) { border-left: 0; }\n  .v-executive-view .xv-kpis[data-cols=\"3\"] .xv-kpi:nth-child(n+2) { border-top: 1px solid var(--xv-hair); }\n  .v-executive-view .xv-appbar__end .xv-chip { display: none; }\n  .v-executive-view .xv-tabs__end { display: none; }\n  .v-executive-view .xv-db__axis, .v-executive-view .xv-db__row { grid-template-columns: 112px minmax(0, 1fr) 52px; column-gap: 10px; }\n}\n@container xv (max-width: 520px) {\n  .v-executive-view { --xv-chart-h: 196px; }\n  .v-executive-view .xv-appbar { height: 46px; padding: 0 16px; gap: 10px; }\n  .v-executive-view .xv-brand { padding-right: 10px; font-size: 16px; }\n  .v-executive-view .xv-crumb span { display: none; }\n  .v-executive-view .xv-tabs { padding: 0 16px; gap: 16px; }\n  .v-executive-view .xv-kpi { padding: 16px 16px 16px; }\n  .v-executive-view .xv-kpi__v { font-size: 24px; }\n  .v-executive-view .xv-kpi .xv-spark { display: none; }\n  .v-executive-view .xv-main > * { padding: 16px 16px 16px; }\n  .v-executive-view .xv-pane__head { flex-direction: column; gap: 2px; margin-bottom: 12px; }\n  .v-executive-view .xv-legend { gap: 6px 16px; }\n  .v-executive-view .xv-cpo__head, .v-executive-view .xv-cpo__row { grid-template-columns: minmax(0, 1fr) auto 46px; column-gap: 12px; }\n  .v-executive-view .xv-cpo .xv-spark, .v-executive-view .xv-cpo__head span:nth-child(3) { display: none; }\n  .v-executive-view .xv-foot { padding: 10px 16px; }\n  .v-executive-view .xv-foot > span:last-child { display: none; }\n  .v-executive-view .xv-meter__fckey, .v-executive-view .xv-wide-only { display: none; }\n  .v-executive-view .xv-narrow-only { display: inline; }\n  .v-executive-view .xv-db__keys { margin-top: 4px; }\n  /* scenarios become a list */\n  .v-executive-view .xv-scen { grid-template-columns: minmax(0, 1fr); }\n  .v-executive-view .xv-scen li { grid-template-columns: minmax(0, 1fr) auto 92px; align-items: center; gap: 12px; padding: 10px 0; }\n  .v-executive-view .xv-scen li + li { border-left: 0; border-top: 1px solid var(--xv-hair-soft); }\n  .v-executive-view .xv-scen__v { font-size: 20px; text-align: right; }\n  .v-executive-view .xv-scen__d { text-align: right; }\n  /* before/after rows stack: name + change on one line, track below */\n  .v-executive-view .xv-db__row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: \"n d\" \"t t\"; height: auto; padding: 8px 0 2px; row-gap: 2px; }\n  .v-executive-view .xv-db__name { grid-area: n; }\n  .v-executive-view .xv-db__d { grid-area: d; }\n  .v-executive-view .xv-db__track { grid-area: t; height: 18px; }\n  .v-executive-view .xv-db__axis { grid-template-columns: minmax(0, 1fr); }\n  .v-executive-view .xv-db__axis > span:not(.xv-db__ticks) { display: none; }\n}\n@container xv (max-width: 400px) {\n  .v-executive-view .xv-scen li { grid-template-columns: minmax(0, 1fr) auto 84px; }\n  .v-executive-view .xv-kpi__v { font-size: 24px; }\n  .v-executive-view .xv-kpi__k { white-space: normal; }\n}\n\n/* --------------------------------------------------------------------------\n   Motion (JS adds .xv-armed; the active panel gets .is-in when in view).\n   Without JS or under reduced motion everything renders in its final state.\n   -------------------------------------------------------------------------- */\n.v-executive-view.xv-armed .xv-panel { --xv-ease: cubic-bezier(.16, 1, .3, 1); }\n.v-executive-view.xv-armed .xv-panel .clip-a,\n.v-executive-view.xv-armed .xv-panel .clip-f { transform-box: fill-box; transform-origin: left center; transition: transform 1.25s var(--xv-ease); }\n.v-executive-view.xv-armed .xv-panel .clip-f { transition-duration: 1.1s; transition-delay: .95s; }\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .clip-a,\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .clip-f { transform: scaleX(0); }\n.v-executive-view.xv-armed .xv-panel .xv-chart .fc-label,\n.v-executive-view.xv-armed .xv-panel .xv-chart .end-lbl { transition: opacity .6s var(--ease) 1.7s; }\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-chart .fc-label,\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-chart .end-lbl { opacity: 0; }\n\n.v-executive-view.xv-armed .xv-panel .xv-meter__act,\n.v-executive-view.xv-armed .xv-panel .xv-meter__fc,\n.v-executive-view.xv-armed .xv-panel .xv-prac__bar b,\n.v-executive-view.xv-armed .xv-panel .xv-db__bar { transform-origin: left center; transition: transform 1.1s var(--xv-ease); transition-delay: var(--dl, .15s); }\n.v-executive-view.xv-armed .xv-panel .xv-meter__fc { transition-delay: .7s; }\n.v-executive-view.xv-armed .xv-panel .xv-meter__over { transition: opacity .5s var(--ease) 1.6s; }\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-meter__over { opacity: 0; }\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-meter__act,\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-meter__fc,\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-prac__bar b,\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-db__bar { transform: scaleX(0); }\n\n.v-executive-view.xv-armed .xv-panel .xv-db__a { transition: left 1.1s var(--xv-ease), opacity .3s var(--ease); transition-delay: var(--dl, .15s); }\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-db__a { left: var(--b); opacity: 0; }\n\n.v-executive-view.xv-armed .xv-panel .xv-spark .l { transition: stroke-dashoffset 1.2s var(--xv-ease) .2s; stroke-dasharray: 1 1; stroke-dashoffset: 0; }\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-spark .l { stroke-dashoffset: 1; }\n.v-executive-view.xv-armed .xv-panel .xv-spark circle,\n.v-executive-view.xv-armed .xv-panel .xv-spark .a { transition: opacity .5s var(--ease) 1.1s; }\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-spark circle,\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-spark .a { opacity: 0; }\n\n.v-executive-view.xv-armed .xv-panel .xv-tiles span,\n.v-executive-view.xv-armed .xv-panel .xv-segs span { transition: background .45s var(--ease), box-shadow .45s var(--ease); transition-delay: var(--dl, 0s); }\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-tiles span.on,\n.v-executive-view.xv-armed .xv-panel:not(.is-in) .xv-segs span.on { background: var(--xv-hair-soft); box-shadow: inset 0 0 0 1px var(--xv-hair); }\n\n/* Tab switch: a short crossfade of the incoming panel */\n.v-executive-view.xv-armed .xv-panel.is-entering { animation: xv-panel-in .42s var(--ease-out) both; }\n@keyframes xv-panel-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }\n\n@media (prefers-reduced-motion: reduce) {\n  .v-executive-view *, .v-executive-view *::before, .v-executive-view *::after { transition: none !important; animation: none !important; }\n}\n\n/* --------------------------------------------------------------------------\n   Critic pass\n   -------------------------------------------------------------------------- */\n/* Tab switch keeps the window height (JS sets min-height on first switch),\n   so content below the mock does not jump. The footer stays pinned to the bottom. */\n.v-executive-view .xv-window.is-locked { display: flex; flex-direction: column; }\n.v-executive-view .xv-window.is-locked > .xv-panel:not([hidden]) { display: flex; flex-direction: column; flex: 1 1 auto; }\n.v-executive-view .xv-window.is-locked .xv-main { flex: 1 1 auto; }\n/* the shorter panel spreads its rows into the spare height instead of leaving a blank strip */\n.v-executive-view .xv-window.is-locked .xv-main > .xv-pane { display: flex; flex-direction: column; }\n.v-executive-view .xv-window.is-locked .xv-db,\n.v-executive-view .xv-window.is-locked .xv-prac { flex: 1 1 auto; }\n.v-executive-view .xv-window.is-locked .xv-db__axis { align-self: start; }\n.v-executive-view .xv-window.is-locked .xv-prac li { display: flex; flex-direction: column; justify-content: center; }\n.v-executive-view .xv-window.is-locked .xv-prac li:first-child { padding-top: 12px; }\n\n/* The recommended wrapper puts an .atmos preset in .figure__stage. The stage is a\n   positioned layer, so its light (inset -30%) painted over the section heading above\n   and the Fig. caption below. Fade the light out at the top and bottom so it bleeds\n   sideways only, and lift the caption above it. */\n.figure__stage:has(> .v-executive-view) > .atmos::before {\n  -webkit-mask: linear-gradient(to bottom, transparent 10%, #000 34%, #000 72%, transparent 94%);\n          mask: linear-gradient(to bottom, transparent 10%, #000 34%, #000 72%, transparent 94%);\n}\n.figure:has(> .figure__stage > .v-executive-view) > .fig-cap { position: relative; z-index: 1; }\n\n/* Narrow cards (phones): drop the product wordmark so the surface name never truncates\n   next to the chips. */\n@container xv (max-width: 380px) {\n  .v-executive-view .xv-brand { display: none; }\n  .v-executive-view .xv-appbar { gap: 8px; }\n}\n`;const PRESETS={\"home-1\":`<div class=\"v-executive-view\" data-variant=\"spend\">\n      <div class=\"xv-window\" role=\"group\" aria-label=\"XTrace spend, ROI and adoption product mock\">\n\n        <div class=\"xv-appbar\">\n          <span class=\"xv-brand\" aria-hidden=\"true\"><span class=\"xt-lockup xt-lockup--ui\"><span class=\"xt-lockup__mark\" aria-hidden=\"true\"></span><span class=\"xt-lockup__word\" aria-hidden=\"true\">XTrace</span></span></span>\n          <span class=\"xv-crumb\">Overview <span>/ Portfolio</span></span>\n          <div class=\"xv-appbar__end\">\n            <span class=\"xv-chip xv-chip--ghost\" aria-hidden=\"true\">All business units <svg viewBox=\"0 0 10 10\"><path d=\"M2 3.5l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\"/></svg></span>\n            <span class=\"xv-chip\" aria-hidden=\"true\">FY26 to date <svg viewBox=\"0 0 10 10\"><path d=\"M2 3.5l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\"/></svg></span>\n          </div>\n        </div>\n\n        <div class=\"xv-tabs\" role=\"tablist\" aria-label=\"Spend and adoption\">\n          <button class=\"xv-tab\" type=\"button\" role=\"tab\" data-tab=\"spend\" aria-selected=\"true\">Spend &amp; ROI</button>\n          <button class=\"xv-tab\" type=\"button\" role=\"tab\" data-tab=\"adoption\" aria-selected=\"false\" tabindex=\"-1\">Adoption</button>\n          <span class=\"xv-tabs__end\" aria-hidden=\"true\">Through <b>September</b></span>\n        </div>\n\n        <!-- ===================== PANEL: SPEND & ROI ===================== -->\n        <section class=\"xv-panel\" data-panel=\"spend\" role=\"tabpanel\" aria-label=\"Spend and ROI\">\n          <div class=\"xv-kpis\">\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">AI spend, year to date</p>\n              <div class=\"xv-kpi__row\">\n                <p class=\"xv-kpi__v\">$1.24M</p>\n                <svg class=\"xv-spark\" data-points=\"96 103 114 124 136 147 161 172 183\"></svg>\n              </div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">+27%</span> Q3 vs. Q2</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Budget vs. actual, FY26</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">99%<small>of plan to date</small></p></div>\n              <div class=\"xv-meter\" style=\"--act:68.7%;--plan:69.2%;--fc:100%;--over:2.3%\" role=\"img\" aria-label=\"$1.24 million spent of a $1.80 million budget, 99 percent of plan to date. Base forecast reaches 102 percent of budget.\">\n                <span class=\"xv-meter__track\"></span>\n                <span class=\"xv-meter__fc\"></span>\n                <span class=\"xv-meter__act\"></span>\n                <span class=\"xv-meter__over\"></span>\n                <span class=\"xv-meter__plan\"></span>\n              </div>\n              <p class=\"xv-meter__legend\" aria-hidden=\"true\"><span><i></i>$1.24M<span class=\"xv-wide-only\"> spent</span></span><span class=\"xv-meter__fckey\"><i class=\"fc\"></i>Forecast</span><span><span class=\"xv-narrow-only\">of </span>$1.80M<span class=\"xv-wide-only\"> budget</span></span></p>\n            </div>\n            <div class=\"xv-kpi xv-kpi--opt\">\n              <p class=\"xv-kpi__k\">Full-year forecast</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">$1.84M</p></div>\n              <p class=\"xv-kpi__d\">Base forecast, <span class=\"mono-n xv-bad\">2%</span> over budget</p>\n            </div>\n            <div class=\"xv-kpi xv-kpi--opt\">\n              <p class=\"xv-kpi__k\">Spend tied to KPIs</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">81%</p></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">14</span> workflows mapped</p>\n            </div>\n          </div>\n\n          <div class=\"xv-main\">\n            <div class=\"xv-pane\">\n              <div class=\"xv-pane__head\">\n                <p class=\"xv-pane__title\">Monthly spend and forecast</p>\n                <ul class=\"xv-legend\" aria-hidden=\"true\">\n                  <li><span class=\"xv-key\"></span>Actual</li>\n                  <li><span class=\"xv-key xv-key--dot\"></span>Budget</li>\n                </ul>\n              </div>\n              <div class=\"xv-chart\" role=\"img\"\n                   aria-label=\"Line chart of monthly AI spend. Actual spend rises from $96k in January to $183k in September, close to the quarterly budget. Forecast for October to December: the base forecast reaches $209k a month, or $158k with XTrace's suggested optimizations. Full year: base $1.84 million, or $1.73 million with optimizations, against a $1.80 million budget.\"\n                   data-months=\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\"\n                   data-actual=\"96 103 114 124 136 147 161 172 183\"\n                   data-budget=\"110 110 110 135 135 135 170 170 170 185 185 185\"\n                   data-base=\"195 202 209\"\n                   data-opt=\"172 164 158\"\n                   data-unit=\"k\"\n                   data-names=\"Base|With optimizations\"></div>\n              <ul class=\"xv-scen\" aria-label=\"Full-year forecast\">\n                <li><span class=\"xv-scen__k\"><i class=\"xv-key xv-key--dash\"></i>Base</span><span class=\"xv-scen__v\">$1.84M</span><span class=\"xv-scen__d\"><span class=\"xv-bad\">+2%</span> vs. budget</span></li>\n                <li><span class=\"xv-scen__k\"><i class=\"xv-key xv-key--a2\"></i>With optimizations</span><span class=\"xv-scen__v\">$1.73M</span><span class=\"xv-scen__d\"><span class=\"xv-dn\">−4%</span> vs. budget</span></li>\n              </ul>\n              <p class=\"xv-pane__note\">With optimizations: spend if XTrace's suggested changes, such as a model or skill change, are applied.</p>\n            </div>\n\n            <div class=\"xv-pane xv-side\">\n              <div class=\"xv-pane__head\">\n                <p class=\"xv-pane__title\">Cost per outcome</p>\n                <span class=\"xv-pane__sub\">Six-month change</span>\n              </div>\n              <div class=\"xv-cpo\" role=\"table\" aria-label=\"Cost per outcome by workflow\">\n                <div class=\"xv-cpo__head\" role=\"row\"><span role=\"columnheader\">Workflow</span><span role=\"columnheader\">Unit cost</span><span role=\"columnheader\">Trend</span><span role=\"columnheader\">Change</span></div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Customer support</span><span class=\"xv-cpo__unit\">per resolved ticket</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$0.84</span>\n                  <svg class=\"xv-spark\" data-points=\"1.08 1.03 0.97 0.92 0.88 0.84\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−22%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Engineering</span><span class=\"xv-cpo__unit\">per merged pull request</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$2.10</span>\n                  <svg class=\"xv-spark\" data-points=\"2.44 2.38 2.31 2.22 2.15 2.10\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−14%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Claims</span><span class=\"xv-cpo__unit\">per processed claim</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$1.12</span>\n                  <svg class=\"xv-spark\" data-points=\"1.23 1.21 1.18 1.16 1.13 1.12\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−9%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Finance operations</span><span class=\"xv-cpo__unit\">per reconciled invoice</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$0.31</span>\n                  <svg class=\"xv-spark\" data-points=\"0.38 0.37 0.35 0.34 0.32 0.31\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−18%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Sales</span><span class=\"xv-cpo__unit\">per account brief</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$1.40</span>\n                  <svg class=\"xv-spark\" data-points=\"1.32 1.30 1.35 1.37 1.36 1.40\"></svg>\n                  <span class=\"xv-cpo__d xv-bad\" role=\"cell\">+6%</span>\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"xv-foot\">\n            <span><i class=\"dot\" aria-hidden=\"true\"></i>23 teams \\xb7 14 workflows \\xb7 team-level data</span>\n            <span>FY26</span>\n          </div>\n        </section>\n\n        <!-- ===================== PANEL: ADOPTION ===================== -->\n        <section class=\"xv-panel\" data-panel=\"adoption\" role=\"tabpanel\" aria-label=\"Adoption\" hidden>\n          <div class=\"xv-kpis\" data-cols=\"3\">\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Teams with steady AI use</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">17<small>of 23</small></p></div>\n              <div class=\"xv-tiles\" data-count=\"23\" data-on=\"17\" role=\"img\" aria-label=\"17 of 23 teams use AI steadily, up from 8 before rollout.\"></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n xv-up\">+9</span> teams since rollout</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Stalled sessions</p>\n              <div class=\"xv-kpi__row\">\n                <p class=\"xv-kpi__v\">11%</p>\n                <svg class=\"xv-spark\" data-points=\"24 25 23 24 22 19 17 15 14 12 12 11\" data-marker=\"4\"></svg>\n              </div>\n              <p class=\"xv-kpi__d\">From <span class=\"mono-n\">24%</span> before standards</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Standards adopted</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">12<small>of 15</small></p></div>\n              <div class=\"xv-segs\" data-count=\"15\" data-on=\"12\" role=\"img\" aria-label=\"12 of 15 standards adopted.\"></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">3</span> rolling out</p>\n            </div>\n          </div>\n\n          <div class=\"xv-main\">\n            <div class=\"xv-pane\">\n              <div class=\"xv-pane__head\">\n                <p class=\"xv-pane__title\">Work done with AI, before and after</p>\n                <span class=\"xv-db__keys\" aria-hidden=\"true\"><span><i class=\"b\"></i>Q1, before</span><span><i class=\"a\"></i>Q3, after</span></span>\n              </div>\n              <div class=\"xv-db\" role=\"img\" aria-label=\"Share of eligible work done with AI, by team, Q1 before rollout versus Q3 after. Platform 38 to 71 percent. Customer support 41 to 66. Data science 30 to 62. Payments 22 to 58. Mobile 18 to 47. Finance operations 9 to 34. Risk and compliance 12 to 29.\">\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Platform</span><span class=\"xv-db__track\" style=\"--b:38%;--a:71%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+33<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Customer support</span><span class=\"xv-db__track\" style=\"--b:41%;--a:66%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+25<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Data science</span><span class=\"xv-db__track\" style=\"--b:30%;--a:62%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+32<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Payments</span><span class=\"xv-db__track\" style=\"--b:22%;--a:58%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+36<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Mobile</span><span class=\"xv-db__track\" style=\"--b:18%;--a:47%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+29<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Finance operations</span><span class=\"xv-db__track\" style=\"--b:9%;--a:34%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+25<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Risk &amp; compliance</span><span class=\"xv-db__track\" style=\"--b:12%;--a:29%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+17<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__axis\" aria-hidden=\"true\"><span></span><span class=\"xv-db__ticks\"><span style=\"left:0\">0</span><span style=\"left:25%\">25</span><span style=\"left:50%\">50</span><span style=\"left:75%\">75</span><span style=\"left:100%\">100%</span></span><span></span></div>\n              </div>\n            </div>\n\n            <div class=\"xv-pane xv-side\">\n              <div class=\"xv-pane__head\">\n                <p class=\"xv-pane__title\">Practice adoption</p>\n                <span class=\"xv-pane__sub\">Teams using each standard</span>\n              </div>\n              <ul class=\"xv-prac\">\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Plan before generating code</span><span class=\"xv-prac__n\"><b>21</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:91%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Shared project context</span><span class=\"xv-prac__n\"><b>18</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:78%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Tests on agent output</span><span class=\"xv-prac__n\"><b>15</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:65%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Right-sized model choice</span><span class=\"xv-prac__n\"><b>12</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:52%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Reuse of team knowledge</span><span class=\"xv-prac__n\"><b>10</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:43%\"></b></div></li>\n              </ul>\n            </div>\n          </div>\n\n          <div class=\"xv-foot\">\n            <span><i class=\"dot\" aria-hidden=\"true\"></i>23 teams \\xb7 team-level data</span>\n            <span>Before: Q1 FY26 \\xb7 After: Q3 FY26</span>\n          </div>\n        </section>\n\n      </div>\n    </div>`,\"home-2\":`<div class=\"v-executive-view\" data-variant=\"adoption\" data-size=\"compact\">\n      <div class=\"xv-window\" role=\"group\" aria-label=\"XTrace spend, ROI and adoption product mock\">\n\n        <div class=\"xv-appbar\">\n          <span class=\"xv-brand\" aria-hidden=\"true\"><span class=\"xt-lockup xt-lockup--ui\"><span class=\"xt-lockup__mark\" aria-hidden=\"true\"></span><span class=\"xt-lockup__word\" aria-hidden=\"true\">XTrace</span></span></span>\n          <span class=\"xv-crumb\">Overview <span>/ Portfolio</span></span>\n          <div class=\"xv-appbar__end\">\n            <span class=\"xv-chip xv-chip--ghost\" aria-hidden=\"true\">All business units <svg viewBox=\"0 0 10 10\"><path d=\"M2 3.5l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\"/></svg></span>\n            <span class=\"xv-chip\" aria-hidden=\"true\">FY26 to date <svg viewBox=\"0 0 10 10\"><path d=\"M2 3.5l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\"/></svg></span>\n          </div>\n        </div>\n\n        <div class=\"xv-tabs\" role=\"tablist\" aria-label=\"Spend and adoption\">\n          <button class=\"xv-tab\" type=\"button\" role=\"tab\" data-tab=\"spend\" aria-selected=\"true\">Spend &amp; ROI</button>\n          <button class=\"xv-tab\" type=\"button\" role=\"tab\" data-tab=\"adoption\" aria-selected=\"false\" tabindex=\"-1\">Adoption</button>\n          <span class=\"xv-tabs__end\" aria-hidden=\"true\">Through <b>September</b></span>\n        </div>\n\n        <!-- ===================== PANEL: SPEND & ROI ===================== -->\n        <section class=\"xv-panel\" data-panel=\"spend\" role=\"tabpanel\" aria-label=\"Spend and ROI\">\n          <div class=\"xv-kpis\">\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">AI spend, year to date</p>\n              <div class=\"xv-kpi__row\">\n                <p class=\"xv-kpi__v\">$1.24M</p>\n                <svg class=\"xv-spark\" data-points=\"96 103 114 124 136 147 161 172 183\"></svg>\n              </div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">+27%</span> Q3 vs. Q2</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Budget vs. actual, FY26</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">99%<small>of plan to date</small></p></div>\n              <div class=\"xv-meter\" style=\"--act:68.7%;--plan:69.2%;--fc:100%;--over:2.3%\" role=\"img\" aria-label=\"$1.24 million spent of a $1.80 million budget, 99 percent of plan to date. Base forecast reaches 102 percent of budget.\">\n                <span class=\"xv-meter__track\"></span>\n                <span class=\"xv-meter__fc\"></span>\n                <span class=\"xv-meter__act\"></span>\n                <span class=\"xv-meter__over\"></span>\n                <span class=\"xv-meter__plan\"></span>\n              </div>\n              <p class=\"xv-meter__legend\" aria-hidden=\"true\"><span><i></i>$1.24M<span class=\"xv-wide-only\"> spent</span></span><span class=\"xv-meter__fckey\"><i class=\"fc\"></i>Forecast</span><span><span class=\"xv-narrow-only\">of </span>$1.80M<span class=\"xv-wide-only\"> budget</span></span></p>\n            </div>\n            <div class=\"xv-kpi xv-kpi--opt\">\n              <p class=\"xv-kpi__k\">Full-year forecast</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">$1.84M</p></div>\n              <p class=\"xv-kpi__d\">Base forecast, <span class=\"mono-n xv-bad\">2%</span> over budget</p>\n            </div>\n            <div class=\"xv-kpi xv-kpi--opt\">\n              <p class=\"xv-kpi__k\">Spend tied to KPIs</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">81%</p></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">14</span> workflows mapped</p>\n            </div>\n          </div>\n\n          <div class=\"xv-main\">\n            <div class=\"xv-pane\">\n              <div class=\"xv-pane__head\">\n                <h4 class=\"xv-pane__title\">Monthly spend and forecast</h4>\n                <ul class=\"xv-legend\" aria-hidden=\"true\">\n                  <li><span class=\"xv-key\"></span>Actual</li>\n                  <li><span class=\"xv-key xv-key--dot\"></span>Budget</li>\n                </ul>\n              </div>\n              <div class=\"xv-chart\" role=\"img\"\n                   aria-label=\"Line chart of monthly AI spend. Actual spend rises from $96k in January to $183k in September, close to the quarterly budget. Forecast for October to December: the base forecast reaches $209k a month, or $158k with XTrace's suggested optimizations. Full year: base $1.84 million, or $1.73 million with optimizations, against a $1.80 million budget.\"\n                   data-months=\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\"\n                   data-actual=\"96 103 114 124 136 147 161 172 183\"\n                   data-budget=\"110 110 110 135 135 135 170 170 170 185 185 185\"\n                   data-base=\"195 202 209\"\n                   data-opt=\"172 164 158\"\n                   data-unit=\"k\"\n                   data-names=\"Base|With optimizations\"></div>\n              <ul class=\"xv-scen\" aria-label=\"Full-year forecast\">\n                <li><span class=\"xv-scen__k\"><i class=\"xv-key xv-key--dash\"></i>Base</span><span class=\"xv-scen__v\">$1.84M</span><span class=\"xv-scen__d\"><span class=\"xv-bad\">+2%</span> vs. budget</span></li>\n                <li><span class=\"xv-scen__k\"><i class=\"xv-key xv-key--a2\"></i>With optimizations</span><span class=\"xv-scen__v\">$1.73M</span><span class=\"xv-scen__d\"><span class=\"xv-dn\">−4%</span> vs. budget</span></li>\n              </ul>\n              <p class=\"xv-pane__note\">With optimizations: spend if XTrace's suggested changes, such as a model or skill change, are applied.</p>\n            </div>\n\n            <div class=\"xv-pane xv-side\">\n              <div class=\"xv-pane__head\">\n                <h4 class=\"xv-pane__title\">Cost per outcome</h4>\n                <span class=\"xv-pane__sub\">Six-month change</span>\n              </div>\n              <div class=\"xv-cpo\" role=\"table\" aria-label=\"Cost per outcome by workflow\">\n                <div class=\"xv-cpo__head\" role=\"row\"><span role=\"columnheader\">Workflow</span><span role=\"columnheader\">Unit cost</span><span role=\"columnheader\">Trend</span><span role=\"columnheader\">Change</span></div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Customer support</span><span class=\"xv-cpo__unit\">per resolved ticket</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$0.84</span>\n                  <svg class=\"xv-spark\" data-points=\"1.08 1.03 0.97 0.92 0.88 0.84\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−22%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Engineering</span><span class=\"xv-cpo__unit\">per merged pull request</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$2.10</span>\n                  <svg class=\"xv-spark\" data-points=\"2.44 2.38 2.31 2.22 2.15 2.10\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−14%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Claims</span><span class=\"xv-cpo__unit\">per processed claim</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$1.12</span>\n                  <svg class=\"xv-spark\" data-points=\"1.23 1.21 1.18 1.16 1.13 1.12\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−9%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Finance operations</span><span class=\"xv-cpo__unit\">per reconciled invoice</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$0.31</span>\n                  <svg class=\"xv-spark\" data-points=\"0.38 0.37 0.35 0.34 0.32 0.31\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−18%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Sales</span><span class=\"xv-cpo__unit\">per account brief</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$1.40</span>\n                  <svg class=\"xv-spark\" data-points=\"1.32 1.30 1.35 1.37 1.36 1.40\"></svg>\n                  <span class=\"xv-cpo__d xv-bad\" role=\"cell\">+6%</span>\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"xv-foot\">\n            <span><i class=\"dot\" aria-hidden=\"true\"></i>23 teams \\xb7 14 workflows \\xb7 team-level data</span>\n            <span>FY26</span>\n          </div>\n        </section>\n\n        <!-- ===================== PANEL: ADOPTION ===================== -->\n        <section class=\"xv-panel\" data-panel=\"adoption\" role=\"tabpanel\" aria-label=\"Adoption\" hidden>\n          <div class=\"xv-kpis\" data-cols=\"3\">\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Teams with steady AI use</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">17<small>of 23</small></p></div>\n              <div class=\"xv-tiles\" data-count=\"23\" data-on=\"17\" role=\"img\" aria-label=\"17 of 23 teams use AI steadily, up from 8 before rollout.\"></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n xv-up\">+9</span> teams since rollout</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Stalled sessions</p>\n              <div class=\"xv-kpi__row\">\n                <p class=\"xv-kpi__v\">11%</p>\n                <svg class=\"xv-spark\" data-points=\"24 25 23 24 22 19 17 15 14 12 12 11\" data-marker=\"4\"></svg>\n              </div>\n              <p class=\"xv-kpi__d\">From <span class=\"mono-n\">24%</span> before standards</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Standards adopted</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">12<small>of 15</small></p></div>\n              <div class=\"xv-segs\" data-count=\"15\" data-on=\"12\" role=\"img\" aria-label=\"12 of 15 standards adopted.\"></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">3</span> rolling out</p>\n            </div>\n          </div>\n\n          <div class=\"xv-main\">\n            <div class=\"xv-pane\">\n              <div class=\"xv-pane__head\">\n                <h4 class=\"xv-pane__title\">Work done with AI, before and after</h4>\n                <span class=\"xv-db__keys\" aria-hidden=\"true\"><span><i class=\"b\"></i>Q1, before</span><span><i class=\"a\"></i>Q3, after</span></span>\n              </div>\n              <div class=\"xv-db\" role=\"img\" aria-label=\"Share of eligible work done with AI, by team, Q1 before rollout versus Q3 after. Platform 38 to 71 percent. Customer support 41 to 66. Data science 30 to 62. Payments 22 to 58. Mobile 18 to 47. Finance operations 9 to 34. Risk and compliance 12 to 29.\">\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Platform</span><span class=\"xv-db__track\" style=\"--b:38%;--a:71%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+33<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Customer support</span><span class=\"xv-db__track\" style=\"--b:41%;--a:66%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+25<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Data science</span><span class=\"xv-db__track\" style=\"--b:30%;--a:62%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+32<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Payments</span><span class=\"xv-db__track\" style=\"--b:22%;--a:58%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+36<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Mobile</span><span class=\"xv-db__track\" style=\"--b:18%;--a:47%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+29<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Finance operations</span><span class=\"xv-db__track\" style=\"--b:9%;--a:34%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+25<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Risk &amp; compliance</span><span class=\"xv-db__track\" style=\"--b:12%;--a:29%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+17<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__axis\" aria-hidden=\"true\"><span></span><span class=\"xv-db__ticks\"><span style=\"left:0\">0</span><span style=\"left:25%\">25</span><span style=\"left:50%\">50</span><span style=\"left:75%\">75</span><span style=\"left:100%\">100%</span></span><span></span></div>\n              </div>\n            </div>\n\n            <div class=\"xv-pane xv-side\">\n              <div class=\"xv-pane__head\">\n                <h4 class=\"xv-pane__title\">Practice adoption</h4>\n                <span class=\"xv-pane__sub\">Teams using each standard</span>\n              </div>\n              <ul class=\"xv-prac\">\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Plan before generating code</span><span class=\"xv-prac__n\"><b>21</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:91%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Shared project context</span><span class=\"xv-prac__n\"><b>18</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:78%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Tests on agent output</span><span class=\"xv-prac__n\"><b>15</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:65%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Right-sized model choice</span><span class=\"xv-prac__n\"><b>12</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:52%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Reuse of team knowledge</span><span class=\"xv-prac__n\"><b>10</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:43%\"></b></div></li>\n              </ul>\n            </div>\n          </div>\n\n          <div class=\"xv-foot\">\n            <span><i class=\"dot\" aria-hidden=\"true\"></i>23 teams \\xb7 team-level data</span>\n            <span>Before: Q1 FY26 \\xb7 After: Q3 FY26</span>\n          </div>\n        </section>\n\n      </div>\n    </div>`,\"governance\":`<div class=\"v-executive-view\" data-variant=\"spend\" data-size=\"compact\">\n      <div class=\"xv-window\" role=\"group\" aria-label=\"XTrace spend, ROI and adoption product mock\">\n\n        <div class=\"xv-appbar\">\n          <span class=\"xv-brand\" aria-hidden=\"true\"><span class=\"xt-lockup xt-lockup--ui\"><span class=\"xt-lockup__mark\" aria-hidden=\"true\"></span><span class=\"xt-lockup__word\" aria-hidden=\"true\">XTrace</span></span></span>\n          <span class=\"xv-crumb\">Overview <span>/ Portfolio</span></span>\n          <div class=\"xv-appbar__end\">\n            <span class=\"xv-chip xv-chip--ghost\" aria-hidden=\"true\">All business units <svg viewBox=\"0 0 10 10\"><path d=\"M2 3.5l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\"/></svg></span>\n            <span class=\"xv-chip\" aria-hidden=\"true\">FY26 to date <svg viewBox=\"0 0 10 10\"><path d=\"M2 3.5l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\"/></svg></span>\n          </div>\n        </div>\n\n        <div class=\"xv-tabs\" role=\"tablist\" aria-label=\"Spend and adoption\">\n          <button class=\"xv-tab\" type=\"button\" role=\"tab\" data-tab=\"spend\" aria-selected=\"true\">Spend &amp; ROI</button>\n          <button class=\"xv-tab\" type=\"button\" role=\"tab\" data-tab=\"adoption\" aria-selected=\"false\" tabindex=\"-1\">Adoption</button>\n          <span class=\"xv-tabs__end\" aria-hidden=\"true\">Through <b>September</b></span>\n        </div>\n\n        <!-- ===================== PANEL: SPEND & ROI ===================== -->\n        <section class=\"xv-panel\" data-panel=\"spend\" role=\"tabpanel\" aria-label=\"Spend and ROI\">\n          <div class=\"xv-kpis\">\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">AI spend, year to date</p>\n              <div class=\"xv-kpi__row\">\n                <p class=\"xv-kpi__v\">$1.24M</p>\n                <svg class=\"xv-spark\" data-points=\"96 103 114 124 136 147 161 172 183\"></svg>\n              </div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">+27%</span> Q3 vs. Q2</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Budget vs. actual, FY26</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">99%<small>of plan to date</small></p></div>\n              <div class=\"xv-meter\" style=\"--act:68.7%;--plan:69.2%;--fc:100%;--over:2.3%\" role=\"img\" aria-label=\"$1.24 million spent of a $1.80 million budget, 99 percent of plan to date. Base forecast reaches 102 percent of budget.\">\n                <span class=\"xv-meter__track\"></span>\n                <span class=\"xv-meter__fc\"></span>\n                <span class=\"xv-meter__act\"></span>\n                <span class=\"xv-meter__over\"></span>\n                <span class=\"xv-meter__plan\"></span>\n              </div>\n              <p class=\"xv-meter__legend\" aria-hidden=\"true\"><span><i></i>$1.24M<span class=\"xv-wide-only\"> spent</span></span><span class=\"xv-meter__fckey\"><i class=\"fc\"></i>Forecast</span><span><span class=\"xv-narrow-only\">of </span>$1.80M<span class=\"xv-wide-only\"> budget</span></span></p>\n            </div>\n            <div class=\"xv-kpi xv-kpi--opt\">\n              <p class=\"xv-kpi__k\">Full-year forecast</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">$1.84M</p></div>\n              <p class=\"xv-kpi__d\">Base forecast, <span class=\"mono-n xv-bad\">2%</span> over budget</p>\n            </div>\n            <div class=\"xv-kpi xv-kpi--opt\">\n              <p class=\"xv-kpi__k\">Spend tied to KPIs</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">81%</p></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">14</span> workflows mapped</p>\n            </div>\n          </div>\n\n          <div class=\"xv-main\">\n            <div class=\"xv-pane\">\n              <div class=\"xv-pane__head\">\n                <h3 class=\"xv-pane__title\">Monthly spend and forecast</h3>\n                <ul class=\"xv-legend\" aria-hidden=\"true\">\n                  <li><span class=\"xv-key\"></span>Actual</li>\n                  <li><span class=\"xv-key xv-key--dot\"></span>Budget</li>\n                </ul>\n              </div>\n              <div class=\"xv-chart\" role=\"img\"\n                   aria-label=\"Line chart of monthly AI spend. Actual spend rises from $96k in January to $183k in September, close to the quarterly budget. Forecast for October to December: the base forecast reaches $209k a month, or $158k with XTrace's suggested optimizations. Full year: base $1.84 million, or $1.73 million with optimizations, against a $1.80 million budget.\"\n                   data-months=\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\"\n                   data-actual=\"96 103 114 124 136 147 161 172 183\"\n                   data-budget=\"110 110 110 135 135 135 170 170 170 185 185 185\"\n                   data-base=\"195 202 209\"\n                   data-opt=\"172 164 158\"\n                   data-unit=\"k\"\n                   data-names=\"Base|With optimizations\"></div>\n              <ul class=\"xv-scen\" aria-label=\"Full-year forecast\">\n                <li><span class=\"xv-scen__k\"><i class=\"xv-key xv-key--dash\"></i>Base</span><span class=\"xv-scen__v\">$1.84M</span><span class=\"xv-scen__d\"><span class=\"xv-bad\">+2%</span> vs. budget</span></li>\n                <li><span class=\"xv-scen__k\"><i class=\"xv-key xv-key--a2\"></i>With optimizations</span><span class=\"xv-scen__v\">$1.73M</span><span class=\"xv-scen__d\"><span class=\"xv-dn\">−4%</span> vs. budget</span></li>\n              </ul>\n              <p class=\"xv-pane__note\">With optimizations: spend if XTrace's suggested changes, such as a model or skill change, are applied.</p>\n            </div>\n\n            <div class=\"xv-pane xv-side\">\n              <div class=\"xv-pane__head\">\n                <h3 class=\"xv-pane__title\">Cost per outcome</h3>\n                <span class=\"xv-pane__sub\">Six-month change</span>\n              </div>\n              <div class=\"xv-cpo\" role=\"table\" aria-label=\"Cost per outcome by workflow\">\n                <div class=\"xv-cpo__head\" role=\"row\"><span role=\"columnheader\">Workflow</span><span role=\"columnheader\">Unit cost</span><span role=\"columnheader\">Trend</span><span role=\"columnheader\">Change</span></div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Customer support</span><span class=\"xv-cpo__unit\">per resolved ticket</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$0.84</span>\n                  <svg class=\"xv-spark\" data-points=\"1.08 1.03 0.97 0.92 0.88 0.84\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−22%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Engineering</span><span class=\"xv-cpo__unit\">per merged pull request</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$2.10</span>\n                  <svg class=\"xv-spark\" data-points=\"2.44 2.38 2.31 2.22 2.15 2.10\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−14%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Claims</span><span class=\"xv-cpo__unit\">per processed claim</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$1.12</span>\n                  <svg class=\"xv-spark\" data-points=\"1.23 1.21 1.18 1.16 1.13 1.12\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−9%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Finance operations</span><span class=\"xv-cpo__unit\">per reconciled invoice</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$0.31</span>\n                  <svg class=\"xv-spark\" data-points=\"0.38 0.37 0.35 0.34 0.32 0.31\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−18%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Sales</span><span class=\"xv-cpo__unit\">per account brief</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$1.40</span>\n                  <svg class=\"xv-spark\" data-points=\"1.32 1.30 1.35 1.37 1.36 1.40\"></svg>\n                  <span class=\"xv-cpo__d xv-bad\" role=\"cell\">+6%</span>\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"xv-foot\">\n            <span><i class=\"dot\" aria-hidden=\"true\"></i>23 teams \\xb7 14 workflows \\xb7 team-level data</span>\n            <span>FY26</span>\n          </div>\n        </section>\n\n        <!-- ===================== PANEL: ADOPTION ===================== -->\n        <section class=\"xv-panel\" data-panel=\"adoption\" role=\"tabpanel\" aria-label=\"Adoption\" hidden>\n          <div class=\"xv-kpis\" data-cols=\"3\">\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Teams with steady AI use</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">17<small>of 23</small></p></div>\n              <div class=\"xv-tiles\" data-count=\"23\" data-on=\"17\" role=\"img\" aria-label=\"17 of 23 teams use AI steadily, up from 8 before rollout.\"></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n xv-up\">+9</span> teams since rollout</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Stalled sessions</p>\n              <div class=\"xv-kpi__row\">\n                <p class=\"xv-kpi__v\">11%</p>\n                <svg class=\"xv-spark\" data-points=\"24 25 23 24 22 19 17 15 14 12 12 11\" data-marker=\"4\"></svg>\n              </div>\n              <p class=\"xv-kpi__d\">From <span class=\"mono-n\">24%</span> before standards</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Standards adopted</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">12<small>of 15</small></p></div>\n              <div class=\"xv-segs\" data-count=\"15\" data-on=\"12\" role=\"img\" aria-label=\"12 of 15 standards adopted.\"></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">3</span> rolling out</p>\n            </div>\n          </div>\n\n          <div class=\"xv-main\">\n            <div class=\"xv-pane\">\n              <div class=\"xv-pane__head\">\n                <h3 class=\"xv-pane__title\">Work done with AI, before and after</h3>\n                <span class=\"xv-db__keys\" aria-hidden=\"true\"><span><i class=\"b\"></i>Q1, before</span><span><i class=\"a\"></i>Q3, after</span></span>\n              </div>\n              <div class=\"xv-db\" role=\"img\" aria-label=\"Share of eligible work done with AI, by team, Q1 before rollout versus Q3 after. Platform 38 to 71 percent. Customer support 41 to 66. Data science 30 to 62. Payments 22 to 58. Mobile 18 to 47. Finance operations 9 to 34. Risk and compliance 12 to 29.\">\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Platform</span><span class=\"xv-db__track\" style=\"--b:38%;--a:71%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+33<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Customer support</span><span class=\"xv-db__track\" style=\"--b:41%;--a:66%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+25<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Data science</span><span class=\"xv-db__track\" style=\"--b:30%;--a:62%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+32<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Payments</span><span class=\"xv-db__track\" style=\"--b:22%;--a:58%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+36<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Mobile</span><span class=\"xv-db__track\" style=\"--b:18%;--a:47%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+29<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Finance operations</span><span class=\"xv-db__track\" style=\"--b:9%;--a:34%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+25<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Risk &amp; compliance</span><span class=\"xv-db__track\" style=\"--b:12%;--a:29%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+17<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__axis\" aria-hidden=\"true\"><span></span><span class=\"xv-db__ticks\"><span style=\"left:0\">0</span><span style=\"left:25%\">25</span><span style=\"left:50%\">50</span><span style=\"left:75%\">75</span><span style=\"left:100%\">100%</span></span><span></span></div>\n              </div>\n            </div>\n\n            <div class=\"xv-pane xv-side\">\n              <div class=\"xv-pane__head\">\n                <h3 class=\"xv-pane__title\">Practice adoption</h3>\n                <span class=\"xv-pane__sub\">Teams using each standard</span>\n              </div>\n              <ul class=\"xv-prac\">\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Plan before generating code</span><span class=\"xv-prac__n\"><b>21</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:91%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Shared project context</span><span class=\"xv-prac__n\"><b>18</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:78%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Tests on agent output</span><span class=\"xv-prac__n\"><b>15</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:65%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Right-sized model choice</span><span class=\"xv-prac__n\"><b>12</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:52%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Reuse of team knowledge</span><span class=\"xv-prac__n\"><b>10</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:43%\"></b></div></li>\n              </ul>\n            </div>\n          </div>\n\n          <div class=\"xv-foot\">\n            <span><i class=\"dot\" aria-hidden=\"true\"></i>23 teams \\xb7 team-level data</span>\n            <span>Before: Q1 FY26 \\xb7 After: Q3 FY26</span>\n          </div>\n        </section>\n\n      </div>\n    </div>`,\"enablement\":`<div class=\"v-executive-view\" data-variant=\"adoption\">\n      <div class=\"xv-window\" role=\"group\" aria-label=\"XTrace spend, ROI and adoption product mock\">\n\n        <div class=\"xv-appbar\">\n          <span class=\"xv-brand\" aria-hidden=\"true\"><span class=\"xt-lockup xt-lockup--ui\"><span class=\"xt-lockup__mark\" aria-hidden=\"true\"></span><span class=\"xt-lockup__word\" aria-hidden=\"true\">XTrace</span></span></span>\n          <span class=\"xv-crumb\">Overview <span>/ Portfolio</span></span>\n          <div class=\"xv-appbar__end\">\n            <span class=\"xv-chip xv-chip--ghost\" aria-hidden=\"true\">All business units <svg viewBox=\"0 0 10 10\"><path d=\"M2 3.5l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\"/></svg></span>\n            <span class=\"xv-chip\" aria-hidden=\"true\">FY26 to date <svg viewBox=\"0 0 10 10\"><path d=\"M2 3.5l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\"/></svg></span>\n          </div>\n        </div>\n\n        <div class=\"xv-tabs\" role=\"tablist\" aria-label=\"Spend and adoption\">\n          <button class=\"xv-tab\" type=\"button\" role=\"tab\" data-tab=\"spend\" aria-selected=\"false\" tabindex=\"-1\">Spend &amp; ROI</button>\n          <button class=\"xv-tab\" type=\"button\" role=\"tab\" data-tab=\"adoption\" aria-selected=\"true\">Adoption</button>\n          <span class=\"xv-tabs__end\" aria-hidden=\"true\">Through <b>September</b></span>\n        </div>\n\n        <!-- ===================== PANEL: SPEND & ROI ===================== -->\n        <section class=\"xv-panel\" data-panel=\"spend\" role=\"tabpanel\" aria-label=\"Spend and ROI\" hidden>\n          <div class=\"xv-kpis\">\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">AI spend, year to date</p>\n              <div class=\"xv-kpi__row\">\n                <p class=\"xv-kpi__v\">$1.24M</p>\n                <svg class=\"xv-spark\" data-points=\"96 103 114 124 136 147 161 172 183\"></svg>\n              </div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">+27%</span> Q3 vs. Q2</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Budget vs. actual, FY26</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">99%<small>of plan to date</small></p></div>\n              <div class=\"xv-meter\" style=\"--act:68.7%;--plan:69.2%;--fc:100%;--over:2.3%\" role=\"img\" aria-label=\"$1.24 million spent of a $1.80 million budget, 99 percent of plan to date. Base forecast reaches 102 percent of budget.\">\n                <span class=\"xv-meter__track\"></span>\n                <span class=\"xv-meter__fc\"></span>\n                <span class=\"xv-meter__act\"></span>\n                <span class=\"xv-meter__over\"></span>\n                <span class=\"xv-meter__plan\"></span>\n              </div>\n              <p class=\"xv-meter__legend\" aria-hidden=\"true\"><span><i></i>$1.24M<span class=\"xv-wide-only\"> spent</span></span><span class=\"xv-meter__fckey\"><i class=\"fc\"></i>Forecast</span><span><span class=\"xv-narrow-only\">of </span>$1.80M<span class=\"xv-wide-only\"> budget</span></span></p>\n            </div>\n            <div class=\"xv-kpi xv-kpi--opt\">\n              <p class=\"xv-kpi__k\">Full-year forecast</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">$1.84M</p></div>\n              <p class=\"xv-kpi__d\">Base forecast, <span class=\"mono-n xv-bad\">2%</span> over budget</p>\n            </div>\n            <div class=\"xv-kpi xv-kpi--opt\">\n              <p class=\"xv-kpi__k\">Spend tied to KPIs</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">81%</p></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">14</span> workflows mapped</p>\n            </div>\n          </div>\n\n          <div class=\"xv-main\">\n            <div class=\"xv-pane\">\n              <div class=\"xv-pane__head\">\n                <h3 class=\"xv-pane__title\">Monthly spend and forecast</h3>\n                <ul class=\"xv-legend\" aria-hidden=\"true\">\n                  <li><span class=\"xv-key\"></span>Actual</li>\n                  <li><span class=\"xv-key xv-key--dot\"></span>Budget</li>\n                </ul>\n              </div>\n              <div class=\"xv-chart\" role=\"img\"\n                   aria-label=\"Line chart of monthly AI spend. Actual spend rises from $96k in January to $183k in September, close to the quarterly budget. Forecast for October to December: the base forecast reaches $209k a month, or $158k with XTrace's suggested optimizations. Full year: base $1.84 million, or $1.73 million with optimizations, against a $1.80 million budget.\"\n                   data-months=\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\"\n                   data-actual=\"96 103 114 124 136 147 161 172 183\"\n                   data-budget=\"110 110 110 135 135 135 170 170 170 185 185 185\"\n                   data-base=\"195 202 209\"\n                   data-opt=\"172 164 158\"\n                   data-unit=\"k\"\n                   data-names=\"Base|With optimizations\"></div>\n              <ul class=\"xv-scen\" aria-label=\"Full-year forecast\">\n                <li><span class=\"xv-scen__k\"><i class=\"xv-key xv-key--dash\"></i>Base</span><span class=\"xv-scen__v\">$1.84M</span><span class=\"xv-scen__d\"><span class=\"xv-bad\">+2%</span> vs. budget</span></li>\n                <li><span class=\"xv-scen__k\"><i class=\"xv-key xv-key--a2\"></i>With optimizations</span><span class=\"xv-scen__v\">$1.73M</span><span class=\"xv-scen__d\"><span class=\"xv-dn\">−4%</span> vs. budget</span></li>\n              </ul>\n              <p class=\"xv-pane__note\">With optimizations: spend if XTrace's suggested changes, such as a model or skill change, are applied.</p>\n            </div>\n\n            <div class=\"xv-pane xv-side\">\n              <div class=\"xv-pane__head\">\n                <h3 class=\"xv-pane__title\">Cost per outcome</h3>\n                <span class=\"xv-pane__sub\">Six-month change</span>\n              </div>\n              <div class=\"xv-cpo\" role=\"table\" aria-label=\"Cost per outcome by workflow\">\n                <div class=\"xv-cpo__head\" role=\"row\"><span role=\"columnheader\">Workflow</span><span role=\"columnheader\">Unit cost</span><span role=\"columnheader\">Trend</span><span role=\"columnheader\">Change</span></div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Customer support</span><span class=\"xv-cpo__unit\">per resolved ticket</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$0.84</span>\n                  <svg class=\"xv-spark\" data-points=\"1.08 1.03 0.97 0.92 0.88 0.84\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−22%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Engineering</span><span class=\"xv-cpo__unit\">per merged pull request</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$2.10</span>\n                  <svg class=\"xv-spark\" data-points=\"2.44 2.38 2.31 2.22 2.15 2.10\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−14%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Claims</span><span class=\"xv-cpo__unit\">per processed claim</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$1.12</span>\n                  <svg class=\"xv-spark\" data-points=\"1.23 1.21 1.18 1.16 1.13 1.12\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−9%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Finance operations</span><span class=\"xv-cpo__unit\">per reconciled invoice</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$0.31</span>\n                  <svg class=\"xv-spark\" data-points=\"0.38 0.37 0.35 0.34 0.32 0.31\"></svg>\n                  <span class=\"xv-cpo__d xv-dn\" role=\"cell\">−18%</span>\n                </div>\n                <div class=\"xv-cpo__row\" role=\"row\">\n                  <span role=\"cell\"><span class=\"xv-cpo__name\">Sales</span><span class=\"xv-cpo__unit\">per account brief</span></span>\n                  <span class=\"xv-cpo__v\" role=\"cell\">$1.40</span>\n                  <svg class=\"xv-spark\" data-points=\"1.32 1.30 1.35 1.37 1.36 1.40\"></svg>\n                  <span class=\"xv-cpo__d xv-bad\" role=\"cell\">+6%</span>\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"xv-foot\">\n            <span><i class=\"dot\" aria-hidden=\"true\"></i>23 teams \\xb7 14 workflows \\xb7 team-level data</span>\n            <span>FY26</span>\n          </div>\n        </section>\n\n        <!-- ===================== PANEL: ADOPTION ===================== -->\n        <section class=\"xv-panel\" data-panel=\"adoption\" role=\"tabpanel\" aria-label=\"Adoption\">\n          <div class=\"xv-kpis\" data-cols=\"3\">\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Teams with steady AI use</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">17<small>of 23</small></p></div>\n              <div class=\"xv-tiles\" data-count=\"23\" data-on=\"17\" role=\"img\" aria-label=\"17 of 23 teams use AI steadily, up from 8 before rollout.\"></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n xv-up\">+9</span> teams since rollout</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Stalled sessions</p>\n              <div class=\"xv-kpi__row\">\n                <p class=\"xv-kpi__v\">11%</p>\n                <svg class=\"xv-spark\" data-points=\"24 25 23 24 22 19 17 15 14 12 12 11\" data-marker=\"4\"></svg>\n              </div>\n              <p class=\"xv-kpi__d\">From <span class=\"mono-n\">24%</span> before standards</p>\n            </div>\n            <div class=\"xv-kpi\">\n              <p class=\"xv-kpi__k\">Standards adopted</p>\n              <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">12<small>of 15</small></p></div>\n              <div class=\"xv-segs\" data-count=\"15\" data-on=\"12\" role=\"img\" aria-label=\"12 of 15 standards adopted.\"></div>\n              <p class=\"xv-kpi__d\"><span class=\"mono-n\">3</span> rolling out</p>\n            </div>\n          </div>\n\n          <div class=\"xv-main\">\n            <div class=\"xv-pane\">\n              <div class=\"xv-pane__head\">\n                <h3 class=\"xv-pane__title\">Work done with AI, before and after</h3>\n                <span class=\"xv-db__keys\" aria-hidden=\"true\"><span><i class=\"b\"></i>Q1, before</span><span><i class=\"a\"></i>Q3, after</span></span>\n              </div>\n              <div class=\"xv-db\" role=\"img\" aria-label=\"Share of eligible work done with AI, by team, Q1 before rollout versus Q3 after. Platform 38 to 71 percent. Customer support 41 to 66. Data science 30 to 62. Payments 22 to 58. Mobile 18 to 47. Finance operations 9 to 34. Risk and compliance 12 to 29.\">\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Platform</span><span class=\"xv-db__track\" style=\"--b:38%;--a:71%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+33<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Customer support</span><span class=\"xv-db__track\" style=\"--b:41%;--a:66%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+25<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Data science</span><span class=\"xv-db__track\" style=\"--b:30%;--a:62%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+32<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Payments</span><span class=\"xv-db__track\" style=\"--b:22%;--a:58%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+36<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Mobile</span><span class=\"xv-db__track\" style=\"--b:18%;--a:47%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+29<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Finance operations</span><span class=\"xv-db__track\" style=\"--b:9%;--a:34%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+25<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__row\"><span class=\"xv-db__name\">Risk &amp; compliance</span><span class=\"xv-db__track\" style=\"--b:12%;--a:29%\"><i class=\"xv-db__bar\"></i><i class=\"xv-db__b\"></i><i class=\"xv-db__a\"></i></span><span class=\"xv-db__d\">+17<span class=\"xv-db__u\"> pts</span></span></div>\n                <div class=\"xv-db__axis\" aria-hidden=\"true\"><span></span><span class=\"xv-db__ticks\"><span style=\"left:0\">0</span><span style=\"left:25%\">25</span><span style=\"left:50%\">50</span><span style=\"left:75%\">75</span><span style=\"left:100%\">100%</span></span><span></span></div>\n              </div>\n            </div>\n\n            <div class=\"xv-pane xv-side\">\n              <div class=\"xv-pane__head\">\n                <h3 class=\"xv-pane__title\">Practice adoption</h3>\n                <span class=\"xv-pane__sub\">Teams using each standard</span>\n              </div>\n              <ul class=\"xv-prac\">\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Plan before generating code</span><span class=\"xv-prac__n\"><b>21</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:91%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Shared project context</span><span class=\"xv-prac__n\"><b>18</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:78%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Tests on agent output</span><span class=\"xv-prac__n\"><b>15</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:65%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Right-sized model choice</span><span class=\"xv-prac__n\"><b>12</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:52%\"></b></div></li>\n                <li><div class=\"xv-prac__top\"><span class=\"xv-prac__name\">Reuse of team knowledge</span><span class=\"xv-prac__n\"><b>10</b> / 23</span></div><div class=\"xv-prac__bar\"><b style=\"--w:43%\"></b></div></li>\n              </ul>\n            </div>\n          </div>\n\n          <div class=\"xv-foot\">\n            <span><i class=\"dot\" aria-hidden=\"true\"></i>23 teams \\xb7 team-level data</span>\n            <span>Before: Q1 FY26 \\xb7 After: Q3 FY26</span>\n          </div>\n        </section>\n\n      </div>\n    </div>`,\"home-v2-finops\":`<div class=\"v-executive-view xv-hv2\" data-variant=\"spend\" data-size=\"compact\">\n  <div class=\"xv-window\" role=\"group\" aria-label=\"XTrace Spend and ROI product mock\">\n    <div class=\"xv-appbar\">\n      <span class=\"xv-brand\" aria-hidden=\"true\"><span class=\"xt-lockup xt-lockup--ui\"><span class=\"xt-lockup__mark\" aria-hidden=\"true\"></span><span class=\"xt-lockup__word\" aria-hidden=\"true\">XTrace</span></span></span>\n      <span class=\"xv-crumb\">Spend &amp; ROI <span>/ Portfolio</span></span>\n      <div class=\"xv-appbar__end\">\n        <span class=\"xv-chip\" aria-hidden=\"true\">FY26 to date <svg viewBox=\"0 0 10 10\"><path d=\"M2 3.5l3 3 3-3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\"/></svg></span>\n      </div>\n    </div>\n\n    <section class=\"xv-panel\" data-panel=\"spend\" aria-label=\"Spend and ROI\">\n      <div class=\"xv-kpis\">\n        <div class=\"xv-kpi\">\n          <p class=\"xv-kpi__k\">AI spend, year to date</p>\n          <div class=\"xv-kpi__row\">\n            <p class=\"xv-kpi__v\">$1.24M</p>\n            <svg class=\"xv-spark\" data-points=\"96 103 114 124 136 147 161 172 183\"></svg>\n          </div>\n          <p class=\"xv-kpi__d\"><span class=\"mono-n\">+27%</span> Q3 vs. Q2</p>\n        </div>\n        <div class=\"xv-kpi\">\n          <p class=\"xv-kpi__k\">Budget vs. actual, FY26</p>\n          <div class=\"xv-kpi__row\"><p class=\"xv-kpi__v\">99%<small>of plan to date</small></p></div>\n          <div class=\"xv-meter\" style=\"--act:68.7%;--plan:69.2%;--fc:100%;--over:2.3%\" role=\"img\" aria-label=\"$1.24 million spent of a $1.80 million budget, 99 percent of plan to date. Base forecast reaches 102 percent of budget.\">\n            <span class=\"xv-meter__track\"></span>\n            <span class=\"xv-meter__fc\"></span>\n            <span class=\"xv-meter__act\"></span>\n            <span class=\"xv-meter__over\"></span>\n            <span class=\"xv-meter__plan\"></span>\n          </div>\n          <p class=\"xv-meter__legend\" aria-hidden=\"true\"><span><i></i>$1.24M<span class=\"xv-wide-only\"> spent</span></span><span class=\"xv-meter__fckey\"><i class=\"fc\"></i>Forecast</span><span><span class=\"xv-narrow-only\">of </span>$1.80M<span class=\"xv-wide-only\"> budget</span></span></p>\n        </div>\n      </div>\n\n      <div class=\"xv-main\">\n        <div class=\"xv-pane\">\n          <div class=\"xv-pane__head\">\n            <p class=\"xv-pane__title\">Monthly spend and forecast</p>\n            <ul class=\"xv-legend\" aria-hidden=\"true\">\n              <li><span class=\"xv-key\"></span>Actual</li>\n              <li><span class=\"xv-key xv-key--dot\"></span>Budget</li>\n            </ul>\n          </div>\n          <div class=\"xv-chart\" role=\"img\"\n               aria-label=\"Line chart of monthly AI spend. Actual spend rises from $96k in January to $183k in September, close to the quarterly budget. Forecast for October to December: the base forecast reaches $209k a month, or $158k with XTrace's suggested optimizations. Full year: base $1.84 million, or $1.73 million with optimizations, against a $1.80 million budget.\"\n               data-months=\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\"\n               data-actual=\"96 103 114 124 136 147 161 172 183\"\n               data-budget=\"110 110 110 135 135 135 170 170 170 185 185 185\"\n               data-base=\"195 202 209\"\n               data-opt=\"172 164 158\"\n               data-unit=\"k\"\n               data-names=\"Base|With optimizations\"></div>\n          <ul class=\"xv-scen\" aria-label=\"Full-year forecast\">\n            <li><span class=\"xv-scen__k\"><i class=\"xv-key xv-key--dash\"></i>Base</span><span class=\"xv-scen__v\">$1.84M</span><span class=\"xv-scen__d\"><span class=\"xv-bad\">+2%</span> vs. budget</span></li>\n            <li><span class=\"xv-scen__k\"><i class=\"xv-key xv-key--a2\"></i>With optimizations</span><span class=\"xv-scen__v\">$1.73M</span><span class=\"xv-scen__d\"><span class=\"xv-dn\">−4%</span> vs. budget</span></li>\n          </ul>\n        </div>\n      </div>\n    </section>\n  </div>\n</div>`};function install(){/* Visual · Spend &amp; ROI dashboard · executive-view.js\n   Self-initializes every .v-executive-view on the page (also ones added later:\n   call window.XTExecutiveView.init(el)).\n   - Draws the forecast chart and sparklines at real pixel size (crisp 11px labels at any width)\n     from data-* attributes in the markup, and redraws on resize.\n   - Builds team tiles / segment meters from data-count + data-on.\n   - Tabs (Spend & ROI / Adoption) switch data-variant, with arrow-key support.\n   - Animations start when the mock scrolls into view (IntersectionObserver).\n     Under prefers-reduced-motion, or without IntersectionObserver, it renders the final state.\n*/(function(){\"use strict\";var NS=\"http://www.w3.org/2000/svg\";var reduce=window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;var uid=0;function nums(s){return(s||\"\").trim().split(/[\\s,]+/).filter(Boolean).map(Number);}function words(s){return(s||\"\").trim().split(/\\s+/).filter(Boolean);}function el(tag,attrs,parent){var n=document.createElementNS(NS,tag);for(var k in attrs)if(attrs[k]!=null)n.setAttribute(k,attrs[k]);if(parent)parent.appendChild(n);return n;}function pathOf(pts){return pts.map(function(p,i){return(i?\"L\":\"M\")+p[0].toFixed(1)+\" \"+p[1].toFixed(1);}).join(\"\");}/* gentle monotone smoothing so lines read as trends, not jagged steps */function smooth(pts){if(pts.length<3)return pathOf(pts);var d=\"M\"+pts[0][0].toFixed(1)+\" \"+pts[0][1].toFixed(1);for(var i=0;i<pts.length-1;i++){var p0=pts[i-1]||pts[i],p1=pts[i],p2=pts[i+1],p3=pts[i+2]||p2;var t=.16;var c1x=p1[0]+(p2[0]-p0[0])*t,c1y=p1[1]+(p2[1]-p0[1])*t;var c2x=p2[0]-(p3[0]-p1[0])*t,c2y=p2[1]-(p3[1]-p1[1])*t;// clamp control points vertically between p1 and p2 to avoid overshoot\nvar lo=Math.min(p1[1],p2[1]),hi=Math.max(p1[1],p2[1]);c1y=Math.max(lo,Math.min(hi,c1y));c2y=Math.max(lo,Math.min(hi,c2y));d+=\"C\"+c1x.toFixed(1)+\" \"+c1y.toFixed(1)+\" \"+c2x.toFixed(1)+\" \"+c2y.toFixed(1)+\" \"+p2[0].toFixed(1)+\" \"+p2[1].toFixed(1);}return d;}function money(v,unit){return\"$\"+Math.round(v)+(unit||\"k\");}/* ---------------- Forecast chart ---------------- */function drawForecast(box){var W=box.clientWidth,H=box.clientHeight;if(!W||!H)return;var months=words(box.getAttribute(\"data-months\"));var actual=nums(box.getAttribute(\"data-actual\"));var budget=nums(box.getAttribute(\"data-budget\"));// data-wide is optional: without it the chart draws two series (base and\n// \"with optimizations\"), and the fan shades the gap between them.\nvar series=[{key:\"a1\",cls:\"s-a1\",v:nums(box.getAttribute(\"data-wide\"))},{key:\"base\",cls:\"s-base\",v:nums(box.getAttribute(\"data-base\"))},{key:\"a2\",cls:\"s-a2\",v:nums(box.getAttribute(\"data-opt\"))}].filter(function(s){return s.v.length>0;});var unit=box.getAttribute(\"data-unit\")||\"k\";var n=months.length,last=actual.length-1;var narrow=W<460;var names=(box.getAttribute(\"data-names\")||\"\").split(\"|\");var pad={l:44,r:narrow?8:92,t:26,b:26};var pw=W-pad.l-pad.r,ph=H-pad.t-pad.b;var all=actual.concat(budget);series.forEach(function(s){all=all.concat(s.v);});var max=Math.max.apply(null,all)*1.06;var step=max>400?200:100;var X=function(i){return pad.l+pw*i/(n-1);};var Y=function(v){return pad.t+ph-ph*v/max;};var id=box._xvId||(box._xvId=\"xvc\"+ ++uid);var svg=el(\"svg\",{viewBox:\"0 0 \"+W+\" \"+H,width:W,height:H,\"aria-hidden\":\"true\",focusable:\"false\"});var defs=el(\"defs\",{},svg);var ga=el(\"linearGradient\",{id:id+\"-area\",x1:0,y1:0,x2:0,y2:1},defs);el(\"stop\",{offset:\"0\",style:\"stop-color:var(--xv-area);stop-opacity:.10\"},ga);el(\"stop\",{offset:\"1\",style:\"stop-color:var(--xv-area);stop-opacity:0\"},ga);var gf=el(\"linearGradient\",{id:id+\"-fan\",x1:0,y1:0,x2:0,y2:1},defs);el(\"stop\",{offset:\"0\",style:\"stop-color:var(--xv-fan-1);stop-opacity:.55\"},gf);el(\"stop\",{offset:\"1\",style:\"stop-color:var(--xv-fan-2);stop-opacity:.55\"},gf);var xT=X(last);var ca=el(\"clipPath\",{id:id+\"-ca\"},defs);el(\"rect\",{\"class\":\"clip-a\",x:0,y:0,width:xT+6,height:H},ca);var cf=el(\"clipPath\",{id:id+\"-cf\"},defs);el(\"rect\",{\"class\":\"clip-f\",x:xT-1,y:0,width:W-xT+1,height:H},cf);// forecast region\nel(\"rect\",{\"class\":\"fc-bg\",x:xT,y:pad.t-10,width:pad.l+pw-xT+(narrow?pad.r:10),height:ph+10,rx:4},svg);// grid + y labels\nfor(var v=0;v<=max;v+=step){var y=Math.round(Y(v))+.5;el(\"line\",{\"class\":v===0?\"grid grid--base\":\"grid\",x1:pad.l,x2:pad.l+pw+(narrow?0:10),y1:y,y2:y},svg);var t=el(\"text\",{x:pad.l-10,y:y+3.5,\"text-anchor\":\"end\"},svg);t.textContent=v===0?\"$0\":money(v,unit);}// x labels\nmonths.forEach(function(m,i){if(narrow&&i%2===1&&i!==n-1)return;if(narrow&&i===n-2)return;var t=el(\"text\",{x:X(i),y:H-6,\"text-anchor\":i===n-1?\"end\":\"middle\",\"class\":i===last?\"lbl-strong\":null},svg);t.textContent=m;if(i===n-1)t.setAttribute(\"x\",X(i)+6);});// labels for regions\nvar fl=el(\"text\",{\"class\":\"lbl-sans fc-label\",x:xT+10,y:pad.t-14},svg);fl.textContent=\"Forecast\";// budget (stepped by quarter)\nif(budget.length){var bp=[],half=pw/(n-1)/2;budget.forEach(function(b,i){var x0=i===0?pad.l:X(i)-half,x1=i===n-1?pad.l+pw:X(i)+half;bp.push([x0,Y(b)],[x1,Y(b)]);});el(\"path\",{\"class\":\"budget\",d:pathOf(bp)},svg);var bl=el(\"text\",{x:pad.l+6,y:Y(budget[0])-7},svg);bl.textContent=\"Budget\";}// actual\nvar apts=actual.map(function(a,i){return[X(i),Y(a)];});var gA=el(\"g\",{\"clip-path\":\"url(#\"+id+\"-ca)\"},svg);var dA=smooth(apts);el(\"path\",{\"class\":\"area\",d:dA+\"L\"+xT.toFixed(1)+\" \"+Y(0).toFixed(1)+\"L\"+pad.l+\" \"+Y(0).toFixed(1)+\"Z\",fill:\"url(#\"+id+\"-area)\"},gA);el(\"path\",{\"class\":\"actual\",d:dA},gA);// scenarios\nvar gF=el(\"g\",{\"clip-path\":\"url(#\"+id+\"-cf)\"},svg);var start=[xT,Y(actual[last])];var spts=series.map(function(s){return[start].concat(s.v.map(function(val,k){return[X(last+1+k),Y(val)];}));});var fan=spts[0].concat(spts[spts.length-1].slice().reverse());el(\"path\",{\"class\":\"fan\",d:pathOf(fan)+\"Z\",fill:\"url(#\"+id+\"-fan)\"},gF);series.forEach(function(s,k){el(\"path\",{\"class\":s.cls,d:smooth(spts[k])},gF);});series.forEach(function(s,k){var e=spts[k][spts[k].length-1];el(\"circle\",{\"class\":\"pt-end\",cx:e[0],cy:e[1],r:3,style:\"stroke:\"+(s.key===\"base\"?\"var(--xv-line)\":\"var(--xv-\"+s.key+\")\")},gF);if(!narrow){var lt=el(\"text\",{\"class\":\"end-lbl lbl-name\",x:e[0]+10,y:e[1]+3.5},svg);lt.textContent=names[k]||money(s.v[s.v.length-1],unit);}});// today marker + last actual point (drawn above everything)\nel(\"line\",{\"class\":\"today\",x1:xT,x2:xT,y1:pad.t-10,y2:Y(0)},svg);el(\"circle\",{\"class\":\"halo\",cx:xT,cy:Y(actual[last]),r:8},gA);el(\"circle\",{\"class\":\"pt\",cx:xT,cy:Y(actual[last]),r:3.5},gA);box.replaceChildren(svg);}/* ---------------- Sparkline ---------------- */function drawSpark(svg){var v=nums(svg.getAttribute(\"data-points\"));if(v.length<2)return;var W=svg.clientWidth||76,H=svg.clientHeight||28;var mk=svg.getAttribute(\"data-marker\");var min=Math.min.apply(null,v),max=Math.max.apply(null,v),rng=max-min||1;var p=3;var pts=v.map(function(x,i){return[p+(W-2*p)*i/(v.length-1),p+(H-2*p)*(1-(x-min)/rng)];});svg.setAttribute(\"viewBox\",\"0 0 \"+W+\" \"+H);svg.setAttribute(\"aria-hidden\",\"true\");svg.setAttribute(\"focusable\",\"false\");while(svg.firstChild)svg.removeChild(svg.firstChild);if(mk!=null&&mk!==\"\"){var mx=pts[+mk][0];el(\"line\",{\"class\":\"m\",x1:mx,x2:mx,y1:0,y2:H},svg);}if(mk!=null&&mk!==\"\"&&+mk>0&&+mk<pts.length-1){// before the marker: quiet; after: ink\nel(\"path\",{\"class\":\"l pre\",d:smooth(pts.slice(0,+mk+1)),pathLength:1},svg);el(\"path\",{\"class\":\"l\",d:smooth(pts.slice(+mk)),pathLength:1},svg);}else{el(\"path\",{\"class\":\"l\",d:smooth(pts),pathLength:1},svg);}var e=pts[pts.length-1];el(\"circle\",{cx:e[0],cy:e[1],r:2.25},svg);}/* ---------------- Tiles / segments ---------------- */function build(wrap,base,gap){if(wrap.children.length)return;var n=+wrap.getAttribute(\"data-count\")||0,on=+(wrap.getAttribute(\"data-on\")||0);wrap.style.setProperty(\"--n\",n);for(var i=0;i<n;i++){var s=document.createElement(\"span\");s.style.setProperty(\"--t\",(n>1?i/(n-1):0).toFixed(3));if(i<on){s.className=\"on\";s.style.setProperty(\"--dl\",(base+gap*i).toFixed(2)+\"s\");}wrap.appendChild(s);}}/* ---------------- Init ---------------- */function init(root){if(root._xvInit)return;root._xvInit=true;if(!root.getAttribute(\"data-variant\"))root.setAttribute(\"data-variant\",\"spend\");var panels=Array.prototype.slice.call(root.querySelectorAll(\".xv-panel\"));var tabs=Array.prototype.slice.call(root.querySelectorAll(\".xv-tab\"));var charts=Array.prototype.slice.call(root.querySelectorAll(\".xv-chart[data-actual]\"));var sparks=Array.prototype.slice.call(root.querySelectorAll(\"svg.xv-spark[data-points]\"));root.querySelectorAll(\".xv-tiles[data-count]\").forEach(function(w){build(w,.35,.045);});root.querySelectorAll(\".xv-segs[data-count]\").forEach(function(w){build(w,.3,.06);});root.querySelectorAll(\".xv-db__row, .xv-prac li\").forEach(function(r){var i=Array.prototype.indexOf.call(r.parentNode.children,r);r.style.setProperty(\"--dl\",(.25+i*.08).toFixed(2)+\"s\");});function active(){return root.getAttribute(\"data-variant\")===\"adoption\"?\"adoption\":\"spend\";}function drawAll(){charts.forEach(drawForecast);sparks.forEach(drawSpark);}function sync(){var a=active();panels.forEach(function(p){var on=p.getAttribute(\"data-panel\")===a;p.hidden=!on;});tabs.forEach(function(t){var on=t.getAttribute(\"data-tab\")===a;t.setAttribute(\"aria-selected\",on?\"true\":\"false\");t.tabIndex=on?0:-1;});}sync();drawAll();var seen=false;function play(panel){if(!panel)return;if(reduce){panel.classList.add(\"is-in\");return;}panel.classList.remove(\"is-in\");void panel.offsetWidth;requestAnimationFrame(function(){requestAnimationFrame(function(){panel.classList.add(\"is-in\");});});}function current(){return root.querySelector('.xv-panel[data-panel=\"'+active()+'\"]');}var win=root.querySelector(\".xv-window\");function select(name,focus){if(name===active())return;// keep the window at least as tall as before, so the page below does not jump\nif(win){var h=win.offsetHeight,m=parseFloat(win.style.minHeight)||0;if(h>m)win.style.minHeight=h+\"px\";win.classList.add(\"is-locked\");}root.setAttribute(\"data-variant\",name);sync();drawAll();// newly shown panel needs measuring\nvar p=current();if(!reduce){p.classList.remove(\"is-entering\");void p.offsetWidth;p.classList.add(\"is-entering\");}if(seen)play(p);if(focus){var t=root.querySelector('.xv-tab[data-tab=\"'+name+'\"]');if(t)t.focus();}}tabs.forEach(function(t,i){t.addEventListener(\"click\",function(){select(t.getAttribute(\"data-tab\"),false);});t.addEventListener(\"keydown\",function(e){var k=e.key,j=-1;if(k===\"ArrowRight\")j=(i+1)%tabs.length;else if(k===\"ArrowLeft\")j=(i-1+tabs.length)%tabs.length;else if(k===\"Home\")j=0;else if(k===\"End\")j=tabs.length-1;if(j<0)return;e.preventDefault();select(tabs[j].getAttribute(\"data-tab\"),true);});});if(\"ResizeObserver\"in window){var raf=0,lastW=0;new ResizeObserver(function(en){var w=Math.round(en[0].contentRect.width);if(w===lastW)return;if(lastW&&win){win.style.minHeight=\"\";win.classList.remove(\"is-locked\");}lastW=w;cancelAnimationFrame(raf);raf=requestAnimationFrame(drawAll);}).observe(root);}else{window.addEventListener(\"resize\",drawAll);}// fonts change label metrics slightly; redraw once they settle\nif(document.fonts&&document.fonts.ready)document.fonts.ready.then(drawAll);if(reduce||!(\"IntersectionObserver\"in window)){panels.forEach(function(p){p.classList.add(\"is-in\");});seen=true;return;}root.classList.add(\"xv-armed\");var io=new IntersectionObserver(function(en){en.forEach(function(e){if(!e.isIntersecting)return;seen=true;io.disconnect();play(current());});},{threshold:.3});io.observe(root);}function initAll(){document.querySelectorAll(\".v-executive-view\").forEach(init);}window.XTExecutiveView={init:init,initAll:initAll};if(document.readyState!==\"loading\")initAll();else document.addEventListener(\"DOMContentLoaded\",initAll);})();}/* Preset \"home-v2-finops\" only (root class xv-hv2; injected only for that preset, so /finops-for-ai is untouched).\n   1. App-bar wordmark: the shared lockup sets --lk-mark: 1.15em, which resolved against the word's own font-size: 0,\n      so the \"XTrace\" word rendered 0x0. Inheriting the brand's font size sizes it as on the site (text stays transparent).\n   2. KPI values never wrap (local .xv-kpi__v and its small are nowrap), so \"99% of plan to date\" stays on one line at 390. */const HV2_CSS=`.xtcc .v-executive-view.xv-hv2 .xt-lockup--ui .xt-lockup__word{font-size:inherit;line-height:0;overflow:hidden}\n.xtcc .v-executive-view.xv-hv2 .xv-kpi__v,.xtcc .v-executive-view.xv-hv2 .xv-kpi__v small{white-space:nowrap}\n`;/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function XTSpendView(props){const{style}=props;const animated=useAnimated();const host=React.useRef(null);let html=PRESETS[props.preset]||PRESETS[\"home-1\"];const setRootAttr=(k,v)=>{html=html.replace(/^(<[a-z]+)([^>]*?)(\\s${k}=\"[^\"]*\")?([^>]*>)/i,(m,a,b,c,d)=>a+b.replace(new RegExp(\"\\\\s\"+k+'=\"[^\"]*\"'),\"\")+(v==null?\"\":\" \"+k+'=\"'+v+'\"')+d);};const addRootClass=(c,on)=>{html=html.replace(/^(<[a-z]+[^>]*?class=\")([^\"]*)\"/i,(m,a,b)=>a+(on?b.split(\" \").includes(c)?b:b+\" \"+c:b.split(\" \").filter(x=>x!==c).join(\" \"))+'\"');};if(props.variant&&props.variant!==\"preset\")setRootAttr(\"data-variant\",props.variant);if(props.size!==\"preset\")setRootAttr(\"data-size\",props.size===\"compact\"?\"compact\":null);if(props.dark)setRootAttr(\"data-theme\",\"dark\");if(props.side===false)setRootAttr(\"data-side\",\"hidden\");const key=html.length+\":\"+JSON.stringify([props,animated].map(x=>x&&x.style?{...x,style:0}:x));React.useEffect(()=>{const box=host.current;if(!box)return;let el=null;let unsettle=()=>{};let cancelSized=()=>{};let untrack=()=>{};const cancel=afterPaint(()=>{cancelSized=whenSized(box,()=>{hidden(\"v-executive-view\",null,()=>once(\"XTExecutiveView\",install));el=box.querySelector(\".v-executive-view\");const api=window.XTExecutiveView;if(el&&api)hidden(\"v-executive-view\",el,()=>{untrack=track(()=>api.init(el));});if(el&&!animated){el.classList.remove(\"xv-armed\");el.querySelectorAll(\".xv-panel\").forEach(p=>p.classList.add(\"is-in\"));}unsettle=settle(()=>el&&el._xv);});});return()=>{cancel();cancelSized();unsettle();untrack();if(el)teardown(el._xv);};},[key]);return /*#__PURE__*/_jsxs(\"div\",{ref:host,className:\"xtcc\"+(props.dark?\" xt-dark\":\"\"),\"aria-hidden\":props.decorative?\"true\":undefined,style:{width:\"100%\",fontFamily:\"var(--sans)\",letterSpacing:\"-0.04em\",color:\"var(--ink)\",WebkitFontSmoothing:\"antialiased\",...style},children:[/*#__PURE__*/_jsx(XTStyle,{css:XT_FONT_IMPORT}),/*#__PURE__*/_jsx(XTStyle,{css:XT_BASE_CSS+XT_LOCKUP_CSS+CSS+(props.preset===\"home-v2-finops\"?HV2_CSS:\"\")}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"contents\"},dangerouslySetInnerHTML:{__html:html}},key)]});}XTSpendView.displayName=\"XT Spend & ROI view\";addPropertyControls(XTSpendView,{preset:{type:ControlType.Enum,title:\"Preset\",options:[\"home-1\",\"home-2\",\"governance\",\"enablement\",\"home-v2-finops\"],optionTitles:[\"home-1 (= finops)\",\"home-2\",\"governance\",\"enablement\",\"home-v2 finops (compact, no tabs)\"],defaultValue:\"home-1\"},variant:{type:ControlType.Enum,title:\"Tab\",options:[\"preset\",\"spend\",\"adoption\"],optionTitles:[\"From preset\",\"Spend & ROI\",\"Adoption\"],defaultValue:\"preset\"},size:{type:ControlType.Enum,title:\"Size\",options:[\"preset\",\"full\",\"compact\"],optionTitles:[\"From preset\",\"Full\",\"Compact\"],defaultValue:\"preset\"},dark:{type:ControlType.Boolean,title:\"Dark\",defaultValue:false},side:{type:ControlType.Boolean,title:\"Side panel\",defaultValue:true,description:\"Off hides the cost-per-outcome side panel (home hero on phone).\"},decorative:{type:ControlType.Boolean,title:\"Hide from SR\",defaultValue:false,description:\"On when a native caption already says the same thing.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"XTSpendView\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./XTSpendView.map"],"mappings":"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"}