{"components":{"supportinbox.Announcements":{"name":"Announcements","scheme":"supportinbox","head":{"attributes":[],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"settled","body":"return false","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"items","body":"return []","computed":false},{"as":"openId","body":"return ''","computed":false},{"as":"sheetOpen","body":"return false","computed":false},{"as":"title","body":"return ''","computed":false},{"as":"body","body":"return ''","computed":false},{"as":"kind","body":"return 'Update'","computed":false},{"as":"audience","body":"return 'Everyone'","computed":false},{"as":"onConsole","body":"return true","computed":false},{"as":"onDocs","body":"return false","computed":false},{"as":"onApps","body":"return false","computed":false},{"as":"link","body":"return ''","computed":false},{"as":"status","body":"return 'draft'","computed":false},{"as":"formError","body":"return ''","computed":false},{"as":"columns","body":"\n      return [{ key: 'name', label: 'Announcement', width: 'fill' }, { key: 'where', label: 'Shown in' },\n              { key: 'state', label: 'Status', type: 'status' }, { key: 'updated', label: 'Updated', type: 'time' }]\n    ","computed":true},{"as":"rows","body":"\n      return dsx.variable.items.map(n =&gt; ({\n        id: n.id, name: n.title, subtitle: n.body, icon: kindIcon(n.kind), iconLabel: kindWord(n.kind),\n        where: n.channels.map(c =&gt; channelWord(c)).join(', '), state: n.status == 'live' ? 'Live' : (n.status == 'draft' ? 'Draft' : 'Ended'),\n        stateRole: n.status == 'live' ? 'success' : 'neutral', updated: n.updatedAt\n      }))\n    ","computed":true},{"as":"isNew","body":"return dsx.variable.openId == ''","computed":true},{"as":"sheetTitle","body":"return dsx.variable.isNew ? 'New Announcement' : 'Announcement'","computed":true},{"as":"channels","body":"\n      const c = []\n      if (dsx.variable.onConsole) { c.push('console') }\n      if (dsx.variable.onDocs) { c.push('docs') }\n      if (dsx.variable.onApps) { c.push('inapp') }\n      return c\n    ","computed":true},{"as":"ready","body":"return dsx.variable.title.trim() != '' &amp;&amp; dsx.variable.channels.length &gt; 0","computed":true},{"as":"tone","body":"return dsx.variable.kind == 'Incident' ? 'warning' : (dsx.variable.kind == 'Maintenance' ? 'none' : 'info')","computed":true},{"as":"previewIcon","body":"return kindIcon(kindValue(dsx.variable.kind))","computed":true},{"as":"liveTitle","body":"\n      if (dsx.action.save.pending) { return 'Saving…' }\n      return dsx.variable.status == 'live' ? 'End Announcement' : 'Go Live'\n    ","computed":true},{"as":"liveFooter","body":"\n      return dsx.variable.status == 'live'\n        ? 'It is showing now. Ending it removes it everywhere at once.'\n        : 'Go Live shows it at once in the places above. Customers can dismiss it; nobody is emailed.'\n    ","computed":true},{"as":"moreMenu","body":"\n      return [\n        { title: 'Help Center', icon: 'books.vertical', shortcut: 'cmd+shift+k', action: 'supportdesk.pick', args: { ask: 'hub' } },\n        { title: 'Inbox', icon: 'tray', shortcut: 'cmd+1', action: 'supportdesk.pick', args: { ask: 'inbox' } }\n      ]\n    ","computed":true}],"formulas":[],"actions":[{"as":"start","inputs":{},"body":"\n      const s = await dsx.module.supportdesk.session()\n      if (s.ok &amp;&amp; !s.data.signedIn) { dsx.module.route.replace({ path: '/login' }); return }\n      if (s.ok &amp;&amp; !s.data.staff) { dsx.module.route.replace({ path: '/no-access' }); return }\n      await dsx.action.load()\n    "},{"as":"load","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.hubAnnouncements()\n      dsx.variable.settled = true\n      if (!r.ok) {\n        if (r.error == 'no_access') { dsx.module.route.replace({ path: '/no-access' }); return }\n        dsx.variable.error = r.message ? r.message : 'Despia did not answer. Try again in a moment.'\n        return\n      }\n      dsx.variable.error = ''\n      dsx.variable.items = r.data.items\n    "},{"as":"compose","inputs":{},"body":"\n      dsx.variable.openId = ''\n      dsx.variable.title = ''\n      dsx.variable.body = ''\n      dsx.variable.kind = 'Update'\n      dsx.variable.audience = 'Everyone'\n      dsx.variable.onConsole = true\n      dsx.variable.onDocs = false\n      dsx.variable.onApps = false\n      dsx.variable.link = ''\n      dsx.variable.status = 'draft'\n      dsx.variable.formError = ''\n      dsx.variable.sheetOpen = true\n    "},{"as":"open","inputs":{"id":"dsx.this.id"},"body":"\n      const n = dsx.variable.items.find(x =&gt; x.id == id)\n      if (n == null) { return }\n      dsx.variable.openId = n.id\n      dsx.variable.title = n.title\n      dsx.variable.body = n.body\n      dsx.variable.kind = kindWord(n.kind)\n      dsx.variable.audience = n.audience == 'v3' ? 'V3 customers' : (n.audience == 'v4' ? 'V4 customers' : 'Everyone')\n      dsx.variable.onConsole = n.channels.includes('console')\n      dsx.variable.onDocs = n.channels.includes('docs')\n      dsx.variable.onApps = n.channels.includes('inapp')\n      dsx.variable.link = n.link || ''\n      dsx.variable.status = n.status\n      dsx.variable.formError = ''\n      dsx.variable.sheetOpen = true\n    "},{"as":"save","inputs":{"status":"dsx.this.status"},"body":"\n      if (!dsx.variable.ready) { dsx.variable.formError = 'Write a title and pick where it shows.'; return }\n      const r = await dsx.module.supportdesk.hubAnnounce({\n        id: dsx.variable.openId, title: dsx.variable.title, body: dsx.variable.body, kind: kindValue(dsx.variable.kind),\n        audience: dsx.variable.audience == 'V3 customers' ? 'v3' : (dsx.variable.audience == 'V4 customers' ? 'v4' : 'all'),\n        channels: dsx.variable.channels, link: dsx.variable.link.trim(), status: status || dsx.variable.status\n      })\n      if (!r.ok) { dsx.variable.formError = r.message ? r.message : 'That did not save.'; return }\n      dsx.variable.formError = ''\n      dsx.variable.openId = r.data.announcement.id\n      dsx.variable.status = r.data.announcement.status\n      await dsx.action.load()\n      dsx.module.toast.show({ title: r.data.announcement.status == 'live' ? 'Live' : (r.data.announcement.status == 'ended' ? 'Ended' : 'Saved'), message: r.data.announcement.title })\n      if (r.data.announcement.status != 'draft') { dsx.variable.sheetOpen = false }\n    "},{"as":"toggleLive","inputs":{},"body":"\n      await dsx.action.save({ status: dsx.variable.status == 'live' ? 'ended' : 'live' })\n    "},{"as":"onPicked","inputs":{},"body":"\n      const k = dsx.module.supportdesk.context.picked\n      if (k == null) { return }\n      if (k.ask == 'hub') { dsx.module.route.push({ path: '/hub' }); return }\n      if (k.ask == 'inbox') { dsx.module.route.push({ path: '/' }) }\n    "}],"watches":[{"value":"dsx.module.supportdesk.context.picked","handler":"dsx.action.onPicked()"}],"scripts":["\n      function kindIcon(k) { return k == 'feature' ? 'sparkles' : (k == 'maintenance' ? 'wrench.and.screwdriver' : (k == 'incident' ? 'exclamationmark.triangle' : 'megaphone')) }\n      function kindWord(k) { return k == 'feature' ? 'New feature' : (k == 'maintenance' ? 'Maintenance' : (k == 'incident' ? 'Incident' : 'Update')) }\n      function kindValue(w) { return w == 'New feature' ? 'feature' : (w == 'Maintenance' ? 'maintenance' : (w == 'Incident' ? 'incident' : 'update')) }\n      function channelWord(c) { return c == 'console' ? 'Console' : (c == 'docs' ? 'Docs' : 'Apps') }\n    "],"globalScripts":[]},"root":{"tag":"scroll","attrs":{"on:appear":"dsx.action.start()"},"children":[{"tag":"NavBar","attrs":{"title":"Announcements","large":"true","description":"Updates, launches and maintenance, shown in the console, on the docs and in apps. Never emailed from here."},"children":[{"tag":"button","attrs":{"slot":"trailing","variant":"prominent","icon":"plus","label":"New Announcement","on:tap":"dsx.action.compose()"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"menu","attrs":{"slot":"trailing","menu":"{{ dsx.variable.moreMenu }}"},"children":[{"tag":"button","attrs":{"icon":"ellipsis.circle","a11yLabel":"More actions"},"children":[],"text":"","reactive":false,"nid":4}],"text":"","reactive":true,"nid":3}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"spinner","attrs":{"visible-if":"!dsx.variable.settled"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"SettingsRow","attrs":{"icon":"arrow.clockwise","title":"Try Again","tone":"accent","tappable":"true","on:tap":"dsx.action.load()"},"children":[],"text":"","reactive":true,"nid":8}],"text":"\n    \n    \n  ","reactive":true,"nid":6},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.settled && dsx.variable.rows.length > 0"},"children":[{"tag":"RecordsTable","attrs":{"columns":"{{ dsx.variable.columns }}","rows":"{{ dsx.variable.rows }}","selected":"{{ dsx.variable.sheetOpen ? dsx.variable.openId : '' }}","on:open":"dsx.action.open()"},"children":[],"text":"","reactive":true,"nid":10}],"text":"\n    \n  ","reactive":true,"nid":9},{"tag":"EmptyState","attrs":{"visible-if":"dsx.variable.settled && dsx.variable.rows.length == 0 && dsx.variable.error == ''","icon":"megaphone","title":"No announcements","message":"Tell customers about a launch, a change or maintenance."},"children":[],"text":"","reactive":true,"nid":11},{"tag":"sheet","attrs":{"class":"hub-page-sheet","detents":"full","present":"dsx.variable.sheetOpen","title":"{{ dsx.variable.sheetTitle }}","close":"leading","action":"Save","actionDisabled":"{{ !dsx.variable.ready }}","on:action":"dsx.action.save()","on:dismiss":"dsx.variable.sheetOpen = false"},"children":[{"tag":"ListGroup","attrs":{"header":"Preview","footer":"How the console shows it, above every page until the customer closes it."},"children":[{"tag":"Callout","attrs":{"tone":"{{ dsx.variable.tone }}","icon":"{{ dsx.variable.previewIcon }}","title":"{{ dsx.variable.title || 'Title' }}","message":"{{ dsx.variable.body }}","action":"{{ dsx.variable.link.trim() == '' ? '' : 'Learn more' }}","dismissible":"true"},"children":[],"text":"","reactive":true,"nid":14}],"text":"\n      \n    ","reactive":true,"nid":13},{"tag":"ListGroup","attrs":{},"children":[{"tag":"FieldRow","attrs":{"label":"Title"},"children":[{"tag":"textfield","attrs":{"bind":"dsx.variable.title","placeholder":"Android 16 builds are here","aria-label":"Title"},"children":[],"text":"","reactive":true,"nid":17}],"text":"","reactive":true,"nid":16},{"tag":"SettingsRow","attrs":{"title":"Kind"},"children":[{"tag":"picker","attrs":{"aria-label":"Kind","bind":"dsx.variable.kind","options":"Update,New feature,Maintenance,Incident"},"children":[],"text":"","reactive":true,"nid":19}],"text":"","reactive":true,"nid":18},{"tag":"FieldRow","attrs":{"label":"Link"},"children":[{"tag":"textfield","attrs":{"bind":"dsx.variable.link","placeholder":"https://docs.despia.com/changelog/…","keyboard":"url","aria-label":"Learn more link"},"children":[],"text":"","reactive":true,"nid":21}],"text":"","reactive":true,"nid":20}],"text":"\n      \n      \n      \n    ","reactive":true,"nid":15},{"tag":"ListGroup","attrs":{"header":"Message"},"children":[{"tag":"textarea","attrs":{"bind":"dsx.variable.body","placeholder":"One or two sentences","minLines":"2","maxLines":"6","aria-label":"Message"},"children":[],"text":"","reactive":true,"nid":23}],"text":"\n      \n    ","reactive":true,"nid":22},{"tag":"ListGroup","attrs":{"header":"Shown To"},"children":[{"tag":"SettingsRow","attrs":{"title":"Audience"},"children":[{"tag":"picker","attrs":{"aria-label":"Audience","bind":"dsx.variable.audience","options":"Everyone,V3 customers,V4 customers"},"children":[],"text":"","reactive":true,"nid":26}],"text":"","reactive":true,"nid":25},{"tag":"SettingsRow","attrs":{"icon":"macwindow","title":"Console","subtitle":"Top of every page and Help's What's new"},"children":[{"tag":"toggle","attrs":{"bind":"dsx.variable.onConsole","aria-label":"Show in the console"},"children":[],"text":"","reactive":true,"nid":28}],"text":"","reactive":true,"nid":27},{"tag":"SettingsRow","attrs":{"icon":"book","title":"Docs","subtitle":"The docs site's banner"},"children":[{"tag":"toggle","attrs":{"bind":"dsx.variable.onDocs","aria-label":"Show on the docs"},"children":[],"text":"","reactive":true,"nid":30}],"text":"","reactive":true,"nid":29},{"tag":"SettingsRow","attrs":{"icon":"iphone","title":"Apps","subtitle":"Apps built with Despia that read the announcements feed"},"children":[{"tag":"toggle","attrs":{"bind":"dsx.variable.onApps","aria-label":"Show in apps"},"children":[],"text":"","reactive":true,"nid":32}],"text":"","reactive":true,"nid":31}],"text":"\n      \n      \n      \n      \n    ","reactive":true,"nid":24},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.formError != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.formError }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":34}],"text":"\n      \n    ","reactive":true,"nid":33},{"tag":"ListGroup","attrs":{"footer":"{{ dsx.variable.liveFooter }}","visible-if":"dsx.variable.status != 'ended'"},"children":[{"tag":"SettingsRow","attrs":{"icon":"{{ dsx.variable.status == 'live' ? 'stop.circle' : 'dot.radiowaves.left.and.right' }}","title":"{{ dsx.variable.liveTitle }}","tone":"{{ dsx.variable.status == 'live' ? '' : 'accent' }}","tappable":"{{ dsx.variable.ready && !dsx.action.save.pending ? 'true' : 'false' }}","on:tap":"dsx.action.toggleLive()"},"children":[],"text":"","reactive":true,"nid":36}],"text":"\n      \n    ","reactive":true,"nid":35}],"text":"\n    \n    \n    \n    \n    \n    \n  ","reactive":true,"nid":12}],"text":"\n  \n\n  \n\n  \n  \n\n  \n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.ArticleEditor":{"name":"ArticleEditor","scheme":"supportinbox","head":{"attributes":[{"as":"articleId","default":"''"}],"apis":[],"expects":[],"events":[{"as":"changed","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"loaded","body":"return false","computed":false},{"as":"article","body":"return null","computed":false},{"as":"revisions","body":"return []","computed":false},{"as":"title","body":"return ''","computed":false},{"as":"summary","body":"return ''","computed":false},{"as":"body","body":"return ''","computed":false},{"as":"codes","body":"return []","computed":false},{"as":"audience","body":"return 'Everyone'","computed":false},{"as":"platform","body":"return 'All platforms'","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"notice","body":"return ''","computed":false},{"as":"reviewOpen","body":"return false","computed":false},{"as":"has","body":"return dsx.variable.article != null","computed":true},{"as":"published","body":"return dsx.variable.has &amp;&amp; dsx.variable.article.status == 'published'","computed":true},{"as":"dirty","body":"\n      if (!dsx.variable.has) { return false }\n      const a = dsx.variable.article\n      return dsx.variable.title != a.title || dsx.variable.summary != a.summary || dsx.variable.body != a.body\n        || dsx.variable.codes.join(',') != a.codes.join(',') || audienceValue(dsx.variable.audience) != a.audience || platformValue(dsx.variable.platform) != a.platform\n    ","computed":true},{"as":"primaryTitle","body":"\n      if (dsx.action.save.pending) { return 'Saving…' }\n      if (!dsx.variable.published) { return 'Publish' }\n      return dsx.variable.dirty ? 'Save Changes' : 'Published'\n    ","computed":true},{"as":"primaryIcon","body":"return dsx.variable.published ? 'checkmark.circle' : 'paperplane'","computed":true},{"as":"primaryEnabled","body":"return !dsx.action.save.pending &amp;&amp; dsx.variable.title.trim() != '' &amp;&amp; (!dsx.variable.published || dsx.variable.dirty)","computed":true},{"as":"pending","body":"return dsx.variable.revisions.find(r =&gt; r.state == 'pending') || null","computed":true},{"as":"history","body":"\n      return dsx.variable.revisions.filter(r =&gt; r.state != 'pending').slice(0, 4).map(r =&gt; ({\n        id: r.id, icon: r.authorKind == 'ai' ? 'sparkles' : 'person.crop.circle', title: r.note || (r.state == 'accepted' ? 'Accepted suggestion' : 'Edited'),\n        subtitle: (r.author || 'Despia') + ' · ' + since(r.createdAt)\n      }))\n    ","computed":true},{"as":"details","body":"\n      if (!dsx.variable.has) { return [] }\n      const a = dsx.variable.article\n      const src = a.source || {}\n      return [\n        { id: 'space', icon: 'books.vertical', title: 'Space', value: spaceWord(a.space) },\n        { id: 'url', icon: 'link', title: 'Address', value: a.url.replace('https://', '') },\n        { id: 'src', icon: src.kind == 'ticket' ? 'bubble.left.and.bubble.right' : (src.kind == 'code' ? 'number' : 'pencil'), title: 'Started from',\n          value: src.kind == 'ticket' ? 'Conversation #' + src.ref : (src.kind == 'code' ? src.ref : (src.kind == 'release' ? src.ref : 'Written here')) }\n      ]\n    ","computed":true},{"as":"moreMenu","body":"\n      if (!dsx.variable.has) { return [] }\n      const items = [{ title: 'Suggest a Revision', icon: 'sparkles', action: 'supportdesk.pick', args: { ask: 'article-suggest', value: dsx.variable.article.id } }]\n      if (dsx.variable.published) { items.push({ title: 'Unpublish', icon: 'eye.slash', action: 'supportdesk.pick', args: { ask: 'article-status', value: 'draft' } }) }\n      if (!dsx.variable.published &amp;&amp; dsx.variable.dirty) { items.push({ title: 'Save Draft', icon: 'square.and.arrow.down', action: 'supportdesk.pick', args: { ask: 'article-draft', value: dsx.variable.article.id } }) }\n      items.push({ separator: true })\n      items.push({ title: 'Archive', icon: 'archivebox', role: 'destructive', action: 'supportdesk.pick', args: { ask: 'article-status', value: 'archived' } })\n      return items\n    ","computed":true}],"formulas":[],"actions":[{"as":"load","inputs":{},"body":"\n      dsx.variable.error = ''\n      dsx.variable.notice = ''\n      if (dsx.attribute.articleId == '') { dsx.variable.article = null; return }\n      const r = await dsx.module.supportdesk.hubArticle({ id: dsx.attribute.articleId })\n      dsx.variable.loaded = true\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That article could not be opened.'; return }\n      dsx.action.fill({ a: r.data.article })\n      dsx.variable.revisions = r.data.revisions\n    "},{"as":"fill","inputs":{"a":"dsx.this.a"},"body":"\n      dsx.variable.article = a\n      dsx.variable.title = a.title\n      dsx.variable.summary = a.summary\n      dsx.variable.body = a.body\n      dsx.variable.codes = a.codes\n      dsx.variable.audience = a.audience == 'customers' ? 'Customers' : (a.audience == 'staff' ? 'Despia staff' : 'Everyone')\n      dsx.variable.platform = a.platform == 'ios' ? 'iOS' : (a.platform == 'android' ? 'Android' : (a.platform == 'web' ? 'Web' : 'All platforms'))\n    "},{"as":"save","inputs":{"status":"dsx.this.status"},"body":"\n      const r = await dsx.module.supportdesk.hubSave({\n        id: dsx.variable.article.id, title: dsx.variable.title, summary: dsx.variable.summary, body: dsx.variable.body, codes: dsx.variable.codes,\n        audience: audienceValue(dsx.variable.audience), platform: platformValue(dsx.variable.platform), status: status || dsx.variable.article.status\n      })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not save.'; return }\n      dsx.variable.error = ''\n      dsx.action.fill({ a: r.data.article })\n      const h = await dsx.module.supportdesk.hubArticle({ id: r.data.article.id })\n      if (h.ok) { dsx.variable.revisions = h.data.revisions }\n      dsx.module.toast.show({ title: r.data.article.status == 'published' ? 'Published' : (r.data.article.status == 'archived' ? 'Archived' : 'Saved'), message: r.data.article.title })\n      dsx.event('changed')\n    "},{"as":"primary","inputs":{},"body":"\n      await dsx.action.save({ status: 'published' })\n    "},{"as":"suggest","inputs":{},"body":"\n      dsx.variable.notice = 'Asking Despia AI…'\n      const r = await dsx.module.supportdesk.hubSuggest({ id: dsx.variable.article.id })\n      if (!r.ok) { dsx.variable.notice = r.message ? r.message : 'The AI could not answer.'; return }\n      dsx.variable.notice = ''\n      dsx.variable.revisions = [r.data.revision].concat(dsx.variable.revisions)\n      dsx.variable.reviewOpen = true\n    "},{"as":"decide","inputs":{"accept":"dsx.this.accept"},"body":"\n      const r = await dsx.module.supportdesk.hubDecide({ id: dsx.variable.pending.id, accept: accept == true })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      dsx.variable.reviewOpen = false\n      dsx.action.fill({ a: r.data.article })\n      const h = await dsx.module.supportdesk.hubArticle({ id: r.data.article.id })\n      if (h.ok) { dsx.variable.revisions = h.data.revisions }\n      dsx.event('changed')\n    "},{"as":"onPicked","inputs":{},"body":"\n      const k = dsx.module.supportdesk.context.picked\n      if (k == null || !dsx.variable.has) { return }\n      if (k.ask == 'article-suggest') { await dsx.action.suggest(); return }\n      if (k.ask == 'article-draft') { await dsx.action.save({ status: 'draft' }); return }\n      if (k.ask == 'article-status') { await dsx.action.save({ status: k.value }) }\n    "}],"watches":[{"value":"dsx.attribute.articleId","handler":"dsx.action.load()","immediate":true},{"value":"dsx.module.supportdesk.context.picked","handler":"dsx.action.onPicked()"}],"scripts":["\n      function audienceValue(w) { return w == 'Customers' ? 'customers' : (w == 'Despia staff' ? 'staff' : 'public') }\n      function platformValue(w) { return w == 'iOS' ? 'ios' : (w == 'Android' ? 'android' : (w == 'Web' ? 'web' : 'all')) }\n      function spaceWord(s) { return s == 'docs' ? 'Docs' : (s == 'troubleshooting' ? 'Troubleshooting' : (s == 'guides' ? 'Guides' : (s == 'changelog' ? 'Changelog' : 'Blog'))) }\n      function since(at) {\n        const m = Math.max(0, Math.round((Date.now() - Date.parse(at)) / 60000))\n        if (m &lt; 1) { return 'just now' }\n        if (m &lt; 60) { return m + ' min ago' }\n        if (m &lt; 1440) { return Math.round(m / 60) + ' h ago' }\n        return Math.round(m / 1440) + ' d ago'\n      }\n    "],"globalScripts":[]},"root":{"tag":"stack","attrs":{},"children":[{"tag":"spinner","attrs":{"visible-if":"!dsx.variable.loaded && dsx.variable.error == ''"},"children":[],"text":"","reactive":true,"nid":1},{"tag":"Callout","attrs":{"tone":"info","icon":"sparkles","title":"Suggested revision","message":"{{ dsx.variable.pending == null ? '' : dsx.variable.pending.note }}","action":"Review","visible-if":"dsx.variable.pending != null","on:action":"dsx.variable.reviewOpen = true"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.has"},"children":[{"tag":"FieldRow","attrs":{"label":"Title"},"children":[{"tag":"textfield","attrs":{"bind":"dsx.variable.title","placeholder":"What the reader is looking for","aria-label":"Title"},"children":[],"text":"","reactive":true,"nid":5}],"text":"","reactive":true,"nid":4}],"text":"\n    \n  ","reactive":true,"nid":3},{"tag":"ListGroup","attrs":{"header":"Summary","footer":"The answer first, in one or two sentences. Search results, citations and the console show it.","visible-if":"dsx.variable.has"},"children":[{"tag":"textarea","attrs":{"bind":"dsx.variable.summary","placeholder":"New App Store builds fail at signing until…","minLines":"2","maxLines":"4","aria-label":"Summary"},"children":[],"text":"","reactive":true,"nid":7}],"text":"\n    \n  ","reactive":true,"nid":6},{"tag":"ListGroup","attrs":{"header":"Article","footer":"Markdown. Each heading is a section Support's AI can cite with a link.","visible-if":"dsx.variable.has"},"children":[{"tag":"MarkdownEditor","attrs":{"value":"{{ dsx.variable.body }}","on:change":"dsx.variable.body = dsx.this.text"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n    \n  ","reactive":true,"nid":8},{"tag":"ListGroup","attrs":{"header":"Who Reads It","footer":"Issue codes tie the article to what customers hit: Support cites it for that issue and the console suggests it before they ask.","visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"title":"Audience"},"children":[{"tag":"picker","attrs":{"aria-label":"Audience","bind":"dsx.variable.audience","options":"Everyone,Customers,Despia staff"},"children":[],"text":"","reactive":true,"nid":12}],"text":"","reactive":true,"nid":11},{"tag":"SettingsRow","attrs":{"title":"Platform"},"children":[{"tag":"picker","attrs":{"aria-label":"Platform","bind":"dsx.variable.platform","options":"All platforms,iOS,Android,Web"},"children":[],"text":"","reactive":true,"nid":14}],"text":"","reactive":true,"nid":13},{"tag":"SettingsRow","attrs":{"title":"Issue codes"},"children":[{"tag":"TagsField","attrs":{"label":"Issue codes","tags":"{{ dsx.variable.codes }}","separator":", ","placeholder":"signing.cert_expired","on:add":"dsx.variable.codes = dsx.this.tags","on:remove":"dsx.variable.codes = dsx.this.tags"},"children":[],"text":"","reactive":true,"nid":16}],"text":"\n      \n    ","reactive":true,"nid":15}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":10},{"tag":"ListGroup","attrs":{"header":"Details","visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.details","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":18}],"text":"\n    \n  ","reactive":true,"nid":17},{"tag":"ListGroup","attrs":{"header":"History","visible-if":"dsx.variable.history.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.history","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}"},"children":[],"text":"","reactive":true,"nid":20}],"text":"\n    \n  ","reactive":true,"nid":19},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != '' || dsx.variable.notice != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3","visible-if":"dsx.variable.error != ''"},"children":[],"text":"","reactive":true,"nid":22},{"tag":"SettingsRow","attrs":{"icon":"sparkles","title":"{{ dsx.variable.notice }}","lines":"3","visible-if":"dsx.variable.notice != ''"},"children":[],"text":"","reactive":true,"nid":23}],"text":"\n    \n    \n  ","reactive":true,"nid":21},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"icon":"{{ dsx.variable.primaryIcon }}","title":"{{ dsx.variable.primaryTitle }}","tone":"accent","tappable":"{{ dsx.variable.primaryEnabled ? 'true' : 'false' }}","on:tap":"dsx.action.primary()"},"children":[],"text":"","reactive":true,"nid":25},{"tag":"SettingsRow","attrs":{"icon":"ellipsis.circle","title":"More"},"children":[{"tag":"menu","attrs":{"menu":"{{ dsx.variable.moreMenu }}"},"children":[{"tag":"button","attrs":{"icon":"chevron.up.chevron.down","a11yLabel":"More article actions"},"children":[],"text":"","reactive":false,"nid":28}],"text":"","reactive":true,"nid":27}],"text":"\n      \n    ","reactive":true,"nid":26}],"text":"\n    \n    \n  ","reactive":true,"nid":24},{"tag":"sheet","attrs":{"class":"hub-page-sheet","detents":"full","present":"dsx.variable.reviewOpen","title":"Suggested Revision","close":"leading","action":"Accept","on:action":"dsx.action.decide({ accept: true })","on:dismiss":"dsx.variable.reviewOpen = false"},"children":[{"tag":"ListGroup","attrs":{"header":"Why","visible-if":"dsx.variable.pending != null"},"children":[{"tag":"SettingsRow","attrs":{"icon":"sparkles","title":"{{ dsx.variable.pending == null ? '' : dsx.variable.pending.note }}","lines":"6"},"children":[],"text":"","reactive":true,"nid":31}],"text":"\n      \n    ","reactive":true,"nid":30},{"tag":"ListGroup","attrs":{"header":"Revised article","footer":"Accept replaces the article with this text. Nothing is published until you publish.","visible-if":"dsx.variable.pending != null"},"children":[{"tag":"ReadMore","attrs":{"title":"{{ dsx.variable.pending == null ? '' : dsx.variable.pending.title }}","value":"{{ dsx.variable.pending == null ? '' : dsx.variable.pending.body }}"},"children":[],"text":"","reactive":true,"nid":33}],"text":"\n      \n    ","reactive":true,"nid":32},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.pending != null"},"children":[{"tag":"SettingsRow","attrs":{"icon":"xmark.circle","title":"Dismiss Suggestion","tappable":"true","on:tap":"dsx.action.decide({ accept: false })"},"children":[],"text":"","reactive":true,"nid":35}],"text":"\n      \n    ","reactive":true,"nid":34}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":29}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.Copilot":{"name":"Copilot","scheme":"supportinbox","head":{"attributes":[{"as":"conversationId","default":"''"}],"apis":[],"expects":[],"events":[{"as":"use","payload":["text"]},{"as":"link","payload":["text"]}],"inputs":[],"tools":[],"variables":[{"as":"tone","body":"return 'owner'","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"draftOut","body":"return null","computed":false},{"as":"summaryOut","body":"return null","computed":false},{"as":"triageOut","body":"return null","computed":false},{"as":"last","body":"return null","computed":false},{"as":"cap","body":"return null","computed":false},{"as":"speaking","body":"return false","computed":false},{"as":"nextTask","body":"return ''","computed":false},{"as":"busy","body":"return dsx.action.run.pending ? dsx.variable.nextTask : ''","computed":true},{"as":"toneOptions","body":"return [{ id: 'owner', label: 'My Tone' }, { id: 'standard', label: 'Detailed' }]","computed":true},{"as":"asks","body":"\n      const b = dsx.variable.busy\n      const row = (id, icon, title, subtitle) => ({ id: id, icon: icon, title: title, subtitle: subtitle, value: b == id ? 'Thinking…' : '' })\n      return [\n        row('draft', 'sparkles', 'Draft Reply', dsx.variable.tone == 'owner' ? 'Short, friendly, direct. Lands in the composer.' : 'Fuller steps. Lands in the composer.'),\n        row('summary', 'text.alignleft', 'Summarize', 'What this is about, in a few sentences.'),\n        row('triage', 'stethoscope', 'User Error or Bug?', 'A verdict with the evidence it used.'),\n        row('deep', 'brain', 'Deep Analysis', 'Opus-class, slower and costlier. Only when it matters.')\n      ]\n    ","computed":true},{"as":"verdictTitle","body":"\n      const t = dsx.variable.triageOut\n      if (t == null) { return '' }\n      if (t.verdict == 'user_error') { return 'Likely a setup or user error' }\n      if (t.verdict == 'bug') { return 'Likely a Despia bug' }\n      return 'Not clear yet'\n    ","computed":true},{"as":"evidenceRows","body":"\n      const t = dsx.variable.triageOut\n      if (t == null) { return [] }\n      const icon = (k) => k == 'article' ? 'book' : (k == 'package' ? 'shippingbox' : (k == 'legacy' ? 'arrow.uturn.backward' : (k == 'catalog' ? 'stethoscope' : 'text.bubble')))\n      return t.evidence.map((e, i) => ({ id: String(i), icon: icon(e.kind), title: e.title, subtitle: e.detail, url: e.url, tappable: e.url != '' }))\n    ","computed":true},{"as":"articleRows","body":"\n      const all = [].concat(dsx.variable.triageOut == null ? [] : dsx.variable.triageOut.articles, dsx.variable.draftOut == null ? [] : dsx.variable.draftOut.articles)\n      const unique = all.filter((a, i) => a.url != '' &amp;&amp; all.findIndex(b => b.url == a.url) == i)\n      return unique.map((a, i) => ({ id: String(i), title: a.title, subtitle: a.url, url: a.url }))\n    ","computed":true},{"as":"usageLine","body":"\n      const u = dsx.variable.last\n      if (u == null) { return '' }\n      const model = String(u.model || '').split('/').pop()\n      return model + ' · ' + u.usage.inputTokens.toLocaleString() + ' in, ' + u.usage.outputTokens.toLocaleString() + ' out · ' + money(u.usage.costUsd)\n    ","computed":true},{"as":"budgetValue","body":"\n      const c = dsx.variable.cap\n      return c == null || c.dailyUsd == 0 ? '' : money(c.spentTodayUsd) + ' of ' + money(c.dailyUsd)\n    ","computed":true},{"as":"budgetFraction","body":"\n      const c = dsx.variable.cap\n      return c == null || c.dailyUsd == 0 ? 0 : Math.max(0, Math.min(1, c.spentTodayUsd / c.dailyUsd))\n    ","computed":true}],"formulas":[],"actions":[{"as":"reset","inputs":{},"body":"\n      dsx.variable.draftOut = null\n      dsx.variable.summaryOut = null\n      dsx.variable.triageOut = null\n      dsx.variable.error = ''\n      if (dsx.variable.speaking) { await dsx.action.stopReading() }\n      const u = await dsx.module.supportdesk.copilotUsage()\n      if (u.ok) { dsx.variable.cap = u.data }\n    "},{"as":"ask","inputs":{"task":"dsx.this.id"},"body":"\n      if (dsx.action.run.pending) { return }\n      dsx.variable.nextTask = String(task || '')\n      await dsx.action.run()\n    "},{"as":"run","inputs":{},"body":"\n      const task = dsx.variable.nextTask\n      if (task == '' || dsx.attribute.conversationId == '') { return }\n      const r = await dsx.module.supportdesk.copilot({ id: dsx.attribute.conversationId, task: task, tone: dsx.variable.tone })\n      if (!r.ok) {\n        dsx.variable.error = r.message || 'The copilot did not answer. Try again in a moment.'\n        if (r.error == 'ai_daily_cap') { const u = await dsx.module.supportdesk.copilotUsage(); if (u.ok) { dsx.variable.cap = u.data } }\n        return\n      }\n      dsx.variable.error = ''\n      dsx.variable.last = r.data\n      dsx.variable.cap = r.data.cap\n      if (task == 'draft') { dsx.variable.draftOut = r.data }\n      if (task == 'summary') { dsx.variable.summaryOut = r.data }\n      if (task == 'triage' || task == 'deep') { dsx.variable.triageOut = r.data }\n    "},{"as":"useDraft","inputs":{},"body":"\n      if (dsx.variable.draftOut != null) { dsx.event('use', { text: dsx.variable.draftOut.text }) }\n    "},{"as":"useNextStep","inputs":{},"body":"\n      if (dsx.variable.triageOut == null || dsx.action.run.pending) { return }\n      dsx.variable.nextTask = 'draft'\n      await dsx.action.run()\n    "},{"as":"readAloud","inputs":{},"body":"\n      if (dsx.variable.summaryOut == null) { return }\n      if (dsx.variable.speaking) { await dsx.action.stopReading(); return }\n      const r = await dsx.module.supportdesk.speak({ text: dsx.variable.summaryOut.text })\n      if (!r.ok) { dsx.variable.error = r.message; return }\n      dsx.variable.speaking = r.data.speaking\n    "},{"as":"stopReading","inputs":{},"body":"\n      await dsx.module.supportdesk.stopSpeaking()\n      dsx.variable.speaking = false\n    "},{"as":"addEvidence","inputs":{"id":"dsx.this.id"},"body":"\n      const e = dsx.variable.evidenceRows.find(r => r.id == id)\n      if (e != null &amp;&amp; e.url != '') { dsx.event('link', { text: e.title + ': ' + e.url }) }\n    "},{"as":"addArticle","inputs":{"id":"dsx.this.id"},"body":"\n      const a = dsx.variable.articleRows.find(r => r.id == id)\n      if (a != null) { dsx.event('link', { text: a.title + ': ' + a.url }) }\n    "}],"watches":[{"value":"dsx.attribute.conversationId","handler":"dsx.action.reset()","immediate":true}],"scripts":["\n      function money(v) {\n        const n = Number(v || 0)\n        return '$' + (n &gt; 0 &amp;&amp; n &lt; 0.01 ? n.toFixed(4) : n.toFixed(2))\n      }\n    "],"globalScripts":[]},"root":{"tag":"stack","attrs":{},"children":[{"tag":"ListGroup","attrs":{"header":"Copilot","footer":"{{ dsx.variable.usageLine }}"},"children":[{"tag":"SettingsRow","attrs":{"title":"Tone"},"children":[{"tag":"segmented","attrs":{"bind":"dsx.variable.tone","optionsKey":"dsx.variable.toneOptions","label":"Tone"},"children":[],"text":"","reactive":true,"nid":3}],"text":"\n      \n    ","reactive":true,"nid":2},{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.asks","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","value":"{{ dsx.this.value }}","tappable":"{{ dsx.variable.busy == '' ? 'true' : 'false' }}","on:tap":"dsx.action.ask()"},"children":[],"text":"","reactive":true,"nid":4}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":6}],"text":"\n    \n  ","reactive":true,"nid":5},{"tag":"ListGroup","attrs":{"header":"Draft","footer":"Nothing is sent until you press Send.","visible-if":"dsx.variable.draftOut != null"},"children":[{"tag":"SettingsRow","attrs":{"title":"{{ dsx.variable.draftOut == null ? '' : dsx.variable.draftOut.text }}","lines":"14"},"children":[],"text":"","reactive":true,"nid":8},{"tag":"SettingsRow","attrs":{"icon":"arrowshape.turn.up.left","title":"Use in Reply","tone":"accent","tappable":"true","on:tap":"dsx.action.useDraft()"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n    \n    \n  ","reactive":true,"nid":7},{"tag":"ListGroup","attrs":{"header":"Summary","visible-if":"dsx.variable.summaryOut != null"},"children":[{"tag":"SettingsRow","attrs":{"title":"{{ dsx.variable.summaryOut == null ? '' : dsx.variable.summaryOut.text }}","lines":"10"},"children":[],"text":"","reactive":true,"nid":11},{"tag":"SettingsRow","attrs":{"icon":"{{ dsx.variable.speaking ? 'stop.circle' : 'speaker.wave.2' }}","title":"{{ dsx.variable.speaking ? 'Stop Reading' : 'Read Aloud' }}","tone":"accent","tappable":"true","on:tap":"dsx.action.readAloud()"},"children":[],"text":"","reactive":true,"nid":12}],"text":"\n    \n    \n  ","reactive":true,"nid":10},{"tag":"Recommendation","attrs":{"visible-if":"dsx.variable.triageOut != null","eyebrow":"{{ dsx.variable.triageOut != null && dsx.variable.triageOut.task == 'deep' ? 'Deep analysis' : 'User error or bug?' }}","title":"{{ dsx.variable.verdictTitle }}","reason":"{{ dsx.variable.triageOut == null ? '' : dsx.variable.triageOut.text }}","confidence":"{{ dsx.variable.triageOut == null ? '' : dsx.variable.triageOut.confidence }}","acceptLabel":"Draft Reply","dismissLabel":"Dismiss","on:accept":"dsx.action.useNextStep()","on:dismiss":"dsx.variable.triageOut = null"},"children":[],"text":"","reactive":true,"nid":13},{"tag":"ListGroup","attrs":{"header":"Next Step","visible-if":"dsx.variable.triageOut != null && dsx.variable.triageOut.nextStep != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"arrow.right","title":"{{ dsx.variable.triageOut == null ? '' : dsx.variable.triageOut.nextStep }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":15}],"text":"\n    \n  ","reactive":true,"nid":14},{"tag":"ListGroup","attrs":{"header":"Evidence","footer":"What the verdict rests on. A row with a link adds it to your reply.","visible-if":"dsx.variable.evidenceRows.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.evidenceRows","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"3","tappable":"{{ dsx.this.tappable ? 'true' : 'false' }}","on:tap":"dsx.action.addEvidence()"},"children":[],"text":"","reactive":true,"nid":17}],"text":"\n    \n  ","reactive":true,"nid":16},{"tag":"ListGroup","attrs":{"header":"Suggested Articles","footer":"Tap one to add its link to your reply.","visible-if":"dsx.variable.articleRows.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.articleRows","key":"id","icon":"book","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"2","tappable":"true","on:tap":"dsx.action.addArticle()"},"children":[],"text":"","reactive":true,"nid":19}],"text":"\n    \n  ","reactive":true,"nid":18},{"tag":"ListGroup","attrs":{"footer":"Resets at midnight UTC. The copilot stops when it is spent.","visible-if":"dsx.variable.budgetValue != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"creditcard","title":"AI Budget Today","value":"{{ dsx.variable.budgetValue }}"},"children":[],"text":"","reactive":true,"nid":21},{"tag":"progress","attrs":{"value":"{{ dsx.variable.budgetFraction }}"},"children":[],"text":"","reactive":true,"nid":22}],"text":"\n    \n    \n  ","reactive":true,"nid":20}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n  \n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.CustomerContext":{"name":"CustomerContext","scheme":"supportinbox","head":{"attributes":[{"as":"conversation","default":"null"},{"as":"customer","default":"null"},{"as":"likely","default":"null"}],"apis":[],"expects":[],"events":[{"as":"use","payload":["text"]},{"as":"details","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"lockProject","body":"return null","computed":false},{"as":"diagnosisOpen","body":"return false","computed":false},{"as":"c","body":"return dsx.attribute.conversation","computed":true},{"as":"x","body":"return dsx.attribute.customer","computed":true},{"as":"has","body":"return dsx.variable.c != null","computed":true},{"as":"shared","body":"return dsx.variable.x != null","computed":true},{"as":"who","body":"return dsx.variable.has ? dsx.variable.c.customer : { name: '', email: '' }","computed":true},{"as":"hiddenWhy","body":"\n      if (!dsx.variable.has) { return '' }\n      if (dsx.variable.c.status == 'resolved') { return 'Build info is closed while this conversation is resolved.' }\n      return dsx.variable.c.customer.name + ' chose not to share build info in this conversation.'\n    ","computed":true},{"as":"build","body":"return dsx.variable.shared ? dsx.variable.x.failingBuild : null","computed":true},{"as":"diagnosis","body":"return dsx.variable.build == null ? null : dsx.variable.build.diagnosis","computed":true},{"as":"buildTitle","body":"\n      if (dsx.variable.build == null) { return '' }\n      return dsx.variable.diagnosis != null ? dsx.variable.diagnosis.title : (dsx.variable.build.summary || 'Build failed')\n    ","computed":true},{"as":"buildSubtitle","body":"\n      if (dsx.variable.build == null) { return '' }\n      const os = dsx.variable.build.platform == 'ios' ? 'iOS' : 'Android'\n      return dsx.variable.build.project + ' · ' + os + ' · ' + since(dsx.variable.build.createdAt)\n    ","computed":true},{"as":"steps","body":"\n      const d = dsx.variable.diagnosis\n      if (d == null) { return [] }\n      return d.steps.map((s, i) => ({ id: 's' + i, title: s }))\n    ","computed":true},{"as":"projects","body":"return dsx.variable.shared ? dsx.variable.x.projects : []","computed":true},{"as":"lockOpen","body":"return dsx.variable.lockProject != null","computed":true},{"as":"workspaceName","body":"return !dsx.variable.shared || dsx.variable.x.workspaces.length == 0 ? '' : dsx.variable.x.workspaces[0].name","computed":true},{"as":"workspaceRole","body":"return dsx.variable.workspaceName == '' ? '' : 'Workspace ' + dsx.variable.x.workspaces[0].role","computed":true}],"formulas":[],"actions":[{"as":"openLock","inputs":{"project":"dsx.this"},"body":"\n      dsx.variable.lockProject = project\n    "}],"watches":[],"scripts":["\n      function since(at) {\n        const m = Math.max(0, Math.round((Date.now() - Date.parse(at)) / 60000))\n        if (m &lt; 60) { return m + ' min ago' }\n        if (m &lt; 1440) { return Math.round(m / 60) + ' h ago' }\n        return Math.round(m / 1440) + ' d ago'\n      }\n    "],"globalScripts":[]},"root":{"tag":"stack","attrs":{},"children":[{"tag":"LikelyIssue","attrs":{"issue":"{{ dsx.variable.shared ? dsx.attribute.likely : null }}","visible-if":"dsx.variable.shared && dsx.attribute.likely != null","on:use":"dsx.event('use', { text: dsx.this.text })","on:details":"dsx.event('details')"},"children":[],"text":"","reactive":true,"nid":1},{"tag":"ListGroup","attrs":{"header":"Customer","visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"icon":"person.crop.circle","title":"{{ dsx.variable.who.name }}","subtitle":"{{ dsx.variable.who.email }}"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"SettingsRow","attrs":{"icon":"building.2","title":"{{ dsx.variable.workspaceName }}","subtitle":"{{ dsx.variable.workspaceRole }}","visible-if":"dsx.variable.workspaceName != ''"},"children":[],"text":"","reactive":true,"nid":4},{"tag":"SettingsRow","attrs":{"icon":"creditcard","title":"Credits","value":"{{ dsx.variable.x.credits }}","visible-if":"dsx.variable.shared"},"children":[],"text":"","reactive":true,"nid":5}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":2},{"tag":"ListGroup","attrs":{"footer":"{{ dsx.variable.hiddenWhy }}","visible-if":"dsx.variable.has && !dsx.variable.shared"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"ListGroup","attrs":{"header":"Failing build","visible-if":"dsx.variable.build != null"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.buildTitle }}","subtitle":"{{ dsx.variable.buildSubtitle }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":8},{"tag":"SettingsRow","attrs":{"title":"What happened","subtitle":"{{ dsx.variable.diagnosis.whatHappened }}","lines":"1","chevron":"true","tappable":"true","visible-if":"dsx.variable.diagnosis != null","on:tap":"dsx.variable.diagnosisOpen = true"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n    \n    \n  ","reactive":true,"nid":7},{"tag":"ListGroup","attrs":{"header":"Projects","footer":"Open a project to see whether its bundle ID is locked, and to unlock or change it for the customer.","visible-if":"dsx.variable.projects.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.projects","key":"id","icon":"square.grid.2x2","title":"{{ dsx.this.name }}","value":"{{ dsx.this.type == 'convert' ? 'V3 convert' : 'V4' }}","chevron":"true","tappable":"true","on:tap":"dsx.action.openLock()"},"children":[],"text":"","reactive":true,"nid":11}],"text":"\n    \n  ","reactive":true,"nid":10},{"tag":"sheet","attrs":{"detents":"page","present":"dsx.variable.lockOpen","title":"{{ dsx.variable.lockProject == null ? '' : dsx.variable.lockProject.name }}","on:dismiss":"dsx.variable.lockProject = null"},"children":[{"tag":"IdentityLock","attrs":{"projectId":"{{ dsx.variable.lockProject == null ? '' : dsx.variable.lockProject.id }}","projectName":"{{ dsx.variable.lockProject == null ? '' : dsx.variable.lockProject.name }}"},"children":[],"text":"","reactive":true,"nid":13}],"text":"\n    \n  ","reactive":true,"nid":12},{"tag":"sheet","attrs":{"detents":"form","present":"dsx.variable.diagnosisOpen","title":"{{ dsx.variable.buildTitle }}","close":"trailing","on:dismiss":"dsx.variable.diagnosisOpen = false"},"children":[{"tag":"ListGroup","attrs":{"header":"What happened","footer":"{{ dsx.variable.buildSubtitle }}"},"children":[{"tag":"SettingsRow","attrs":{"title":"{{ dsx.variable.diagnosis == null ? '' : dsx.variable.diagnosis.whatHappened }}","lines":"12"},"children":[],"text":"","reactive":true,"nid":16}],"text":"\n      \n    ","reactive":true,"nid":15},{"tag":"Guide","attrs":{"steps":"{{ dsx.variable.steps }}","a11yLabel":"How to fix it"},"children":[],"text":"","reactive":true,"nid":17}],"text":"\n    \n    \n  ","reactive":true,"nid":14}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n\n\n  \n\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.CustomerDetail":{"name":"CustomerDetail","scheme":"supportinbox","head":{"attributes":[{"as":"customerRef","default":"''","change":"dsx.action.load()"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"view","body":"return null","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"clear","body":"return ''","computed":false},{"as":"has","body":"return dsx.variable.view != null","computed":true},{"as":"c","body":"return dsx.variable.has ? dsx.variable.view.customer : null","computed":true},{"as":"facts","body":"\n      if (!dsx.variable.has) { return [] }\n      const c = dsx.variable.c\n      return [\n        { label: 'V4 account', value: c.v4 ? 'Yes' : 'Not yet' },\n        { label: 'Wave', value: c.wave == null ? 'None' : c.wave.name + (c.wave.paused ? ' (paused)' : '') },\n        { label: 'Apps moved', value: c.moved + ' of ' + c.apps },\n        { label: 'Last active in V3', value: c.lastActive ? new Date(c.lastActive).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }) : 'Unknown' }\n      ]\n    ","computed":true},{"as":"stageRole","body":"\n      if (!dsx.variable.has) { return '' }\n      const s = dsx.variable.c.stage\n      return s == 'Approved' ? 'success' : (s == 'In review' || s == 'Building' ? 'info' : 'neutral')\n    ","computed":true},{"as":"apps","body":"\n      return dsx.variable.has ? dsx.variable.view.apps.map(a =&gt; ({ id: a.id, title: a.name, subtitle: a.workspace + ' · ' + a.role + (a.credentials ? ' · Keys: ' + a.credentials : ''), value: a.state + (a.project ? ' · ' + a.project.name : '') })) : []\n    ","computed":true},{"as":"builds","body":"\n      return dsx.variable.has ? dsx.variable.view.builds.map(b =&gt; ({\n        id: b.id, title: b.project + ' · ' + (b.platform == 'ios' ? 'iOS' : 'Android'),\n        subtitle: b.status == 'failed' ? (b.code ? 'Diagnosis ' + b.code : 'Not diagnosed yet') + (b.summary ? ' · ' + b.summary : '') : since(b.at),\n        status: b.status == 'completed' ? 'success' : (b.status == 'failed' ? 'failed' : (b.status == 'cancelled' ? 'skipped' : 'running')),\n        value: b.status == 'completed' ? 'Succeeded' : (b.status == 'failed' ? 'Failed' : (b.status == 'cancelled' ? 'Cancelled' : 'Running'))\n      })) : []\n    ","computed":true},{"as":"publishes","body":"\n      return dsx.variable.has ? dsx.variable.view.publishes.map(p =&gt; ({\n        id: p.id, title: p.project + ' · ' + (p.store == 'app_store' ? 'App Store' : 'Google Play'),\n        subtitle: p.rejection ? p.rejection : since(p.at), value: words(p.state)\n      })) : []\n    ","computed":true},{"as":"tickets","body":"\n      return dsx.variable.has ? dsx.variable.view.tickets.map(t =&gt; ({ id: t.id, title: (t.kind == 'ticket' ? 'Ticket #' : '#') + t.number + ' · ' + t.subject, value: t.status == 'open' ? 'Open' : (t.status == 'pending' ? 'Waiting' : 'Resolved') })) : []\n    ","computed":true},{"as":"emailShown","body":"return dsx.variable.clear != '' ? dsx.variable.clear : (dsx.variable.has ? dsx.variable.c.email : '')","computed":true}],"formulas":[],"actions":[{"as":"load","inputs":{},"body":"\n      dsx.variable.clear = ''\n      if (dsx.attribute.customerRef == '') { dsx.variable.view = null; return }\n      const r = await dsx.module.supportdesk.migrationCustomer({ ref: dsx.attribute.customerRef })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'Despia did not answer. Try again in a moment.'; return }\n      dsx.variable.error = ''\n      dsx.variable.view = r.data\n    "},{"as":"reveal","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.migrationReveal({ ref: dsx.variable.c.ref })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      dsx.variable.clear = r.data.email\n    "},{"as":"openTicket","inputs":{"id":"dsx.this.id"},"body":"dsx.module.route.push({ path: '/c/' + id })"}],"watches":[],"scripts":["\n      function since(at) {\n        if (!at) { return '' }\n        const m = Math.max(0, Math.round((Date.now() - Date.parse(at)) / 60000))\n        if (m &lt; 60) { return m + ' min ago' }\n        if (m &lt; 1440) { return Math.round(m / 60) + ' h ago' }\n        return Math.round(m / 1440) + ' d ago'\n      }\n      function words(s) {\n        const map = { uploaded: 'Uploaded', processing: 'Processing', ready_to_submit: 'Ready to submit', waiting_for_review: 'Waiting for review', in_review: 'In review',\n                      rejected: 'Rejected', approved: 'Approved', pending_release: 'Pending release', releasing: 'Releasing', live: 'Live', failed: 'Failed', cancelled: 'Cancelled' }\n        return map[s] || 'Draft'\n      }\n    "],"globalScripts":[]},"root":{"tag":"stack","attrs":{"on:appear":"dsx.action.load()"},"children":[{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"SettingsRow","attrs":{"icon":"arrow.clockwise","title":"Try Again","tone":"accent","tappable":"true","on:tap":"dsx.action.load()"},"children":[],"text":"","reactive":true,"nid":3}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"spinner","attrs":{"visible-if":"!dsx.variable.has && dsx.variable.error == ''"},"children":[],"text":"","reactive":true,"nid":4},{"tag":"SummaryHeader","attrs":{"visible-if":"dsx.variable.has","title":"{{ dsx.variable.c.name || dsx.variable.c.email }}","status":"{{ dsx.variable.c.stage }}","statusRole":"{{ dsx.variable.stageRole }}","facts":"{{ dsx.variable.facts }}"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"ListGroup","attrs":{"header":"Email","footer":"Shown masked. Showing the address is recorded in the audit log.","visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"icon":"envelope","title":"{{ dsx.variable.emailShown }}"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"SettingsRow","attrs":{"icon":"eye","title":"Show Email","tone":"accent","tappable":"true","visible-if":"dsx.variable.clear == ''","on:tap":"dsx.action.reveal()"},"children":[],"text":"","reactive":true,"nid":8}],"text":"\n    \n    \n  ","reactive":true,"nid":6},{"tag":"ListGroup","attrs":{"header":"V3 apps","visible-if":"dsx.variable.apps.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.apps","key":"id","icon":"square.grid.2x2","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"2","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":10}],"text":"\n    \n  ","reactive":true,"nid":9},{"tag":"ListGroup","attrs":{"header":"Builds","visible-if":"dsx.variable.builds.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.builds","key":"id","status":"{{ dsx.this.status }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"2","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":12}],"text":"\n    \n  ","reactive":true,"nid":11},{"tag":"ListGroup","attrs":{"header":"Store","visible-if":"dsx.variable.publishes.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.publishes","key":"id","icon":"app.badge","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"2","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":14}],"text":"\n    \n  ","reactive":true,"nid":13},{"tag":"ListGroup","attrs":{"header":"Conversations","visible-if":"dsx.variable.tickets.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.tickets","key":"id","icon":"bubble.left","title":"{{ dsx.this.title }}","lines":"2","value":"{{ dsx.this.value }}","chevron":"true","tappable":"true","on:tap":"dsx.action.openTicket()"},"children":[],"text":"","reactive":true,"nid":16}],"text":"\n    \n  ","reactive":true,"nid":15}],"text":"\n  \n\n  \n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.FrameworkMark":{"name":"FrameworkMark","scheme":"supportinbox","head":{"attributes":[{"as":"row","default":"null"}],"apis":[],"expects":[],"events":[{"as":"changed","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"marked","body":"return false","computed":false},{"as":"note","body":"return ''","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"r","body":"return dsx.attribute.row","computed":true},{"as":"has","body":"return dsx.variable.r != null","computed":true},{"as":"facts","body":"\n      if (!dsx.variable.has) { return [] }\n      const r = dsx.variable.r\n      return [\n        { id: 'code', icon: 'number', title: 'Code', value: r.code },\n        { id: 'customers', icon: 'person.2', title: 'Customers', value: String(r.customers) },\n        { id: 'occ', icon: 'clock', title: 'Last 24 hours', value: String(r.day) + (r.before == 0 ? '' : ' (' + r.before + ' the day before)') }\n      ]\n    ","computed":true}],"formulas":[],"actions":[{"as":"reset","inputs":{},"body":"\n      dsx.variable.marked = dsx.variable.has &amp;&amp; dsx.variable.r.frameworkIssue == true\n      dsx.variable.note = dsx.variable.has &amp;&amp; dsx.variable.r.note ? dsx.variable.r.note : ''\n      dsx.variable.error = ''\n    "},{"as":"save","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.observeFramework({ code: dsx.variable.r.code, marked: dsx.variable.marked, note: dsx.variable.note })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      dsx.variable.error = ''\n      dsx.event('changed')\n    "}],"watches":[{"value":"dsx.attribute.row","handler":"dsx.action.reset()","immediate":true}],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{},"children":[{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.facts","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"ListGroup","attrs":{"header":"Framework issue","footer":"Every customer’s prepared reply for this code then says it is on our side and that the fix is coming. Unmark it once the fix is live.","visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"title":"Despia’s own defect"},"children":[{"tag":"toggle","attrs":{"bind":"dsx.variable.marked","aria-label":"Despia’s own defect"},"children":[],"text":"","reactive":true,"nid":5}],"text":"","reactive":true,"nid":4},{"tag":"SettingsRow","attrs":{"title":"Note for customers","visible-if":"dsx.variable.marked"},"children":[{"tag":"textarea","attrs":{"bind":"dsx.variable.note","placeholder":"The fix ships in the next build image.","minLines":"2","maxLines":"6","aria-label":"Note for customers"},"children":[],"text":"","reactive":true,"nid":7}],"text":"\n      \n    ","reactive":true,"nid":6}],"text":"\n    \n    \n  ","reactive":true,"nid":3},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n    \n  ","reactive":true,"nid":8},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"icon":"checkmark.circle","title":"{{ dsx.action.save.pending ? 'Saving…' : 'Save' }}","tone":"accent","tappable":"{{ dsx.action.save.pending ? 'false' : 'true' }}","on:tap":"dsx.action.save()"},"children":[],"text":"","reactive":true,"nid":11}],"text":"\n    \n  ","reactive":true,"nid":10}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.Health":{"name":"Health","scheme":"supportinbox","head":{"attributes":[],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"settled","body":"return false","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"data","body":"return null","computed":false},{"as":"openCode","body":"return null","computed":false},{"as":"loaded","body":"return dsx.variable.data != null","computed":true},{"as":"alerts","body":"\n      if (!dsx.variable.loaded) { return [] }\n      return dsx.variable.data.alerts.map(a =&gt; ({\n        id: a.id, icon: a.severity == 'critical' ? 'exclamationmark.octagon' : 'exclamationmark.triangle', title: a.title,\n        message: label(a.rule) + ' · opened ' + since(a.openedAt) + (a.fired &gt; 1 ? ' · fired ' + a.fired + ' times' : '') + (a.state == 'acknowledged' ? ' · acknowledged' : ''),\n        action: a.state == 'open' ? 'Acknowledge' : ''\n      }))\n    ","computed":true},{"as":"stats","body":"\n      if (!dsx.variable.loaded) { return [] }\n      const s = dsx.variable.data.stats\n      const p = s.previous || {}\n      return [\n        { id: 'issues', label: 'Active issues', value: num(s.activeIssues), delta: '', icon: 'exclamationmark.triangle' },\n        { id: 'customers', label: 'Customers affected', value: num(s.customersAffected), delta: '', icon: 'person.2' },\n        { id: 'builds', label: 'Builds failed, 24 h', value: num(s.buildsFailed24h), delta: delta(s.buildsFailed24h, p.buildsFailed24h), icon: 'hammer' },\n        { id: 'api', label: 'API errors, 24 h', value: num(s.apiErrors24h), delta: delta(s.apiErrors24h, p.apiErrors24h), icon: 'server.rack' },\n        { id: 'auth', label: 'Sign-in failures, 24 h', value: num(s.signInFailures24h), delta: delta(s.signInFailures24h, p.signInFailures24h), icon: 'person.badge.key' },\n        { id: 'console', label: 'Console errors, 24 h', value: num(s.consoleErrors24h), delta: delta(s.consoleErrors24h, p.consoleErrors24h), icon: 'macwindow' }\n      ]\n    ","computed":true},{"as":"topColumns","body":"\n      return [{ key: 'name', label: 'Issue', width: 'fill' }, { key: 'customers', label: 'Customers', type: 'number' }, { key: 'day', label: 'Last 24 h', type: 'number' },\n              { key: 'before', label: 'Day before', type: 'number' }, { key: 'owner', label: 'Cause', type: 'status' }]\n    ","computed":true},{"as":"topRows","body":"\n      if (!dsx.variable.loaded) { return [] }\n      return dsx.variable.data.top.map(t =&gt; ({\n        id: t.code, name: t.title, subtitle: t.code, icon: iconOf(t.source), iconLabel: t.source,\n        customers: t.customers, day: t.day, before: t.before,\n        owner: t.frameworkIssue ? 'Despia' : (t.severity == 'critical' ? 'Critical' : 'Customer setup'), ownerRole: t.frameworkIssue ? 'info' : (t.severity == 'critical' ? 'danger' : 'neutral')\n      }))\n    ","computed":true},{"as":"versionColumns","body":"\n      return [{ key: 'name', label: 'Framework', width: 'fill' }, { key: 'code', label: 'Failure', width: 'fill' }, { key: 'failures', label: 'Failures', type: 'number' }, { key: 'customers', label: 'Customers', type: 'number' }]\n    ","computed":true},{"as":"versionRows","body":"\n      if (!dsx.variable.loaded) { return [] }\n      return dsx.variable.data.versions.map((v, n) =&gt; ({ id: 'v' + n, name: v.frameworkRef, code: v.code, icon: 'shippingbox', iconLabel: 'Framework version', failures: v.failures, customers: v.customers }))\n    ","computed":true},{"as":"marked","body":"\n      if (!dsx.variable.loaded) { return [] }\n      return dsx.variable.data.frameworkIssues.map(m =&gt; ({ id: m.id || m.code, title: m.title || m.code, subtitle: [m.code, sourceWord(m.source), m.note].filter(x =&gt; x != null &amp;&amp; x != '').join(' · '), value: m.state == 'open' ? 'Fixing' : 'Fixed', icon: m.state == 'open' ? 'wrench.and.screwdriver' : 'checkmark.circle' }))\n    ","computed":true},{"as":"codeOpen","body":"return dsx.variable.openCode != null","computed":true},{"as":"moreMenu","body":"\n      return [\n        { title: 'Refresh', icon: 'arrow.clockwise', shortcut: 'cmd+r', action: 'supportdesk.pick', args: { ask: 'observe-refresh' } },\n        { separator: true },\n        { title: 'Proactive', icon: 'person.crop.circle.badge.exclamationmark', shortcut: 'cmd+shift+p', action: 'supportdesk.pick', args: { ask: 'proactive' } },\n        { title: 'Inbox', icon: 'tray', shortcut: 'cmd+1', action: 'supportdesk.pick', args: { ask: 'inbox' } }\n      ]\n    ","computed":true}],"formulas":[],"actions":[{"as":"start","inputs":{},"body":"\n      const s = await dsx.module.supportdesk.session()\n      if (s.ok &amp;&amp; !s.data.signedIn) { dsx.module.route.replace({ path: '/login' }); return }\n      if (s.ok &amp;&amp; !s.data.staff) { dsx.module.route.replace({ path: '/no-access' }); return }\n      await dsx.action.load()\n      setInterval(() =&gt; { dsx.action.load() }, 30000, 'health-live')\n    "},{"as":"stop","inputs":{},"body":"clearInterval('health-live')"},{"as":"load","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.observeHealth()\n      dsx.variable.settled = true\n      if (!r.ok) {\n        if (r.error == 'no_access') { clearInterval('health-live'); dsx.module.route.replace({ path: '/no-access' }); return }\n        dsx.variable.error = r.message ? r.message : 'Despia did not answer. Try again in a moment.'\n        return\n      }\n      dsx.variable.error = ''\n      dsx.variable.data = r.data\n    "},{"as":"ack","inputs":{"row":"dsx.this"},"body":"\n      const r = await dsx.module.supportdesk.observeAck({ id: row.id })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      await dsx.action.load()\n    "},{"as":"pickCode","inputs":{"id":"dsx.this.id"},"body":"\n      const t = dsx.variable.data.top.find(x =&gt; x.code == id)\n      if (t == null) { return }\n      const m = dsx.variable.data.frameworkIssues.find(x =&gt; x.code == id &amp;&amp; x.state == 'open')\n      dsx.variable.openCode = { ...t, note: m == null ? '' : m.note }\n    "},{"as":"codeChanged","inputs":{},"body":"\n      dsx.variable.openCode = null\n      await dsx.action.load()\n    "},{"as":"onPicked","inputs":{},"body":"\n      const k = dsx.module.supportdesk.context.picked\n      if (k == null) { return }\n      if (k.ask == 'observe-refresh') { await dsx.action.load(); return }\n      if (k.ask == 'proactive') { dsx.module.route.push({ path: '/proactive' }); return }\n      if (k.ask == 'inbox') { dsx.module.route.push({ path: '/' }) }\n    "}],"watches":[{"value":"dsx.module.supportdesk.context.picked","handler":"dsx.action.onPicked()"}],"scripts":["\n      function sourceWord(s) { return s == 'review' ? 'From Review Monitoring' : (s == 'support' ? 'From Support' : (s == 'observability' ? 'From Health' : '')) }\n      function num(n) { return Number(n || 0).toLocaleString('en-US') }\n      function delta(now, before) {\n        if (before == null) { return '' }\n        if (before == 0) { return now == 0 ? '' : '+' + num(now) }\n        const pct = Math.round(((now - before) / before) * 100)\n        return pct == 0 ? '' : (pct &gt; 0 ? '+' : '') + pct + '%'\n      }\n      function since(at) {\n        const m = Math.max(0, Math.round((Date.now() - Date.parse(at)) / 60000))\n        if (m &lt; 1) { return 'now' }\n        if (m &lt; 60) { return m + ' min ago' }\n        if (m &lt; 1440) { return Math.round(m / 60) + ' h ago' }\n        return Math.round(m / 1440) + ' d ago'\n      }\n      function label(rule) {\n        const words = [['api.error_spike', 'API errors'], ['build.failure_spike', 'Build failures'], ['auth.failure_spike', 'Sign-in failures'], ['ops.backup_failed', 'Backup'],\n                       ['ops.sync_failed', 'V3 export'], ['ops.guardian', 'Guardian'], ['v3_sync.stale', 'V3 export'], ['v3_sync.stalled', 'V3 refresh'], ['mail.capped', 'Email cap']]\n        const hit = words.find(w =&gt; w[0] == rule)\n        return hit == null ? rule : hit[1]\n      }\n      function iconOf(source) {\n        if (source == 'build') { return 'hammer' }\n        if (source == 'credits') { return 'creditcard' }\n        if (source == 'store') { return 'checkmark.seal' }\n        if (source == 'credential') { return 'key' }\n        if (source == 'connection') { return 'link' }\n        if (source == 'console') { return 'macwindow' }\n        if (source == 'api') { return 'server.rack' }\n        if (source == 'v3_sync') { return 'arrow.triangle.2.circlepath' }\n        return 'exclamationmark.triangle'\n      }\n    "],"globalScripts":[]},"root":{"tag":"scroll","attrs":{"on:appear":"dsx.action.start()","on:disappear":"dsx.action.stop()"},"children":[{"tag":"NavBar","attrs":{"title":"Health","large":"true","description":"What customers run into across Despia, the last 24 hours against the day before, and open alerts."},"children":[{"tag":"menu","attrs":{"slot":"trailing","menu":"{{ dsx.variable.moreMenu }}"},"children":[{"tag":"button","attrs":{"icon":"ellipsis.circle","a11yLabel":"More actions"},"children":[],"text":"","reactive":false,"nid":3}],"text":"","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"spinner","attrs":{"visible-if":"!dsx.variable.settled"},"children":[],"text":"","reactive":true,"nid":4},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"SettingsRow","attrs":{"icon":"arrow.clockwise","title":"Try Again","tone":"accent","tappable":"true","on:tap":"dsx.action.load()"},"children":[],"text":"","reactive":true,"nid":7}],"text":"\n    \n    \n  ","reactive":true,"nid":5},{"tag":"ListGroup","attrs":{"header":"Alerts","footer":"Owners get an email when an alert opens. Acknowledge stops the reminders; it closes on its own when the numbers recover.","visible-if":"dsx.variable.alerts.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.alerts","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.message }}","lines":"2","value":"{{ dsx.this.action }}","tappable":"{{ dsx.this.action != '' }}","on:tap":"dsx.action.ack()"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n    \n  ","reactive":true,"nid":8},{"tag":"grid","attrs":{"bind":"dsx.variable.stats","key":"id","columns":"adaptive","minimum":"180","scroll":"false","visible-if":"dsx.variable.loaded"},"children":[{"tag":"Stat","attrs":{"label":"{{ dsx.this.label }}","value":"{{ dsx.this.value }}","delta":"{{ dsx.this.delta }}","icon":"{{ dsx.this.icon }}"},"children":[],"text":"","reactive":true,"nid":11}],"text":"\n    \n  ","reactive":true,"nid":10},{"tag":"ListGroup","attrs":{"header":"Top issues","visible-if":"dsx.variable.loaded","footer":"Active issues across customers. Open one to mark it as Despia’s own defect."},"children":[{"tag":"RecordsTable","attrs":{"columns":"{{ dsx.variable.topColumns }}","rows":"{{ dsx.variable.topRows }}","on:open":"dsx.action.pickCode()"},"children":[],"text":"","reactive":true,"nid":13},{"tag":"SettingsRow","attrs":{"icon":"checkmark.seal","title":"No active issues","visible-if":"dsx.variable.topRows.length == 0"},"children":[],"text":"","reactive":true,"nid":14}],"text":"\n    \n    \n  ","reactive":true,"nid":12},{"tag":"ListGroup","attrs":{"header":"By framework version","visible-if":"dsx.variable.loaded","footer":"Build failure codes per framework version the build recorded, last 30 days."},"children":[{"tag":"RecordsTable","attrs":{"columns":"{{ dsx.variable.versionColumns }}","rows":"{{ dsx.variable.versionRows }}"},"children":[],"text":"","reactive":true,"nid":16},{"tag":"SettingsRow","attrs":{"icon":"shippingbox","title":"No versions recorded yet","subtitle":"Builds record their framework version when they start.","visible-if":"dsx.variable.versionRows.length == 0"},"children":[],"text":"","reactive":true,"nid":17}],"text":"\n    \n    \n  ","reactive":true,"nid":15},{"tag":"ListGroup","attrs":{"header":"Framework issues","footer":"One list shared with Review Monitoring and Support: what is marked as Despia’s own defect. Customers asking about it get a reply that says so.","visible-if":"dsx.variable.marked.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.marked","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","value":"{{ dsx.this.value }}","lines":"2"},"children":[],"text":"","reactive":true,"nid":19}],"text":"\n    \n  ","reactive":true,"nid":18},{"tag":"sheet","attrs":{"detents":"form","present":"dsx.variable.codeOpen","title":"{{ dsx.variable.openCode == null ? '' : dsx.variable.openCode.title }}","close":"trailing","on:dismiss":"dsx.variable.openCode = null"},"children":[{"tag":"FrameworkMark","attrs":{"row":"{{ dsx.variable.openCode }}","on:changed":"dsx.action.codeChanged()"},"children":[],"text":"","reactive":true,"nid":21}],"text":"\n    \n  ","reactive":true,"nid":20}],"text":"\n  \n\n  \n\n  \n  \n\n  \n\n  \n\n  \n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.IdentityLock":{"name":"IdentityLock","scheme":"supportinbox","head":{"attributes":[{"as":"projectId","default":""},{"as":"projectName","default":""}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"view","body":"return null","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"reason","body":"return ''","computed":false},{"as":"newId","body":"return ''","computed":false},{"as":"mode","body":"return ''","computed":false},{"as":"target","body":"return ''","computed":false},{"as":"asking","body":"return false","computed":false},{"as":"loaded","body":"return dsx.variable.view != null","computed":true},{"as":"canAct","body":"return dsx.module.supportdesk.context.staff != null &amp;&amp; dsx.module.supportdesk.context.staff.role != 'viewer'","computed":true},{"as":"reasonOk","body":"return dsx.variable.reason.trim().length &gt;= 10","computed":true},{"as":"sides","body":"\n      if (dsx.variable.view == null) { return [] }\n      return [dsx.variable.view.identity.ios, dsx.variable.view.identity.android].map(s => ({\n        platform: s.platform, header: s.platform == 'ios' ? 'iOS · Bundle ID' : 'Android · Package name', id: s.id == null ? 'Not set' : s.id,\n        message: s.message, chip: chipOf(s).label, role: chipOf(s).role, locked: s.state == 'locked_on_submit' || s.state == 'locked_final',\n        unlockTitle: s.state == 'unlocked_once' ? 'Unlocked for the customer' : 'Unlock for the customer'\n      }))\n    ","computed":true},{"as":"targetWord","body":"return dsx.variable.target == 'ios' ? 'bundle ID' : 'package name'","computed":true},{"as":"askTitle","body":"\n      return dsx.variable.mode == 'unlock' ? 'Unlock the ' + dsx.variable.targetWord + '?' : 'Change the ' + dsx.variable.targetWord + ' for the customer?'\n    ","computed":true},{"as":"askMessage","body":"\n      if (dsx.variable.mode == 'unlock') { return 'The customer can edit it once more; the next upload locks it again. Your reason is kept with their record.' }\n      return 'The store treats the new id as a new app. Your reason is kept with their record.'\n    ","computed":true},{"as":"askButtons","body":"return [{ title: dsx.variable.mode == 'unlock' ? 'Unlock' : 'Change', role: 'destructive', action: 'supportdesk.pick', args: { ask: 'identity', value: dsx.variable.mode } }, { title: 'Cancel', role: 'cancel' }]","computed":true},{"as":"editing","body":"return dsx.variable.mode == 'edit' &amp;&amp; dsx.variable.target != ''","computed":true}],"formulas":[],"actions":[{"as":"load","inputs":{},"body":"\n      if (dsx.attribute.projectId == '') { return }\n      const r = await dsx.module.supportdesk.identity({ id: dsx.attribute.projectId })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'Despia did not answer. Try again in a moment.'; return }\n      dsx.variable.error = ''\n      dsx.variable.view = r.data\n    "},{"as":"askUnlock","inputs":{"platform":"dsx.this.platform"},"body":"\n      dsx.variable.target = platform\n      dsx.variable.mode = 'unlock'\n      dsx.variable.asking = true\n    "},{"as":"startEdit","inputs":{"platform":"dsx.this.platform"},"body":"\n      dsx.variable.target = platform\n      dsx.variable.mode = 'edit'\n      dsx.variable.newId = ''\n    "},{"as":"askEdit","inputs":{},"body":"\n      dsx.variable.asking = true\n    "},{"as":"cancelEdit","inputs":{},"body":"\n      dsx.variable.mode = ''\n      dsx.variable.target = ''\n    "},{"as":"onPicked","inputs":{},"body":"\n      const k = dsx.module.supportdesk.context.picked\n      if (k == null || k.ask != 'identity' || !dsx.variable.asking) { return }\n      dsx.variable.asking = false\n      await dsx.action.commit()\n    "},{"as":"commit","inputs":{},"body":"\n      const platform = dsx.variable.target\n      const mode = dsx.variable.mode\n      let r = null\n      if (mode == 'unlock') {\n        r = await dsx.module.supportdesk.identityUnlock({ id: dsx.attribute.projectId, platform: platform, reason: dsx.variable.reason.trim() })\n      } else {\n        r = await dsx.module.supportdesk.identityEdit({ id: dsx.attribute.projectId, platform: platform, value: dsx.variable.newId.trim(), reason: dsx.variable.reason.trim() })\n      }\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'Despia did not answer.'; return }\n      dsx.variable.error = ''\n      dsx.variable.mode = ''\n      dsx.variable.target = ''\n      dsx.variable.reason = ''\n      dsx.module.toast.show({ title: mode == 'unlock' ? 'Unlocked for the customer' : 'Changed for the customer', message: 'Recorded with your reason.' })\n      await dsx.action.load()\n    "}],"watches":[{"value":"dsx.module.supportdesk.context.picked","handler":"dsx.action.onPicked()"}],"scripts":["\n      function chipOf(s) {\n        if (s.state == 'editable') { return { label: 'Editable', role: 'success' } }\n        if (s.state == 'unlocked_once') { return { label: 'Unlocked', role: 'success' } }\n        return { label: s.state == 'locked_final' ? 'Locked for good' : 'Locked', role: 'info' }\n      }\n    "],"globalScripts":[]},"root":{"tag":"stack","attrs":{"on:appear":"dsx.action.load()"},"children":[{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"SettingsRow","attrs":{"icon":"arrow.clockwise","title":"Try Again","tone":"accent","tappable":"true","on:tap":"dsx.action.load()"},"children":[],"text":"","reactive":true,"nid":3}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"ListGroup","attrs":{"visible-if":"!dsx.variable.loaded && dsx.variable.error == ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"tag","title":"Reading the identifiers…"},"children":[],"text":"","reactive":true,"nid":5}],"text":"\n    \n  ","reactive":true,"nid":4},{"tag":"ListGroup","attrs":{"repeat":"dsx.variable.sides","key":"platform","header":"{{ dsx.this.header }}","footer":"{{ dsx.this.message }}"},"children":[{"tag":"CopyRow","attrs":{"label":"{{ dsx.this.header }}","value":"{{ dsx.this.id }}"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"SettingsRow","attrs":{"icon":"lock","title":"Status"},"children":[{"tag":"chip","attrs":{"label":"{{ dsx.this.chip }}","role":"{{ dsx.this.role }}"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n      \n    ","reactive":true,"nid":8},{"tag":"SettingsRow","attrs":{"icon":"lock.open","title":"{{ dsx.this.unlockTitle }}","subtitle":"Needs your reason below.","tone":"accent","tappable":"true","visible-if":"dsx.variable.canAct && dsx.this.locked","disabled":"{{ !dsx.variable.reasonOk }}","on:tap":"dsx.action.askUnlock()"},"children":[],"text":"","reactive":true,"nid":10},{"tag":"SettingsRow","attrs":{"icon":"pencil","title":"Change it for the customer","subtitle":"Needs your reason below.","tone":"accent","tappable":"true","visible-if":"dsx.variable.canAct","disabled":"{{ !dsx.variable.reasonOk }}","on:tap":"dsx.action.startEdit()"},"children":[],"text":"","reactive":true,"nid":11}],"text":"\n    \n    \n    \n    \n  ","reactive":true,"nid":6},{"tag":"ListGroup","attrs":{"header":"Reason","footer":"Kept with the customer's record and the audit log: who, what and why.","visible-if":"dsx.variable.loaded && dsx.variable.canAct"},"children":[{"tag":"SettingsRow","attrs":{"title":"Reason"},"children":[{"tag":"textfield","attrs":{"bind":"dsx.variable.reason","placeholder":"Why this change, and the ticket","aria-label":"Reason"},"children":[],"text":"","reactive":true,"nid":14}],"text":"","reactive":true,"nid":13}],"text":"\n    \n  ","reactive":true,"nid":12},{"tag":"ListGroup","attrs":{"header":"New id","visible-if":"dsx.variable.editing","transition":"fade"},"children":[{"tag":"SettingsRow","attrs":{"title":"{{ dsx.variable.targetWord }}"},"children":[{"tag":"textfield","attrs":{"bind":"dsx.variable.newId","placeholder":"com.yourcompany.app","aria-label":"New id"},"children":[],"text":"","reactive":true,"nid":17}],"text":"","reactive":true,"nid":16},{"tag":"SettingsRow","attrs":{"icon":"square.and.arrow.down","title":"Change It","tone":"destructive","tappable":"true","visible-if":"dsx.variable.newId.trim() != '' && dsx.variable.reasonOk","on:tap":"dsx.action.askEdit()"},"children":[],"text":"","reactive":true,"nid":18},{"tag":"SettingsRow","attrs":{"icon":"xmark","title":"Cancel","tappable":"true","on:tap":"dsx.action.cancelEdit()"},"children":[],"text":"","reactive":true,"nid":19}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":15},{"tag":"alert","attrs":{"present":"dsx.variable.asking","title":"{{ dsx.variable.askTitle }}","message":"{{ dsx.variable.askMessage }}","buttons":"dsx.variable.askButtons","on:dismiss":"dsx.variable.asking = false"},"children":[],"text":"","reactive":true,"nid":20}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.Inbox":{"name":"Inbox","scheme":"supportinbox","head":{"attributes":[],"apis":[],"expects":["vars"],"events":[],"inputs":[],"tools":[],"variables":[{"as":"settled","body":"return false","computed":false},{"as":"view","body":"return 'open'","computed":false},{"as":"query","body":"return ''","computed":false},{"as":"items","body":"return []","computed":false},{"as":"counts","body":"return null","computed":false},{"as":"listError","body":"return ''","computed":false},{"as":"open","body":"return null","computed":false},{"as":"messages","body":"return []","computed":false},{"as":"customer","body":"return null","computed":false},{"as":"likely","body":"return null","computed":false},{"as":"articles","body":"return []","computed":false},{"as":"issueSheet","body":"return false","computed":false},{"as":"threadError","body":"return ''","computed":false},{"as":"draft","body":"return ''","computed":false},{"as":"noteMode","body":"return false","computed":false},{"as":"notice","body":"return ''","computed":false},{"as":"replies","body":"return []","computed":false},{"as":"staffList","body":"return []","computed":false},{"as":"customerSheet","body":"return false","computed":false},{"as":"typingSeen","body":"return 0","computed":false},{"as":"meId","body":"return ''","computed":false},{"as":"statusPick","body":"return 'open'","computed":false},{"as":"copilotSheet","body":"return false","computed":false},{"as":"selected","body":"return dsx.variable.vars == null ? '' : String(dsx.variable.vars.id || '')","computed":true},{"as":"hasOpen","body":"return dsx.variable.selected != '' &amp;&amp; dsx.variable.open != null","computed":true},{"as":"compactColumn","body":"return dsx.variable.selected == '' ? 'sidebar' : 'content'","computed":true},{"as":"columns","body":"return dsx.variable.hasOpen ? 'all' : 'automatic'","computed":true},{"as":"viewTitle","body":"return views().find(v => v.id == dsx.variable.view).title","computed":true},{"as":"migrationAdmin","body":"\n      const st = dsx.module.supportdesk.context.staff\n      return st != null &amp;&amp; Array.isArray(st.capabilities) &amp;&amp; st.capabilities.includes('migration_admin')\n    ","computed":true},{"as":"viewMenu","body":"\n      return views().map(v => ({\n        title: v.title + (dsx.variable.counts == null ? '' : '  ' + dsx.variable.counts[v.id]),\n        icon: v.id == dsx.variable.view ? 'checkmark' : '', shortcut: v.key,\n        action: 'supportdesk.pick', args: { ask: 'view', value: v.id }\n      })).concat([{ separator: true },\n        { title: 'Review Monitoring', icon: 'checkmark.seal', shortcut: 'cmd+shift+r', action: 'supportdesk.pick', args: { ask: 'review' } },\n        { title: 'Proactive' + (dsx.variable.badge.proactive &gt; 0 ? '  ' + dsx.variable.badge.proactive : ''), icon: 'person.crop.circle.badge.exclamationmark', shortcut: 'cmd+shift+p', action: 'supportdesk.pick', args: { ask: 'proactive' } },\n        { title: 'Health' + (dsx.variable.badge.alerts &gt; 0 ? '  ' + dsx.variable.badge.alerts + (dsx.variable.badge.alerts == 1 ? ' alert' : ' alerts') : ''), icon: 'waveform.path.ecg', shortcut: 'cmd+shift+h', action: 'supportdesk.pick', args: { ask: 'health' } },\n        { separator: true },\n        { title: 'Help Center', icon: 'books.vertical', shortcut: 'cmd+shift+k', action: 'supportdesk.pick', args: { ask: 'hub' } },\n        { title: 'Announcements', icon: 'megaphone', shortcut: 'cmd+shift+a', action: 'supportdesk.pick', args: { ask: 'announcements' } }])\n        .concat(dsx.variable.migrationAdmin ? [{ separator: true }, { title: 'Migration', icon: 'arrow.triangle.2.circlepath', shortcut: 'cmd+m', action: 'supportdesk.pick', args: { ask: 'migration' } }] : [])\n        .concat([{ separator: true },\n        { title: 'Sign Out', icon: 'rectangle.portrait.and.arrow.right', role: 'destructive', action: 'supportdesk.pick', args: { ask: 'sign-out' } }])\n    ","computed":true},{"as":"badge","body":"\n      const o = dsx.module.supportdesk.context.observe\n      return o == null ? { alerts: 0, proactive: 0 } : { alerts: Number(o.alerts || 0), proactive: Number(o.proactive || 0) }\n    ","computed":true},{"as":"viewSubtitle","body":"return dsx.variable.badge.alerts &gt; 0 ? (dsx.variable.badge.alerts == 1 ? '1 open alert' : dsx.variable.badge.alerts + ' open alerts') : 'Despia Support'","computed":true},{"as":"rows","body":"\n      return dsx.variable.items.map(c => ({\n        id: c.id, title: c.customer.name || c.customer.email,\n        subtitle: (c.kind == 'ticket' ? '#' + c.number + '  ' : '') + c.subject + '\\n' + c.preview,\n        when: since(c.lastMessageAt), unread: c.unread, on: c.id == dsx.variable.selected\n      }))\n    ","computed":true},{"as":"emptyTitle","body":"return dsx.variable.query != '' ? 'No results' : (dsx.variable.view == 'open' ? 'All caught up' : 'Nothing here')","computed":true},{"as":"title","body":"return dsx.variable.hasOpen ? (dsx.variable.open.subject || 'Conversation') : ''","computed":true},{"as":"subtitle","body":"\n      if (!dsx.variable.hasOpen) { return '' }\n      const c = dsx.variable.open\n      const status = c.status == 'open' ? 'Open' : (c.status == 'pending' ? 'Waiting on customer' : 'Resolved')\n      return (c.kind == 'ticket' ? 'Ticket #' + c.number : '#' + c.number) + ' · ' + status + (c.assignee == null ? '' : ' · ' + c.assignee.name)\n    ","computed":true},{"as":"actionsMenu","body":"\n      if (!dsx.variable.hasOpen) { return [] }\n      const c = dsx.variable.open\n      const pick = (ask, title, value, on, key) => ({ title: title, icon: on ? 'checkmark' : '', shortcut: key || '', action: 'supportdesk.pick', args: { ask: ask, value: value } })\n      const assign = [pick('assign', 'Unassigned', 'none', c.assignee == null, '')].concat(dsx.variable.staffList.map(s => pick('assign', s.name, s.id, c.assignee != null &amp;&amp; c.assignee.id == s.id, '')))\n      return [\n        c.status == 'resolved'\n          ? { title: 'Reopen', icon: 'arrow.uturn.backward', shortcut: 'cmd+shift+o', action: 'supportdesk.pick', args: { ask: 'status', value: 'open' } }\n          : { title: 'Resolve', icon: 'checkmark.circle', shortcut: 'cmd+shift+e', action: 'supportdesk.pick', args: { ask: 'status', value: 'resolved' } },\n        { title: 'Assign to Me', icon: 'person.crop.circle.badge.checkmark', action: 'supportdesk.pick', args: { ask: 'assign-me' } },\n        { title: 'Assign', icon: 'person', items: assign },\n        { title: 'Status', icon: 'circle.dashed', items: [pick('status', 'Open', 'open', c.status == 'open'), pick('status', 'Waiting on customer', 'pending', c.status == 'pending'), pick('status', 'Resolved', 'resolved', c.status == 'resolved')] },\n        { title: 'Priority', icon: 'flag', items: ['low', 'normal', 'high', 'urgent'].map(p => pick('priority', p.charAt(0).toUpperCase() + p.slice(1), p, c.priority == p)) },\n        { title: 'Tags', icon: 'tag', items: tags().map(t => pick('tag', t, t, c.tags.indexOf(t) &gt;= 0)) },\n        { separator: true },\n        { title: 'Turn into Article', icon: 'doc.badge.plus', items: [\n          { title: 'Troubleshooting', icon: 'wrench.and.screwdriver', action: 'supportdesk.pick', args: { ask: 'to-article', value: 'troubleshooting' } },\n          { title: 'Guide', icon: 'list.number', action: 'supportdesk.pick', args: { ask: 'to-article', value: 'guides' } },\n          { title: 'Doc', icon: 'book', action: 'supportdesk.pick', args: { ask: 'to-article', value: 'docs' } },\n          { title: 'Blog Post', icon: 'text.document', action: 'supportdesk.pick', args: { ask: 'to-article', value: 'blog' } }] },\n        { title: 'Customer', icon: 'person.text.rectangle', shortcut: 'cmd+i', action: 'supportdesk.pick', args: { ask: 'customer' } }\n      ]\n    ","computed":true},{"as":"composerMenu","body":"\n      return [\n        { title: dsx.variable.noteMode ? 'Reply to Customer' : 'Internal Note', icon: dsx.variable.noteMode ? 'arrowshape.turn.up.left' : 'note.text', shortcut: 'cmd+shift+n', action: 'supportdesk.pick', args: { ask: 'note' } },\n        { title: 'Draft with AI', icon: 'sparkles', shortcut: 'cmd+j', action: 'supportdesk.pick', args: { ask: 'ai' } },\n        { title: 'Saved Replies', icon: 'text.bubble', items: dsx.variable.replies.map(r => ({ title: r.title, action: 'supportdesk.pick', args: { ask: 'reply', value: r.id } })) }\n      ]\n    ","computed":true},{"as":"placeholder","body":"return dsx.variable.noteMode ? 'Internal note, only staff see this' : 'Reply to ' + (dsx.variable.hasOpen ? dsx.variable.open.customer.name : 'the customer')","computed":true},{"as":"thread","body":"\n      const seen = dsx.variable.hasOpen &amp;&amp; dsx.variable.open.readSeq != null ? Number(dsx.variable.open.readSeq.customer || 0) : 0\n      const replies = dsx.variable.messages.filter(m => !m.internal &amp;&amp; (m.sender.kind == 'agent' || m.sender.kind == 'ai'))\n      const lastReply = replies.length == 0 ? -1 : replies[replies.length - 1].seq\n      const receipt = (m) => m.seq != lastReply ? '' : (seen &gt;= m.seq ? ' · Seen' : ' · Sent')\n      return dsx.variable.messages.map(m => ({\n        id: String(m.seq), text: m.text,\n        bubble: m.sender.kind != 'system',\n        side: m.sender.kind == 'customer' ? 'left' : 'right',\n        note: m.internal, system: m.sender.kind == 'system',\n        meta: (m.sender.kind == 'customer' ? m.sender.name : (m.sender.kind == 'ai' ? 'Despia AI' : m.sender.name)) + ' · ' + clock(m.createdAt) + receipt(m)\n      }))\n    ","computed":true},{"as":"lastSeq","body":"return dsx.variable.messages.length == 0 ? 0 : dsx.variable.messages[dsx.variable.messages.length - 1].seq","computed":true},{"as":"statusOptions","body":"return [{ id: 'open', label: 'Open' }, { id: 'pending', label: 'Waiting' }, { id: 'resolved', label: 'Resolved' }]","computed":true},{"as":"me","body":"\n      if (dsx.variable.meId != '') { return dsx.variable.staffList.find(s => s.id == dsx.variable.meId) || { id: dsx.variable.meId, name: 'Me' } }\n      const st = dsx.module.supportdesk.context.staff\n      return st == null ? null : (dsx.variable.staffList.find(s => s.name == st.name) || null)\n    ","computed":true},{"as":"assignedToMe","body":"return dsx.variable.hasOpen &amp;&amp; dsx.variable.me != null &amp;&amp; dsx.variable.open.assignee != null &amp;&amp; dsx.variable.open.assignee.id == dsx.variable.me.id","computed":true},{"as":"assigneeLine","body":"\n      if (!dsx.variable.hasOpen) { return '' }\n      return dsx.variable.open.assignee == null ? 'Unassigned' : dsx.variable.open.assignee.name\n    ","computed":true},{"as":"narrow","body":"return dsx.screen.width &lt; 1180","computed":true},{"as":"customerTyping","body":"return dsx.variable.typingSeen &gt; 0","computed":true}],"formulas":[],"actions":[{"as":"start","inputs":{},"body":"\n      const s = await dsx.module.supportdesk.session()\n      if (s.ok &amp;&amp; !s.data.signedIn) { dsx.module.route.replace({ path: '/login' }); return }\n      if (s.ok &amp;&amp; !s.data.staff) { dsx.module.route.replace({ path: '/no-access' }); return }\n      dsx.variable.settled = true\n      if (s.ok) { dsx.variable.meId = String(s.data.staffId || '') }\n      const [r, st] = await Promise.all([dsx.module.supportdesk.savedReplies(), dsx.module.supportdesk.staff()])\n      if (r.ok) { dsx.variable.replies = r.data.items }\n      if (st.ok) { dsx.variable.staffList = st.data.items }\n      await dsx.action.loadList()\n      await dsx.module.supportdesk.follow({ id: 'inbox' })\n    "},{"as":"loadList","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.inbox({ view: dsx.variable.view, q: dsx.variable.query })\n      if (!r.ok) {\n        if (r.error == 'no_access') { dsx.module.route.replace({ path: '/no-access' }); return }\n        dsx.variable.listError = messageOf(r)\n        return\n      }\n      dsx.variable.listError = ''\n      dsx.variable.items = r.data.items\n      dsx.variable.counts = r.data.counts\n    "},{"as":"loadThread","inputs":{},"body":"\n      if (dsx.variable.selected == '') { dsx.variable.open = null; dsx.variable.messages = []; dsx.variable.customer = null; dsx.variable.likely = null; dsx.variable.articles = []; return }\n      const r = await dsx.module.supportdesk.conversation({ id: dsx.variable.selected })\n      if (!r.ok) { dsx.variable.threadError = messageOf(r); return }\n      dsx.variable.threadError = ''\n      dsx.variable.open = r.data.conversation\n      dsx.variable.statusPick = r.data.conversation.status\n      dsx.variable.messages = r.data.messages\n      dsx.variable.customer = r.data.customer\n      dsx.variable.likely = r.data.likely\n      dsx.variable.articles = r.data.articles || []\n      dsx.variable.draft = ''\n      dsx.variable.noteMode = false\n      dsx.variable.notice = ''\n      dsx.variable.typingSeen = 0\n      await dsx.module.supportdesk.markRead({ id: dsx.variable.selected, seq: dsx.variable.lastSeq })\n      await dsx.module.supportdesk.follow({ id: dsx.variable.selected })\n    "},{"as":"pickRow","inputs":{"id":"dsx.this.id"},"body":"dsx.module.route.push({ path: '/c/' + id, column: 'content' })"},{"as":"back","inputs":{},"body":"dsx.module.route.replace({ path: '/' })"},{"as":"send","inputs":{"text":"dsx.this.text"},"body":"\n      const body = String(text || dsx.variable.draft || '').trim()\n      if (body == '' || !dsx.variable.hasOpen) { return }\n      const r = await dsx.module.supportdesk.send({ id: dsx.variable.open.id, body: body, internal: dsx.variable.noteMode })\n      if (!r.ok) { dsx.variable.draft = body; dsx.variable.notice = messageOf(r); return }\n      dsx.variable.messages = dsx.variable.messages.filter(m => m.seq != r.data.message.seq).concat([r.data.message])\n      dsx.variable.draft = ''\n      dsx.variable.notice = ''\n      await dsx.action.loadList()\n    "},{"as":"onPicked","inputs":{},"body":"\n      const k = dsx.module.supportdesk.context.picked\n      if (k == null) { return }\n      if (k.ask == 'view') { dsx.variable.view = k.value; await dsx.action.loadList(); return }\n      if (k.ask == 'migration') { dsx.module.route.push({ path: '/migration' }); return }\n      if (k.ask == 'proactive') { dsx.module.route.push({ path: '/proactive' }); return }\n      if (k.ask == 'health') { dsx.module.route.push({ path: '/health' }); return }\n      if (k.ask == 'review') { dsx.module.route.push({ path: '/review' }); return }\n      if (k.ask == 'hub') { dsx.module.route.push({ path: '/hub' }); return }\n      if (k.ask == 'announcements') { dsx.module.route.push({ path: '/announcements' }); return }\n      if (k.ask == 'sign-out') { await dsx.module.supportdesk.signOut(); dsx.module.route.replace({ path: '/login' }); return }\n      if (k.ask == 'customer') { dsx.variable.customerSheet = true; return }\n      if (k.ask == 'assign-me') { await dsx.action.assignMe(); return }\n      if (k.ask == 'note') { dsx.variable.noteMode = !dsx.variable.noteMode; return }\n      if (k.ask == 'reply') {\n        const reply = dsx.variable.replies.find(x => x.id == k.value)\n        if (reply) { dsx.variable.draft = reply.body }\n        return\n      }\n      if (k.ask == 'ai') {\n        dsx.variable.notice = 'Drafting…'\n        const d = await dsx.module.supportdesk.copilot({ id: dsx.variable.open.id, task: 'draft', tone: 'owner' })\n        if (!d.ok) { dsx.variable.notice = messageOf(d); return }\n        dsx.variable.draft = d.data.text\n        dsx.variable.notice = ''\n        return\n      }\n      if (!dsx.variable.hasOpen) { return }\n      if (k.ask == 'to-article') {\n        const t = await dsx.module.supportdesk.toArticle({ id: dsx.variable.open.id, space: k.value })\n        if (!t.ok) { dsx.variable.notice = messageOf(t); return }\n        dsx.module.toast.show({ title: 'Draft created', message: t.data.article.title })\n        dsx.module.route.push({ path: '/hub?article=' + t.data.article.id })\n        return\n      }\n      const c = dsx.variable.open\n      let patch = null\n      if (k.ask == 'status') { patch = { id: c.id, status: k.value } }\n      if (k.ask == 'assign') { patch = { id: c.id, assignee: k.value } }\n      if (k.ask == 'priority') { patch = { id: c.id, priority: k.value } }\n      if (k.ask == 'tag') { patch = { id: c.id, tags: c.tags.indexOf(k.value) &gt;= 0 ? c.tags.filter(t => t != k.value) : c.tags.concat([k.value]) } }\n      if (patch == null) { return }\n      const r = await dsx.module.supportdesk.update(patch)\n      if (!r.ok) { dsx.variable.notice = messageOf(r); return }\n      dsx.variable.open = { ...dsx.variable.open, ...r.data.conversation }\n      await dsx.action.loadList()\n      if (k.ask == 'status') { await dsx.action.loadThread() }\n    "},{"as":"setStatus","inputs":{},"body":"\n      if (!dsx.variable.hasOpen || dsx.variable.statusPick == dsx.variable.open.status) { return }\n      const r = await dsx.module.supportdesk.update({ id: dsx.variable.open.id, status: dsx.variable.statusPick })\n      if (!r.ok) { dsx.variable.notice = messageOf(r); dsx.variable.statusPick = dsx.variable.open.status; return }\n      dsx.variable.open = { ...dsx.variable.open, ...r.data.conversation }\n      await dsx.action.loadList()\n    "},{"as":"assignMe","inputs":{},"body":"\n      if (!dsx.variable.hasOpen || dsx.variable.me == null) { return }\n      const r = await dsx.module.supportdesk.update({ id: dsx.variable.open.id, assignee: dsx.variable.me.id })\n      if (!r.ok) { dsx.variable.notice = messageOf(r); return }\n      dsx.variable.open = { ...dsx.variable.open, ...r.data.conversation }\n      await dsx.action.loadList()\n    "},{"as":"onLive","inputs":{},"body":"\n      const f = dsx.module.supportdesk.context.live\n      if (f == null) { return }\n      if (f.type == 'conversation') { await dsx.action.loadList(); return }\n      if (f.type == 'resync') { await dsx.action.loadList(); if (dsx.variable.hasOpen) { await dsx.action.loadThread() } return }\n      if (!dsx.variable.hasOpen || f.room != dsx.variable.open.id) { return }\n      if (f.type == 'message') {\n        if (dsx.variable.messages.some(m => m.seq == f.message.seq)) { return }\n        if (f.message.seq != dsx.variable.lastSeq + 1) { await dsx.action.loadThread(); return }\n        dsx.variable.messages = dsx.variable.messages.concat([f.message])\n        dsx.variable.typingSeen = 0\n        await dsx.module.supportdesk.markRead({ id: dsx.variable.open.id, seq: f.message.seq })\n        return\n      }\n      if (f.type == 'typing' &amp;&amp; f.side == 'customer') { dsx.variable.typingSeen = f.at }\n      if (f.type == 'read' &amp;&amp; f.side == 'customer') {\n        const was = dsx.variable.open.readSeq || { customer: 0, agent: 0 }\n        dsx.variable.open = { ...dsx.variable.open, readSeq: { ...was, customer: Math.max(Number(was.customer || 0), Number(f.seq || 0)) } }\n      }\n    "},{"as":"useLink","inputs":{"text":"dsx.this.text"},"body":"\n      const d = String(dsx.variable.draft || '').trim()\n      dsx.variable.draft = d == '' ? String(text || '') : d + '\\n\\n' + String(text || '')\n      dsx.variable.noteMode = false\n      dsx.variable.customerSheet = false\n      dsx.variable.copilotSheet = false\n    "},{"as":"useReply","inputs":{"text":"dsx.this.text"},"body":"\n      dsx.variable.draft = String(text || '')\n      dsx.variable.noteMode = false\n      dsx.variable.issueSheet = false\n      dsx.variable.customerSheet = false\n      dsx.variable.copilotSheet = false\n    "},{"as":"onDraft","inputs":{"value":"dsx.this.text"},"body":"\n      dsx.variable.draft = value\n      if (!dsx.variable.noteMode) { await dsx.module.supportdesk.typing() }\n    "}],"watches":[{"value":"dsx.module.supportdesk.context.picked","handler":"dsx.action.onPicked()"},{"value":"dsx.module.supportdesk.context.live","handler":"dsx.action.onLive()"},{"value":"dsx.variable.selected","handler":"dsx.action.loadThread()","immediate":true}],"scripts":["\n      function views() { return [\n        { id: 'open', title: 'Open', key: 'cmd+1' }, { id: 'mine', title: 'Mine', key: 'cmd+2' },\n        { id: 'unassigned', title: 'Unassigned', key: 'cmd+3' }, { id: 'pending', title: 'Waiting', key: 'cmd+4' },\n        { id: 'resolved', title: 'Resolved', key: 'cmd+5' }, { id: 'all', title: 'All', key: 'cmd+6' }\n      ] }\n      function tags() { return ['billing', 'bug', 'build', 'signing', 'push', 'app review', 'android', 'ios', 'feature request'] }\n      function since(at) {\n        const m = Math.max(0, Math.round((Date.now() - Date.parse(at)) / 60000))\n        if (m &lt; 1) { return 'now' }\n        if (m &lt; 60) { return m + 'm' }\n        if (m &lt; 1440) { return Math.round(m / 60) + 'h' }\n        return Math.round(m / 1440) + 'd'\n      }\n      function clock(at) {\n        const d = new Date(at)\n        const h = d.getHours()\n        const mm = d.getMinutes()\n        return (h % 12 == 0 ? 12 : h % 12) + ':' + (mm &lt; 10 ? '0' + mm : mm) + (h &lt; 12 ? ' AM' : ' PM')\n      }\n      function messageOf(r) {\n        if (r != null &amp;&amp; r.message) { return r.message }\n        return 'Despia did not answer. Try again in a moment.'\n      }\n    "],"globalScripts":[]},"root":{"tag":"scaffold","attrs":{"shell":"automatic","collapse":"platform","preferredCompactColumn":"{{ dsx.variable.compactColumn }}","columnVisibility":"{{ dsx.variable.columns }}","sidebarIdeal":"340","sidebarMax":"380","inspectorIdeal":"320","contentMin":"520","sidebarLabel":"Conversations","contentLabel":"Conversation","inspectorLabel":"Customer","on:appear":"dsx.action.start()"},"children":[{"tag":"list","attrs":{"pane":"sidebar"},"children":[{"tag":"SettingsRow","attrs":{"icon":"tray","title":"{{ dsx.variable.viewTitle }}","subtitle":"{{ dsx.variable.viewSubtitle }}"},"children":[{"tag":"menu","attrs":{"menu":"{{ dsx.variable.viewMenu }}"},"children":[{"tag":"button","attrs":{"icon":"chevron.up.chevron.down","a11yLabel":"Views and account"},"children":[],"text":"","reactive":false,"nid":4}],"text":"","reactive":true,"nid":3}],"text":"\n      \n    ","reactive":true,"nid":2},{"tag":"searchbar","attrs":{"bind":"dsx.variable.query","placeholder":"Search","on:submit":"dsx.action.loadList()","on:change":"dsx.action.loadList()"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"SettingsRow","attrs":{"icon":"arrow.clockwise","title":"{{ dsx.variable.listError }}","subtitle":"Try again","tappable":"true","visible-if":"dsx.variable.listError != ''","on:tap":"dsx.action.loadList()"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.rows","key":"id","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"2","value":"{{ dsx.this.when }}","count":"{{ dsx.this.unread > 0 ? dsx.this.unread : '' }}","checked":"{{ dsx.this.on }}","tappable":"true","on:tap":"dsx.action.pickRow()"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"EmptyState","attrs":{"visible-if":"dsx.variable.settled && dsx.variable.rows.length == 0 && dsx.variable.listError == ''","icon":"tray","title":"{{ dsx.variable.emptyTitle }}","message":"New conversations from the console appear here."},"children":[],"text":"","reactive":true,"nid":8}],"text":"\n    \n    \n    \n    \n    \n  ","reactive":true,"nid":1},{"tag":"ThreadPane","attrs":{"pane":"content","label":"{{ dsx.variable.title }}"},"children":[{"tag":"NavBar","attrs":{"title":"{{ dsx.variable.title }}","subtitle":"{{ dsx.variable.subtitle }}","back":"{{ dsx.variable.selected != '' }}","on:back":"dsx.action.back()","visible-if":"dsx.variable.hasOpen"},"children":[{"tag":"button","attrs":{"slot":"trailing","icon":"sparkles","a11yLabel":"Copilot","visible-if":"dsx.variable.narrow","on:tap":"dsx.variable.copilotSheet = true"},"children":[],"text":"","reactive":true,"nid":11},{"tag":"menu","attrs":{"slot":"trailing","menu":"{{ dsx.variable.actionsMenu }}"},"children":[{"tag":"button","attrs":{"icon":"ellipsis.circle","a11yLabel":"Conversation actions"},"children":[],"text":"","reactive":false,"nid":13}],"text":"","reactive":true,"nid":12}],"text":"\n      \n      \n    ","reactive":true,"nid":10},{"tag":"EmptyState","attrs":{"visible-if":"!dsx.variable.hasOpen","icon":"bubble.left.and.bubble.right","title":"No conversation selected","message":"{{ dsx.variable.threadError }}"},"children":[],"text":"","reactive":true,"nid":14},{"tag":"vstack","attrs":{"repeat":"dsx.variable.thread","key":"id","visible-if":"dsx.variable.hasOpen"},"children":[{"tag":"text","attrs":{"type":"footnote","value":"{{ dsx.this.meta }}"},"children":[],"text":"","reactive":true,"nid":16},{"tag":"ChatBubble","attrs":{"side":"{{ dsx.this.side }}","label":"{{ dsx.this.note ? 'Internal note' : '' }}","visible-if":"dsx.this.bubble"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.this.text }}"},"children":[],"text":"","reactive":true,"nid":18}],"text":"","reactive":true,"nid":17},{"tag":"text","attrs":{"type":"footnote","value":"{{ dsx.this.text }}","visible-if":"dsx.this.system"},"children":[],"text":"","reactive":true,"nid":19}],"text":"\n      \n      \n      \n      \n    ","reactive":true,"nid":15},{"tag":"text","attrs":{"type":"footnote","value":"Typing…","visible-if":"dsx.variable.customerTyping"},"children":[],"text":"","reactive":true,"nid":20},{"tag":"PromptInput","attrs":{"slot":"bottom","visible-if":"dsx.variable.hasOpen","value":"{{ dsx.variable.draft }}","placeholder":"{{ dsx.variable.placeholder }}","attach":"false","menu":"{{ dsx.variable.composerMenu }}","notice":"{{ dsx.variable.notice }}","maxLines":"10","on:change":"dsx.action.onDraft()","on:submit":"dsx.action.send()","on:noticeDismiss":"dsx.variable.notice = ''"},"children":[],"text":"","reactive":true,"nid":21}],"text":"\n    \n    \n    \n    \n    \n    \n  ","reactive":true,"nid":9},{"tag":"scroll","attrs":{"pane":"inspector"},"children":[{"tag":"ListGroup","attrs":{"header":"Conversation","visible-if":"dsx.variable.hasOpen"},"children":[{"tag":"SettingsRow","attrs":{},"children":[{"tag":"segmented","attrs":{"bind":"dsx.variable.statusPick","optionsKey":"dsx.variable.statusOptions","label":"Status","on:change":"dsx.action.setStatus()"},"children":[],"text":"","reactive":true,"nid":25}],"text":"","reactive":true,"nid":24},{"tag":"SettingsRow","attrs":{"icon":"person.crop.circle.badge.checkmark","title":"Assign to Me","value":"{{ dsx.variable.assigneeLine }}","tone":"accent","tappable":"true","visible-if":"!dsx.variable.assignedToMe","on:tap":"dsx.action.assignMe()"},"children":[],"text":"","reactive":true,"nid":26},{"tag":"SettingsRow","attrs":{"icon":"person.crop.circle","title":"Assigned to You","visible-if":"dsx.variable.assignedToMe"},"children":[],"text":"","reactive":true,"nid":27}],"text":"\n      \n      \n      \n    ","reactive":true,"nid":23},{"tag":"Copilot","attrs":{"conversationId":"{{ dsx.variable.hasOpen ? dsx.variable.open.id : '' }}","visible-if":"dsx.variable.hasOpen","on:use":"dsx.action.useReply()","on:link":"dsx.action.useLink()"},"children":[],"text":"","reactive":true,"nid":28},{"tag":"CustomerContext","attrs":{"conversation":"{{ dsx.variable.open }}","customer":"{{ dsx.variable.customer }}","likely":"{{ dsx.variable.likely }}","visible-if":"dsx.variable.hasOpen","on:use":"dsx.action.useReply()","on:details":"dsx.variable.issueSheet = true"},"children":[],"text":"","reactive":true,"nid":29},{"tag":"RelatedArticles","attrs":{"items":"{{ dsx.variable.articles }}","visible-if":"dsx.variable.hasOpen","on:use":"dsx.action.useLink()"},"children":[],"text":"","reactive":true,"nid":30}],"text":"\n    \n    \n    \n    \n  ","reactive":true,"nid":22},{"tag":"sheet","attrs":{"detents":"page","present":"dsx.variable.customerSheet","title":"Customer","close":"trailing","on:dismiss":"dsx.variable.customerSheet = false"},"children":[{"tag":"CustomerContext","attrs":{"conversation":"{{ dsx.variable.open }}","customer":"{{ dsx.variable.customer }}","likely":"{{ dsx.variable.likely }}","on:use":"dsx.action.useReply()","on:details":"dsx.variable.issueSheet = true"},"children":[],"text":"","reactive":true,"nid":32},{"tag":"RelatedArticles","attrs":{"items":"{{ dsx.variable.articles }}","on:use":"dsx.action.useLink()"},"children":[],"text":"","reactive":true,"nid":33}],"text":"\n    \n    \n  ","reactive":true,"nid":31},{"tag":"sheet","attrs":{"detents":"page","present":"dsx.variable.copilotSheet","title":"Copilot","close":"trailing","on:dismiss":"dsx.variable.copilotSheet = false"},"children":[{"tag":"Copilot","attrs":{"conversationId":"{{ dsx.variable.copilotSheet && dsx.variable.hasOpen ? dsx.variable.open.id : '' }}","on:use":"dsx.action.useReply()","on:link":"dsx.action.useLink()"},"children":[],"text":"","reactive":true,"nid":35}],"text":"\n    \n  ","reactive":true,"nid":34},{"tag":"sheet","attrs":{"detents":"page","present":"dsx.variable.issueSheet","title":"{{ dsx.variable.likely == null ? '' : dsx.variable.likely.explained.title }}","close":"trailing","on:dismiss":"dsx.variable.issueSheet = false"},"children":[{"tag":"IssueDetail","attrs":{"issue":"{{ dsx.variable.likely }}","mode":"reply","customer":"{{ dsx.variable.hasOpen ? dsx.variable.open.customer : null }}","on:use":"dsx.action.useReply()"},"children":[],"text":"","reactive":true,"nid":37}],"text":"\n    \n  ","reactive":true,"nid":36}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.IssueDetail":{"name":"IssueDetail","scheme":"supportinbox","head":{"attributes":[{"as":"issue","default":"null"},{"as":"mode","default":"'reply'"},{"as":"customer","default":"null"}],"apis":[],"expects":[],"events":[{"as":"use","payload":["text"]},{"as":"started","payload":["id"]},{"as":"changed","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"draft","body":"return ''","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"i","body":"return dsx.attribute.issue","computed":true},{"as":"has","body":"return dsx.variable.i != null","computed":true},{"as":"outreach","body":"return dsx.attribute.mode == 'outreach'","computed":true},{"as":"e","body":"return dsx.variable.has ? dsx.variable.i.explained : { title: '', whatHappened: '', why: '', steps: [], ours: false }","computed":true},{"as":"facts","body":"\n      if (!dsx.variable.has) { return [] }\n      const i = dsx.variable.i\n      const c = dsx.attribute.customer\n      return [\n        { id: 'who', icon: 'person.crop.circle', title: 'Customer', value: c == null ? '' : c.name, subtitle: c == null ? '' : c.email, show: c != null },\n        { id: 'app', icon: 'square.grid.2x2', title: 'App', value: i.project == null ? '' : i.project.name + (i.platform == null ? '' : (i.platform == 'ios' ? ' · iOS' : ' · Android')), subtitle: '', show: i.project != null },\n        { id: 'seen', icon: 'clock', title: 'Seen', value: i.count == 1 ? 'Once' : i.count + ' times', subtitle: 'First ' + since(i.firstSeen) + ', last ' + since(i.lastSeen), show: true },\n        { id: 'code', icon: 'number', title: 'Code', value: i.code, subtitle: '', show: true },\n        { id: 'fw', icon: 'shippingbox', title: 'Framework', value: i.frameworkRef || '', subtitle: '', show: i.frameworkRef != null &amp;&amp; i.frameworkRef != '' }\n      ].filter(r =&gt; r.show)\n    ","computed":true},{"as":"steps","body":"return dsx.variable.e.steps.map((s, n) =&gt; ({ id: 's' + n, icon: 'arrow.right.circle', title: (n + 1) + '. ' + s.title, subtitle: s.text == s.title ? '' : s.text }))","computed":true},{"as":"severityWord","body":"\n      if (!dsx.variable.has) { return '' }\n      const s = dsx.variable.i.severity\n      return s == 'critical' ? 'Critical' : (s == 'high' ? 'High impact' : (s == 'normal' ? 'Worth a look' : 'Low'))\n    ","computed":true},{"as":"draftFooter","body":"\n      return dsx.variable.outreach\n        ? 'Start Conversation opens a conversation in the customer’s console Help with this message. Its email notice follows the mail lock: while outbound email is locked to staff, the customer is not emailed.'\n        : 'Use Reply puts this in the composer. Edit it there and send it yourself.'\n    ","computed":true},{"as":"contacted","body":"return dsx.variable.has &amp;&amp; dsx.variable.i.outreach == 'contacted'","computed":true}],"formulas":[],"actions":[{"as":"reset","inputs":{},"body":"\n      dsx.variable.draft = dsx.variable.has ? dsx.variable.i.draft : ''\n      dsx.variable.error = ''\n    "},{"as":"start","inputs":{},"body":"\n      const body = String(dsx.variable.draft || '').trim()\n      if (body == '') { dsx.variable.error = 'Write the message first.'; return }\n      const r = await dsx.module.supportdesk.observeOutreach({ id: dsx.variable.i.id, body: body })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      dsx.variable.error = ''\n      dsx.module.toast.show({ title: 'Conversation started', message: '#' + r.data.conversation.number + ' is in the Inbox, waiting on the customer.' })\n      dsx.event('started', { id: r.data.conversation.id })\n    "},{"as":"mute","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.observeState({ id: dsx.variable.i.id, state: 'muted' })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      dsx.variable.error = ''\n      dsx.event('changed')\n    "}],"watches":[{"value":"dsx.attribute.issue","handler":"dsx.action.reset()","immediate":true}],"scripts":["\n      function since(at) {\n        const m = Math.max(0, Math.round((Date.now() - Date.parse(at)) / 60000))\n        if (m &lt; 1) { return 'now' }\n        if (m &lt; 60) { return m + ' min ago' }\n        if (m &lt; 1440) { return Math.round(m / 60) + ' h ago' }\n        return Math.round(m / 1440) + ' d ago'\n      }\n    "],"globalScripts":[]},"root":{"tag":"stack","attrs":{},"children":[{"tag":"ListGroup","attrs":{"header":"{{ dsx.variable.severityWord }}","footer":"{{ dsx.variable.e.why }}","visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.e.title }}","subtitle":"{{ dsx.variable.e.whatHappened }}","lines":"6"},"children":[],"text":"","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"Callout","attrs":{"tone":"info","title":"On our side","message":"Despia caused this, not the customer’s project. The reply says so.","visible-if":"dsx.variable.has && dsx.variable.e.ours"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"ListGroup","attrs":{"header":"How to fix it","visible-if":"dsx.variable.steps.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.steps","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"4"},"children":[],"text":"","reactive":true,"nid":5}],"text":"\n    \n  ","reactive":true,"nid":4},{"tag":"ListGroup","attrs":{"header":"Details","visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.facts","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":7}],"text":"\n    \n  ","reactive":true,"nid":6},{"tag":"ListGroup","attrs":{"header":"{{ dsx.variable.outreach ? 'Message' : 'Reply' }}","footer":"{{ dsx.variable.draftFooter }}","visible-if":"dsx.variable.has && !dsx.variable.contacted"},"children":[{"tag":"SettingsRow","attrs":{"title":"Draft"},"children":[{"tag":"textarea","attrs":{"bind":"dsx.variable.draft","minLines":"8","maxLines":"18","aria-label":"{{ dsx.variable.outreach ? 'Message to the customer' : 'Reply draft' }}"},"children":[],"text":"","reactive":true,"nid":10}],"text":"\n      \n    ","reactive":true,"nid":9}],"text":"\n    \n  ","reactive":true,"nid":8},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":12}],"text":"\n    \n  ","reactive":true,"nid":11},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"icon":"arrowshape.turn.up.left","title":"Use Reply","tone":"accent","tappable":"true","visible-if":"!dsx.variable.outreach","on:tap":"dsx.event('use', { text: dsx.variable.draft })"},"children":[],"text":"","reactive":true,"nid":14},{"tag":"SettingsRow","attrs":{"icon":"bubble.left.and.bubble.right","title":"{{ dsx.action.start.pending ? 'Starting…' : 'Start Conversation' }}","tone":"accent","tappable":"{{ dsx.action.start.pending ? 'false' : 'true' }}","visible-if":"dsx.variable.outreach && !dsx.variable.contacted","on:tap":"dsx.action.start()"},"children":[],"text":"","reactive":true,"nid":15},{"tag":"SettingsRow","attrs":{"icon":"checkmark.circle","title":"Already contacted","subtitle":"A conversation about this issue is open in the Inbox.","visible-if":"dsx.variable.contacted"},"children":[],"text":"","reactive":true,"nid":16},{"tag":"SettingsRow","attrs":{"icon":"speaker.slash","title":"Mute Issue","subtitle":"Hide it from Proactive and the Likely issue card","tappable":"true","visible-if":"dsx.variable.outreach","on:tap":"dsx.action.mute()"},"children":[],"text":"","reactive":true,"nid":17}],"text":"\n    \n    \n    \n    \n  ","reactive":true,"nid":13}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.LikelyIssue":{"name":"LikelyIssue","scheme":"supportinbox","head":{"attributes":[{"as":"issue","default":"null"}],"apis":[],"expects":[],"events":[{"as":"use","payload":["text"]},{"as":"details","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"i","body":"return dsx.attribute.issue","computed":true},{"as":"has","body":"return dsx.variable.i != null","computed":true},{"as":"icon","body":"return dsx.variable.has &amp;&amp; dsx.variable.i.severity == 'critical' ? 'exclamationmark.octagon' : 'exclamationmark.triangle'","computed":true},{"as":"title","body":"return dsx.variable.has ? dsx.variable.i.explained.title : ''","computed":true},{"as":"message","body":"\n      if (!dsx.variable.has) { return '' }\n      const i = dsx.variable.i\n      return i.explained.whatHappened + (i.explained.ours ? ' On our side.' : '')\n    ","computed":true},{"as":"seen","body":"\n      if (!dsx.variable.has) { return '' }\n      const i = dsx.variable.i\n      return (i.count == 1 ? 'Once' : i.count + ' times') + ', last ' + since(i.lastSeen) + (i.project == null ? '' : ' · ' + i.project.name)\n    ","computed":true},{"as":"others","body":"\n      if (!dsx.variable.has || !Array.isArray(dsx.variable.i.others) || dsx.variable.i.others.length == 0) { return '' }\n      const n = dsx.variable.i.others.length\n      return n == 1 ? 'This customer has 1 more active issue.' : 'This customer has ' + n + ' more active issues.'\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":["\n      function since(at) {\n        const m = Math.max(0, Math.round((Date.now() - Date.parse(at)) / 60000))\n        if (m &lt; 1) { return 'now' }\n        if (m &lt; 60) { return m + ' min ago' }\n        if (m &lt; 1440) { return Math.round(m / 60) + ' h ago' }\n        return Math.round(m / 1440) + ' d ago'\n      }\n    "],"globalScripts":[]},"root":{"tag":"stack","attrs":{},"children":[{"tag":"ListGroup","attrs":{"header":"Likely issue","footer":"{{ dsx.variable.others }}","visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"icon":"{{ dsx.variable.icon }}","title":"{{ dsx.variable.title }}","subtitle":"{{ dsx.variable.message }}","lines":"5"},"children":[],"text":"","reactive":true},{"tag":"SettingsRow","attrs":{"icon":"arrowshape.turn.up.left","title":"Use Reply","tone":"accent","tappable":"true","on:tap":"dsx.event('use', { text: dsx.variable.i.draft })"},"children":[],"text":"","reactive":true},{"tag":"SettingsRow","attrs":{"icon":"wrench.and.screwdriver","title":"Fix and Reply","subtitle":"{{ dsx.variable.seen }}","chevron":"true","tappable":"true","on:tap":"dsx.event('details')"},"children":[],"text":"","reactive":true}],"text":"\n    \n    \n    \n  ","reactive":true}],"text":"\n  \n\n  \n","reactive":true},"reactive":true,"language":"0"},"supportinbox.Migration":{"name":"Migration","scheme":"supportinbox","head":{"attributes":[],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"settled","body":"return false","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"data","body":"return null","computed":false},{"as":"feed","body":"return []","computed":false},{"as":"waveList","body":"return []","computed":false},{"as":"people","body":"return []","computed":false},{"as":"query","body":"return ''","computed":false},{"as":"waveFilter","body":"return ''","computed":false},{"as":"newWave","body":"return false","computed":false},{"as":"openWave","body":"return null","computed":false},{"as":"openCustomer","body":"return ''","computed":false},{"as":"askPause","body":"return false","computed":false},{"as":"loaded","body":"return dsx.variable.data != null","computed":true},{"as":"paused","body":"return dsx.variable.loaded &amp;&amp; dsx.variable.data.control.paused","computed":true},{"as":"pausedMessage","body":"\n      if (!dsx.variable.paused) { return '' }\n      const c = dsx.variable.data.control\n      return (c.reason ? c.reason + '. ' : '') + 'Move to V4 answers \"paused\" until you resume' + (c.changedAt ? ' (since ' + clock(c.changedAt) + ').' : '.')\n    ","computed":true},{"as":"step","body":"\n      if (!dsx.variable.loaded) { return {} }\n      return dsx.variable.data.funnel.steps.reduce((m, s) => ({ ...m, [s.id]: s }), {})\n    ","computed":true},{"as":"stats","body":"\n      if (!dsx.variable.loaded) { return [] }\n      const f = dsx.variable.data.funnel\n      const s = dsx.variable.step\n      return [\n        { id: 'known', label: 'V3 customers', value: num(f.known.people), icon: 'person.2' },\n        { id: 'invited', label: 'Invited', value: num(s.invited.count), icon: 'person.badge.plus' },\n        { id: 'signed', label: 'Signed in to V4', value: num(s.signed_in.count), icon: 'person.crop.circle.badge.checkmark' },\n        { id: 'moved', label: 'Apps moved', value: num(s.moved.count) + ' of ' + num(f.known.apps), icon: 'arrow.right' },\n        { id: 'built', label: 'Builds succeeded', value: num(s.build_ok.count), icon: 'hammer' },\n        { id: 'approved', label: 'Approved', value: num(s.approved.count), icon: 'checkmark.seal' }\n      ]\n    ","computed":true},{"as":"funnelColumns","body":"\n      return [{ key: 'name', label: 'Step', width: 'fill' }, { key: 'count', label: 'Count', type: 'number' }, { key: 'rate', label: 'Conversion', type: 'number' }]\n    ","computed":true},{"as":"funnelRows","body":"\n      if (!dsx.variable.loaded) { return [] }\n      const icons = { invited: 'person.badge.plus', signed_in: 'person.crop.circle', moved: 'arrow.right', built: 'hammer', build_ok: 'checkmark.circle', build_failed: 'exclamationmark.triangle',\n                      uploaded: 'icloud.and.arrow.up', submitted: 'paperplane', approved: 'checkmark.seal', rejected: 'xmark.circle' }\n      return dsx.variable.data.funnel.steps.map(s => ({ id: s.id, name: s.title, subtitle: s.note, icon: icons[s.id] || 'circle', iconLabel: s.title, count: num(s.count), rate: s.rate == null ? '' : s.rate + '%' }))\n    ","computed":true},{"as":"feedRows","body":"\n      return dsx.variable.feed.slice(0, 14).map(i => ({\n        id: i.id, icon: iconOf(i.kind), title: i.title,\n        subtitle: [i.detail, i.code ? 'Diagnosis ' + i.code : '', i.who].filter(x => x != null &amp;&amp; x != '').join(' · '),\n        when: since(i.at), conversation: i.conversationId || ''\n      }))\n    ","computed":true},{"as":"waveColumns","body":"\n      return [{ key: 'name', label: 'Wave', width: 'fill' }, { key: 'state', label: 'Status', type: 'status' }, { key: 'members', label: 'People', type: 'number' },\n              { key: 'signedIn', label: 'Signed in', type: 'number' }, { key: 'moved', label: 'Moved', type: 'number' }]\n    ","computed":true},{"as":"waveRows","body":"\n      return dsx.variable.waveList.map(w => ({\n        id: w.id, name: w.name, subtitle: waveWhen(w), icon: w.source == 'emails' ? 'list.bullet' : 'line.3.horizontal.decrease.circle', iconLabel: w.source == 'emails' ? 'Pasted addresses' : 'Filters',\n        state: statusWord(w.status), stateRole: { paused: 'warning', open: 'info', exported: 'success' }[w.status] || 'neutral',\n        members: num(w.members), signedIn: num(w.signedIn), moved: num(w.moved)\n      }))\n    ","computed":true},{"as":"health","body":"\n      if (!dsx.variable.loaded) { return [] }\n      const h = dsx.variable.data.health\n      const w = h.api.worker\n      const b = h.builds\n      return [\n        { id: 'mail', icon: 'envelope', title: 'Email today', value: num(h.mail.today) + ' of ' + num(h.mail.cap),\n          subtitle: (h.mail.providerQuota ? 'Cloudflare quota ' + num(h.mail.providerQuota) + ' a day' : 'Cloudflare quota not set') + (h.mail.capped &gt; 0 ? ' · ' + h.mail.capped + ' over the cap' : '') + (h.mail.mode == 'sink' ? ' · sink mode, nothing leaves' : '') + (h.mail.locked ? ' · locked to staff' : '') },\n        { id: 'queue', icon: 'hammer', title: 'Codemagic', value: b.configured ? b.running + ' running · ' + b.waiting + ' waiting' : 'Not connected',\n          subtitle: (b.concurrency ? 'Concurrency ' + b.concurrency : 'Concurrency not set') + (b.oldestWaitingSince ? ' · oldest waiting ' + since(b.oldestWaitingSince) : '') },\n        { id: 'builds', icon: 'chart.bar', title: 'Builds, last 24 hours', value: b.last24h.failureRate + '% failed',\n          subtitle: num(b.last24h.total) + ' builds' + (b.last24h.medianWaitMinutes == null ? '' : ' · median wait ' + b.last24h.medianWaitMinutes + ' min') },\n        { id: 'api', icon: 'server.rack', title: 'API', value: w.connected ? w.errorRate + '% errors' : h.api.databaseMs + ' ms database',\n          subtitle: w.connected ? 'Last hour · ' + num(w.requests) + ' requests · p50 ' + Math.round(w.p50Ms) + ' ms · p99 ' + Math.round(w.p99Ms) + ' ms' : w.note },\n        { id: 'sync', icon: 'arrow.triangle.2.circlepath', title: 'V3 export', value: h.sync.lastRunAt ? since(h.sync.lastRunAt) : 'Never',\n          subtitle: (h.sync.lastRun ? num(h.sync.lastRun.accounts) + ' accounts · ' + num(h.sync.lastRun.apps) + ' apps in the last run' : 'No export has run on this deployment') + (h.sync.refreshWaiting &gt; 0 ? ' · ' + h.sync.refreshWaiting + (h.sync.refreshWaiting == 1 ? ' app refresh waiting' : ' app refreshes waiting') : '') },\n        { id: 'support', icon: 'bubble.left.and.bubble.right', title: 'Support', value: h.support.open + ' open', subtitle: h.support.unassigned + ' unassigned' }\n      ]\n    ","computed":true},{"as":"peopleColumns","body":"\n      return [{ key: 'name', label: 'Customer', width: 'fill' }, { key: 'stage', label: 'Stage', type: 'status' }, { key: 'wave', label: 'Wave' },\n              { key: 'apps', label: 'Apps', type: 'number' }, { key: 'moved', label: 'Moved', type: 'number' }, { key: 'active', label: 'Last active in V3', type: 'time' }]\n    ","computed":true},{"as":"peopleRows","body":"\n      return dsx.variable.people.map(p => ({\n        id: p.ref, name: p.name || p.email, subtitle: p.name ? p.email : '', stage: p.stage, stageRole: roleOf(p.stage),\n        wave: p.wave == null ? '' : p.wave.name, apps: num(p.apps), moved: num(p.moved), active: p.lastActive\n      }))\n    ","computed":true},{"as":"peopleFooter","body":"\n      if (dsx.variable.waveFilter != '') { return 'Showing one wave. Clear the search to see everyone.' }\n      return 'Emails are masked. Open a customer to see their apps, builds and conversations.'\n    ","computed":true},{"as":"moreMenu","body":"\n      return [\n        dsx.variable.paused\n          ? { title: 'Resume New Migrations', icon: 'play.circle', action: 'supportdesk.pick', args: { ask: 'migration-resume' } }\n          : { title: 'Pause New Migrations', icon: 'pause.circle', role: 'destructive', action: 'supportdesk.pick', args: { ask: 'migration-pause' } },\n        { title: 'Refresh', icon: 'arrow.clockwise', shortcut: 'cmd+r', action: 'supportdesk.pick', args: { ask: 'migration-refresh' } },\n        { separator: true },\n        { title: 'Inbox', icon: 'tray', shortcut: 'cmd+1', action: 'supportdesk.pick', args: { ask: 'migration-inbox' } }\n      ]\n    ","computed":true},{"as":"pauseButtons","body":"\n      return [{ title: 'Pause', role: 'destructive', action: 'supportdesk.pick', args: { ask: 'migration-pause-confirm' } }, { title: 'Cancel', role: 'cancel' }]\n    ","computed":true},{"as":"waveOpen","body":"return dsx.variable.openWave != null","computed":true},{"as":"customerOpen","body":"return dsx.variable.openCustomer != ''","computed":true}],"formulas":[],"actions":[{"as":"start","inputs":{},"body":"\n      const s = await dsx.module.supportdesk.session()\n      if (s.ok &amp;&amp; !s.data.signedIn) { dsx.module.route.replace({ path: '/login' }); return }\n      if (s.ok &amp;&amp; (!s.data.staff || !s.data.migration)) { dsx.module.route.replace({ path: '/no-access' }); return }\n      await dsx.action.load()\n      setInterval(() =&gt; { dsx.action.load() }, 20000, 'migration-live')\n    "},{"as":"stop","inputs":{},"body":"clearInterval('migration-live')"},{"as":"load","inputs":{},"body":"\n      const [o, a, w] = await Promise.all([dsx.module.supportdesk.migrationOverview(), dsx.module.supportdesk.migrationActivity(), dsx.module.supportdesk.migrationWaves()])\n      if (!o.ok) {\n        if (o.error == 'no_access') { clearInterval('migration-live'); dsx.module.route.replace({ path: '/no-access' }); return }\n        dsx.variable.error = o.message ? o.message : 'Despia did not answer. Try again in a moment.'\n        dsx.variable.settled = true\n        return\n      }\n      dsx.variable.error = ''\n      dsx.variable.data = o.data\n      if (a.ok) { dsx.variable.feed = a.data.items }\n      if (w.ok) { dsx.variable.waveList = w.data.items }\n      if (!dsx.variable.settled) { await dsx.action.search() }\n      dsx.variable.settled = true\n    "},{"as":"search","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.migrationCustomers({ q: dsx.variable.query, wave: dsx.variable.waveFilter })\n      if (r.ok) { dsx.variable.people = r.data.items }\n    "},{"as":"clearSearch","inputs":{},"body":"\n      dsx.variable.query = ''\n      dsx.variable.waveFilter = ''\n      await dsx.action.search()\n    "},{"as":"pickWave","inputs":{"id":"dsx.this.id"},"body":"\n      dsx.variable.openWave = dsx.variable.waveList.find(w =&gt; w.id == id) || null\n    "},{"as":"pickCustomer","inputs":{"id":"dsx.this.id"},"body":"dsx.variable.openCustomer = id"},{"as":"pickFeed","inputs":{"row":"dsx.this"},"body":"\n      if (row.conversation != '') { dsx.module.route.push({ path: '/c/' + row.conversation }) }\n    "},{"as":"waveChanged","inputs":{},"body":"\n      await dsx.action.load()\n      if (dsx.variable.openWave != null) { dsx.variable.openWave = dsx.variable.waveList.find(w =&gt; w.id == dsx.variable.openWave.id) || null }\n    "},{"as":"showWavePeople","inputs":{},"body":"\n      dsx.variable.waveFilter = dsx.variable.openWave.id\n      dsx.variable.query = ''\n      dsx.variable.openWave = null\n      await dsx.action.search()\n    "},{"as":"created","inputs":{},"body":"\n      dsx.variable.newWave = false\n      await dsx.action.load()\n    "},{"as":"onPicked","inputs":{},"body":"\n      const k = dsx.module.supportdesk.context.picked\n      if (k == null) { return }\n      if (k.ask == 'migration-refresh') { await dsx.action.load(); return }\n      if (k.ask == 'migration-inbox') { dsx.module.route.push({ path: '/' }); return }\n      if (k.ask == 'migration-pause') { dsx.variable.askPause = true; return }\n      if (k.ask == 'migration-pause-confirm' || k.ask == 'migration-resume') {\n        dsx.variable.askPause = false\n        const r = await dsx.module.supportdesk.migrationPause({ paused: k.ask == 'migration-pause-confirm', reason: 'Paused from the migration console' })\n        if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n        await dsx.action.load()\n      }\n    "}],"watches":[{"value":"dsx.module.supportdesk.context.picked","handler":"dsx.action.onPicked()"}],"scripts":["\n      function num(n) { return Number(n || 0).toLocaleString('en-US') }\n      function since(at) {\n        const m = Math.max(0, Math.round((Date.now() - Date.parse(at)) / 60000))\n        if (m &lt; 1) { return 'now' }\n        if (m &lt; 60) { return m + ' min ago' }\n        if (m &lt; 1440) { return Math.round(m / 60) + ' h ago' }\n        return Math.round(m / 1440) + ' d ago'\n      }\n      function clock(at) {\n        const d = new Date(at)\n        const h = d.getHours()\n        const mm = d.getMinutes()\n        return (h % 12 == 0 ? 12 : h % 12) + ':' + (mm &lt; 10 ? '0' + mm : mm) + (h &lt; 12 ? ' AM' : ' PM')\n      }\n      function statusWord(s) { return { draft: 'Draft', open: 'Open', exported: 'Exported', paused: 'Paused' }[s] || 'Draft' }\n      function waveWhen(w) {\n        if (w.exportedAt) { return 'List exported ' + since(w.exportedAt) }\n        if (w.openedAt) { return 'Opened ' + since(w.openedAt) }\n        return 'Created ' + since(w.createdAt)\n      }\n      function roleOf(stage) {\n        if (stage == 'Approved') { return 'success' }\n        if (stage == 'In review' || stage == 'Building') { return 'progress' }\n        if (stage == 'Built' || stage == 'Moved' || stage == 'Signed in') { return 'info' }\n        return 'neutral'\n      }\n      function iconOf(kind) {\n        if (kind == 'signin') { return 'person.crop.circle' }\n        if (kind == 'moved') { return 'arrow.right' }\n        if (kind == 'build_failed') { return 'exclamationmark.triangle' }\n        if (kind == 'build_ok') { return 'checkmark.circle' }\n        if (kind == 'build') { return 'hammer' }\n        if (kind == 'ticket') { return 'bubble.left' }\n        if (kind == 'admin') { return 'slider.horizontal.3' }\n        if (kind == 'store_rejected') { return 'xmark.circle' }\n        return 'app.badge'\n      }\n    "],"globalScripts":[]},"root":{"tag":"scroll","attrs":{"on:appear":"dsx.action.start()","on:disappear":"dsx.action.stop()"},"children":[{"tag":"NavBar","attrs":{"title":"Migration","large":"true","description":"Move V3 customers to V4 in waves, and see where every customer and app stands."},"children":[{"tag":"button","attrs":{"slot":"trailing","icon":"plus","label":"New Wave","a11yLabel":"New wave","on:tap":"dsx.variable.newWave = true"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"menu","attrs":{"slot":"trailing","menu":"{{ dsx.variable.moreMenu }}"},"children":[{"tag":"button","attrs":{"icon":"ellipsis.circle","a11yLabel":"More actions"},"children":[],"text":"","reactive":false,"nid":4}],"text":"","reactive":true,"nid":3}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"spinner","attrs":{"visible-if":"!dsx.variable.settled"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"Callout","attrs":{"tone":"info","title":"Sample data","message":"This local preview is not connected to Despia. The people, apps and waves here are fictional; open with ?live=1 to use the service.","visible-if":"dsx.variable.loaded && dsx.variable.data.sample == true"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"Callout","attrs":{"tone":"warning","title":"New migrations are paused","message":"{{ dsx.variable.pausedMessage }}","action":"Resume","visible-if":"dsx.variable.paused","on:action":"dsx.module.supportdesk.pick({ ask: 'migration-resume' })"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":9},{"tag":"SettingsRow","attrs":{"icon":"arrow.clockwise","title":"Try Again","tone":"accent","tappable":"true","on:tap":"dsx.action.load()"},"children":[],"text":"","reactive":true,"nid":10}],"text":"\n    \n    \n  ","reactive":true,"nid":8},{"tag":"grid","attrs":{"bind":"dsx.variable.stats","key":"id","columns":"adaptive","minimum":"180","scroll":"false","visible-if":"dsx.variable.loaded"},"children":[{"tag":"Stat","attrs":{"label":"{{ dsx.this.label }}","value":"{{ dsx.this.value }}","icon":"{{ dsx.this.icon }}"},"children":[],"text":"","reactive":true,"nid":12}],"text":"\n    \n  ","reactive":true,"nid":11},{"tag":"grid","attrs":{"columns":"adaptive","minimum":"420","scroll":"false","visible-if":"dsx.variable.loaded"},"children":[{"tag":"ListGroup","attrs":{"header":"Funnel","footer":"Each step as a share of the one before it."},"children":[{"tag":"RecordsTable","attrs":{"columns":"{{ dsx.variable.funnelColumns }}","rows":"{{ dsx.variable.funnelRows }}"},"children":[],"text":"","reactive":true,"nid":15}],"text":"\n      \n    ","reactive":true,"nid":14},{"tag":"ListGroup","attrs":{"header":"Activity","footer":"Newest first, refreshed every 20 seconds."},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.feedRows","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"2","value":"{{ dsx.this.when }}","chevron":"{{ dsx.this.conversation != '' }}","tappable":"{{ dsx.this.conversation != '' }}","on:tap":"dsx.action.pickFeed()"},"children":[],"text":"","reactive":true,"nid":17},{"tag":"SettingsRow","attrs":{"icon":"clock","title":"Nothing yet","subtitle":"Sign-ins, moves, builds and tickets appear here.","visible-if":"dsx.variable.feedRows.length == 0"},"children":[],"text":"","reactive":true,"nid":18}],"text":"\n      \n      \n    ","reactive":true,"nid":16}],"text":"\n    \n    \n  ","reactive":true,"nid":13},{"tag":"ListGroup","attrs":{"header":"Waves","footer":"Despia never emails customers. Export the list and write to them yourself.","visible-if":"dsx.variable.loaded"},"children":[{"tag":"RecordsTable","attrs":{"columns":"{{ dsx.variable.waveColumns }}","rows":"{{ dsx.variable.waveRows }}","on:open":"dsx.action.pickWave()"},"children":[],"text":"","reactive":true,"nid":20},{"tag":"SettingsRow","attrs":{"icon":"person.2","title":"No waves yet","subtitle":"New Wave picks V3 customers by filters or pasted addresses.","visible-if":"dsx.variable.waveRows.length == 0"},"children":[],"text":"","reactive":true,"nid":21}],"text":"\n    \n    \n  ","reactive":true,"nid":19},{"tag":"ListGroup","attrs":{"header":"Health","visible-if":"dsx.variable.loaded"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.health","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"2","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":23}],"text":"\n    \n  ","reactive":true,"nid":22},{"tag":"ListGroup","attrs":{"header":"Customers","footer":"{{ dsx.variable.peopleFooter }}","visible-if":"dsx.variable.loaded"},"children":[{"tag":"searchbar","attrs":{"bind":"dsx.variable.query","placeholder":"Search by email or name","on:submit":"dsx.action.search()","on:change":"dsx.action.search()"},"children":[],"text":"","reactive":true,"nid":25},{"tag":"RecordsTable","attrs":{"columns":"{{ dsx.variable.peopleColumns }}","rows":"{{ dsx.variable.peopleRows }}","on:open":"dsx.action.pickCustomer()"},"children":[],"text":"","reactive":true,"nid":26},{"tag":"SettingsRow","attrs":{"icon":"magnifyingglass","title":"No customers match","visible-if":"dsx.variable.peopleRows.length == 0"},"children":[],"text":"","reactive":true,"nid":27},{"tag":"SettingsRow","attrs":{"icon":"xmark.circle","title":"Show Everyone","tone":"accent","tappable":"true","visible-if":"dsx.variable.waveFilter != ''","on:tap":"dsx.action.clearSearch()"},"children":[],"text":"","reactive":true,"nid":28}],"text":"\n    \n    \n    \n    \n  ","reactive":true,"nid":24},{"tag":"sheet","attrs":{"detents":"page","present":"dsx.variable.newWave","title":"New Wave","close":"trailing","on:dismiss":"dsx.variable.newWave = false"},"children":[{"tag":"NewWave","attrs":{"on:created":"dsx.action.created()"},"children":[],"text":"","reactive":true,"nid":30}],"text":"\n    \n  ","reactive":true,"nid":29},{"tag":"sheet","attrs":{"detents":"form","present":"dsx.variable.waveOpen","title":"{{ dsx.variable.openWave == null ? '' : dsx.variable.openWave.name }}","close":"trailing","on:dismiss":"dsx.variable.openWave = null"},"children":[{"tag":"WaveDetail","attrs":{"wave":"{{ dsx.variable.openWave }}","on:changed":"dsx.action.waveChanged()","on:people":"dsx.action.showWavePeople()"},"children":[],"text":"","reactive":true,"nid":32}],"text":"\n    \n  ","reactive":true,"nid":31},{"tag":"sheet","attrs":{"detents":"page","present":"dsx.variable.customerOpen","title":"Customer","close":"trailing","on:dismiss":"dsx.variable.openCustomer = ''"},"children":[{"tag":"CustomerDetail","attrs":{"customerRef":"{{ dsx.variable.openCustomer }}"},"children":[],"text":"","reactive":true,"nid":34}],"text":"\n    \n  ","reactive":true,"nid":33},{"tag":"alert","attrs":{"present":"dsx.variable.askPause","title":"Pause new migrations?","message":"Move to V4 stops for everyone until you resume. Apps already moved keep building, and V3 keeps working.","buttons":"dsx.variable.pauseButtons","on:dismiss":"dsx.variable.askPause = false"},"children":[],"text":"","reactive":true,"nid":35}],"text":"\n  \n\n  \n\n  \n  \n  \n  \n\n  \n\n  \n\n  \n  \n\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.NewWave":{"name":"NewWave","scheme":"supportinbox","head":{"attributes":[],"apis":[],"expects":[],"events":[{"as":"created","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"name","body":"return ''","computed":false},{"as":"mode","body":"return 'Filters'","computed":false},{"as":"canMove","body":"return true","computed":false},{"as":"buildFailed","body":"return false","computed":false},{"as":"active","body":"return 'Any time'","computed":false},{"as":"keys","body":"return 'Any'","computed":false},{"as":"review","body":"return 'Any'","computed":false},{"as":"limit","body":"return '50'","computed":false},{"as":"emails","body":"return ''","computed":false},{"as":"preview","body":"return null","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"byEmails","body":"return dsx.variable.mode == 'Addresses'","computed":true},{"as":"filters","body":"\n      const days = { 'Any time': null, 'Last 7 days': 7, 'Last 30 days': 30, 'Last 90 days': 90 }\n      const keys = { 'Any': null, 'Apple or Google': 'any', 'Apple': 'apple', 'Google Play': 'google' }\n      const review = { 'Any': null, 'Last 30 days': 30, 'Last 90 days': 90 }\n      return { canMove: dsx.variable.canMove, v3BuildFailed: dsx.variable.buildFailed, activeWithinDays: days[dsx.variable.active],\n               credentials: keys[dsx.variable.keys], appReviewTicketDays: review[dsx.variable.review], limit: Number(dsx.variable.limit) }\n    ","computed":true},{"as":"pick","body":"return dsx.variable.byEmails ? { emails: dsx.variable.emails } : { filters: dsx.variable.filters }","computed":true},{"as":"ready","body":"return dsx.variable.name.trim() != '' &amp;&amp; (!dsx.variable.byEmails || dsx.variable.emails.trim() != '')","computed":true},{"as":"previewRows","body":"\n      const p = dsx.variable.preview\n      if (p == null) { return [] }\n      const rows = [{ id: 'count', icon: 'person.2', title: 'People in this wave', value: String(p.count) }]\n      if (p.alreadyInvited &gt; 0) { rows.push({ id: 'taken', icon: 'person.crop.circle.badge.checkmark', title: 'Already in a wave', value: String(p.alreadyInvited) }) }\n      if (p.unsubscribed &gt; 0) { rows.push({ id: 'unsub', icon: 'envelope.badge', title: 'Unsubscribed, left out', value: String(p.unsubscribed) }) }\n      if (p.notInV3 &gt; 0) { rows.push({ id: 'unknown', icon: 'questionmark.circle', title: 'Not in the V3 export', value: String(p.notInV3) }) }\n      return rows\n    ","computed":true},{"as":"sample","body":"return dsx.variable.preview == null ? [] : dsx.variable.preview.sample.map((s, i) =&gt; ({ id: 's' + i, title: s.name || s.email, subtitle: s.name ? s.email : '' }))","computed":true},{"as":"previewFooter","body":"\n      const p = dsx.variable.preview\n      if (p == null) { return '' }\n      return 'Creating makes a draft. Open it from the wave to invite these people, then export the list to write to them yourself.'\n    ","computed":true}],"formulas":[],"actions":[{"as":"runPreview","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.migrationPreview(dsx.variable.pick)\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; dsx.variable.preview = null; return }\n      dsx.variable.error = ''\n      dsx.variable.preview = r.data.preview\n    "},{"as":"create","inputs":{},"body":"\n      if (!dsx.variable.ready) { return }\n      const r = await dsx.module.supportdesk.migrationCreateWave({ name: dsx.variable.name.trim(), ...dsx.variable.pick })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      dsx.variable.error = ''\n      dsx.variable.preview = null\n      dsx.variable.name = ''\n      dsx.variable.emails = ''\n      dsx.event('created')\n    "}],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{},"children":[{"tag":"ListGroup","attrs":{},"children":[{"tag":"SettingsRow","attrs":{"title":"Name"},"children":[{"tag":"textfield","attrs":{"bind":"dsx.variable.name","placeholder":"Wave 1 · Rejected apps","aria-label":"Wave name"},"children":[],"text":"","reactive":true,"nid":3}],"text":"","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"ListGroup","attrs":{"header":"Who","footer":"{{ dsx.variable.byEmails ? 'One address per line. Anyone already in a wave is left out.' : 'Picked from the V3 export, most recently active first. Anyone already in a wave is left out.' }}"},"children":[{"tag":"SettingsRow","attrs":{"title":"Pick by"},"children":[{"tag":"segmented","attrs":{"bind":"dsx.variable.mode","options":"Filters,Addresses","label":"Pick by","on:change":"dsx.variable.preview = null"},"children":[],"text":"","reactive":true,"nid":6}],"text":"","reactive":true,"nid":5},{"tag":"SettingsRow","attrs":{"title":"Can move an app","subtitle":"Owner or admin of a V3 workspace with an app not moved yet","visible-if":"!dsx.variable.byEmails"},"children":[{"tag":"toggle","attrs":{"bind":"dsx.variable.canMove","aria-label":"Can move an app","on:change":"dsx.variable.preview = null"},"children":[],"text":"","reactive":true,"nid":8}],"text":"\n      \n    ","reactive":true,"nid":7},{"tag":"SettingsRow","attrs":{"title":"Active in V3","visible-if":"!dsx.variable.byEmails"},"children":[{"tag":"picker","attrs":{"aria-label":"Active in V3","bind":"dsx.variable.active","options":"Any time,Last 7 days,Last 30 days,Last 90 days","on:change":"dsx.variable.preview = null"},"children":[],"text":"","reactive":true,"nid":10}],"text":"\n      \n    ","reactive":true,"nid":9},{"tag":"SettingsRow","attrs":{"title":"Store keys in V3","visible-if":"!dsx.variable.byEmails"},"children":[{"tag":"picker","attrs":{"aria-label":"Store keys in V3","bind":"dsx.variable.keys","options":"Any,Apple or Google,Apple,Google Play","on:change":"dsx.variable.preview = null"},"children":[],"text":"","reactive":true,"nid":12}],"text":"\n      \n    ","reactive":true,"nid":11},{"tag":"SettingsRow","attrs":{"title":"App review ticket","subtitle":"A support conversation tagged app review","visible-if":"!dsx.variable.byEmails"},"children":[{"tag":"picker","attrs":{"aria-label":"App review ticket","bind":"dsx.variable.review","options":"Any,Last 30 days,Last 90 days","on:change":"dsx.variable.preview = null"},"children":[],"text":"","reactive":true,"nid":14}],"text":"\n      \n    ","reactive":true,"nid":13},{"tag":"SettingsRow","attrs":{"title":"Last V3 build failed","visible-if":"!dsx.variable.byEmails"},"children":[{"tag":"toggle","attrs":{"bind":"dsx.variable.buildFailed","aria-label":"Last V3 build failed","on:change":"dsx.variable.preview = null"},"children":[],"text":"","reactive":true,"nid":16}],"text":"\n      \n    ","reactive":true,"nid":15},{"tag":"SettingsRow","attrs":{"title":"At most","visible-if":"!dsx.variable.byEmails"},"children":[{"tag":"picker","attrs":{"aria-label":"At most","bind":"dsx.variable.limit","options":"10,25,50,100,250,500,1000,5000","on:change":"dsx.variable.preview = null"},"children":[],"text":"","reactive":true,"nid":18}],"text":"\n      \n    ","reactive":true,"nid":17},{"tag":"SettingsRow","attrs":{"title":"Addresses","visible-if":"dsx.variable.byEmails"},"children":[{"tag":"textarea","attrs":{"bind":"dsx.variable.emails","placeholder":"name@example.com","minLines":"4","maxLines":"12","aria-label":"Addresses","on:change":"dsx.variable.preview = null"},"children":[],"text":"","reactive":true,"nid":20}],"text":"\n      \n    ","reactive":true,"nid":19}],"text":"\n    \n    \n    \n    \n    \n    \n    \n    \n  ","reactive":true,"nid":4},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":22}],"text":"\n    \n  ","reactive":true,"nid":21},{"tag":"ListGroup","attrs":{"header":"Preview","footer":"{{ dsx.variable.previewFooter }}","visible-if":"dsx.variable.preview != null"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.previewRows","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":24},{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.sample","key":"id","icon":"person.crop.circle","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}"},"children":[],"text":"","reactive":true,"nid":25}],"text":"\n    \n    \n  ","reactive":true,"nid":23},{"tag":"ListGroup","attrs":{},"children":[{"tag":"SettingsRow","attrs":{"icon":"eye","title":"{{ dsx.action.runPreview.pending ? 'Counting…' : 'Preview' }}","tone":"accent","tappable":"{{ dsx.action.runPreview.pending ? 'false' : 'true' }}","visible-if":"dsx.variable.preview == null","on:tap":"dsx.action.runPreview()"},"children":[],"text":"","reactive":true,"nid":27},{"tag":"SettingsRow","attrs":{"icon":"plus.circle","title":"{{ dsx.action.create.pending ? 'Creating…' : 'Create Wave' }}","tone":"accent","tappable":"{{ dsx.action.create.pending || !dsx.variable.ready ? 'false' : 'true' }}","subtitle":"{{ dsx.variable.ready ? '' : 'Name the wave first.' }}","visible-if":"dsx.variable.preview != null","on:tap":"dsx.action.create()"},"children":[],"text":"","reactive":true,"nid":28}],"text":"\n    \n    \n  ","reactive":true,"nid":26}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.Proactive":{"name":"Proactive","scheme":"supportinbox","head":{"attributes":[],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"settled","body":"return false","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"items","body":"return []","computed":false},{"as":"open","body":"return null","computed":false},{"as":"openCustomer","body":"return null","computed":false},{"as":"openId","body":"return ''","computed":false},{"as":"columns","body":"\n      return [{ key: 'name', label: 'Customer', width: 'fill' }, { key: 'issue', label: 'Likely to ask about', width: 'fill' },\n              { key: 'severity', label: 'Impact', type: 'status' }, { key: 'count', label: 'Seen', type: 'number' }, { key: 'last', label: 'Last seen', type: 'time' }]\n    ","computed":true},{"as":"rows","body":"\n      return dsx.variable.items.map(i =&gt; ({\n        id: i.top.id, name: i.customer.name || i.customer.email, subtitle: i.customer.email, icon: iconOf(i.top.source), iconLabel: i.top.source,\n        issue: i.top.title + (i.issues &gt; 1 ? '  +' + (i.issues - 1) : ''), severity: word(i.top.severity), severityRole: role(i.top.severity),\n        count: i.top.count, last: i.top.lastSeen\n      }))\n    ","computed":true},{"as":"sheetOpen","body":"return dsx.variable.openId != ''","computed":true},{"as":"moreMenu","body":"\n      return [\n        { title: 'Refresh', icon: 'arrow.clockwise', shortcut: 'cmd+r', action: 'supportdesk.pick', args: { ask: 'observe-refresh' } },\n        { separator: true },\n        { title: 'Health', icon: 'waveform.path.ecg', shortcut: 'cmd+shift+h', action: 'supportdesk.pick', args: { ask: 'health' } },\n        { title: 'Inbox', icon: 'tray', shortcut: 'cmd+1', action: 'supportdesk.pick', args: { ask: 'inbox' } }\n      ]\n    ","computed":true}],"formulas":[],"actions":[{"as":"start","inputs":{},"body":"\n      const s = await dsx.module.supportdesk.session()\n      if (s.ok &amp;&amp; !s.data.signedIn) { dsx.module.route.replace({ path: '/login' }); return }\n      if (s.ok &amp;&amp; !s.data.staff) { dsx.module.route.replace({ path: '/no-access' }); return }\n      await dsx.action.load()\n    "},{"as":"load","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.observeQueue()\n      dsx.variable.settled = true\n      if (!r.ok) {\n        if (r.error == 'no_access') { dsx.module.route.replace({ path: '/no-access' }); return }\n        dsx.variable.error = r.message ? r.message : 'Despia did not answer. Try again in a moment.'\n        return\n      }\n      dsx.variable.error = ''\n      dsx.variable.items = r.data.items\n    "},{"as":"pick","inputs":{"id":"dsx.this.id"},"body":"\n      const r = await dsx.module.supportdesk.observeIssue({ id: id })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That issue could not be opened.'; return }\n      dsx.variable.open = r.data.issue\n      dsx.variable.openCustomer = r.data.customer\n      dsx.variable.openId = id\n    "},{"as":"close","inputs":{},"body":"\n      dsx.variable.openId = ''\n      dsx.variable.open = null\n    "},{"as":"started","inputs":{"id":"dsx.this.id"},"body":"\n      dsx.variable.openId = ''\n      dsx.variable.open = null\n      await dsx.action.load()\n      dsx.module.route.push({ path: '/c/' + id })\n    "},{"as":"changed","inputs":{},"body":"\n      await dsx.action.close()\n      await dsx.action.load()\n    "},{"as":"onPicked","inputs":{},"body":"\n      const k = dsx.module.supportdesk.context.picked\n      if (k == null) { return }\n      if (k.ask == 'observe-refresh') { await dsx.action.load(); return }\n      if (k.ask == 'health') { dsx.module.route.push({ path: '/health' }); return }\n      if (k.ask == 'inbox') { dsx.module.route.push({ path: '/' }) }\n    "}],"watches":[{"value":"dsx.module.supportdesk.context.picked","handler":"dsx.action.onPicked()"}],"scripts":["\n      function word(s) { return s == 'critical' ? 'Critical' : (s == 'high' ? 'High' : (s == 'normal' ? 'Medium' : 'Low')) }\n      function role(s) { return s == 'critical' ? 'danger' : (s == 'high' ? 'warning' : 'neutral') }\n      function iconOf(source) {\n        if (source == 'build') { return 'hammer' }\n        if (source == 'credits') { return 'creditcard' }\n        if (source == 'store') { return 'checkmark.seal' }\n        if (source == 'credential') { return 'key' }\n        if (source == 'connection') { return 'link' }\n        if (source == 'v3_sync') { return 'arrow.triangle.2.circlepath' }\n        return 'exclamationmark.triangle'\n      }\n    "],"globalScripts":[]},"root":{"tag":"scroll","attrs":{"on:appear":"dsx.action.start()"},"children":[{"tag":"NavBar","attrs":{"title":"Proactive","large":"true","description":"Customers with an active issue who have not written yet, most affected first. Reach out before they ask."},"children":[{"tag":"menu","attrs":{"slot":"trailing","menu":"{{ dsx.variable.moreMenu }}"},"children":[{"tag":"button","attrs":{"icon":"ellipsis.circle","a11yLabel":"More actions"},"children":[],"text":"","reactive":false,"nid":3}],"text":"","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"spinner","attrs":{"visible-if":"!dsx.variable.settled"},"children":[],"text":"","reactive":true,"nid":4},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"SettingsRow","attrs":{"icon":"arrow.clockwise","title":"Try Again","tone":"accent","tappable":"true","on:tap":"dsx.action.load()"},"children":[],"text":"","reactive":true,"nid":7}],"text":"\n    \n    \n  ","reactive":true,"nid":5},{"tag":"ListGroup","attrs":{"footer":"From build, store, signing and connection signals. Addresses are masked; open a row to see the fix and the prepared message.","visible-if":"dsx.variable.settled && dsx.variable.rows.length > 0"},"children":[{"tag":"RecordsTable","attrs":{"columns":"{{ dsx.variable.columns }}","rows":"{{ dsx.variable.rows }}","selected":"{{ dsx.variable.openId }}","on:open":"dsx.action.pick()"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n    \n  ","reactive":true,"nid":8},{"tag":"EmptyState","attrs":{"visible-if":"dsx.variable.settled && dsx.variable.rows.length == 0 && dsx.variable.error == ''","icon":"checkmark.seal","title":"No one is waiting","message":"Customers with an active issue who have not written yet appear here."},"children":[],"text":"","reactive":true,"nid":10},{"tag":"sheet","attrs":{"detents":"page","present":"dsx.variable.sheetOpen","title":"{{ dsx.variable.open == null ? '' : dsx.variable.open.explained.title }}","close":"trailing","on:dismiss":"dsx.action.close()"},"children":[{"tag":"IssueDetail","attrs":{"issue":"{{ dsx.variable.open }}","mode":"outreach","customer":"{{ dsx.variable.openCustomer }}","on:started":"dsx.action.started()","on:changed":"dsx.action.changed()"},"children":[],"text":"","reactive":true,"nid":12}],"text":"\n    \n  ","reactive":true,"nid":11}],"text":"\n  \n\n  \n\n  \n  \n\n  \n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.RelatedArticles":{"name":"RelatedArticles","scheme":"supportinbox","head":{"attributes":[{"as":"items","default":"[]"}],"apis":[],"expects":[],"events":[{"as":"use","payload":["text"]}],"inputs":[],"tools":[],"variables":[{"as":"rows","body":"\n      return (dsx.attribute.items || []).map(a =&gt; ({\n        id: a.id, title: a.title, subtitle: a.excerpt || a.summary || '', url: a.url,\n        icon: a.space == 'troubleshooting' ? 'wrench.and.screwdriver' : (a.space == 'guides' ? 'list.number' : 'book')\n      }))\n    ","computed":true}],"formulas":[],"actions":[{"as":"pick","inputs":{"id":"dsx.this.id"},"body":"\n      const a = dsx.variable.rows.find(r =&gt; r.id == id)\n      if (a != null) { dsx.event('use', { text: a.title + ': ' + a.url }) }\n    "}],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{},"children":[{"tag":"ListGroup","attrs":{"header":"Help Articles","footer":"Tap one to add its link to your reply.","visible-if":"dsx.variable.rows.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.rows","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"2","tappable":"true","on:tap":"dsx.action.pick()"},"children":[],"text":"","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1}],"text":"\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.ReviewSubmission":{"name":"ReviewSubmission","scheme":"supportinbox","head":{"attributes":[{"as":"submissionId","default":"''"}],"apis":[],"expects":[],"events":[{"as":"filed","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"s","body":"return null","computed":false},{"as":"error","body":"return ''","computed":false},{"as":"filing","body":"return false","computed":false},{"as":"issueTitle","body":"return ''","computed":false},{"as":"issueNote","body":"return ''","computed":false},{"as":"has","body":"return dsx.variable.s != null","computed":true},{"as":"headline","body":"\n      if (!dsx.variable.has) { return '' }\n      const s = dsx.variable.s\n      return (s.store == 'play' ? 'Google Play' : 'App Store') + (s.version ? ' · ' + s.version + (s.buildNumber ? ' (' + s.buildNumber + ')' : '') : ' · submitted outside Despia')\n    ","computed":true},{"as":"role","body":"\n      if (!dsx.variable.has) { return 'info' }\n      const o = dsx.variable.s.outcome\n      return o == 'approved' ? 'success' : (o == 'rejected' ? 'danger' : (o == 'overturned' ? 'info' : 'warning'))\n    ","computed":true},{"as":"facts","body":"\n      if (!dsx.variable.has) { return [] }\n      const s = dsx.variable.s\n      const p = s.profile\n      const out = [\n        { id: 'submitted', title: 'Submitted', value: when(s.submittedAt) },\n        { id: 'decision', title: 'Time to a decision', value: s.hoursToDecision == null ? '' : Math.round(s.hoursToDecision) + ' h' },\n        { id: 'rejections', title: 'Rejections', value: s.rejections &gt; 0 ? String(s.rejections) : '' }\n      ]\n      if (p != null) {\n        out.push({ id: 'framework', title: 'Framework', value: (p.frameworkRef || 'Unknown') + (p.frameworkRefSource == 'build' ? '' : (p.frameworkRefSource == 'deployment' ? ' (deployment)' : '')) })\n        out.push({ id: 'fingerprint', title: 'Build', value: p.buildFingerprint || '' })\n      }\n      return out.filter(f => f.value != '')\n    ","computed":true},{"as":"carries","body":"\n      if (!dsx.variable.has || dsx.variable.s.profile == null) { return [] }\n      const m = dsx.variable.s.profile.manifest\n      return m.packages.map(p => ({ id: 'p' + p.name, icon: 'puzzlepiece.extension', title: p.name, value: p.version }))\n        .concat(m.entitlements.map(e => ({ id: 'e' + e, icon: 'key', title: e, value: 'Entitlement' })))\n        .concat(m.permissions.map(e => ({ id: 'm' + e, icon: 'hand.raised', title: e, value: 'Permission' })))\n    ","computed":true},{"as":"timeline","body":"\n      if (!dsx.variable.has) { return [] }\n      const words = { waiting_for_review: 'Waiting for review', in_review: 'In review', rejected: 'Rejected', approved: 'Approved', pending_release: 'Approved, waiting for release',\n                      releasing: 'Releasing', live: 'Live', replaced: 'Replaced', cancelled: 'Withdrawn', failed: 'Failed', uploaded: 'Uploaded', processing: 'Processing' }\n      const t = dsx.variable.s.timeline.slice().reverse()\n      return t.map((e, i) => ({ key: 't' + i, title: words[e.state] || e.state, detail: e.rawState, trailing: when(e.at),\n        state: e.state == 'rejected' || e.state == 'failed' ? 'failed' : (i == 0 ? 'current' : 'done') }))\n    ","computed":true},{"as":"assists","body":"\n      if (!dsx.variable.has) { return [] }\n      return dsx.variable.s.assists.map(a => ({\n        id: a.id, message: a.expired ? 'Deleted after 12 months.' : (a.reasonText || ''),\n        headline: a.answer == null ? 'Answer deleted after 12 months' : a.answer.headline,\n        summary: a.answer == null ? '' : a.answer.summary,\n        meta: [when(a.createdAt), a.provider == 'ai' ? 'AI (' + (a.model || '') + ')' : 'Rejection catalog', a.screenshots &gt; 0 ? a.screenshots + (a.screenshots == 1 ? ' screenshot' : ' screenshots') : '', a.userReported ? 'reported before the store said so' : ''].filter(x =&gt; x != '').join(' · '),\n        conversation: a.supportConversationId || ''\n      }))\n    ","computed":true},{"as":"assistRows","body":"\n      return dsx.variable.assists.flatMap(a => [\n        { id: a.id + '-m', icon: 'text.quote', title: a.message, subtitle: '', conversation: '' },\n        { id: a.id + '-a', icon: 'lightbulb', title: a.headline, subtitle: a.summary + (a.summary != '' ? '\\n' : '') + a.meta, conversation: '' }\n      ].concat(a.conversation != '' ? [{ id: a.id + '-c', icon: 'bubble.left.and.bubble.right', title: 'Open Conversation', subtitle: '', conversation: a.conversation }] : []))\n    ","computed":true},{"as":"issueKey","body":"\n      if (!dsx.variable.has) { return '' }\n      const s = dsx.variable.s\n      if (s.guidelines.length &gt; 0) { return 'guideline:' + s.guidelines[0] }\n      if (s.matched.length &gt; 0) { return 'reason:' + s.matched[0].id }\n      return 'submission:' + s.id\n    ","computed":true},{"as":"issueSuggestion","body":"\n      if (!dsx.variable.has) { return '' }\n      const s = dsx.variable.s\n      const why = s.guidelines.length &gt; 0 ? 'Guideline ' + s.guidelines[0] : (s.matched.length &gt; 0 ? s.matched[0].title : 'Rejection')\n      return why + (s.profile != null &amp;&amp; s.profile.frameworkRef ? ' on ' + s.profile.frameworkRef : '')\n    ","computed":true},{"as":"issueRows","body":"\n      if (!dsx.variable.has) { return [] }\n      const words = { open: 'Open', acknowledged: 'Acknowledged', fixed: 'Fixed', wontfix: 'Not fixing' }\n      return dsx.variable.s.issues.map(i => ({ id: i.id, title: i.title, subtitle: i.note, value: words[i.status] || i.status }))\n    ","computed":true}],"formulas":[],"actions":[{"as":"load","inputs":{},"body":"\n      if (dsx.attribute.submissionId == '') { dsx.variable.s = null; return }\n      const r = await dsx.module.supportdesk.reviewSubmission({ id: dsx.attribute.submissionId })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'Despia did not answer.'; return }\n      dsx.variable.error = ''\n      dsx.variable.filing = false\n      dsx.variable.s = r.data.submission\n    "},{"as":"startFiling","inputs":{},"body":"\n      dsx.variable.issueTitle = dsx.variable.issueSuggestion\n      dsx.variable.issueNote = ''\n      dsx.variable.filing = true\n    "},{"as":"file","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.reviewIssue({ key: dsx.variable.issueKey, title: dsx.variable.issueTitle, note: dsx.variable.issueNote, submissionIds: [dsx.variable.s.id] })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      dsx.module.toast.show({ title: r.data.created ? 'Framework issue filed' : 'Added to the open issue', message: r.data.issue.title })\n      dsx.event('filed')\n      await dsx.action.load()\n    "},{"as":"openConversation","inputs":{"id":"dsx.this.conversation"},"body":"\n      if (id != '') { dsx.module.route.push({ path: '/c/' + id }) }\n    "}],"watches":[{"value":"dsx.attribute.submissionId","handler":"dsx.action.load()","immediate":true}],"scripts":["\n      function when(at) { return at ? new Date(at).toLocaleString('en-US', { month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' }) : '' }\n    "],"globalScripts":[]},"root":{"tag":"stack","attrs":{},"children":[{"tag":"Callout","attrs":{"tone":"warning","title":"Something went wrong","message":"{{ dsx.variable.error }}","visible-if":"dsx.variable.error != ''"},"children":[],"text":"","reactive":true,"nid":1},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"icon":"{{ dsx.variable.s.store == 'play' ? 'google.play.logo' : 'apple.logo' }}","title":"{{ dsx.variable.s.appName }}","subtitle":"{{ dsx.variable.headline }}"},"children":[{"tag":"chip","attrs":{"label":"{{ dsx.variable.s.outcomeLabel }}","role":"{{ dsx.variable.role }}"},"children":[],"text":"","reactive":true,"nid":4}],"text":"\n      \n    ","reactive":true,"nid":3},{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.facts","key":"id","title":"{{ dsx.this.title }}","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":5}],"text":"\n    \n    \n  ","reactive":true,"nid":2},{"tag":"ListGroup","attrs":{"header":"Rejection Assist","footer":"What the customer pasted and what Despia answered.","visible-if":"dsx.variable.assists.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.assistRows","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","lines":"12","tone":"{{ dsx.this.conversation != '' ? 'accent' : '' }}","chevron":"{{ dsx.this.conversation != '' }}","tappable":"{{ dsx.this.conversation != '' }}","on:tap":"dsx.action.openConversation()"},"children":[],"text":"","reactive":true,"nid":7}],"text":"\n    \n  ","reactive":true,"nid":6},{"tag":"ListGroup","attrs":{"header":"History","visible-if":"dsx.variable.timeline.length > 0"},"children":[{"tag":"Timeline","attrs":{"bind":"{{ dsx.variable.timeline }}","a11yLabel":"Store history"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n    \n  ","reactive":true,"nid":8},{"tag":"ListGroup","attrs":{"header":"What the build carries","footer":"From the deployment profile: names only, never app content.","visible-if":"dsx.variable.carries.length > 0"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.carries","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":11}],"text":"\n    \n  ","reactive":true,"nid":10},{"tag":"ListGroup","attrs":{"header":"Framework issues","footer":"When a rejection is Despia's to fix, file it here. One open issue per reason; marking another submission adds it.","visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.issueRows","key":"id","icon":"ladybug","title":"{{ dsx.this.title }}","subtitle":"{{ dsx.this.subtitle }}","value":"{{ dsx.this.value }}","lines":"2"},"children":[],"text":"","reactive":true,"nid":13},{"tag":"SettingsRow","attrs":{"icon":"flag","title":"Mark as Framework Issue","tone":"accent","tappable":"true","visible-if":"!dsx.variable.filing","on:tap":"dsx.action.startFiling()"},"children":[],"text":"","reactive":true,"nid":14}],"text":"\n    \n    \n  ","reactive":true,"nid":12},{"tag":"ListGroup","attrs":{"header":"New framework issue","visible-if":"dsx.variable.filing"},"children":[{"tag":"SettingsRow","attrs":{"title":"Title"},"children":[{"tag":"textfield","attrs":{"bind":"dsx.variable.issueTitle","aria-label":"Issue title"},"children":[],"text":"","reactive":true,"nid":17}],"text":"","reactive":true,"nid":16},{"tag":"textarea","attrs":{"bind":"dsx.variable.issueNote","placeholder":"What Despia should change, and why","minLines":"3","maxLines":"8","aria-label":"Note"},"children":[],"text":"","reactive":true,"nid":18},{"tag":"SettingsRow","attrs":{"icon":"checkmark.circle","title":"{{ dsx.action.file.pending ? 'Filing…' : 'File Issue' }}","tone":"accent","tappable":"{{ dsx.variable.issueTitle.trim() == '' ? 'false' : 'true' }}","on:tap":"dsx.action.file()"},"children":[],"text":"","reactive":true,"nid":19},{"tag":"SettingsRow","attrs":{"icon":"xmark.circle","title":"Cancel","tappable":"true","on:tap":"dsx.variable.filing = false"},"children":[],"text":"","reactive":true,"nid":20}],"text":"\n    \n    \n    \n    \n  ","reactive":true,"nid":15}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"supportinbox.WaveDetail":{"name":"WaveDetail","scheme":"supportinbox","head":{"attributes":[{"as":"wave","default":"null"}],"apis":[],"expects":[],"events":[{"as":"changed","payload":[]},{"as":"people","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"error","body":"return ''","computed":false},{"as":"asking","body":"return false","computed":false},{"as":"w","body":"return dsx.attribute.wave","computed":true},{"as":"has","body":"return dsx.variable.w != null","computed":true},{"as":"isDraft","body":"return dsx.variable.has &amp;&amp; dsx.variable.w.state == 'draft'","computed":true},{"as":"canOpen","body":"return dsx.variable.isDraft &amp;&amp; !dsx.variable.w.paused","computed":true},{"as":"canExport","body":"return dsx.variable.has &amp;&amp; dsx.variable.w.state == 'open'","computed":true},{"as":"statusLabel","body":"\n      if (!dsx.variable.has) { return '' }\n      return { draft: 'Draft', open: 'Open', exported: 'Exported', paused: 'Paused' }[dsx.variable.w.status] || 'Draft'\n    ","computed":true},{"as":"rows","body":"\n      if (!dsx.variable.has) { return [] }\n      const w = dsx.variable.w\n      return [\n        { id: 'status', icon: 'circle.dashed', title: 'Status', value: dsx.variable.statusLabel, show: true },\n        { id: 'members', icon: 'person.2', title: 'People', value: String(w.members), show: true },\n        { id: 'opened', icon: 'lock.open', title: 'Opened', value: day(w.openedAt), show: w.openedAt != null },\n        { id: 'exported', icon: 'square.and.arrow.down', title: 'List exported', value: day(w.exportedAt), show: w.exportedAt != null },\n        { id: 'signed', icon: 'person.crop.circle.badge.checkmark', title: 'Signed in to V4', value: String(w.signedIn), show: true },\n        { id: 'moved', icon: 'arrow.right', title: 'Apps moved', value: String(w.moved), show: true }\n      ].filter(r =&gt; r.show)\n    ","computed":true},{"as":"footer","body":"\n      if (!dsx.variable.has) { return '' }\n      if (dsx.variable.w.paused) { return 'Paused: its people are not invited and Move to V4 refuses for them until you resume.' }\n      if (dsx.variable.isDraft) { return 'Opening invites its people: Move to V4 is offered to them. Nobody is emailed.' }\n      return 'Despia never emails customers. Export the list and write to them yourself.'\n    ","computed":true},{"as":"askButtons","body":"return [{ title: 'Open', action: 'supportdesk.pick', args: { ask: 'wave-open', value: dsx.variable.has ? dsx.variable.w.id : '' } }, { title: 'Cancel', role: 'cancel' }]","computed":true}],"formulas":[],"actions":[{"as":"open","inputs":{},"body":"\n      dsx.variable.asking = false\n      const r = await dsx.module.supportdesk.migrationOpenWave({ id: dsx.variable.w.id })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      dsx.variable.error = ''\n      dsx.event('changed')\n    "},{"as":"exportList","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.migrationExportWave({ id: dsx.variable.w.id })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      dsx.variable.error = ''\n      dsx.module.toast.show({ title: 'List exported', message: r.data.count + (r.data.count == 1 ? ' person in ' : ' people in ') + r.data.filename })\n      dsx.event('changed')\n    "},{"as":"togglePause","inputs":{},"body":"\n      const r = await dsx.module.supportdesk.migrationPauseWave({ id: dsx.variable.w.id, paused: !dsx.variable.w.paused })\n      if (!r.ok) { dsx.variable.error = r.message ? r.message : 'That did not work.'; return }\n      dsx.variable.error = ''\n      dsx.event('changed')\n    "},{"as":"onPicked","inputs":{},"body":"\n      const k = dsx.module.supportdesk.context.picked\n      if (k == null || k.ask != 'wave-open' || !dsx.variable.has || k.value != dsx.variable.w.id) { return }\n      await dsx.action.open()\n    "}],"watches":[{"value":"dsx.module.supportdesk.context.picked","handler":"dsx.action.onPicked()"}],"scripts":["\n      function day(at) { return at ? new Date(at).toLocaleString('en-US', { month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' }) : '' }\n    "],"globalScripts":[]},"root":{"tag":"stack","attrs":{},"children":[{"tag":"ListGroup","attrs":{"footer":"{{ dsx.variable.footer }}","visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"repeat":"dsx.variable.rows","key":"id","icon":"{{ dsx.this.icon }}","title":"{{ dsx.this.title }}","value":"{{ dsx.this.value }}"},"children":[],"text":"","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.error != ''"},"children":[{"tag":"SettingsRow","attrs":{"icon":"exclamationmark.triangle","title":"{{ dsx.variable.error }}","lines":"3"},"children":[],"text":"","reactive":true,"nid":4}],"text":"\n    \n  ","reactive":true,"nid":3},{"tag":"ListGroup","attrs":{"visible-if":"dsx.variable.has"},"children":[{"tag":"SettingsRow","attrs":{"icon":"lock.open","title":"{{ dsx.action.open.pending ? 'Opening…' : 'Open Wave' }}","subtitle":"Invites its people. Sends nothing.","tone":"accent","tappable":"{{ dsx.action.open.pending ? 'false' : 'true' }}","visible-if":"dsx.variable.canOpen","on:tap":"dsx.variable.asking = true"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"SettingsRow","attrs":{"icon":"square.and.arrow.down","title":"{{ dsx.action.exportList.pending ? 'Exporting…' : 'Export CSV' }}","subtitle":"Email, name and V3 apps, for you to write to them","tone":"accent","tappable":"{{ dsx.action.exportList.pending ? 'false' : 'true' }}","visible-if":"dsx.variable.canExport","on:tap":"dsx.action.exportList()"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"SettingsRow","attrs":{"icon":"{{ dsx.variable.w.paused ? 'play.circle' : 'pause.circle' }}","title":"{{ dsx.variable.w.paused ? 'Resume Wave' : 'Pause Wave' }}","subtitle":"{{ dsx.variable.w.paused ? '' : 'Closes it: its people are no longer invited' }}","tappable":"true","visible-if":"!dsx.variable.isDraft || dsx.variable.w.paused","on:tap":"dsx.action.togglePause()"},"children":[],"text":"","reactive":true,"nid":8},{"tag":"SettingsRow","attrs":{"icon":"person.2","title":"Show Its People","chevron":"true","tappable":"true","on:tap":"dsx.event('people')"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n    \n    \n    \n    \n  ","reactive":true,"nid":5},{"tag":"alert","attrs":{"present":"dsx.variable.asking","title":"Open this wave?","message":"{{ dsx.variable.has ? dsx.variable.w.members + ' people are invited: Move to V4 is offered to them. Despia emails nobody; export the list to write to them yourself.' : '' }}","buttons":"dsx.variable.askButtons","on:dismiss":"dsx.variable.asking = false"},"children":[],"text":"","reactive":true,"nid":10}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Answer":{"name":"Answer","scheme":"foundation","head":{"attributes":[{"as":"text"},{"as":"streaming","default":"'false'"},{"as":"a11yLabel","default":"'Answer'"},{"as":"followUps"},{"as":"followUpsLabel","default":"'Ask next'"}],"apis":[],"expects":[],"events":[{"as":"followUp","payload":["text"]}],"inputs":[],"tools":[],"variables":[],"formulas":[{"as":"busy","inputs":{},"body":"return dsx.attribute.streaming === true || dsx.attribute.streaming == 'true'"},{"as":"next","inputs":{},"body":"\n      const raw = dsx.attribute.followUps\n      let list = []\n      if (Array.isArray(raw)) { list = raw }\n      else if (raw != null && String(raw).trim().startsWith('[')) { list = JSON.parse(raw) || [] }\n      return list.map((f, i) => ({ key: 'f' + i, text: typeof f === 'object' ? String(f.text == null ? '' : f.text) : String(f) }))\n    "}],"actions":[],"watches":[],"scripts":[],"globalScripts":[],"sheets":[".dsx-answer-next { opacity: 1; transform: translateY(0px); transition: opacity 220ms ease-out, transform 220ms ease-out }\n      @starting-style {\n        .dsx-answer-next { opacity: 0; transform: translateY(4px) }\n      }"]},"root":{"tag":"stack","attrs":{"class":"dsx-answer","__css":"c5"},"children":[{"tag":"markdown","attrs":{"value":"{{ dsx.attribute.text }}","streaming":"{{ dsx.formula.busy }}","__css":"c6"},"children":[],"text":"","reactive":true,"nid":1},{"tag":"ThinkingOrb","attrs":{"visible-if":"{{ dsx.formula.busy }}","label":"Writing"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":3},{"tag":"vstack","attrs":{"class":"dsx-answer-next","visible-if":"{{ !dsx.formula.busy && dsx.formula.next.length > 0 }}","a11yLabel":"{{ dsx.attribute.followUpsLabel }}","__css":"c7"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.attribute.followUpsLabel }}","__css":"c8"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"pressable","attrs":{"repeat":"dsx.formula.next","key":"key","a11yLabel":"{{ dsx.this.text }}","a11yTrait":"button","on:tap":"dsx.event('followUp', { text: dsx.this.text })","__css":"c9"},"children":[{"tag":"hstack","attrs":{"a11yHidden":"true","__steers":"1","__css":"c10"},"children":[{"tag":"image","attrs":{"icon":"arrow.down.right","__inkAuthored":"true","__fontSize":"12px","__css":"c11"},"children":[],"text":"","reactive":false,"nid":8},{"tag":"text","attrs":{"value":"{{ dsx.this.text }}","__css":"c12"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n        \n        \n      ","reactive":true,"nid":7}],"text":"\n      \n    ","reactive":true,"nid":6}],"text":"\n    \n    \n  ","reactive":true,"nid":4}],"text":"\n  \n\n  \n  \n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Attachment":{"name":"Attachment","scheme":"foundation","head":{"attributes":[{"as":"name"},{"as":"size"},{"as":"removable","default":"'true'"},{"as":"icon"}],"apis":[],"expects":[],"events":[{"as":"tap","payload":[]},{"as":"remove","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"attachmentKind","body":"\n      const name = String(dsx.attribute.name == null ? '' : dsx.attribute.name)\n      const ext = name.includes('.') ? name.split('.').pop().toLowerCase() : ''\n      const authored = String(dsx.attribute.icon == null ? '' : dsx.attribute.icon).trim()\n      if (authored != '') { return authored }\n      if (['png', 'jpg', 'jpeg', 'gif', 'webp', 'heic'].includes(ext)) { return 'photo' }\n      if (['mp4', 'mov', 'm4v', 'webm'].includes(ext)) { return 'film' }\n      if (['mp3', 'wav', 'm4a', 'aac'].includes(ext)) { return 'waveform' }\n      if (['zip', 'gz', 'tar'].includes(ext)) { return 'shippingbox' }\n      if (ext == 'pdf') { return 'doc.richtext' }\n      return 'doc'\n    ","computed":true},{"as":"attachmentSize","body":"\n      const bytes = Number(dsx.attribute.size)\n      if (!Number.isFinite(bytes) || bytes <= 0) { return '' }\n      if (bytes < 1024) { return bytes + ' B' }\n      if (bytes < 1048576) { return Math.round(bytes / 1024) + ' KB' }\n      if (bytes < 1073741824) { return (Math.round(bytes / 104857.6) / 10) + ' MB' }\n      return (Math.round(bytes / 107374182.4) / 10) + ' GB'\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"pressable","attrs":{"class":"dsx-attachment","a11yLabel":"{{ dsx.attribute.name }}","on:tap":"dsx.event('tap')","__background":"var(--dsx-fill)","__row":"1","__steers":"1","__css":"c42"},"children":[{"tag":"image","attrs":{"icon":"{{ dsx.variable.attachmentKind }}","__inkAuthored":"true","__fontSize":"18px","__css":"c43"},"children":[],"text":"","reactive":true},{"tag":"vstack","attrs":{"__steers":"1","__css":"c44"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.attribute.name }}","type":"footnote","lineLimit":"1","__css":"c45"},"children":[],"text":"","reactive":true},{"tag":"text","attrs":{"visible-if":"dsx.variable.attachmentSize","value":"{{ dsx.variable.attachmentSize }}","type":"caption2","__css":"c39"},"children":[],"text":"","reactive":true}],"text":"\n    \n    \n  ","reactive":true},{"tag":"spacer","attrs":{},"children":[],"text":"","reactive":false},{"tag":"button","attrs":{"visible-if":"dsx.attribute.removable == 'true'","icon":"xmark","a11yLabel":"Remove {{ dsx.attribute.name }}","on:tap":"dsx.event('remove')"},"children":[],"text":"","reactive":true}],"text":"\n  \n\n  \n  \n  \n  \n","reactive":true},"reactive":true,"language":"0"},"foundation.AudioLevel":{"name":"AudioLevel","scheme":"foundation","head":{"attributes":[{"as":"level","default":"0","type":"number"},{"as":"bars","default":"5","type":"number"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"audioLevelValue","body":"\n      const raw = Number(dsx.attribute.level)\n      if (!Number.isFinite(raw)) { return 0 }\n      return Math.max(0, Math.min(1, raw))\n    ","computed":true},{"as":"audioLevelBars","body":"\n      const requested = Number(dsx.attribute.bars)\n      const n = Number.isFinite(requested) ? Math.max(3, Math.min(24, Math.round(requested))) : 5\n      const level = dsx.variable.audioLevelValue\n      const centre = (n - 1) / 2\n      const rows = []\n      for (let i = 0; i < n; i++) {\n        const distance = centre == 0 ? 0 : Math.abs(i - centre) / centre\n        const weight = 1 - distance * 0.72\n        const scale = 0.18 + 0.82 * level * weight\n        rows.push({ id: 'b' + i, scale: Math.round(scale * 10000) / 10000 })\n      }\n      return rows\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"hstack","attrs":{"class":"dsx-audio-level","a11yHidden":"true","__steers":"1","__css":"c46"},"children":[{"tag":"list","attrs":{"bind":"dsx.variable.audioLevelBars","key":"id","axis":"horizontal","scroll":"false","__steers":"1","__css":"c47"},"children":[{"tag":"stack","attrs":{"class":"dsx-audio-level-bar","__style_reactive":"height:calc(var(--dsx-audio-level-height, 24px) * {{ dsx.this.scale }});min-height:calc(var(--dsx-audio-level-height, 24px) * {{ dsx.this.scale }})","__css":"c48"},"children":[],"text":"","reactive":true}],"text":"\n    \n  ","reactive":true}],"text":"\n  \n\n  \n","reactive":true},"reactive":true,"language":"0"},"foundation.Avatar":{"name":"Avatar","scheme":"foundation","head":{"attributes":[{"as":"src"},{"as":"initials"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-avatar","a11yGroup":"true","__display":"grid","__steers":"1","__style_reactive":"--dsx-rx-background:{{ dsx.attribute.src ? 'transparent' : 'var(--dsx-avatar-background, var(--dsx-accent))' }}","__css":"c67"},"children":[{"tag":"image","attrs":{"visible-if":"dsx.attribute.src","src":"{{ dsx.attribute.src }}","contentFit":"fill","__css":"c68"},"children":[],"text":"","reactive":true},{"tag":"stack","attrs":{"visible-if":"!dsx.attribute.src","__display":"grid","__steers":"1","__css":"c69"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.attribute.initials }}","__css":"c70"},"children":[],"text":"","reactive":true}],"text":"\n    \n  ","reactive":true},{"tag":"stack","attrs":{"class":"dsx-avatar-status","__css":"c71"},"children":[],"text":"","reactive":false}],"text":"\n  \n\n  \n  \n  \n","reactive":true},"reactive":true,"language":"0"},"foundation.Breadcrumbs":{"name":"Breadcrumbs","scheme":"foundation","head":{"attributes":[{"as":"items"},{"as":"separator","default":"'chevron.right'"},{"as":"a11yLabel"}],"apis":[],"expects":[],"events":[{"as":"select","payload":["index","title"]}],"inputs":[],"tools":[],"variables":[{"as":"crumbs","body":"\n      let raw = dsx.nav.trail\n      if (Array.isArray(dsx.attribute.items)) { raw = dsx.attribute.items }\n      else if (dsx.attribute.items != null &amp;&amp; String(dsx.attribute.items).trim().startsWith('[')) { raw = JSON.parse(dsx.attribute.items) || [] }\n      if (!Array.isArray(raw)) { return [] }\n      let at = raw.length - 1\n      for (let i = 0; i &lt; raw.length; i++) { if (raw[i] != null &amp;&amp; raw[i].current === true) { at = i } }\n      const out = []\n      for (let i = 0; i &lt;= at; i++) {\n        const r = raw[i] == null ? {} : raw[i]\n        out.push({ key: 'c' + i, index: i, title: String(r.title == null ? '' : r.title), href: r.href == null ? '' : String(r.href),\n                   icon: r.icon == null ? '' : String(r.icon), current: i == at, more: false })\n      }\n      return out\n    ","computed":true},{"as":"crumbsShown","body":"\n      const c = dsx.variable.crumbs\n      if (c.length &lt; 2) { return [] }\n      if (c.length &lt;= 4) { return c }\n      return [c[0], { key: 'more', index: -1, title: '', href: '', icon: '', current: false, more: true }].concat(c.slice(c.length - 3))\n    ","computed":true},{"as":"crumbsFolded","body":"\n      const c = dsx.variable.crumbs\n      if (c.length &lt;= 4) { return [] }\n      return c.slice(1, c.length - 3).map(r => ({ title: r.title, href: r.href, icon: r.icon }))\n    ","computed":true}],"formulas":[],"actions":[{"as":"choose","inputs":{"index":"dsx.this.index","title":"dsx.this.title"},"body":"\n      dsx.event('select', { index: index, title: title })\n    "}],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-breadcrumbs","role":"navigation","aria-label":"{{ dsx.attribute.a11yLabel || localize('Breadcrumb') }}","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-breadcrumbs-list","role":"list","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"repeat":"dsx.variable.crumbsShown","key":"key","role":"listitem","class":"dsx-breadcrumbs-item","__row":"1","__steers":"1"},"children":[{"tag":"image","attrs":{"visible-if":"dsx.this.key != 'c0'","class":"dsx-breadcrumbs-separator","a11yHidden":"true","icon":"{{ dsx.attribute.separator || 'chevron.right' }}"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"menu","attrs":{"visible-if":"dsx.this.more","menu":"dsx.variable.crumbsFolded"},"children":[{"tag":"button","attrs":{"class":"dsx-breadcrumbs-more","icon":"ellipsis","aria-label":"{{ localize('More pages') + ' (' + dsx.variable.crumbsFolded.length + ')' }}","__row":"1","__steers":"1"},"children":[],"text":"","reactive":true,"nid":5}],"text":"\n        \n      ","reactive":true,"nid":4},{"tag":"pressable","attrs":{"visible-if":"!dsx.this.more && !dsx.this.current && dsx.this.href != ''","class":"dsx-breadcrumbs-link","href":"{{ dsx.this.href }}","__row":"1","__steers":"1"},"children":[{"tag":"image","attrs":{"visible-if":"dsx.this.icon != ''","class":"dsx-breadcrumbs-icon","icon":"{{ dsx.this.icon }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"text","attrs":{"class":"dsx-breadcrumbs-title","value":"{{ dsx.this.title }}","lineLimit":"1"},"children":[],"text":"","reactive":true,"nid":8}],"text":"\n        \n        \n      ","reactive":true,"nid":6},{"tag":"pressable","attrs":{"visible-if":"!dsx.this.more && !dsx.this.current && dsx.this.href == ''","class":"dsx-breadcrumbs-link","role":"button","on:tap":"dsx.action.choose()","__row":"1","__steers":"1"},"children":[{"tag":"image","attrs":{"visible-if":"dsx.this.icon != ''","class":"dsx-breadcrumbs-icon","icon":"{{ dsx.this.icon }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":10},{"tag":"text","attrs":{"class":"dsx-breadcrumbs-title","value":"{{ dsx.this.title }}","lineLimit":"1"},"children":[],"text":"","reactive":true,"nid":11}],"text":"\n        \n        \n      ","reactive":true,"nid":9},{"tag":"stack","attrs":{"visible-if":"dsx.this.current","class":"dsx-breadcrumbs-current","aria-current":"page","__row":"1","__steers":"1"},"children":[{"tag":"image","attrs":{"visible-if":"dsx.this.icon != ''","class":"dsx-breadcrumbs-icon","icon":"{{ dsx.this.icon }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":13},{"tag":"text","attrs":{"class":"dsx-breadcrumbs-title","value":"{{ dsx.this.title }}","lineLimit":"1"},"children":[],"text":"","reactive":true,"nid":14}],"text":"\n        \n        \n      ","reactive":true,"nid":12}],"text":"\n      \n      \n      \n      \n      \n    ","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1}],"text":"\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Callout":{"name":"Callout","scheme":"foundation","head":{"attributes":[{"as":"title"},{"as":"icon"},{"as":"tone","type":"'info' | 'success' | 'warning' | 'error' | 'danger' | 'note' | 'tip' | 'important' | 'caution'"},{"as":"message"},{"as":"action"},{"as":"dismissible"},{"as":"variant"},{"as":"dismissLabel"},{"as":"more"},{"as":"moreLabel"},{"as":"moreTitle"}],"apis":[],"expects":[],"events":[{"as":"action","payload":[]},{"as":"dismiss","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"dismissed","body":"return false","computed":false},{"as":"moreOpen","body":"return false","computed":false},{"as":"moreText","body":"return dsx.attribute.moreLabel ? String(dsx.attribute.moreLabel) : localize('Read more')","computed":true},{"as":"moreSheetTitle","body":"return dsx.attribute.moreTitle ? String(dsx.attribute.moreTitle) : dsx.variable.calloutTitle","computed":true},{"as":"moreName","body":"return dsx.variable.moreSheetTitle ? dsx.variable.moreText + ': ' + dsx.variable.moreSheetTitle : dsx.variable.moreText","computed":true},{"as":"calloutKind","body":"\n      const kinds = { info: 'info', note: 'info', important: 'info', success: 'success', tip: 'success', warning: 'warning', error: 'error', danger: 'error', caution: 'error' }\n      return kinds[String(dsx.attribute.tone)] || 'none'\n    ","computed":true},{"as":"calloutMarkdownTone","body":"\n      return ['note', 'tip', 'important', 'warning', 'caution'].includes(String(dsx.attribute.tone))\n    ","computed":true},{"as":"calloutTitle","body":"\n      const t = String(dsx.attribute.title == null ? '' : dsx.attribute.title)\n      if (t != '' || !dsx.variable.calloutMarkdownTone) { return t }\n      const names = { note: 'Note', tip: 'Tip', important: 'Important', warning: 'Warning', caution: 'Caution' }\n      return localize(names[String(dsx.attribute.tone)])\n    ","computed":true},{"as":"calloutIcon","body":"\n      const i = String(dsx.attribute.icon == null ? '' : dsx.attribute.icon)\n      if (i != '') { return i }\n      const symbols = { note: 'info.circle', important: 'exclamationmark.circle', tip: 'lightbulb', caution: 'xmark.circle',\n                        info: 'info.circle', success: 'checkmark.circle', warning: 'exclamationmark.triangle', error: 'xmark.circle', danger: 'xmark.circle' }\n      return symbols[String(dsx.attribute.tone)] || ''\n    ","computed":true},{"as":"calloutSay","body":"\n      const words = { info: '', success: localize('Success'), warning: localize('Warning'), error: localize('Error') }\n      const w = words[dsx.variable.calloutKind] || ''\n      const parts = [w, dsx.variable.calloutTitle, String(dsx.attribute.message == null ? '' : dsx.attribute.message)].filter(p => p != '')\n      return parts.join('. ')\n    ","computed":true},{"as":"calloutDismissible","body":"return dsx.attribute.dismissible === true || dsx.attribute.dismissible === 'true'","computed":true}],"formulas":[],"actions":[{"as":"close","inputs":{},"body":"\n      dsx.variable.dismissed = true\n      dsx.event('dismiss')\n    "}],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-callout dsx-callout-tone-{{ dsx.attribute.tone || 'none' }} dsx-callout-is-{{ dsx.variable.calloutKind }}{{ dsx.variable.calloutDismissible ? ' dsx-callout-dismissible' : '' }}{{ dsx.variable.dismissed ? ' dsx-callout-dismissed' : '' }}{{ dsx.attribute.variant == 'compact' ? ' dsx-callout-compact' : '' }}{{ dsx.variable.calloutTitle != '' && dsx.attribute.message ? ' dsx-callout-titled' : '' }}","role":"{{ dsx.variable.calloutKind == 'error' ? 'alert' : 'status' }}","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-callout-row","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-callout-accent-bar","a11yHidden":"true"},"children":[],"text":"","reactive":false,"nid":2},{"tag":"image","attrs":{"class":"dsx-callout-icon","visible-if":"dsx.variable.calloutIcon","icon":"{{ dsx.variable.calloutIcon }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"stack","attrs":{"class":"dsx-callout-body dsx-callout-body-{{ dsx.variable.calloutMarkdownTone ? 'blocks' : 'inline' }}","a11yLabel":"{{ dsx.variable.calloutSay }}","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-callout-title","visible-if":"dsx.variable.calloutTitle","value":"{{ dsx.variable.calloutTitle }}"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"text","attrs":{"class":"dsx-callout-message","visible-if":"dsx.attribute.message","value":"{{ dsx.attribute.message }}"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":7},{"tag":"button","attrs":{"class":"dsx-callout-action","visible-if":"dsx.attribute.action","variant":"plain","label":"{{ dsx.attribute.action }}","on:tap":"dsx.event('action')"},"children":[],"text":"","reactive":true,"nid":8},{"tag":"button","attrs":{"class":"dsx-callout-action dsx-callout-more","visible-if":"dsx.attribute.more","variant":"plain","label":"{{ dsx.variable.moreText }}","a11yLabel":"{{ dsx.variable.moreName }}","aria-expanded":"{{ dsx.variable.moreOpen }}","on:tap":"dsx.variable.moreOpen = true"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n      \n      \n      \n      \n      \n    ","reactive":true,"nid":4}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":1},{"tag":"sheet","attrs":{"class":"dsx-callout-sheet","visible-if":"dsx.attribute.more","detents":"large","present":"dsx.variable.moreOpen","title":"{{ dsx.variable.moreSheetTitle }}","close":"none","action":"Done","on:action":"dsx.variable.moreOpen = false","on:dismiss":"dsx.variable.moreOpen = false"},"children":[{"tag":"stack","attrs":{"class":"dsx-callout-article"},"children":[{"tag":"markdown","attrs":{"copyCode":"true","externalLinks":"true","value":"{{ dsx.attribute.more || '' }}"},"children":[],"text":"","reactive":true,"nid":12}],"text":"\n      \n    ","reactive":true,"nid":11}],"text":"\n    \n  ","reactive":true,"nid":10},{"tag":"button","attrs":{"class":"dsx-callout-close","visible-if":"dsx.variable.calloutDismissible","variant":"plain","icon":"xmark","label":"","a11yLabel":"{{ dsx.attribute.dismissLabel || localize('Close') }}","on:tap":"dsx.action.close()"},"children":[],"text":"","reactive":true,"nid":13}],"text":"\n  \n\n  \n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Card":{"name":"Card","scheme":"foundation","head":{"attributes":[{"as":"title"},{"as":"href","type":"url"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-card","__background":"var(--dsx-card-background, var(--dsx-list-cell, var(--dsx-secondary-grouped-background)))","__css":"c86"},"children":[{"tag":"text","attrs":{"class":"dsx-card-title","visible-if":"dsx.attribute.title && !dsx.attribute.href","value":"{{ dsx.attribute.title }}","a11yTrait":"header"},"children":[],"text":"","reactive":true,"nid":1},{"tag":"pressable","attrs":{"class":"dsx-card-link","visible-if":"dsx.attribute.href","href":"{{ dsx.attribute.href }}","role":"link","a11yLabel":"{{ dsx.attribute.title || dsx.attribute.href }}","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-card-title dsx-card-link-title","value":"{{ dsx.attribute.title || dsx.attribute.href }}","lineLimit":"2"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"image","attrs":{"class":"dsx-card-link-chevron","icon":"chevron.forward","a11yHidden":"true","__fontSize":"13px","__css":"c87"},"children":[],"text":"","reactive":false,"nid":4}],"text":"\n    \n    \n  ","reactive":true,"nid":2},{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":5}],"text":"\n  \n  \n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Chip":{"name":"Chip","scheme":"foundation","head":{"attributes":[{"as":"label"},{"as":"icon"},{"as":"selected"}],"apis":[],"expects":[],"events":[{"as":"tap","payload":[]}],"inputs":[],"tools":[],"variables":[],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"pressable","attrs":{"class":"dsx-chip","on:tap":"dsx.event('tap')","a11yTrait":"{{ (dsx.attribute.selected == 'true' || dsx.attribute.selected == '1') ? 'button,selected' : 'button' }}","a11yPressed":"{{ dsx.attribute.selected == 'true' || dsx.attribute.selected == '1' }}","__style_reactive":"--dsx-rx-color:{{ (dsx.attribute.selected == 'true' || dsx.attribute.selected == '1') ? 'var(--dsx-chip-selected-color, var(--dsx-on-accent))' : 'var(--dsx-label)' }}","__css":"c88"},"children":[{"tag":"stack","attrs":{"a11yGroup":"true","__flexDirection":"row","__steers":"1","__style_reactive":"--dsx-rx-background:{{ (dsx.attribute.selected == 'true' || dsx.attribute.selected == '1') ? 'var(--dsx-chip-selected-background, var(--dsx-accent))' : 'var(--dsx-fill)' }}","__css":"c89"},"children":[{"tag":"image","attrs":{"visible-if":"dsx.attribute.icon","icon":"{{ dsx.attribute.icon }}","__fontSize":"13px","__css":"c87"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"text","attrs":{"value":"{{ dsx.attribute.label }}","lineLimit":"1","__css":"c90"},"children":[],"text":"","reactive":true,"nid":3}],"text":"\n    \n    \n  ","reactive":true,"nid":1}],"text":"\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.CodeBlock":{"name":"CodeBlock","scheme":"foundation","head":{"attributes":[{"as":"value"},{"as":"language"},{"as":"filename"},{"as":"copy","default":"true","type":"bool"},{"as":"lineNumbers","default":"false","type":"bool"},{"as":"startLine","default":"1"},{"as":"highlight"},{"as":"collapseAfter","default":"12"},{"as":"drawer","default":"true","type":"bool"},{"as":"errors"},{"as":"follow","default":"false","type":"bool"},{"as":"files"}],"apis":[],"expects":[],"events":[{"as":"copy","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"codeFoldAt","body":"\n      const keep = Number(dsx.attribute.collapseAfter == null ? 12 : dsx.attribute.collapseAfter)\n      const lines = String(dsx.attribute.value == null ? '' : dsx.attribute.value).replace(/\\n$/, '').split('\\n').length\n      return keep &gt; 0 &amp;&amp; lines &gt; keep + 4 ? keep : 0\n    ","computed":false},{"as":"codeOpen","body":"return false","computed":false},{"as":"codeTab","body":"return 0","computed":false},{"as":"codeCopied","body":"return false","computed":false},{"as":"codeDrawer","body":"return false","computed":false},{"as":"codeWrap","body":"return false","computed":false},{"as":"codeCopyable","body":"\n      const c = String(dsx.attribute.copy)\n      return c !== 'false' &amp;&amp; c !== '0'\n    ","computed":true},{"as":"codeHasDrawer","body":"\n      const d = String(dsx.attribute.drawer)\n      return d !== 'false' &amp;&amp; d !== '0'\n    ","computed":true},{"as":"codeGutter","body":"\n      const g = String(dsx.attribute.lineNumbers)\n      return g === 'true' || g === '1'\n    ","computed":true},{"as":"codeFiles","body":"\n      const f = dsx.attribute.files\n      return Array.isArray(f) ? f.filter(x => x != null).map((x, i) => ({ id: i, name: String(x.name || x.language || 'File ' + (i + 1)), language: String(x.language || ''), value: String(x.value == null ? '' : x.value) })) : []\n    ","computed":true},{"as":"codeFile","body":"\n      const files = dsx.variable.codeFiles\n      if (files.length == 0) { return { name: String(dsx.attribute.filename == null ? '' : dsx.attribute.filename), language: String(dsx.attribute.language == null ? '' : dsx.attribute.language), value: String(dsx.attribute.value == null ? '' : dsx.attribute.value) } }\n      return files[Math.min(Math.max(0, dsx.variable.codeTab), files.length - 1)]\n    ","computed":true},{"as":"codeSource","body":"\n      return dsx.variable.codeFile.value.replace(/\\n$/, '')\n    ","computed":true},{"as":"codeLabel","body":"\n      const f = dsx.variable.codeFile.name.trim()\n      if (f != '') { return f }\n      const lang = dsx.variable.codeFile.language.trim().toLowerCase()\n      if (['text', 'txt', 'plain', 'plaintext', 'log', 'output', 'console'].includes(lang)) { return '' }\n      const names = { sh: 'Terminal', bash: 'Terminal', zsh: 'Terminal', shell: 'Terminal', shellscript: 'Terminal',\n        ts: 'TypeScript', typescript: 'TypeScript', tsx: 'TSX', js: 'JavaScript', javascript: 'JavaScript', jsx: 'JSX',\n        json: 'JSON', jsonc: 'JSON', yaml: 'YAML', yml: 'YAML', toml: 'TOML', html: 'HTML', xml: 'XML', css: 'CSS',\n        dsx: 'DSX', py: 'Python', python: 'Python', swift: 'Swift', kt: 'Kotlin', kotlin: 'Kotlin', java: 'Java',\n        go: 'Go', rs: 'Rust', rust: 'Rust', rb: 'Ruby', ruby: 'Ruby', sql: 'SQL', diff: 'Diff', md: 'Markdown',\n        markdown: 'Markdown', graphql: 'GraphQL', dockerfile: 'Dockerfile' }\n      return names[lang] == null ? lang : names[lang]\n    ","computed":true},{"as":"codeFirst","body":"\n      const n = Math.floor(Number(dsx.attribute.startLine == null ? 1 : dsx.attribute.startLine))\n      return n &gt; 0 ? n : 1\n    ","computed":true},{"as":"codeErrors","body":"\n      const raw = String(dsx.attribute.errors == null ? '' : dsx.attribute.errors)\n      return raw.split(',').map(s => Number(s.trim())).filter(n => n &gt; 0)\n    ","computed":true},{"as":"codeFollow","body":"\n      const f = String(dsx.attribute.follow)\n      return f === 'true' || f === '1'\n    ","computed":true},{"as":"codeCapped","body":"\n      return dsx.variable.codeFollow || Number(dsx.attribute.collapseAfter == null ? 12 : dsx.attribute.collapseAfter) == 0\n    ","computed":true},{"as":"codeMarked","body":"\n      const raw = String(dsx.attribute.highlight == null ? '' : dsx.attribute.highlight)\n      return raw.split(',').map(s => Number(s.trim())).filter(n => n &gt; 0)\n    ","computed":true},{"as":"codeUtterance","body":"\n      const lang = dsx.variable.codeFile.language.trim()\n      return (lang == '' ? 'Code' : lang + ' code') + ': ' + dsx.variable.codeSource\n    ","computed":true},{"as":"codeRows","body":"\n      const marked = dsx.variable.codeMarked\n      const errors = dsx.variable.codeErrors\n      return highlight(dsx.variable.codeSource, dsx.variable.codeFile.language).map(row => {\n        const spans = row.spans.length == 0 ? [{ text: ' ', kind: 'plain' }] : row.spans\n        const only = spans.length == 1 ? spans[0].kind : ''\n        const hunk = only == 'meta' &amp;&amp; spans[0].text.startsWith('@@')\n        const tint = errors.includes(row.line) ? 'error' : marked.includes(row.line) ? 'marked'\n          : only == 'inserted' || only == 'deleted' ? only : hunk ? 'meta' : 'none'\n        return { id: row.line, no: row.line + dsx.variable.codeFirst - 1, tint: tint, spans: spans.map(s => ({ t: s.text, k: s.kind })) }\n      })\n    ","computed":true},{"as":"codeFolded","body":"\n      return dsx.variable.codeFoldAt &gt; 0 &amp;&amp; !dsx.variable.codeOpen\n    ","computed":true},{"as":"codeShown","body":"\n      return dsx.variable.codeFolded ? dsx.variable.codeRows.slice(0, dsx.variable.codeFoldAt) : dsx.variable.codeRows\n    ","computed":true},{"as":"codeGutterWidth","body":"\n      return (String(dsx.variable.codeRows.length + dsx.variable.codeFirst - 1).length * 0.62) + 'em'\n    ","computed":true},{"as":"codeMoreLabel","body":"\n      if (dsx.variable.codeOpen) { return 'Show less' }\n      const n = dsx.variable.codeRows.length - dsx.variable.codeFoldAt\n      return 'Show ' + n + ' more lines'\n    ","computed":true}],"formulas":[],"actions":[{"as":"codeCopy","inputs":{},"body":"\n      await dsx.module.clipboard.write({ text: dsx.variable.codeSource });\n      dsx.variable.codeCopied = true;\n      setTimeout(() => { dsx.variable.codeCopied = false }, 2000, 'codeCopied');\n      dsx.event('copy')\n    "}],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-codeblock"},"children":[{"tag":"stack","attrs":{"visible-if":"dsx.variable.codeLabel != '' || dsx.variable.codeFiles.length > 0 || dsx.variable.codeCopyable || dsx.variable.codeHasDrawer","class":"dsx-codeblock-bar {{ dsx.variable.codeLabel == '' && dsx.variable.codeFiles.length == 0 ? 'dsx-codeblock-corner' : '' }}","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"visible-if":"dsx.variable.codeFiles.length == 0","class":"dsx-codeblock-label","value":"{{ dsx.variable.codeLabel }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"stack","attrs":{"visible-if":"dsx.variable.codeFiles.length > 0","class":"dsx-codeblock-tabs","role":"listbox","aria-label":"Files","__row":"1","__steers":"1"},"children":[{"tag":"pressable","attrs":{"repeat":"dsx.variable.codeFiles","key":"id","role":"option","aria-selected":"{{ dsx.this.id == dsx.variable.codeTab }}","class":"dsx-codeblock-tab {{ dsx.this.id == dsx.variable.codeTab ? 'dsx-codeblock-tab-on' : '' }}","on:tap":"dsx.variable.codeTab = dsx.this.id"},"children":[{"tag":"text","attrs":{"class":"dsx-codeblock-tab-label","value":"{{ dsx.this.name }}"},"children":[],"text":"","reactive":true,"nid":5}],"text":"\n        \n      ","reactive":true,"nid":4}],"text":"\n      \n    ","reactive":true,"nid":3},{"tag":"spacer","attrs":{},"children":[],"text":"","reactive":false,"nid":6},{"tag":"button","attrs":{"visible-if":"dsx.variable.codeHasDrawer","class":"dsx-codeblock-action","icon":"arrow.up.left.and.arrow.down.right","a11yLabel":"Expand code","on:tap":"dsx.variable.codeDrawer = true"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"text","attrs":{"visible-if":"dsx.variable.codeCopied && (dsx.variable.codeLabel != '' || dsx.variable.codeFiles.length > 0)","class":"dsx-codeblock-copied-note","value":"Copied","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":8},{"tag":"button","attrs":{"visible-if":"dsx.variable.codeCopyable","class":"dsx-codeblock-action dsx-codeblock-copy {{ dsx.variable.codeCopied ? 'dsx-codeblock-copied' : '' }}","icon":"{{ dsx.variable.codeCopied ? 'checkmark' : 'doc.on.doc' }}","a11yLabel":"Copy code","a11yValue":"{{ dsx.variable.codeCopied ? 'Copied' : '' }}","on:tap":"dsx.action.codeCopy()"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n    \n    \n    \n    \n    \n    \n  ","reactive":true,"nid":1},{"tag":"scroll","attrs":{"visible-if":"dsx.variable.codeCapped","axis":"vertical","class":"dsx-codeblock-capped {{ dsx.variable.codeFollow ? 'dsx-codeblock-follow' : '' }}","a11yGroup":"true","a11yLabel":"{{ dsx.variable.codeUtterance }}"},"children":[{"tag":"scroll","attrs":{"class":"dsx-codeblock-body","axis":"horizontal"},"children":[{"tag":"stack","attrs":{"class":"dsx-codeblock-lines","__steers":"1"},"children":[{"tag":"stack","attrs":{"repeat":"dsx.variable.codeRows","key":"id","class":"dsx-codeblock-line dsx-codeblock-line-{{ dsx.this.tint }}","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"visible-if":"dsx.variable.codeGutter","class":"dsx-codeblock-no","value":"{{ dsx.this.no }}","a11yHidden":"true","__style_reactive":"min-width:{{ dsx.variable.codeGutterWidth }}"},"children":[],"text":"","reactive":true,"nid":14},{"tag":"stack","attrs":{"class":"dsx-codeblock-code","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"repeat":"dsx.this.spans","key":"index","class":"dsx-codeblock-tok dsx-codeblock-k-{{ dsx.this.k }}","value":"{{ dsx.this.t }}"},"children":[],"text":"","reactive":true,"nid":16}],"text":"\n            \n          ","reactive":true,"nid":15}],"text":"\n          \n          \n        ","reactive":true,"nid":13}],"text":"\n        \n      ","reactive":true,"nid":12}],"text":"\n      \n    ","reactive":true,"nid":11}],"text":"\n    \n  ","reactive":true,"nid":10},{"tag":"stack","attrs":{"class":"dsx-codeblock-viewport","visible-if":"!dsx.variable.codeCapped"},"children":[{"tag":"scroll","attrs":{"class":"dsx-codeblock-body","axis":"horizontal","a11yGroup":"true","a11yLabel":"{{ dsx.variable.codeUtterance }}"},"children":[{"tag":"stack","attrs":{"class":"dsx-codeblock-lines","__steers":"1"},"children":[{"tag":"stack","attrs":{"repeat":"dsx.variable.codeShown","key":"id","class":"dsx-codeblock-line dsx-codeblock-line-{{ dsx.this.tint }}","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"visible-if":"dsx.variable.codeGutter","class":"dsx-codeblock-no","value":"{{ dsx.this.no }}","a11yHidden":"true","__style_reactive":"min-width:{{ dsx.variable.codeGutterWidth }}"},"children":[],"text":"","reactive":true,"nid":21},{"tag":"stack","attrs":{"class":"dsx-codeblock-code","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"repeat":"dsx.this.spans","key":"index","class":"dsx-codeblock-tok dsx-codeblock-k-{{ dsx.this.k }}","value":"{{ dsx.this.t }}"},"children":[],"text":"","reactive":true,"nid":23}],"text":"\n            \n          ","reactive":true,"nid":22}],"text":"\n          \n          \n        ","reactive":true,"nid":20}],"text":"\n        \n      ","reactive":true,"nid":19}],"text":"\n      \n    ","reactive":true,"nid":18},{"tag":"stack","attrs":{"visible-if":"dsx.variable.codeFolded","class":"dsx-codeblock-fade","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":24}],"text":"\n    \n    \n  ","reactive":true,"nid":17},{"tag":"stack","attrs":{"visible-if":"dsx.variable.codeFoldAt > 0","class":"dsx-codeblock-foot","__steers":"1"},"children":[{"tag":"button","attrs":{"class":"dsx-codeblock-more","label":"{{ dsx.variable.codeMoreLabel }}","icon":"{{ dsx.variable.codeOpen ? 'chevron.up' : 'chevron.down' }}","on:tap":"dsx.variable.codeOpen = !dsx.variable.codeOpen"},"children":[],"text":"","reactive":true,"nid":26}],"text":"\n    \n  ","reactive":true,"nid":25},{"tag":"sheet","attrs":{"present":"dsx.variable.codeDrawer","detents":"content,full","title":"{{ dsx.variable.codeLabel == '' ? 'Code' : dsx.variable.codeLabel }}","on:dismiss":"dsx.variable.codeDrawer = false"},"children":[{"tag":"stack","attrs":{"class":"dsx-codeblock-sheet"},"children":[{"tag":"stack","attrs":{"class":"dsx-codeblock-sheet-bar","__row":"1","__steers":"1"},"children":[{"tag":"button","attrs":{"class":"dsx-codeblock-action {{ dsx.variable.codeWrap ? 'dsx-codeblock-on' : '' }}","label":"Wrap","a11yLabel":"Wrap lines","a11yValue":"{{ dsx.variable.codeWrap ? 'On' : 'Off' }}","on:tap":"dsx.variable.codeWrap = !dsx.variable.codeWrap"},"children":[],"text":"","reactive":true,"nid":30},{"tag":"spacer","attrs":{},"children":[],"text":"","reactive":false,"nid":31},{"tag":"button","attrs":{"class":"dsx-codeblock-action dsx-codeblock-copy {{ dsx.variable.codeCopied ? 'dsx-codeblock-copied' : '' }}","icon":"{{ dsx.variable.codeCopied ? 'checkmark' : 'doc.on.doc' }}","label":"{{ dsx.variable.codeCopied ? 'Copied' : 'Copy' }}","a11yLabel":"Copy code","a11yValue":"{{ dsx.variable.codeCopied ? 'Copied' : '' }}","on:tap":"dsx.action.codeCopy()"},"children":[],"text":"","reactive":true,"nid":32}],"text":"\n        \n        \n        \n      ","reactive":true,"nid":29},{"tag":"scroll","attrs":{"class":"dsx-codeblock-sheet-body","a11yGroup":"true","a11yLabel":"{{ dsx.variable.codeUtterance }}"},"children":[{"tag":"scroll","attrs":{"visible-if":"!dsx.variable.codeWrap","axis":"horizontal","class":"dsx-codeblock-sheet-lines"},"children":[{"tag":"stack","attrs":{"class":"dsx-codeblock-lines","__steers":"1"},"children":[{"tag":"stack","attrs":{"repeat":"dsx.variable.codeRows","key":"id","class":"dsx-codeblock-line dsx-codeblock-line-{{ dsx.this.tint }}","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-codeblock-no","value":"{{ dsx.this.no }}","a11yHidden":"true","__style_reactive":"min-width:{{ dsx.variable.codeGutterWidth }}"},"children":[],"text":"","reactive":true,"nid":37},{"tag":"stack","attrs":{"class":"dsx-codeblock-code","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"repeat":"dsx.this.spans","key":"index","class":"dsx-codeblock-tok dsx-codeblock-k-{{ dsx.this.k }}","value":"{{ dsx.this.t }}"},"children":[],"text":"","reactive":true,"nid":39}],"text":"\n                \n              ","reactive":true,"nid":38}],"text":"\n              \n              \n            ","reactive":true,"nid":36}],"text":"\n            \n          ","reactive":true,"nid":35}],"text":"\n          \n        ","reactive":true,"nid":34},{"tag":"stack","attrs":{"visible-if":"dsx.variable.codeWrap && dsx.variable.codeRows.length > 0","class":"dsx-codeblock-lines dsx-codeblock-sheet-lines","__steers":"1"},"children":[{"tag":"stack","attrs":{"repeat":"dsx.variable.codeRows","key":"id","class":"dsx-codeblock-line dsx-codeblock-line-{{ dsx.this.tint }}","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-codeblock-no","value":"{{ dsx.this.no }}","a11yHidden":"true","__style_reactive":"min-width:{{ dsx.variable.codeGutterWidth }}"},"children":[],"text":"","reactive":true,"nid":42},{"tag":"stack","attrs":{"class":"dsx-codeblock-code dsx-codeblock-wrapped","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"repeat":"dsx.this.spans","key":"index","class":"dsx-codeblock-tok dsx-codeblock-tok-wrap dsx-codeblock-k-{{ dsx.this.k }}","value":"{{ dsx.this.t }}"},"children":[],"text":"","reactive":true,"nid":44}],"text":"\n              \n            ","reactive":true,"nid":43}],"text":"\n            \n            \n          ","reactive":true,"nid":41}],"text":"\n          \n        ","reactive":true,"nid":40}],"text":"\n        \n        \n      ","reactive":true,"nid":33}],"text":"\n      \n      \n    ","reactive":true,"nid":28}],"text":"\n    \n  ","reactive":true,"nid":27}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.CopyButton":{"name":"CopyButton","scheme":"foundation","head":{"attributes":[{"as":"value"},{"as":"label","default":"'Copy'"}],"apis":[],"expects":[],"events":[{"as":"copy","payload":[]},{"as":"fail","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"copyDone","body":"","computed":false},{"as":"copyFailed","body":"","computed":false},{"as":"copyIcon","body":"\n      if (dsx.variable.copyDone) { return 'checkmark' }\n      if (dsx.variable.copyFailed) { return 'xmark' }\n      return 'doc.on.doc'\n    ","computed":true},{"as":"copyNote","body":"\n      if (dsx.variable.copyDone) { return 'Copied' }\n      if (dsx.variable.copyFailed) { return 'Couldn\\'t copy' }\n      return ''\n    ","computed":true}],"formulas":[],"actions":[{"as":"copyValue","inputs":{},"body":"\n      try {\n        await dsx.module.clipboard.write({ text: String(dsx.attribute.value == null ? '' : dsx.attribute.value) })\n        dsx.variable.copyFailed = false\n        dsx.variable.copyDone = true\n        setTimeout(() => { dsx.variable.copyDone = false }, 1500, 'copyDone')\n        dsx.event('copy', { value: dsx.attribute.value })\n      } catch (e) {\n        dsx.variable.copyDone = false\n        dsx.variable.copyFailed = true\n        setTimeout(() => { dsx.variable.copyFailed = false }, 1500, 'copyFailed')\n        dsx.event('fail', { code: e.code })\n      }\n    "}],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"button","attrs":{"class":"dsx-copybutton {{ dsx.variable.copyDone ? 'dsx-copybutton-done' : '' }}{{ dsx.variable.copyFailed ? 'dsx-copybutton-fail' : '' }}","icon":"{{ dsx.variable.copyIcon }}","a11yLabel":"{{ dsx.attribute.label }}","a11yValue":"{{ dsx.variable.copyNote }}","disabled-if":"dsx.attribute.value == null || dsx.attribute.value === ''","on:tap":"dsx.action.copyValue()"},"children":[],"text":"\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.CopyRow":{"name":"CopyRow","scheme":"foundation","head":{"attributes":[{"as":"label"},{"as":"value"},{"as":"lines"},{"as":"secret","default":"false","type":"bool"},{"as":"href"}],"apis":[],"expects":[],"events":[{"as":"copy","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"revealed","body":"","computed":false},{"as":"rowText","body":"\n      const v = String(dsx.attribute.value == null ? '' : dsx.attribute.value)\n      if (dsx.attribute.secret !== true &amp;&amp; dsx.attribute.secret !== 'true') { return v }\n      if (dsx.variable.revealed) { return v }\n      return '•'.repeat(Math.min(Math.max(v.length, 1), 24))\n    ","computed":true},{"as":"rowSecret","body":"\n      return dsx.attribute.secret === true || dsx.attribute.secret === 'true'\n    ","computed":true},{"as":"rowSay","body":"\n      const l = String(dsx.attribute.label == null ? '' : dsx.attribute.label)\n      return l + (l == '' ? '' : ', ') + (dsx.variable.rowSecret &amp;&amp; !dsx.variable.revealed ? localize('hidden') : String(dsx.attribute.value == null ? '' : dsx.attribute.value))\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-copyrow","container":"true","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-copyrow-text {{ dsx.element.width >= 520 ? 'dsx-copyrow-columns' : '' }}","a11yGroup":"true","a11yLabel":"{{ dsx.variable.rowSay }}","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-copyrow-label","visible-if":"dsx.attribute.label","value":"{{ dsx.attribute.label }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"text","attrs":{"class":"dsx-copyrow-value","value":"{{ dsx.variable.rowText }}","lineLimit":"{{ dsx.attribute.lines == null ? 1 : dsx.attribute.lines }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":3}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-copyrow-trail","__row":"1","__steers":"1"},"children":[{"tag":"button","attrs":{"class":"dsx-copyrow-action","visible-if":"dsx.variable.rowSecret","icon":"{{ dsx.variable.revealed ? 'eye.slash' : 'eye' }}","a11yLabel":"{{ dsx.variable.revealed ? 'Hide' : 'Reveal' }}","on:tap":"dsx.variable.revealed = !dsx.variable.revealed"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"button","attrs":{"class":"dsx-copyrow-action","visible-if":"dsx.attribute.href","icon":"arrow.up.right.square","a11yLabel":"Open","href":"{{ dsx.attribute.href }}"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"CopyButton","attrs":{"class":"dsx-copyrow-copy","value":"{{ dsx.attribute.value }}","label":"Copy {{ dsx.attribute.label || '' }}","on:copy":"dsx.event('copy')"},"children":[],"text":"","reactive":true,"nid":7}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":4}],"text":"\n  \n\n  \n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Diff":{"name":"Diff","scheme":"foundation","head":{"attributes":[{"as":"before"},{"as":"after"},{"as":"mode","default":"'unified'"},{"as":"a11yLabel"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"diffSplit","body":"\n      return dsx.attribute.mode == 'split'\n    ","computed":true},{"as":"diffParts","body":"\n      const a = String(dsx.attribute.before == null ? '' : dsx.attribute.before).split('\\n')\n      const b = String(dsx.attribute.after == null ? '' : dsx.attribute.after).split('\\n')\n      const lim = Math.min(a.length, b.length)\n      const sameHead = Array.from({ length: lim }, (_, i) => a[i] == b[i]).indexOf(false)\n      const head = sameHead &lt; 0 ? lim : sameHead\n      const rest = Math.min(a.length - head, b.length - head)\n      const sameTail = Array.from({ length: rest }, (_, i) => a[a.length - 1 - i] == b[b.length - 1 - i]).indexOf(false)\n      const tail = sameTail &lt; 0 ? rest : sameTail\n      return {\n        head: a.slice(0, head),\n        removed: a.slice(head, a.length - tail),\n        added: b.slice(head, b.length - tail),\n        tail: a.slice(a.length - tail),\n        headCount: head\n      }\n    ","computed":true},{"as":"diffRows","body":"\n      const p = dsx.variable.diffParts\n      return p.head.map(t => ({ kind: 'same', mark: ' ', text: t }))\n        .concat(p.removed.map(t => ({ kind: 'del', mark: '-', text: t })))\n        .concat(p.added.map(t => ({ kind: 'add', mark: '+', text: t })))\n        .concat(p.tail.map(t => ({ kind: 'same', mark: ' ', text: t })))\n        .map((r, i) => ({ id: 'r' + i, kind: r.kind, mark: r.mark, text: r.text }))\n    ","computed":true},{"as":"diffPairs","body":"\n      const p = dsx.variable.diffParts\n      const same = t => ({ left: t, right: t, leftKind: 'same', rightKind: 'same' })\n      const width = Math.max(p.removed.length, p.added.length)\n      const middle = Array.from({ length: width }, (_, i) => ({\n        left: i &lt; p.removed.length ? p.removed[i] : '',\n        right: i &lt; p.added.length ? p.added[i] : '',\n        leftKind: i &lt; p.removed.length ? 'del' : 'none',\n        rightKind: i &lt; p.added.length ? 'add' : 'none'\n      }))\n      return p.head.map(same).concat(middle).concat(p.tail.map(same))\n        .map((r, i) => ({ id: 'p' + i, left: r.left, right: r.right, leftKind: r.leftKind, rightKind: r.rightKind }))\n    ","computed":true}],"formulas":[{"as":"diffTint","inputs":{"kind":"dsx.this.kind"},"body":"\n      if (kind == 'del') { return 'destructive' }\n      if (kind == 'add') { return 'accent' }\n      return 'label'\n    "},{"as":"diffUtterance","inputs":{"kind":"dsx.this.kind","text":"dsx.this.text"},"body":"\n      if (kind == 'del') { return 'removed: ' + text }\n      if (kind == 'add') { return 'added: ' + text }\n      return 'unchanged: ' + text\n    "},{"as":"diffRowText","inputs":{"text":"dsx.this.text"},"body":"\n      return text == '' ? ' ' : text\n    "},{"as":"diffLeftText","inputs":{"kind":"dsx.this.leftKind","text":"dsx.this.left"},"body":"\n      const body = text == '' ? ' ' : text\n      if (kind == 'del') { return '- ' + body }\n      return '  ' + body\n    "},{"as":"diffRightText","inputs":{"kind":"dsx.this.rightKind","text":"dsx.this.right"},"body":"\n      const body = text == '' ? ' ' : text\n      if (kind == 'add') { return '+ ' + body }\n      return '  ' + body\n    "},{"as":"diffPairUtterance","inputs":{"leftKind":"dsx.this.leftKind","left":"dsx.this.left","right":"dsx.this.right"},"body":"\n      if (leftKind == 'same') { return 'unchanged: ' + left }\n      if (left == '') { return 'added: ' + right }\n      if (right == '') { return 'removed: ' + left }\n      return 'removed: ' + left + ', added: ' + right\n    "}],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-diff","role":"list","a11yLabel":"{{ dsx.attribute.a11yLabel || 'Differences' }}","__background":"var(--dsx-secondary-grouped-background)","__css":"c121"},"children":[{"tag":"list","attrs":{"visible-if":"!dsx.variable.diffSplit","bind":"dsx.variable.diffRows","key":"id","scroll":"false","__css":"c122"},"children":[{"tag":"stack","attrs":{"class":"dsx-diff-row","role":"listitem","a11yGroup":"true","a11yLabel":"{{ dsx.formula.diffUtterance }}","__flexDirection":"row","__style_reactive":"--dsx-rx-background:{{ dsx.this.kind == 'same' ? 'transparent' : 'var(--dsx-fill)' }}","__css":"c123"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.this.mark }}","a11yHidden":"true","__style_reactive":"--dsx-rx-color:{{ dsx.formula.diffTint }}","__css":"c124"},"children":[],"text":"","reactive":true},{"tag":"text","attrs":{"value":"{{ dsx.formula.diffRowText }}","a11yHidden":"true","__style_reactive":"--dsx-rx-color:{{ dsx.formula.diffTint }}","__css":"c125"},"children":[],"text":"","reactive":true}],"text":"\n      \n      \n    ","reactive":true}],"text":"\n    \n  ","reactive":true},{"tag":"list","attrs":{"visible-if":"dsx.variable.diffSplit","bind":"dsx.variable.diffPairs","key":"id","scroll":"false","__css":"c122"},"children":[{"tag":"stack","attrs":{"class":"dsx-diff-pair","role":"listitem","a11yGroup":"true","a11yLabel":"{{ dsx.formula.diffPairUtterance }}","__flexDirection":"row","__css":"c126"},"children":[{"tag":"stack","attrs":{"class":"dsx-diff-side","__steers":"1","__style_reactive":"--dsx-rx-background:{{ dsx.this.leftKind == 'del' ? 'var(--dsx-fill)' : 'transparent' }}","__css":"c127"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.formula.diffLeftText }}","a11yHidden":"true","__style_reactive":"--dsx-rx-color:{{ dsx.this.leftKind == 'del' ? 'var(--dsx-destructive)' : 'var(--dsx-label)' }}","__css":"c125"},"children":[],"text":"","reactive":true}],"text":"\n        \n      ","reactive":true},{"tag":"stack","attrs":{"class":"dsx-diff-side","__steers":"1","__style_reactive":"--dsx-rx-background:{{ dsx.this.rightKind == 'add' ? 'var(--dsx-fill)' : 'transparent' }}","__css":"c127"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.formula.diffRightText }}","a11yHidden":"true","__style_reactive":"--dsx-rx-color:{{ dsx.this.rightKind == 'add' ? 'var(--dsx-accent)' : 'var(--dsx-label)' }}","__css":"c125"},"children":[],"text":"","reactive":true}],"text":"\n        \n      ","reactive":true}],"text":"\n      \n      \n    ","reactive":true}],"text":"\n    \n  ","reactive":true}],"text":"\n  \n\n  \n\n  \n","reactive":true},"reactive":true,"language":"0"},"foundation.EmptyState":{"name":"EmptyState","scheme":"foundation","head":{"attributes":[{"as":"icon","default":"'tray'"},{"as":"title"},{"as":"message"},{"as":"action"},{"as":"link"}],"apis":[],"expects":[],"events":[{"as":"action","payload":[]},{"as":"link","payload":[]}],"inputs":[],"tools":[],"variables":[],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-empty-state","__steers":"1","__css":"c149"},"children":[{"tag":"image","attrs":{"class":"dsx-empty-state-icon","icon":"{{ dsx.attribute.icon || 'tray' }}","__inkAuthored":"true","__fontSize":"32px","__css":"c150"},"children":[],"text":"","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-empty-state-copy","a11yGroup":"true","__steers":"1","__css":"c151"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.attribute.title }}","__css":"c152"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"text","attrs":{"visible-if":"dsx.attribute.message","value":"{{ dsx.attribute.message }}","__css":"c153"},"children":[],"text":"","reactive":true,"nid":4}],"text":"\n    \n    \n  ","reactive":true,"nid":2},{"tag":"button","attrs":{"class":"dsx-empty-state-link","visible-if":"dsx.attribute.link","variant":"plain","label":"{{ dsx.attribute.link }}","on:tap":"dsx.event('link')"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"button","attrs":{"visible-if":"dsx.attribute.action","label":"{{ dsx.attribute.action }}","variant":"prominent","on:tap":"dsx.event('action')"},"children":[],"text":"","reactive":true,"nid":6}],"text":"\n  \n\n  \n  \n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.FieldRow":{"name":"FieldRow","scheme":"foundation","head":{"attributes":[{"as":"label"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-field-row","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-field-row-content","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-field-row-label","visible-if":"dsx.attribute.label","value":"{{ dsx.attribute.label }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"stack","attrs":{"class":"dsx-field-row-slot","__steers":"1"},"children":[{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":4}],"text":"\n      \n    ","reactive":false,"nid":3}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-field-row-separator","a11yHidden":"true"},"children":[],"text":"","reactive":false,"nid":5}],"text":"\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Figure":{"name":"Figure","scheme":"foundation","head":{"attributes":[{"as":"src","type":"url"},{"as":"alt"},{"as":"width","type":"number"},{"as":"height","type":"number"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"figureNatural","body":"return null","computed":false},{"as":"figureRatio","body":"\n      const w = Number(dsx.attribute.width)\n      const h = Number(dsx.attribute.height)\n      if (w &gt; 0 &amp;&amp; h &gt; 0) { return w + ' / ' + h }\n      const n = dsx.variable.figureNatural\n      if (n != null &amp;&amp; n.w &gt; 0 &amp;&amp; n.h &gt; 0) { return n.w + ' / ' + n.h }\n      return '16 / 9'\n    ","computed":true},{"as":"figurePlace","body":"\n      const l = dsx.context.galleryLayout\n      return l == 'strip' || l == 'grid' ? l : ''\n    ","computed":true},{"as":"figureMax","body":"\n      const w = Number(dsx.attribute.width)\n      if (dsx.variable.figurePlace != '') { return 'none' }\n      if (w &gt; 0) { return w + 'px' }\n      //  a vector picture (SVG) has no natural size to protect from upscaling: it fills the column, sharp at any width\n      if (String(dsx.attribute.src == null ? '' : dsx.attribute.src).split(/[?#]/)[0].toLowerCase().endsWith('.svg')) { return 'none' }\n      const n = dsx.variable.figureNatural\n      return n != null &amp;&amp; n.w &gt; 0 ? n.w + 'px' : 'none'\n    ","computed":true},{"as":"figureFrameRatio","body":"\n      if (dsx.variable.figurePlace == 'grid') { return '1 / 1' }\n      if (dsx.variable.figurePlace == 'strip') { return '4 / 3' }\n      return dsx.variable.figureRatio\n    ","computed":true},{"as":"figureName","body":"\n      return 'dsx-figure-' + String(dsx.attribute.src == null ? '' : dsx.attribute.src).replace(/[^A-Za-z0-9_-]/g, '-')\n    ","computed":true},{"as":"figureLabel","body":"\n      const alt = String(dsx.attribute.alt == null ? '' : dsx.attribute.alt).trim()\n      return alt == '' ? localize('Image') : alt\n    ","computed":true}],"formulas":[],"actions":[{"as":"figureEnrol","inputs":{},"body":"\n      if (dsx.variable.figurePlace != '') { dsx.context.galleryEnrol({ src: dsx.attribute.src, alt: dsx.attribute.alt, name: dsx.variable.figureName }) }\n    "},{"as":"figureTap","inputs":{},"body":"\n      if (dsx.variable.figurePlace != '') { dsx.context.galleryOpen({ src: dsx.attribute.src }) }\n      else { dsx.component.present('ImageViewer', { as: 'cover', interactive: 'drag', attrs: { images: [{ src: dsx.attribute.src, alt: dsx.attribute.alt, name: dsx.variable.figureName }], index: 0 } }) }\n    "}],"watches":[],"scripts":[],"globalScripts":[],"contexts":[{"from":"markdown.gallery","optional":"true","use":["galleryEnrol","galleryOpen","galleryLayout"]}]},"root":{"tag":"stack","attrs":{"class":"dsx-figure dsx-figure-in-{{ dsx.variable.figurePlace || 'flow' }}","on:appear":"dsx.action.figureEnrol()","__style_reactive":"max-width:{{ dsx.variable.figureMax }}","__steers":"1"},"children":[{"tag":"pressable","attrs":{"class":"dsx-figure-frame","a11yLabel":"{{ dsx.variable.figureLabel }}","a11yHint":"{{ localize('Opens the photo viewer') }}","on:tap":"dsx.action.figureTap()","__style_reactive":"aspect-ratio:{{ dsx.variable.figureFrameRatio }};--dsx-view-transition-name:{{ dsx.variable.figureName }};view-transition-name:{{ dsx.variable.figureName }}"},"children":[{"tag":"image","attrs":{"class":"dsx-figure-image","src":"{{ dsx.attribute.src }}","contentFit":"cover","a11yHidden":"true","on:load":"dsx.variable.figureNatural = { w: dsx.this.width, h: dsx.this.height }"},"children":[],"text":"","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-figure-caption","visible-if":"dsx.variable.figurePlace != 'grid'","__steers":"1"},"children":[{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":4}],"text":"\n    \n  ","reactive":true,"nid":3}],"text":"\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Gallery":{"name":"Gallery","scheme":"foundation","head":{"attributes":[{"as":"columns","type":"number"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"galleryImages","body":"return []","computed":false},{"as":"galleryCols","body":"\n      const n = Number(dsx.attribute.columns)\n      return isNaN(n) || n &lt; 1 ? 1 : Math.min(6, Math.floor(n))\n    ","computed":true},{"as":"galleryLayout","body":"\n      return dsx.variable.galleryCols &gt; 1 ? 'grid' : 'strip'\n    ","computed":true,"context":"markdown.gallery"},{"as":"galleryLabel","body":"\n      return localize('Gallery') + ', ' + dsx.variable.galleryImages.length + ' ' + localize('images')\n    ","computed":true}],"formulas":[],"actions":[{"as":"galleryEnrol","inputs":{"src":"''","alt":"''","name":"''"},"body":"\n      const s = String(src == null ? '' : src)\n      if (s != '' &amp;&amp; !dsx.variable.galleryImages.some(x =&gt; x.src == s)) { dsx.variable.galleryImages = dsx.variable.galleryImages.concat([{ src: s, alt: String(alt == null ? '' : alt), name: String(name == null ? '' : name) }]) }\n    ","context":"markdown.gallery"},{"as":"galleryOpen","inputs":{"src":"''"},"body":"\n      const at = dsx.variable.galleryImages.findIndex(x =&gt; x.src == String(src))\n      dsx.component.present('ImageViewer', { as: 'cover', interactive: 'drag', attrs: { images: dsx.variable.galleryImages, index: at &lt; 0 ? 0 : at } })\n    ","context":"markdown.gallery"}],"watches":[],"scripts":[],"globalScripts":[],"contexts":[{"as":"markdown.gallery"}]},"root":{"tag":"stack","attrs":{"class":"dsx-gallery","role":"group","a11yLabel":"{{ dsx.variable.galleryLabel }}","__steers":"1"},"children":[{"tag":"scroll","attrs":{"class":"dsx-gallery-strip","axis":"horizontal","visible-if":"dsx.variable.galleryCols == 1"},"children":[{"tag":"stack","attrs":{"class":"dsx-gallery-row","__row":"1","__steers":"1"},"children":[{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":3}],"text":"\n      \n    ","reactive":false,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-gallery-grid dsx-gallery-grid-{{ dsx.variable.galleryCols }}","visible-if":"dsx.variable.galleryCols > 1"},"children":[{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":5}],"text":"\n    \n  ","reactive":true,"nid":4}],"text":"\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Guide":{"name":"Guide","scheme":"foundation","head":{"attributes":[{"as":"steps","default":"null"},{"as":"a11yLabel"}],"apis":[],"expects":[],"events":[{"as":"action","payload":["step","id"]}],"inputs":[],"tools":[],"variables":[{"as":"guideSteps","body":"\n      const d = dsx.attribute.steps\n      const rows = Array.isArray(d) ? d : (d &amp;&amp; String(d).trim().startsWith('[') ? (JSON.parse(d) || []) : [])\n      return rows.filter(r => r != null &amp;&amp; r.title != null &amp;&amp; String(r.title) != '').map((r, i) => {\n        const a = r.action != null &amp;&amp; r.action.label ? r.action : null\n        const href = a != null &amp;&amp; a.href ? String(a.href) : ''\n        const label = a == null ? '' : String(a.label)\n        return {\n          key: 'g' + i, n: i + 1, title: String(r.title), body: r.body == null ? '' : String(r.body),\n          actionLabel: href.startsWith('http') &amp;&amp; !label.endsWith('↗') ? label + ' ↗' : label,\n          actionHref: href, actionId: a != null &amp;&amp; a.id ? String(a.id) : ''\n        }\n      })\n    ","computed":true}],"formulas":[],"actions":[{"as":"act","inputs":{"step":"dsx.this.n","id":"dsx.this.actionId","href":"dsx.this.actionHref"},"body":"\n      if (href != '' &amp;&amp; href.startsWith('http')) { dsx.module.route.push({ path: href }); return }\n      dsx.event('action', { step: step, id: id != '' ? id : href })\n    "}],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-guide","role":"list","a11yLabel":"{{ dsx.attribute.a11yLabel }}","__steers":"1"},"children":[{"tag":"MarkdownStep","attrs":{"repeat":"dsx.variable.guideSteps","key":"key","index":"{{ dsx.this.n }}","value":"{{ dsx.this.title }}"},"children":[{"tag":"markdown","attrs":{"class":"dsx-guide-body","copyCode":"true","externalLinks":"true","visible-if":"dsx.this.body != ''","value":"{{ dsx.this.body }}"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"button","attrs":{"class":"dsx-guide-action","variant":"plain","visible-if":"dsx.this.actionLabel != ''","label":"{{ dsx.this.actionLabel }}","on:tap":"dsx.action.act()"},"children":[],"text":"","reactive":true,"nid":3}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":4}],"text":"\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.IconTile":{"name":"IconTile","scheme":"foundation","head":{"attributes":[{"as":"src"},{"as":"icon"},{"as":"name"},{"as":"srcDark"},{"as":"brand"},{"as":"tint"},{"as":"tintDark"},{"as":"inkDark"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"iconTileKind","body":"\n      if (dsx.attribute.src) { return 'image' }\n      if (dsx.attribute.brand) { return 'brand' }\n      if (dsx.attribute.icon) { return 'symbol' }\n      return 'monogram'\n    ","computed":true},{"as":"iconTileLetter","body":"\n      const n = String(dsx.attribute.name == null ? '' : dsx.attribute.name).trim()\n      return n == '' ? '?' : n.charAt(0).toUpperCase()\n    ","computed":true},{"as":"iconTileTint","body":"\n      const named = { blue: '#007AFF', red: '#FF3B30', green: '#34C759', teal: '#30B0C7', indigo: '#5856D6', mint: '#00C7BE', orange: '#FF9500', pink: '#FF2D55', cyan: '#32ADE6', gray: '#8E8E93', brown: '#A2845E', purple: '#AF52DE', graphite: '#636366', yellow: '#FFCC00', black: '#1C1C1E' }\n      const t = String(dsx.attribute.tint == null ? '' : dsx.attribute.tint).trim()\n      if (t != '') { return named[t] || t }\n      if (dsx.attribute.brand &amp;&amp; !dsx.attribute.src) { return '#FFFFFF' }\n      const tints = ['#007AFF', '#5856D6', '#AF52DE', '#FF2D55', '#FF9500', '#34C759', '#30B0C7', '#FF3B30']\n      const n = String(dsx.attribute.name == null ? '' : dsx.attribute.name).trim()\n      if (n == '') { return tints[0] }\n      return tints[(n.length + n.charCodeAt(0) + n.charCodeAt(n.length - 1)) % tints.length]\n    ","computed":true},{"as":"iconTileMono","body":"\n      return dsx.variable.iconTileKind == 'brand' &amp;&amp; String(dsx.attribute.tint == null ? '' : dsx.attribute.tint).trim() != ''\n    ","computed":true},{"as":"iconTileDuo","body":"\n      return dsx.variable.iconTileMono &amp;&amp; String(dsx.attribute.tintDark == null ? '' : dsx.attribute.tintDark).trim() != '' &amp;&amp; String(dsx.attribute.inkDark == null ? '' : dsx.attribute.inkDark).trim() != ''\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-icon-tile dsx-icon-tile-{{ dsx.variable.iconTileKind }}{{ dsx.attribute.srcDark || dsx.variable.iconTileDuo ? ' dsx-icon-tile-twin' : '' }}","a11yHidden":"true","__style_reactive":"--dsx-rx-background:var(--dsx-icon-tile-background, {{ dsx.variable.iconTileKind == 'image' ? 'var(--dsx-fill)' : dsx.variable.iconTileTint }})","__css":"c13","__steers":"1"},"children":[{"tag":"image","attrs":{"class":"dsx-icon-tile-image dsx-icon-tile-light","visible-if":"dsx.variable.iconTileKind == 'image'","src":"{{ dsx.attribute.src }}","contentFit":"cover"},"children":[],"text":"","reactive":true,"nid":1},{"tag":"image","attrs":{"class":"dsx-icon-tile-image dsx-icon-tile-dark","visible-if":"dsx.variable.iconTileKind == 'image' && dsx.attribute.srcDark","src":"{{ dsx.attribute.srcDark }}","contentFit":"cover"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"image","attrs":{"class":"dsx-icon-tile-mark{{ dsx.variable.iconTileDuo ? ' dsx-icon-tile-light' : '' }}","visible-if":"dsx.variable.iconTileMono","icon":"{{ dsx.attribute.brand }}","__inkAuthored":"true","__css":"c169"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"stack","attrs":{"class":"dsx-icon-tile-ground dsx-icon-tile-dark","visible-if":"dsx.variable.iconTileDuo","__style_reactive":"--dsx-rx-background:{{ dsx.attribute.tintDark }}","__css":"c13"},"children":[],"text":"","reactive":true,"nid":4},{"tag":"image","attrs":{"class":"dsx-icon-tile-mark dsx-icon-tile-dark","visible-if":"dsx.variable.iconTileDuo","icon":"{{ dsx.attribute.brand }}","__inkAuthored":"true","__style_reactive":"--dsx-rx-color:{{ dsx.attribute.inkDark }}","__css":"c85"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"image","attrs":{"class":"dsx-icon-tile-mark","visible-if":"dsx.variable.iconTileKind == 'brand' && !dsx.variable.iconTileMono","icon":"{{ dsx.attribute.brand }}","__inkAuthored":"true","__css":"c170"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"image","attrs":{"class":"dsx-icon-tile-symbol","visible-if":"dsx.variable.iconTileKind == 'symbol'","icon":"{{ dsx.attribute.icon }}"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"text","attrs":{"class":"dsx-icon-tile-monogram","visible-if":"dsx.variable.iconTileKind == 'monogram'","value":"{{ dsx.variable.iconTileLetter }}","lineLimit":"1"},"children":[],"text":"","reactive":true,"nid":8}],"text":"\n  \n\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.ImageViewer":{"name":"ImageViewer","scheme":"foundation","head":{"attributes":[{"as":"images","type":"array"},{"as":"index","type":"number"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"viewerAt","body":"\n      const n = Number(dsx.attribute.index)\n      return isNaN(n) || n &lt; 0 ? 0 : Math.floor(n)\n    ","computed":false},{"as":"viewerRows","body":"\n      const a = dsx.attribute.images\n      const raw = Array.isArray(a) ? a : (a != null &amp;&amp; String(a).trim().startsWith('[') ? (JSON.parse(String(a)) || []) : [])\n      return raw.map((r, i) =&gt; ({ id: 'v' + i, i: i, src: String(r.src == null ? '' : r.src), alt: String(r.alt == null ? '' : r.alt), name: String(r.name == null ? 'none' : r.name) }))\n    ","computed":true},{"as":"viewerCount","body":"\n      const n = dsx.variable.viewerRows.length\n      return n &gt; 1 ? (dsx.variable.viewerAt + 1) + ' ' + localize('of') + ' ' + n : ''\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-image-viewer","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-image-viewer-bar","__row":"1","__steers":"1"},"children":[{"tag":"button","attrs":{"class":"dsx-image-viewer-close","icon":"xmark","a11yLabel":"{{ localize('Close') }}","on:tap":"dsx.component.dismiss()"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"spacer","attrs":{},"children":[],"text":"","reactive":false,"nid":3},{"tag":"text","attrs":{"class":"dsx-image-viewer-count","visible-if":"dsx.variable.viewerCount != ''","value":"{{ dsx.variable.viewerCount }}"},"children":[],"text":"","reactive":true,"nid":4}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":1},{"tag":"pager","attrs":{"class":"dsx-image-viewer-pager","bind":"dsx.variable.viewerRows","key":"id","value":"dsx.variable.viewerAt","dots":"false"},"children":[{"tag":"stack","attrs":{"class":"dsx-image-viewer-page","a11yLabel":"{{ dsx.this.alt || localize('Image') }}","__steers":"1"},"children":[{"tag":"image","attrs":{"class":"dsx-image-viewer-image","src":"{{ dsx.this.src }}","contentFit":"contain","__style_reactive":"--dsx-view-transition-name:{{ dsx.this.i == dsx.variable.viewerAt ? dsx.this.name : 'none' }};view-transition-name:{{ dsx.this.i == dsx.variable.viewerAt ? dsx.this.name : 'none' }}"},"children":[],"text":"","reactive":true,"nid":7}],"text":"\n      \n    ","reactive":true,"nid":6}],"text":"\n    \n  ","reactive":true,"nid":5}],"text":"\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.LinkCard":{"name":"LinkCard","scheme":"foundation","head":{"attributes":[{"as":"href","type":"url"},{"as":"title"},{"as":"description"},{"as":"image","type":"url"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"linkHost","body":"\n      const h = String(dsx.attribute.href == null ? '' : dsx.attribute.href)\n      const m = h.match(/^[a-zA-Z][a-zA-Z0-9+.-]*:\\/\\/([^\\/?#]+)/)\n      if (m != null) { return m[1].replace(/^www\\./, '') }\n      return h\n    ","computed":true},{"as":"linkTitle","body":"\n      const t = String(dsx.attribute.title == null ? '' : dsx.attribute.title).trim()\n      return t == '' ? dsx.variable.linkHost : t\n    ","computed":true},{"as":"linkUtterance","body":"\n      const d = String(dsx.attribute.description == null ? '' : dsx.attribute.description).trim()\n      return dsx.variable.linkTitle + (d == '' ? '' : ', ' + d) + ', ' + dsx.variable.linkHost\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"pressable","attrs":{"class":"dsx-link-card","href":"{{ dsx.attribute.href }}","role":"link","a11yGroup":"true","a11yLabel":"{{ dsx.variable.linkUtterance }}","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-link-card-thumb","visible-if":"dsx.attribute.image","a11yHidden":"true"},"children":[{"tag":"image","attrs":{"class":"dsx-link-card-image","src":"{{ dsx.attribute.image }}","contentFit":"cover"},"children":[],"text":"","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-link-card-text","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-link-card-title","value":"{{ dsx.variable.linkTitle }}","lineLimit":"2"},"children":[],"text":"","reactive":true,"nid":4},{"tag":"text","attrs":{"class":"dsx-link-card-description","visible-if":"dsx.attribute.description","value":"{{ dsx.attribute.description }}","lineLimit":"2"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"text","attrs":{"class":"dsx-link-card-host","value":"{{ dsx.variable.linkHost }}","lineLimit":"1"},"children":[],"text":"","reactive":true,"nid":6}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":3},{"tag":"image","attrs":{"class":"dsx-link-card-arrow","icon":"arrow.up.right","a11yHidden":"true","__fontSize":"13px","__css":"c87"},"children":[],"text":"","reactive":false,"nid":7}],"text":"\n  \n\n  \n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.ListGroup":{"name":"ListGroup","scheme":"foundation","head":{"attributes":[{"as":"header"},{"as":"footer"},{"as":"link"}],"apis":[],"expects":[],"events":[{"as":"link","payload":[]}],"inputs":[],"tools":[],"variables":[],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"list","attrs":{"class":"dsx-list-group"},"children":[{"tag":"sectionHeader","attrs":{"value":"{{ dsx.attribute.header || '' }}"},"children":[],"text":"","reactive":true,"nid":1},{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":2},{"tag":"sectionFooter","attrs":{"value":"{{ dsx.attribute.footer || '' }}"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"stack","attrs":{"class":"dsx-list-group-link-row","visible-if":"dsx.attribute.link","__steers":"1"},"children":[{"tag":"button","attrs":{"class":"dsx-list-group-link","variant":"plain","label":"{{ dsx.attribute.link }}","on:tap":"dsx.event('link')"},"children":[],"text":"","reactive":true,"nid":5}],"text":"\n    \n  ","reactive":true,"nid":4}],"text":"\n  \n\n  \n  \n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.MarkdownEditor":{"name":"MarkdownEditor","scheme":"foundation","head":{"attributes":[{"as":"value"},{"as":"placeholder","default":"'Write something'"},{"as":"minLines","default":"8"},{"as":"count","default":"'true'"},{"as":"max"},{"as":"a11yLabel","default":"'Markdown'"}],"apis":[],"expects":[],"events":[{"as":"change","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"mdText","body":"return ''","computed":false},{"as":"mdTab","body":"return 'write'","computed":false},{"as":"mdLength","body":"\n      return String(dsx.variable.mdText == null ? '' : dsx.variable.mdText).length\n    ","computed":true},{"as":"mdOver","body":"\n      const max = Number(dsx.attribute.max)\n      return Number.isFinite(max) &amp;&amp; max > 0 &amp;&amp; dsx.variable.mdLength > max\n    ","computed":true},{"as":"mdCount","body":"\n      const max = Number(dsx.attribute.max)\n      if (Number.isFinite(max) &amp;&amp; max > 0) { return dsx.variable.mdLength + ' / ' + Math.round(max) }\n      return dsx.variable.mdLength + ' characters'\n    ","computed":true}],"formulas":[],"actions":[{"as":"mdSync","inputs":{},"body":"\n      dsx.variable.mdText = String(dsx.attribute.value == null ? '' : dsx.attribute.value)\n    "},{"as":"mdEmit","inputs":{},"body":"\n      dsx.event('change', { text: dsx.variable.mdText })\n    "}],"watches":[{"value":"dsx.attribute.value","handler":"dsx.action.mdSync()","immediate":true},{"value":"dsx.variable.mdText","handler":"dsx.action.mdEmit()"}],"scripts":[],"globalScripts":[]},"root":{"tag":"vstack","attrs":{"class":"dsx-markdown-editor","__steers":"1","__css":"c187"},"children":[{"tag":"segmented","attrs":{"bind":"dsx.variable.mdTab","options":"write,preview","a11yLabel":"Editor mode"},"children":[],"text":"","reactive":true},{"tag":"textarea","attrs":{"visible-if":"dsx.variable.mdTab == 'write'","bind":"dsx.variable.mdText","placeholder":"{{ dsx.attribute.placeholder }}","minLines":"{{ dsx.attribute.minLines }}","a11yLabel":"{{ dsx.attribute.a11yLabel }}"},"children":[],"text":"","reactive":true},{"tag":"vstack","attrs":{"visible-if":"dsx.variable.mdTab == 'preview'","class":"dsx-markdown-editor-preview","__steers":"1","__css":"c188"},"children":[{"tag":"text","attrs":{"visible-if":"dsx.variable.mdLength > 0","markdown":"true","value":"{{ dsx.variable.mdText }}","__css":"c45"},"children":[],"text":"","reactive":true},{"tag":"text","attrs":{"visible-if":"dsx.variable.mdLength == 0","value":"Nothing to preview yet","type":"footnote","__css":"c39"},"children":[],"text":"","reactive":true}],"text":"\n    \n    \n  ","reactive":true},{"tag":"text","attrs":{"visible-if":"dsx.attribute.count == 'true'","value":"{{ dsx.variable.mdCount }}","type":"caption2","a11yLabel":"{{ dsx.variable.mdCount }}","__style_reactive":"--dsx-rx-color:{{ dsx.variable.mdOver ? 'red' : 'var(--dsx-tertiary-label)' }}","__css":"c85"},"children":[],"text":"","reactive":true}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true},"reactive":true,"language":"0"},"foundation.MarkdownItem":{"name":"MarkdownItem","scheme":"foundation","head":{"attributes":[{"as":"marker"},{"as":"value"},{"as":"index","type":"number"},{"as":"checked","type":"bool"},{"as":"math","type":"bool"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"itemTask","body":"\n      const c = dsx.attribute.checked\n      return c != null &amp;&amp; String(c) != ''\n    ","computed":true},{"as":"itemDone","body":"\n      const c = String(dsx.attribute.checked)\n      return c === 'true' || c === '1'\n    ","computed":true},{"as":"itemNumber","body":"\n      const m = parseInt(String(dsx.attribute.marker))\n      return m >= 0 ? m : Number(dsx.attribute.index || 1)\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-markdown-item {{ dsx.variable.itemTask ? 'dsx-markdown-item-task' : '' }}","role":"listitem","__style_reactive":"counter-set:list-item {{ dsx.variable.itemNumber }}"},"children":[{"tag":"image","attrs":{"class":"dsx-markdown-item-check {{ dsx.variable.itemDone ? 'dsx-markdown-item-check-on' : '' }}","visible-if":"dsx.variable.itemTask","icon":"{{ dsx.variable.itemDone ? 'checkmark.square.fill' : 'square' }}","a11yLabel":"{{ dsx.variable.itemDone ? localize('Completed') : localize('Not completed') }}","__fontSize":"17px","__css":"c189"},"children":[],"text":"","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-markdown-item-content","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-markdown-item-text","visible-if":"dsx.attribute.value != null && String(dsx.attribute.value) != ''","markdown":"true","math":"{{ dsx.attribute.math }}","value":"{{ dsx.attribute.value }}"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":4}],"text":"\n    \n    \n  ","reactive":true,"nid":2}],"text":"\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.MarkdownList":{"name":"MarkdownList","scheme":"foundation","head":{"attributes":[{"as":"ordered","type":"bool"},{"as":"start","type":"number"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-markdown-list dsx-markdown-list-{{ String(dsx.attribute.ordered) == 'true' ? 'ordered' : 'bullet' }}","role":"list","__steers":"1"},"children":[{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":1}],"text":"\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.MarkdownStep":{"name":"MarkdownStep","scheme":"foundation","head":{"attributes":[{"as":"index","type":"number"},{"as":"value"},{"as":"checked","type":"bool"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"stepN","body":"\n      const n = Number(dsx.attribute.index)\n      return dsx.attribute.index == null || isNaN(n) || n &lt; 1 ? 1 : Math.floor(n)\n    ","computed":true},{"as":"stepPhase","body":"\n      const c = String(dsx.attribute.checked)\n      if (c === 'true' || c === '1') { return 'done' }\n      const at = dsx.context.stepsAt == null ? 0 : Number(dsx.context.stepsAt)\n      if (at &lt;= 0) { return 'plain' }\n      if (dsx.variable.stepN &lt; at) { return 'done' }\n      if (dsx.variable.stepN == at) { return 'current' }\n      return 'upcoming'\n    ","computed":true},{"as":"stepUtterance","body":"\n      const head = localize('Step') + ' ' + dsx.variable.stepN\n      if (dsx.variable.stepPhase == 'done') { return head + ', ' + localize('completed') }\n      if (dsx.variable.stepPhase == 'current') { return head + ', ' + localize('current') }\n      return head\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[],"contexts":[{"from":"markdown.steps","optional":"true","use":["stepsAt"]}]},"root":{"tag":"stack","attrs":{"class":"dsx-markdown-step","role":"listitem","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-markdown-step-track","a11yGroup":"true","a11yLabel":"{{ dsx.variable.stepUtterance }}","__steers":"1"},"children":[{"tag":"stack","attrs":{"a11yHidden":"true","class":"dsx-markdown-step-disc dsx-markdown-step-disc-{{ dsx.variable.stepPhase }}","__steers":"1"},"children":[{"tag":"image","attrs":{"class":"dsx-markdown-step-tick","visible-if":"dsx.variable.stepPhase == 'done'","icon":"checkmark","__fontSize":"11px","__css":"c190"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"text","attrs":{"class":"dsx-markdown-step-number dsx-markdown-step-number-{{ dsx.variable.stepPhase }}","visible-if":"dsx.variable.stepPhase != 'done'","value":"{{ dsx.variable.stepN }}"},"children":[],"text":"","reactive":true,"nid":4}],"text":"\n      \n      \n    ","reactive":true,"nid":2},{"tag":"stack","attrs":{"class":"dsx-markdown-step-rail"},"children":[],"text":"","reactive":false,"nid":5}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-markdown-step-content","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-markdown-step-title","markdown":"true","value":"{{ dsx.attribute.value }}","visible-if":"dsx.attribute.value != null && String(dsx.attribute.value) != ''"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":8}],"text":"\n    \n    \n  ","reactive":true,"nid":6}],"text":"\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.MarkdownSteps":{"name":"MarkdownSteps","scheme":"foundation","head":{"attributes":[{"as":"current","type":"number"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"stepsAt","body":"\n      const n = Number(dsx.attribute.current)\n      return isNaN(n) ? 0 : Math.max(0, Math.floor(n))\n    ","computed":true,"context":"markdown.steps"}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[],"contexts":[{"as":"markdown.steps"}]},"root":{"tag":"stack","attrs":{"class":"dsx-markdown-steps","role":"list","__steers":"1"},"children":[{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":1}],"text":"\n  \n  \n","reactive":false,"nid":0},"reactive":true,"language":"0"},"foundation.MarkdownTab":{"name":"MarkdownTab","scheme":"foundation","head":{"attributes":[{"as":"title"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"tabShown","body":"\n      return dsx.context.tabActive == null || dsx.context.tabActive == dsx.attribute.title\n    ","computed":true}],"formulas":[],"actions":[{"as":"tabJoin","inputs":{},"body":"\n      if (dsx.context.tabActive != null) { dsx.context.tabEnrol({ title: dsx.attribute.title }) }\n    "}],"watches":[],"scripts":[],"globalScripts":[],"contexts":[{"from":"markdown.tabs","optional":"true","use":["tabActive","tabEnrol"]}]},"root":{"tag":"stack","attrs":{"class":"dsx-markdown-tab","on:appear":"dsx.action.tabJoin()","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-markdown-tab-pane","visible-if":"dsx.variable.tabShown","__steers":"1"},"children":[{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1}],"text":"\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.MarkdownTable":{"name":"MarkdownTable","scheme":"foundation","head":{"attributes":[{"as":"header","type":"array"},{"as":"rows","type":"array"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"tableHeader","body":"\n      const h = dsx.attribute.header\n      if (Array.isArray(h)) { return h.map(c => String(c == null ? '' : c)) }\n      if (h != null &amp;&amp; String(h).trim().startsWith('[')) { return (JSON.parse(String(h)) || []).map(c => String(c == null ? '' : c)) }\n      return []\n    ","computed":true},{"as":"tableBody","body":"\n      const r = dsx.attribute.rows\n      const raw = Array.isArray(r) ? r : (r != null &amp;&amp; String(r).trim().startsWith('[') ? (JSON.parse(String(r)) || []) : [])\n      return raw.filter(row => Array.isArray(row)).map(row => row.map(c => String(c == null ? '' : c)))\n    ","computed":true},{"as":"tableWidths","body":"\n      const all = [dsx.variable.tableHeader].concat(dsx.variable.tableBody)\n      const n = all.reduce((m, row) => Math.max(m, row.length), 0)\n      const plain = s => s.replace(/\\[([^\\]]*)\\]\\([^)]*\\)/g, '$1').replace(/[*_`~]/g, '')\n      return Array.from({ length: n }).map((_, i) => Math.max(64, Math.min(280, all.reduce((m, row) => Math.max(m, plain(row[i] == null ? '' : row[i]).length), 0) * 10 + 32)))\n    ","computed":true},{"as":"tableRows","body":"\n      const w = dsx.variable.tableWidths\n      const pad = row => w.map((x, i) => ({ id: 'c' + i, v: row[i] == null ? '' : row[i], w: x }))\n      return dsx.variable.tableBody.map((row, i) => ({ id: 'r' + i, cells: pad(row), last: i == dsx.variable.tableBody.length - 1 }))\n    ","computed":true},{"as":"tableHead","body":"\n      const w = dsx.variable.tableWidths\n      return w.map((x, i) => ({ id: 'h' + i, v: dsx.variable.tableHeader[i] == null ? '' : dsx.variable.tableHeader[i], w: x }))\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"scroll","attrs":{"class":"dsx-markdown-table","axis":"horizontal"},"children":[{"tag":"stack","attrs":{"class":"dsx-markdown-table-frame","__steers":"1"},"children":[{"tag":"list","attrs":{"class":"dsx-markdown-table-head","visible-if":"dsx.variable.tableHeader.length > 0","bind":"dsx.variable.tableHead","key":"id","axis":"horizontal","scroll":"false","a11yTrait":"header","__css":"c191"},"children":[{"tag":"stack","attrs":{"class":"dsx-markdown-table-cell dsx-markdown-table-th","__style_reactive":"width:{{ dsx.this.w }}px","__steers":"1"},"children":[{"tag":"text","attrs":{"markdown":"true","value":"{{ dsx.this.v }}","a11yTrait":"header"},"children":[],"text":"","reactive":true,"nid":4}],"text":"\n        \n      ","reactive":true,"nid":3}],"text":"\n      \n    ","reactive":true,"nid":2},{"tag":"list","attrs":{"bind":"dsx.variable.tableRows","key":"id","scroll":"false","__css":"c192"},"children":[{"tag":"list","attrs":{"class":"dsx-markdown-table-row {{ dsx.this.last ? 'dsx-markdown-table-row-last' : '' }}","bind":"dsx.this.cells","key":"id","axis":"horizontal","scroll":"false","__css":"c191","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-markdown-table-cell","__style_reactive":"width:{{ dsx.this.w }}px","__steers":"1"},"children":[{"tag":"text","attrs":{"markdown":"true","value":"{{ dsx.this.v }}"},"children":[],"text":"","reactive":true,"nid":8}],"text":"\n          \n        ","reactive":true,"nid":7}],"text":"\n        \n      ","reactive":true,"nid":6}],"text":"\n      \n    ","reactive":true,"nid":5}],"text":"\n    \n    \n  ","reactive":true,"nid":1}],"text":"\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.MarkdownTabs":{"name":"MarkdownTabs","scheme":"foundation","head":{"attributes":[],"apis":[],"expects":[],"events":[{"as":"change","payload":["title"]}],"inputs":[],"tools":[],"variables":[{"as":"tabTitles","body":"return []","computed":false,"context":"markdown.tabs"},{"as":"tabActive","body":"return ''","computed":false,"context":"markdown.tabs"},{"as":"tabOptions","body":"\n      return dsx.variable.tabTitles.map(t =&gt; ({ id: t, label: t }))\n    ","computed":true}],"formulas":[],"actions":[{"as":"tabEnrol","inputs":{"title":"''"},"body":"\n      const t = String(title == null ? '' : title)\n      if (!dsx.variable.tabTitles.includes(t)) { dsx.variable.tabTitles = dsx.variable.tabTitles.concat([t]) }\n      if (dsx.variable.tabActive == '') { dsx.variable.tabActive = t }\n    ","context":"markdown.tabs"}],"watches":[],"scripts":[],"globalScripts":[],"contexts":[{"as":"markdown.tabs"}]},"root":{"tag":"stack","attrs":{"class":"dsx-markdown-tabs","__steers":"1"},"children":[{"tag":"segmented","attrs":{"class":"dsx-markdown-tabs-bar","visible-if":"dsx.variable.tabTitles.length > 1","bind":"dsx.variable.tabActive","optionsKey":"dsx.variable.tabOptions","a11yLabel":"{{ dsx.attribute.a11yLabel || localize('Tabs') }}","on:change":"dsx.event('change', { title: dsx.variable.tabActive })"},"children":[],"text":"","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-markdown-tabs-panes","__steers":"1"},"children":[{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":3}],"text":"\n    \n  ","reactive":false,"nid":2}],"text":"\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.NavBar":{"name":"NavBar","scheme":"foundation","head":{"attributes":[{"as":"title","change":"dsx.action.claimChrome()"},{"as":"subtitle"},{"as":"back"},{"as":"backLabel","default":"'Back'"},{"as":"close"},{"as":"closeLabel","default":"'Close'"},{"as":"system","default":"'true'","change":"dsx.action.claimChrome()"},{"as":"large","default":"'false'","change":"dsx.action.claimChrome()"},{"as":"parentTitle","change":"dsx.action.claimChrome()"},{"as":"description"},{"as":"learnMore","default":"'Learn more'"},{"as":"article"},{"as":"sheetTitle"},{"as":"learnMoreHref"}],"apis":[],"expects":[],"events":[{"as":"back","payload":[]},{"as":"close","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"reading","body":"return false","computed":false},{"as":"hasMore","body":"return !!(dsx.attribute.article || dsx.attribute.learnMoreHref)","computed":true}],"formulas":[],"actions":[{"as":"claimChrome","inputs":{},"body":"\n      if (dsx.attribute.system != 'false') {\n        dsx.module.route.chrome({ title: dsx.attribute.title, large: dsx.attribute.large, parentTitle: dsx.attribute.parentTitle })\n      } else {\n        dsx.module.route.chrome({ show: 'false' })\n      }\n    "},{"as":"learn","inputs":{},"body":"\n      if (dsx.attribute.article) { dsx.variable.reading = true; return }\n      if (dsx.attribute.learnMoreHref) { dsx.module.route.push({ path: String(dsx.attribute.learnMoreHref) }) }\n    "}],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-navbar dsx-navbar-{{ dsx.attribute.system != 'false' && dsx.attribute.large == 'true' ? 'large' : 'inline' }}","on:appear":"dsx.action.claimChrome()","__css":"c80"},"children":[{"tag":"stack","attrs":{"visible-if":"dsx.attribute.system != 'false'","__css":"c80"},"children":[{"tag":"Breadcrumbs","attrs":{"class":"dsx-navbar-trail"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"slot","attrs":{"name":"trailing"},"children":[],"text":"","reactive":false,"nid":3}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"stack","attrs":{"visible-if":"dsx.attribute.system == 'false'","__display":"grid","__css":"c199"},"children":[{"tag":"stack","attrs":{"a11yGroup":"true","a11yTrait":"header","__steers":"1","__css":"c200"},"children":[{"tag":"text","attrs":{"value":"{{ localize(dsx.attribute.title) }}","lineLimit":"1","__css":"c201"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"text","attrs":{"visible-if":"dsx.attribute.subtitle","value":"{{ dsx.attribute.subtitle }}","__css":"c157"},"children":[],"text":"","reactive":true,"nid":7}],"text":"\n      \n      \n    ","reactive":true,"nid":5},{"tag":"stack","attrs":{"__flexDirection":"row","__steers":"1","__css":"c202"},"children":[{"tag":"button","attrs":{"class":"dsx-navbar-back dsx-navbar-button","visible-if":"dsx.attribute.back && dsx.attribute.back != 'false'","variant":"glass","icon":"chevron.left","on:tap":"dsx.event('back')","a11yLabel":"{{ dsx.attribute.backLabel || 'Back' }}","__css":"c203"},"children":[],"text":"","reactive":true,"nid":9},{"tag":"button","attrs":{"class":"dsx-navbar-close dsx-navbar-button","visible-if":"dsx.attribute.close && dsx.attribute.close != 'false' && !(dsx.attribute.back && dsx.attribute.back != 'false')","variant":"glass","icon":"xmark","on:tap":"dsx.event('close')","a11yLabel":"{{ dsx.attribute.closeLabel || 'Close' }}","__css":"c203"},"children":[],"text":"","reactive":true,"nid":10},{"tag":"spacer","attrs":{},"children":[],"text":"","reactive":false,"nid":11},{"tag":"slot","attrs":{"name":"trailing"},"children":[],"text":"","reactive":false,"nid":12}],"text":"\n      \n      \n      \n      \n      \n    ","reactive":true,"nid":8}],"text":"\n    \n    \n  ","reactive":true,"nid":4},{"tag":"stack","attrs":{"class":"dsx-page-header","visible-if":"dsx.attribute.description"},"children":[{"tag":"stack","attrs":{"class":"dsx-page-header-line","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-page-header-description","value":"{{ dsx.attribute.description }}"},"children":[],"text":"","reactive":true,"nid":15},{"tag":"button","attrs":{"class":"dsx-page-header-more","visible-if":"dsx.variable.hasMore","variant":"plain","label":"{{ dsx.attribute.learnMore }}{{ dsx.attribute.article ? '' : ' ↗' }}","on:tap":"dsx.action.learn()"},"children":[],"text":"","reactive":true,"nid":16}],"text":"\n      \n      \n    ","reactive":true,"nid":14},{"tag":"sheet","attrs":{"detents":"content","present":"dsx.variable.reading","title":"{{ dsx.attribute.sheetTitle || dsx.attribute.title }}","close":"none","action":"Done","on:action":"dsx.variable.reading = false","on:dismiss":"dsx.variable.reading = false","__css":"c204"},"children":[{"tag":"stack","attrs":{"class":"dsx-page-header-article","__steers":"1"},"children":[{"tag":"markdown","attrs":{"class":"dsx-page-header-body","copyCode":"true","externalLinks":"true","value":"{{ dsx.attribute.article }}"},"children":[],"text":"","reactive":true,"nid":19}],"text":"\n        \n      ","reactive":true,"nid":18}],"text":"\n      \n    ","reactive":true,"nid":17}],"text":"\n    \n    \n  ","reactive":true,"nid":13}],"text":"\n  \n\n  \n  \n\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Post":{"name":"Post","scheme":"foundation","head":{"attributes":[{"as":"name"},{"as":"handle"},{"as":"avatar"},{"as":"text"},{"as":"image"},{"as":"time"},{"as":"timeText"},{"as":"likes","default":"0"},{"as":"comments","default":"0"},{"as":"liked","default":"'false'"},{"as":"actions","default":"'true'"}],"apis":[],"expects":[],"events":[{"as":"like","payload":[]},{"as":"comment","payload":[]},{"as":"share","payload":[]},{"as":"open","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"postAge","body":"\n      const authored = String(dsx.attribute.timeText == null ? '' : dsx.attribute.timeText).trim()\n      if (authored != '') { return authored }\n      const raw = dsx.attribute.time\n      if (raw == null || String(raw).trim() == '') { return '' }\n      const then = typeof raw == 'number' ? raw : Date.parse(String(raw))\n      if (!Number.isFinite(then)) { return String(raw) }\n      const secs = Math.round((Date.now() - then) / 1000)\n      if (secs &lt; 60) { return 'now' }\n      if (secs &lt; 3600) { return Math.floor(secs / 60) + 'm' }\n      if (secs &lt; 86400) { return Math.floor(secs / 3600) + 'h' }\n      if (secs &lt; 604800) { return Math.floor(secs / 86400) + 'd' }\n      return Math.floor(secs / 604800) + 'w'\n    ","computed":true},{"as":"postInitials","body":"\n      const name = String(dsx.attribute.name == null ? '' : dsx.attribute.name).trim()\n      const parts = name.split(' ').filter((p) => p != '')\n      if (parts.length == 0) { return '' }\n      if (parts.length == 1) { return parts[0].slice(0, 2).toUpperCase() }\n      return (parts[0].slice(0, 1) + parts[parts.length - 1].slice(0, 1)).toUpperCase()\n    ","computed":true},{"as":"postSay","body":"\n      let out = String(dsx.attribute.name == null ? '' : dsx.attribute.name)\n      if (dsx.variable.postAge != '') { out = out + ', ' + dsx.variable.postAge + ' ago' }\n      return out + '. ' + String(dsx.attribute.text == null ? '' : dsx.attribute.text)\n    ","computed":true},{"as":"postCounts","body":"\n      const short = (n) => {\n        const v = Number(n)\n        if (!Number.isFinite(v) || v &lt;= 0) { return '' }\n        if (v &lt; 1000) { return String(Math.round(v)) }\n        if (v &lt; 1000000) { return (Math.round(v / 100) / 10) + 'K' }\n        return (Math.round(v / 100000) / 10) + 'M'\n      }\n      return { likes: short(dsx.attribute.likes), comments: short(dsx.attribute.comments) }\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-post","a11yGroup":"true","a11yLabel":"{{ dsx.variable.postSay }}","__flexDirection":"row","__steers":"1","__css":"c217"},"children":[{"tag":"Avatar","attrs":{"src":"{{ dsx.attribute.avatar }}","initials":"{{ dsx.variable.postInitials }}","a11yHidden":"true","__css":"c218"},"children":[],"text":"","reactive":true},{"tag":"vstack","attrs":{"class":"dsx-post-body","__steers":"1","__css":"c219"},"children":[{"tag":"hstack","attrs":{"class":"dsx-post-byline","a11yHidden":"true","__steers":"1","__css":"c220"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.attribute.name }}","type":"callout","lineLimit":"1","__css":"c38"},"children":[],"text":"","reactive":true},{"tag":"text","attrs":{"visible-if":"dsx.attribute.handle","value":"{{ dsx.attribute.handle }}","type":"footnote","lineLimit":"1","__css":"c39"},"children":[],"text":"","reactive":true},{"tag":"spacer","attrs":{},"children":[],"text":"","reactive":false},{"tag":"text","attrs":{"visible-if":"dsx.variable.postAge != ''","value":"{{ dsx.variable.postAge }}","type":"footnote","__css":"c39"},"children":[],"text":"","reactive":true}],"text":"\n      \n      \n      \n      \n    ","reactive":true},{"tag":"text","attrs":{"visible-if":"dsx.attribute.text","markdown":"true","value":"{{ dsx.attribute.text }}","a11yHidden":"true","__css":"c45"},"children":[],"text":"","reactive":true},{"tag":"image","attrs":{"visible-if":"dsx.attribute.image","src":"{{ dsx.attribute.image }}","contentFit":"cover","aria-label":"Attached image","on:error":"dsx.log('post image failed')","__css":"c221"},"children":[],"text":"","reactive":true},{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false},{"tag":"hstack","attrs":{"visible-if":"dsx.attribute.actions == 'true'","class":"dsx-post-actions","__steers":"1","__css":"c222"},"children":[{"tag":"button","attrs":{"icon":"{{ dsx.attribute.liked == 'true' ? 'heart.fill' : 'heart' }}","label":"{{ dsx.variable.postCounts.likes }}","a11yLabel":"{{ dsx.attribute.liked == 'true' ? 'Unlike' : 'Like' }}","on:tap":"dsx.event('like')","__css":"c4"},"children":[],"text":"","reactive":true},{"tag":"button","attrs":{"icon":"bubble.right","label":"{{ dsx.variable.postCounts.comments }}","a11yLabel":"Comment","on:tap":"dsx.event('comment')","__css":"c4"},"children":[],"text":"","reactive":true},{"tag":"button","attrs":{"icon":"square.and.arrow.up","a11yLabel":"Share","on:tap":"dsx.event('share')","__css":"c4"},"children":[],"text":"","reactive":true}],"text":"\n      \n      \n      \n    ","reactive":true}],"text":"\n    \n\n    \n\n    \n\n    \n\n    \n  ","reactive":true}],"text":"\n  \n\n  \n\n  \n","reactive":true},"reactive":true,"language":"0"},"foundation.PromptInput":{"name":"PromptInput","scheme":"foundation","head":{"attributes":[{"as":"value"},{"as":"placeholder","default":"'Ask anything'"},{"as":"busy","default":"'false'"},{"as":"attachments"},{"as":"models"},{"as":"model"},{"as":"max"},{"as":"minLines","default":"1"},{"as":"maxLines","default":"8"},{"as":"attach","default":"'true'"},{"as":"voice","default":"'false'"},{"as":"recording","default":"'false'"},{"as":"level","default":"0","type":"number"},{"as":"transcript"},{"as":"elapsed","default":"0","type":"number"},{"as":"enterSends","default":"'true'"},{"as":"a11yLabel","default":"'Message'"},{"as":"voiceMode","default":"'false'"},{"as":"menu"},{"as":"mentions"},{"as":"mentionsPrompt","default":"'Type to search'"},{"as":"shape","default":"'auto'"},{"as":"notice"},{"as":"modelLabel"},{"as":"modelDetail"},{"as":"discardPrompt","default":"'Are you sure you want to discard this dictation?'"}],"apis":[],"expects":[],"events":[{"as":"change","payload":[]},{"as":"submit","payload":[]},{"as":"stop","payload":[]},{"as":"attach","payload":[]},{"as":"remove","payload":[]},{"as":"modelChange","payload":[]},{"as":"voice","payload":[]},{"as":"voiceStart","payload":[]},{"as":"voiceStop","payload":[]},{"as":"voiceCancel","payload":[]},{"as":"voiceMode","payload":[]},{"as":"noticeDismiss","payload":[]},{"as":"modelTap","payload":[]},{"as":"mention","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"promptDraft","body":"return ''","computed":false},{"as":"promptModel","body":"return ''","computed":false},{"as":"promptFocused","body":"return false","computed":false},{"as":"promptConfirm","body":"return false","computed":false},{"as":"promptNoticeHidden","body":"return false","computed":false},{"as":"promptBusy","body":"\n      const raw = dsx.attribute.busy\n      return raw === true || raw == 'true'\n    ","computed":true},{"as":"promptFiles","body":"\n      const raw = dsx.attribute.attachments\n      let rows = []\n      if (Array.isArray(raw)) { rows = raw }\n      else if (raw != null &amp;&amp; String(raw).trim().startsWith('[')) { rows = JSON.parse(raw) || [] }\n      return rows.map((row, i) => ({\n        id: String(row.id == null ? 'f' + i : row.id),\n        name: String(row.name == null ? 'Attachment' : row.name),\n        size: row.size\n      }))\n    ","computed":true},{"as":"promptModels","body":"\n      const raw = dsx.attribute.models\n      let rows = []\n      if (Array.isArray(raw)) { rows = raw }\n      else if (raw != null &amp;&amp; String(raw).trim().startsWith('[')) { rows = JSON.parse(raw) || [] }\n      else if (raw != null &amp;&amp; String(raw).trim() != '') { rows = String(raw).split(',') }\n      return rows.map((row) => ({\n        value: String(row.value == null ? row : row.value).trim(),\n        label: String(row.label == null ? (row.value == null ? row : row.value) : row.label).trim()\n      })).filter((row) => row.value != '')\n    ","computed":true},{"as":"promptLength","body":"\n      return String(dsx.variable.promptDraft == null ? '' : dsx.variable.promptDraft).length\n    ","computed":true},{"as":"promptOver","body":"\n      const max = Number(dsx.attribute.max)\n      return Number.isFinite(max) &amp;&amp; max > 0 &amp;&amp; dsx.variable.promptLength > max\n    ","computed":true},{"as":"promptReady","body":"\n      if (dsx.variable.promptOver) { return false }\n      if (String(dsx.variable.promptDraft).trim() != '') { return true }\n      return dsx.variable.promptFiles.length > 0\n    ","computed":true},{"as":"promptCount","body":"\n      const max = Number(dsx.attribute.max)\n      if (!Number.isFinite(max) || max &lt;= 0) { return '' }\n      return dsx.variable.promptLength + ' / ' + Math.round(max)\n    ","computed":true},{"as":"promptRecording","body":"\n      const raw = dsx.attribute.recording\n      return raw === true || raw == 'true'\n    ","computed":true},{"as":"promptLevel","body":"\n      const raw = Number(dsx.attribute.level)\n      if (!Number.isFinite(raw)) { return 0 }\n      return Math.max(0, Math.min(1, raw))\n    ","computed":true},{"as":"promptHeard","body":"\n      return String(dsx.attribute.transcript == null ? '' : dsx.attribute.transcript).trim()\n    ","computed":true},{"as":"promptElapsed","body":"\n      const raw = Number(dsx.attribute.elapsed)\n      const total = Number.isFinite(raw) &amp;&amp; raw > 0 ? Math.floor(raw) : 0\n      const seconds = total % 60\n      return Math.floor(total / 60) + ':' + (seconds &lt; 10 ? '0' + seconds : String(seconds))\n    ","computed":true},{"as":"promptNotice","body":"\n      if (dsx.variable.promptNoticeHidden) { return '' }\n      return String(dsx.attribute.notice == null ? '' : dsx.attribute.notice).trim()\n    ","computed":true},{"as":"promptExpanded","body":"\n      if (dsx.attribute.shape == 'card' || dsx.variable.promptFocused) { return true }\n      if (dsx.variable.promptNotice != '') { return true }\n      if (String(dsx.variable.promptDraft == null ? '' : dsx.variable.promptDraft) != '') { return true }\n      return dsx.variable.promptFiles.length > 0\n    ","computed":true},{"as":"promptAreas","body":"\n      if (!dsx.variable.promptExpanded) { return '\"plus field field field field mic send\"' }\n      const tray = dsx.variable.promptFiles.length > 0 ? '\"tray tray tray tray tray tray tray\" ' : ''\n      return '\"top top top top top top top\" ' + tray + '\"field field field field field field field\" \"plus model pills . count mic send\"'\n    ","computed":true},{"as":"promptSendFill","body":"\n      if (dsx.variable.promptBusy) { return 'var(--dsx-promptinput-stop-background, var(--dsx-promptinput-send-background, var(--dsx-label)))' }\n      if (dsx.variable.promptReady) { return 'var(--dsx-promptinput-send-background, var(--dsx-label))' }\n      return 'var(--dsx-promptinput-send-idle, var(--dsx-fill))'\n    ","computed":true},{"as":"promptSendInk","body":"\n      if (dsx.variable.promptBusy) { return 'var(--dsx-promptinput-stop-color, var(--dsx-promptinput-send-color, var(--dsx-background)))' }\n      if (dsx.variable.promptReady) { return 'var(--dsx-promptinput-send-color, var(--dsx-background))' }\n      return 'var(--dsx-tertiary-label)'\n    ","computed":true},{"as":"promptVoiceButton","body":"\n      return dsx.attribute.voiceMode == 'true' &amp;&amp; !dsx.variable.promptBusy &amp;&amp; !dsx.variable.promptReady &amp;&amp; (!dsx.variable.promptExpanded || dsx.attribute.shape == 'card')\n    ","computed":true},{"as":"promptMenu","body":"\n      const raw = dsx.attribute.menu\n      if (Array.isArray(raw)) { return raw }\n      if (raw != null &amp;&amp; String(raw).trim().startsWith('[')) { return JSON.parse(raw) || [] }\n      return []\n    ","computed":true},{"as":"promptMentionAt","body":"\n      const draft = String(dsx.variable.promptDraft == null ? '' : dsx.variable.promptDraft)\n      const at = draft.lastIndexOf('@')\n      if (at &lt; 0) { return -1 }\n      if (at > 0 &amp;&amp; draft.charAt(at - 1) != ' ' &amp;&amp; draft.charAt(at - 1) != '\\n') { return -1 }\n      const token = draft.slice(at + 1)\n      if (token.includes(' ') || token.includes('\\n')) { return -1 }\n      return at\n    ","computed":true},{"as":"promptMentionRows","body":"\n      const at = dsx.variable.promptMentionAt\n      if (at &lt; 0) { return [] }\n      const raw = dsx.attribute.mentions\n      let rows = []\n      if (Array.isArray(raw)) { rows = raw }\n      else if (raw != null &amp;&amp; String(raw).trim().startsWith('[')) { rows = JSON.parse(raw) || [] }\n      const query = String(dsx.variable.promptDraft).slice(at + 1).toLowerCase()\n      return rows.filter((row) => String(row.title == null ? '' : row.title).toLowerCase().includes(query))\n        .slice(0, 6)\n        .map((row, i) => ({\n          id: String(row.id == null ? 'm' + i : row.id),\n          title: String(row.title == null ? '' : row.title),\n          kind: String(row.kind == null ? '' : row.kind),\n          icon: String(row.icon == null ? 'sparkles' : row.icon),\n          color: String(row.color == null ? 'var(--dsx-accent)' : row.color),\n          first: i == 0\n        }))\n    ","computed":true}],"formulas":[],"actions":[{"as":"promptSync","inputs":{},"body":"\n      dsx.variable.promptDraft = String(dsx.attribute.value == null ? '' : dsx.attribute.value)\n    "},{"as":"promptSyncModel","inputs":{},"body":"\n      dsx.variable.promptModel = String(dsx.attribute.model == null ? '' : dsx.attribute.model)\n    "},{"as":"promptEmit","inputs":{},"body":"\n      dsx.event('change', { text: dsx.variable.promptDraft })\n    "},{"as":"promptSend","inputs":{},"body":"\n      if (!dsx.variable.promptReady) { return }\n      dsx.event('submit', {\n        text: String(dsx.variable.promptDraft).trim(),\n        attachments: dsx.variable.promptFiles\n      })\n      dsx.variable.promptDraft = ''\n    "},{"as":"promptAbsorb","inputs":{},"body":"\n      const heard = dsx.variable.promptHeard\n      if (heard == '') { return }\n      const draft = String(dsx.variable.promptDraft == null ? '' : dsx.variable.promptDraft)\n      const joiner = draft.trim() == '' ? '' : (draft.endsWith(' ') ? '' : ' ')\n      dsx.variable.promptDraft = draft + joiner + heard\n    "},{"as":"promptVoiceStart","inputs":{},"body":"\n      dsx.event('voice')\n      dsx.event('voiceStart')\n    "},{"as":"promptVoiceKeep","inputs":{},"body":"\n      dsx.action.promptAbsorb();\n      dsx.event('voiceStop')\n    "},{"as":"promptVoiceDiscard","inputs":{},"body":"\n      dsx.event('voiceCancel')\n    "},{"as":"promptPrimary","inputs":{},"body":"\n      if (dsx.variable.promptBusy) { dsx.event('stop') } else { dsx.action.promptSend() }\n    "},{"as":"promptPickMention","inputs":{},"body":"\n      const at = dsx.variable.promptMentionAt\n      if (at &lt; 0) { return }\n      const draft = String(dsx.variable.promptDraft)\n      dsx.variable.promptDraft = draft.slice(0, at) + '@' + dsx.this.title + ' '\n      dsx.event('mention', { id: dsx.this.id, title: dsx.this.title })\n    "},{"as":"promptDismissNotice","inputs":{},"body":"\n      dsx.variable.promptNoticeHidden = true\n      dsx.event('noticeDismiss')\n    "},{"as":"promptVoiceSend","inputs":{},"body":"\n      dsx.action.promptAbsorb();\n      dsx.event('voiceStop')\n      dsx.action.promptSend()\n    "},{"as":"promptDiscardConfirmed","inputs":{},"body":"\n      dsx.variable.promptConfirm = false\n      dsx.action.promptVoiceDiscard()\n    "}],"watches":[{"value":"dsx.attribute.value","handler":"dsx.action.promptSync()","immediate":true},{"value":"dsx.attribute.notice","handler":"dsx.variable.promptNoticeHidden = false"},{"value":"dsx.attribute.model","handler":"dsx.action.promptSyncModel()","immediate":true},{"value":"dsx.variable.promptDraft","handler":"dsx.action.promptEmit()"}],"scripts":[],"globalScripts":[],"sheets":[".dsx-prompt-input-surface {\n    border-radius: var(--dsx-promptinput-radius, var(--dsx-surface-radius, 36.5px)); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6));\n    box-shadow: var(--dsx-promptinput-shadow, var(--dsx-shadow-1));\n    background: color-mix(in srgb, var(--dsx-promptinput-background, var(--dsx-surface-raised)) 84%, transparent);\n    -webkit-backdrop-filter: blur(20px) saturate(1.6);\n    backdrop-filter: blur(20px) saturate(1.6);\n    transition: box-shadow var(--dsx-dur-base) var(--dsx-ease), padding var(--dsx-dur-base) var(--dsx-ease-out);\n  }\n  @supports selector(:focus-within) {\n    .dsx-prompt-input-surface:focus-within { box-shadow: var(--dsx-promptinput-shadow-focus, var(--dsx-shadow-2)); }\n  }\n  .dsx-prompt-input-panel {\n    border-radius: var(--dsx-surface-radius, 36.5px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6));\n    box-shadow: var(--dsx-shadow-3);\n    background: color-mix(in srgb, var(--dsx-promptinput-background, var(--dsx-surface-raised)) 96%, transparent);\n    -webkit-backdrop-filter: blur(24px) saturate(1.6);\n    backdrop-filter: blur(24px) saturate(1.6);\n    transition: opacity var(--dsx-dur-base) var(--dsx-ease-out), transform var(--dsx-dur-base) var(--dsx-ease-out);\n  }\n  @starting-style {\n    .dsx-prompt-input-panel { opacity: 0; transform: translateY(6px) scale(0.98); }\n  }\n  .dsx-prompt-input-tool {\n    background-color: var(--dsx-promptinput-tool-background, transparent);\n    color: var(--dsx-label);\n    transition: background-color var(--dsx-dur-fast) var(--dsx-ease), color var(--dsx-dur-fast) var(--dsx-ease);\n  }\n  .dsx-prompt-input-pill {\n    background-color: var(--dsx-fill);\n    transition: background-color var(--dsx-dur-fast) var(--dsx-ease);\n  }\n  .dsx-prompt-input-chip {\n    background-color: var(--dsx-fill);\n    color: var(--dsx-label);\n    transition: background-color var(--dsx-dur-fast) var(--dsx-ease);\n  }\n  @media (hover: hover) and (pointer: fine) {\n    .dsx-prompt-input-tool:hover { background-color: var(--dsx-fill); }\n    .dsx-prompt-input-mention:hover { background-color: var(--dsx-fill); }\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dsx-prompt-input-surface, .dsx-prompt-input-panel, .dsx-prompt-input-tool, .dsx-prompt-input-chip { transition: none; }\n  }\n  @media (prefers-reduced-transparency: reduce) {\n    .dsx-prompt-input-surface, .dsx-prompt-input-panel { background: var(--dsx-promptinput-background, var(--dsx-surface-raised)); -webkit-backdrop-filter: none; backdrop-filter: none; }\n  }"]},"root":{"tag":"vstack","attrs":{"class":"dsx-prompt-input","__steers":"1","__css":"c224"},"children":[{"tag":"vstack","attrs":{"visible-if":"dsx.variable.promptMentionRows.length > 0","class":"dsx-prompt-input-panel","a11yLabel":"{{ dsx.attribute.mentionsPrompt }}","__steers":"1","__css":"c225"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.attribute.mentionsPrompt }}","type":"footnote","__css":"c226"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"list","attrs":{"bind":"dsx.variable.promptMentionRows","key":"id","__css":"c227"},"children":[{"tag":"pressable","attrs":{"class":"dsx-prompt-input-mention","on:tap":"dsx.action.promptPickMention()","a11yTrait":"button","a11yLabel":"{{ dsx.this.title }}, {{ dsx.this.kind }}","__style_reactive":"--dsx-rx-background-color:{{ dsx.this.first ? 'var(--dsx-fill)' : 'transparent' }}","__css":"c228"},"children":[{"tag":"hstack","attrs":{"__steers":"1","__css":"c229"},"children":[{"tag":"image","attrs":{"icon":"{{ dsx.this.icon }}","a11yHidden":"true","__inkAuthored":"true","__fontSize":"18px","__style_reactive":"--dsx-rx-color:{{ dsx.this.color }}","__css":"c198"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"text","attrs":{"value":"{{ dsx.this.title }}","lineLimit":"1","__css":"c230"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"text","attrs":{"value":"{{ dsx.this.kind }}","type":"footnote","lineLimit":"1","__css":"c39"},"children":[],"text":"","reactive":true,"nid":8}],"text":"\n          \n          \n          \n        ","reactive":true,"nid":5}],"text":"\n        \n      ","reactive":true,"nid":4}],"text":"\n      \n    ","reactive":true,"nid":3}],"text":"\n    \n    \n  ","reactive":true,"nid":1},{"tag":"vstack","attrs":{"class":"dsx-prompt-input-surface","__steers":"1","__style_reactive":"--dsx-rx-padding:{{ dsx.variable.promptExpanded && !dsx.variable.promptRecording ? '0.5rem' : '0.375rem' }}","__css":"c231"},"children":[{"tag":"text","attrs":{"visible-if":"dsx.variable.promptRecording && dsx.variable.promptHeard != ''","class":"dsx-prompt-input-heard","value":"{{ dsx.variable.promptHeard }}","lineLimit":"4","a11yHidden":"true","__css":"c232"},"children":[],"text":"","reactive":true,"nid":10},{"tag":"stack","attrs":{"visible-if":"!dsx.variable.promptRecording","class":"dsx-prompt-input-grid","__gridTemplateAreas":"{{ dsx.variable.promptAreas }}","__gridTemplateColumns":"auto auto auto minmax(0, 1fr) auto auto auto","__display":"grid","__steers":"1","__style_reactive":"grid-template-areas:{{ dsx.variable.promptAreas }}","__css":"c233"},"children":[{"tag":"vstack","attrs":{"visible-if":"dsx.variable.promptExpanded","class":"dsx-prompt-input-top","__steers":"1","__css":"c234"},"children":[{"tag":"hstack","attrs":{"visible-if":"dsx.variable.promptNotice != ''","class":"dsx-prompt-input-notice","__steers":"1","__css":"c235"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.variable.promptNotice }}","type":"footnote","lineLimit":"2","__css":"c236"},"children":[],"text":"","reactive":true,"nid":14},{"tag":"button","attrs":{"icon":"xmark","class":"dsx-prompt-input-tool","a11yLabel":"Dismiss","on:tap":"dsx.action.promptDismissNotice()","__css":"c237"},"children":[],"text":"","reactive":true,"nid":15}],"text":"\n          \n          \n        ","reactive":true,"nid":13},{"tag":"slot","attrs":{"name":"top"},"children":[],"text":"","reactive":false,"nid":16}],"text":"\n        \n        \n      ","reactive":true,"nid":12},{"tag":"list","attrs":{"visible-if":"dsx.variable.promptFiles.length > 0","class":"dsx-prompt-input-tray","bind":"dsx.variable.promptFiles","key":"id","axis":"horizontal","scroll":"true","a11yLabel":"Attachments","__css":"c238"},"children":[{"tag":"Attachment","attrs":{"name":"{{ dsx.this.name }}","size":"{{ dsx.this.size }}","on:remove":"dsx.event('remove', { id: dsx.this.id })"},"children":[],"text":"","reactive":true,"nid":18}],"text":"\n        \n      ","reactive":true,"nid":17},{"tag":"textarea","attrs":{"bind":"dsx.variable.promptDraft","placeholder":"{{ dsx.attribute.placeholder }}","minLines":"{{ dsx.attribute.minLines }}","maxLines":"{{ dsx.attribute.maxLines }}","submitOnEnter":"{{ dsx.attribute.enterSends }}","on:submit":"dsx.action.promptSend()","on:focus":"dsx.variable.promptFocused = true","on:blur":"dsx.variable.promptFocused = false","a11yLabel":"{{ dsx.attribute.a11yLabel }}","__style_reactive":"--dsx-rx-padding:{{ dsx.variable.promptExpanded ? '0.375rem 0.5rem 0.75rem' : '0.4375rem 0.25rem' }}","__css":"c239"},"children":[],"text":"","reactive":true,"nid":19},{"tag":"button","attrs":{"visible-if":"dsx.attribute.attach == 'true' && dsx.variable.promptMenu.length == 0","class":"dsx-prompt-input-tool","icon":"plus","a11yLabel":"Add an attachment","on:tap":"dsx.event('attach')","__css":"c240"},"children":[],"text":"","reactive":true,"nid":20},{"tag":"menu","attrs":{"visible-if":"dsx.attribute.attach == 'true' && dsx.variable.promptMenu.length > 0","menu":"dsx.variable.promptMenu","__css":"c241"},"children":[{"tag":"button","attrs":{"class":"dsx-prompt-input-tool","icon":"plus","a11yLabel":"Add","__css":"c242"},"children":[],"text":"","reactive":false,"nid":22}],"text":"\n        \n      ","reactive":true,"nid":21},{"tag":"pressable","attrs":{"visible-if":"dsx.variable.promptExpanded && String(dsx.attribute.modelLabel == null ? '' : dsx.attribute.modelLabel) != ''","class":"dsx-prompt-input-pill","on:tap":"dsx.event('modelTap')","a11yTrait":"button","a11yLabel":"Model, {{ dsx.attribute.modelLabel }} {{ dsx.attribute.modelDetail }}","__css":"c243"},"children":[{"tag":"hstack","attrs":{"__steers":"1","__css":"c244"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.attribute.modelLabel }}","type":"callout","lineLimit":"1","__css":"c45"},"children":[],"text":"","reactive":true,"nid":25},{"tag":"text","attrs":{"visible-if":"dsx.attribute.modelDetail","value":"{{ dsx.attribute.modelDetail }}","type":"callout","lineLimit":"1","__css":"c39"},"children":[],"text":"","reactive":true,"nid":26}],"text":"\n          \n          \n        ","reactive":true,"nid":24}],"text":"\n        \n      ","reactive":true,"nid":23},{"tag":"hstack","attrs":{"visible-if":"dsx.variable.promptExpanded","class":"dsx-prompt-input-pills","__steers":"1","__css":"c245"},"children":[{"tag":"slot","attrs":{"name":"center"},"children":[],"text":"","reactive":false,"nid":28},{"tag":"slot","attrs":{"name":"controls"},"children":[],"text":"","reactive":false,"nid":29}],"text":"\n        \n           \n      ","reactive":true,"nid":27},{"tag":"picker","attrs":{"visible-if":"dsx.variable.promptExpanded && dsx.variable.promptModels.length > 0 && String(dsx.attribute.modelLabel == null ? '' : dsx.attribute.modelLabel) == ''","bind":"dsx.variable.promptModel","optionsKey":"dsx.variable.promptModels","valueField":"value","labelField":"label","a11yLabel":"Model","on:change":"dsx.event('modelChange', { value: dsx.this.value })","__css":"c246"},"children":[],"text":"","reactive":true,"nid":30},{"tag":"text","attrs":{"visible-if":"dsx.variable.promptExpanded && dsx.variable.promptCount != ''","value":"{{ dsx.variable.promptCount }}","type":"caption2","a11yLabel":"{{ dsx.variable.promptCount }} characters","__style_reactive":"--dsx-rx-color:{{ dsx.variable.promptOver ? 'var(--dsx-destructive)' : 'var(--dsx-tertiary-label)' }}","__css":"c247"},"children":[],"text":"","reactive":true,"nid":31},{"tag":"button","attrs":{"visible-if":"dsx.attribute.voice == 'true' && !dsx.variable.promptBusy","class":"dsx-prompt-input-tool","icon":"mic","a11yLabel":"Dictate","on:tap":"dsx.action.promptVoiceStart()","__css":"c248"},"children":[],"text":"","reactive":true,"nid":32},{"tag":"button","attrs":{"visible-if":"dsx.variable.promptVoiceButton","icon":"waveform","a11yLabel":"Start voice mode","on:tap":"dsx.event('voiceMode')","__css":"c249"},"children":[],"text":"","reactive":true,"nid":33},{"tag":"button","attrs":{"visible-if":"!dsx.variable.promptVoiceButton","icon":"{{ dsx.variable.promptBusy ? 'stop.fill' : 'arrow.up' }}","class":"dsx-prompt-input-send","a11yLabel":"{{ dsx.variable.promptBusy ? 'Stop generating' : 'Send' }}","disabled-if":"!dsx.variable.promptBusy && !dsx.variable.promptReady","on:tap":"dsx.action.promptPrimary()","__style_reactive":"--dsx-rx-background-color:{{ dsx.variable.promptSendFill }};--dsx-rx-color:{{ dsx.variable.promptSendInk }}","__css":"c250"},"children":[],"text":"","reactive":true,"nid":34}],"text":"\n      \n\n      \n\n      \n\n      \n      \n\n      \n      \n      \n      \n\n      \n\n      \n      \n    ","reactive":true,"nid":11},{"tag":"hstack","attrs":{"visible-if":"dsx.variable.promptRecording","class":"dsx-prompt-input-recording","a11yLabel":"Recording, {{ dsx.variable.promptElapsed }}","a11yGroup":"true","__steers":"1","__css":"c99"},"children":[{"tag":"popover","attrs":{"present":"dsx.variable.promptConfirm","arrow":"bottom","on:dismiss":"dsx.variable.promptConfirm = false","__css":"c251"},"children":[{"tag":"button","attrs":{"icon":"xmark","class":"dsx-prompt-input-chip","a11yLabel":"Discard recording","on:tap":"dsx.variable.promptConfirm = true","__css":"c252"},"children":[],"text":"","reactive":true,"nid":37},{"tag":"vstack","attrs":{"slot":"content","__steers":"1","__css":"c253"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.attribute.discardPrompt }}","type":"body","__css":"c45"},"children":[],"text":"","reactive":true,"nid":39},{"tag":"button","attrs":{"label":"Discard","role":"destructive","on:tap":"dsx.action.promptDiscardConfirmed()"},"children":[],"text":"","reactive":true,"nid":40}],"text":"\n          \n          \n        ","reactive":true,"nid":38}],"text":"\n        \n        \n      ","reactive":true,"nid":36},{"tag":"AudioLevel","attrs":{"level":"{{ dsx.variable.promptLevel }}","bars":"24","__css":"c254"},"children":[],"text":"","reactive":true,"nid":41},{"tag":"text","attrs":{"value":"{{ dsx.variable.promptElapsed }}","type":"footnote","a11yHidden":"true","__css":"c96"},"children":[],"text":"","reactive":true,"nid":42},{"tag":"button","attrs":{"icon":"stop.fill","class":"dsx-prompt-input-chip","a11yLabel":"Stop and keep what was said","on:tap":"dsx.action.promptVoiceKeep()","__css":"c255"},"children":[],"text":"","reactive":true,"nid":43},{"tag":"button","attrs":{"icon":"arrow.up","class":"dsx-prompt-input-send","a11yLabel":"Send what was said","on:tap":"dsx.action.promptVoiceSend()","__css":"c256"},"children":[],"text":"","reactive":true,"nid":44}],"text":"\n      \n      \n      \n      \n      \n    ","reactive":true,"nid":35}],"text":"\n\n    \n    \n\n    \n    \n\n    \n    \n  ","reactive":true,"nid":9}],"text":"\n  \n\n  \n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Quote":{"name":"Quote","scheme":"foundation","head":{"attributes":[{"as":"a11yLabel"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-quote","role":"group","a11yLabel":"{{ dsx.attribute.a11yLabel || '' }}","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-quote-rail","a11yHidden":"true"},"children":[],"text":"","reactive":false,"nid":1},{"tag":"stack","attrs":{"class":"dsx-quote-body","__steers":"1"},"children":[{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":3}],"text":"\n    \n  ","reactive":false,"nid":2}],"text":"\n  \n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.ReadMore":{"name":"ReadMore","scheme":"foundation","head":{"attributes":[{"as":"value"},{"as":"title"},{"as":"label","default":"'Read more'"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"open","body":"return false","computed":false},{"as":"name","body":"return dsx.attribute.title ? dsx.attribute.label + ': ' + dsx.attribute.title : dsx.attribute.label","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-read-more","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-read-more-clip","__steers":"1"},"children":[{"tag":"markdown","attrs":{"class":"dsx-read-more-body","externalLinks":"true","value":"{{ dsx.attribute.value || '' }}"},"children":[],"text":"","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"button","attrs":{"class":"dsx-read-more-button","variant":"plain","label":"{{ dsx.attribute.label }}","a11yLabel":"{{ dsx.variable.name }}","on:tap":"dsx.variable.open = true"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"sheet","attrs":{"class":"dsx-read-more-sheet","detents":"full","present":"dsx.variable.open","title":"{{ dsx.attribute.title || dsx.attribute.label }}","close":"none","action":"Done","on:action":"dsx.variable.open = false","on:dismiss":"dsx.variable.open = false"},"children":[{"tag":"stack","attrs":{"class":"dsx-read-more-article","__steers":"1"},"children":[{"tag":"markdown","attrs":{"class":"dsx-read-more-full","copyCode":"true","externalLinks":"true","value":"{{ dsx.attribute.value || '' }}"},"children":[],"text":"","reactive":true,"nid":6}],"text":"\n      \n    ","reactive":true,"nid":5}],"text":"\n    \n  ","reactive":true,"nid":4}],"text":"\n  \n\n  \n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Recommendation":{"name":"Recommendation","scheme":"foundation","head":{"attributes":[{"as":"title","default":"''"},{"as":"reason","default":"''"},{"as":"value","default":"''"},{"as":"confidence","default":"''"},{"as":"alternatives"},{"as":"eyebrow","default":"'Recommended'"},{"as":"acceptLabel","default":"'Accept'"},{"as":"dismissLabel","default":"'Dismiss'"},{"as":"acceptedLabel","default":"'Accepted'"},{"as":"accepted","default":"false","type":"bool"}],"apis":[],"expects":[],"events":[{"as":"accept","payload":["value"]},{"as":"dismiss","payload":[]},{"as":"alternative","payload":["value","label"]}],"inputs":[],"tools":[],"variables":[{"as":"taken","body":"return dsx.attribute.accepted","computed":false}],"formulas":[{"as":"fraction","inputs":{},"body":"\n      const n = Number(dsx.attribute.confidence)\n      if (dsx.attribute.confidence == null || String(dsx.attribute.confidence) === '' || !Number.isFinite(n)) { return -1 }\n      return Math.max(0, Math.min(1, n > 1 ? n / 100 : n))\n    "},{"as":"word","inputs":{},"body":"\n      const f = dsx.formula.fraction\n      if (f < 0) { return '' }\n      if (f >= 0.75) { return 'High' }\n      if (f >= 0.45) { return 'Medium' }\n      return 'Low'\n    "},{"as":"segments","inputs":{},"body":"\n      const lit = Math.round(dsx.formula.fraction * 5)\n      return [0, 1, 2, 3, 4].map((i) => ({ key: 'g' + i, on: i < lit }))\n    "},{"as":"others","inputs":{},"body":"\n      const raw = dsx.attribute.alternatives\n      let list = []\n      if (Array.isArray(raw)) { list = raw }\n      else if (raw != null && String(raw).trim().startsWith('[')) { list = JSON.parse(raw) || [] }\n      return list.map((a, i) => {\n        const c = a.confidence == null || a.confidence === '' ? NaN : Number(a.confidence)\n        const pct = Number.isFinite(c) ? Math.round((c > 1 ? c / 100 : c) * 100) + '%' : ''\n        return { key: 'a' + i, value: String(a.value == null ? a.label : a.value), label: String(a.label == null ? a.value : a.label), pct: pct }\n      })\n    "}],"actions":[{"as":"accept","inputs":{},"body":"\n      dsx.variable.taken = true\n      dsx.event('accept', { value: dsx.attribute.value !== '' ? dsx.attribute.value : dsx.attribute.title })\n    "}],"watches":[],"scripts":[],"globalScripts":[],"sheets":[".dsx-recommendation-done { opacity: 1; transition: opacity 200ms ease-out }\n      @starting-style {\n        .dsx-recommendation-done { opacity: 0 }\n      }\n      .dsx-recommendation-seg { transition: background-color 240ms ease-out }"]},"root":{"tag":"vstack","attrs":{"class":"dsx-recommendation","__css":"c263"},"children":[{"tag":"hstack","attrs":{"__steers":"1","__css":"c106"},"children":[{"tag":"image","attrs":{"icon":"sparkles","a11yHidden":"true","__inkAuthored":"true","__fontSize":"14px","__css":"c16"},"children":[],"text":"","reactive":false,"nid":2},{"tag":"text","attrs":{"value":"{{ dsx.attribute.eyebrow }}","__css":"c17"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"text","attrs":{"visible-if":"{{ dsx.formula.word !== '' }}","value":"{{ dsx.formula.word }} confidence","__css":"c264"},"children":[],"text":"","reactive":true,"nid":4}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":1},{"tag":"vstack","attrs":{"__css":"c265"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.attribute.title }}","__css":"c266"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"text","attrs":{"visible-if":"{{ dsx.attribute.reason !== '' }}","value":"{{ dsx.attribute.reason }}","__css":"c267"},"children":[],"text":"","reactive":true,"nid":7}],"text":"\n    \n    \n  ","reactive":true,"nid":5},{"tag":"hstack","attrs":{"visible-if":"{{ dsx.formula.fraction >= 0 }}","a11yLabel":"{{ Math.round(dsx.formula.fraction * 100) }} percent confidence, {{ dsx.formula.word }}","a11yGroup":"true","__steers":"1","__css":"c268"},"children":[{"tag":"hstack","attrs":{"a11yHidden":"true","__steers":"1","__css":"c269"},"children":[{"tag":"stack","attrs":{"class":"dsx-recommendation-seg","repeat":"dsx.formula.segments","key":"key","__style_reactive":"--dsx-rx-background-color:{{ dsx.this.on ? 'var(--dsx-recommendation-meter, var(--dsx-accent))' : 'var(--dsx-fill)' }}","__css":"c270"},"children":[],"text":"","reactive":true,"nid":10}],"text":"\n      \n    ","reactive":true,"nid":9},{"tag":"text","attrs":{"a11yHidden":"true","value":"{{ Math.round(dsx.formula.fraction * 100) }}%","__css":"c271"},"children":[],"text":"","reactive":true,"nid":11}],"text":"\n    \n    \n  ","reactive":true,"nid":8},{"tag":"vstack","attrs":{"visible-if":"{{ dsx.formula.others.length > 0 }}","__css":"c272"},"children":[{"tag":"text","attrs":{"value":"Also considered","__css":"c273"},"children":[],"text":"","reactive":false,"nid":13},{"tag":"pressable","attrs":{"repeat":"dsx.formula.others","key":"key","a11yTrait":"button","a11yLabel":"{{ dsx.this.label }}{{ dsx.this.pct !== '' ? ', ' + dsx.this.pct + ' confidence' : '' }}","on:tap":"dsx.event('alternative', { value: dsx.this.value, label: dsx.this.label })","__css":"c9"},"children":[{"tag":"hstack","attrs":{"a11yHidden":"true","__steers":"1","__css":"c274"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.this.label }}","__css":"c275"},"children":[],"text":"","reactive":true,"nid":16},{"tag":"text","attrs":{"visible-if":"{{ dsx.this.pct !== '' }}","value":"{{ dsx.this.pct }}","__css":"c276"},"children":[],"text":"","reactive":true,"nid":17},{"tag":"image","attrs":{"icon":"chevron.right","__inkAuthored":"true","__fontSize":"11px","__css":"c277"},"children":[],"text":"","reactive":false,"nid":18}],"text":"\n        \n        \n        \n      ","reactive":true,"nid":15}],"text":"\n      \n    ","reactive":true,"nid":14}],"text":"\n    \n    \n  ","reactive":true,"nid":12},{"tag":"hstack","attrs":{"visible-if":"{{ !dsx.variable.taken }}","__steers":"1","__css":"c278"},"children":[{"tag":"button","attrs":{"variant":"plain","label":"{{ dsx.attribute.dismissLabel }}","on:tap":"dsx.event('dismiss')"},"children":[],"text":"","reactive":true,"nid":20},{"tag":"button","attrs":{"variant":"prominent","label":"{{ dsx.attribute.acceptLabel }}","on:tap":"dsx.action.accept()"},"children":[],"text":"","reactive":true,"nid":21}],"text":"\n    \n    \n  ","reactive":true,"nid":19},{"tag":"hstack","attrs":{"class":"dsx-recommendation-done","visible-if":"{{ dsx.variable.taken }}","__steers":"1","__css":"c278"},"children":[{"tag":"image","attrs":{"icon":"checkmark.circle.fill","a11yHidden":"true","__inkAuthored":"true","__fontSize":"16px","__css":"c147"},"children":[],"text":"","reactive":false,"nid":23},{"tag":"text","attrs":{"value":"{{ dsx.attribute.acceptedLabel }}","__css":"c148"},"children":[],"text":"","reactive":true,"nid":24}],"text":"\n    \n    \n  ","reactive":true,"nid":22}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.RecordsTable":{"name":"RecordsTable","scheme":"foundation","head":{"attributes":[{"as":"columns"},{"as":"rows"},{"as":"selected"},{"as":"sortOrder","default":"''"}],"apis":[],"expects":[],"events":[{"as":"open","payload":["id"]},{"as":"sort","payload":["key","direction"]}],"inputs":[],"tools":[],"variables":[{"as":"sortKey","body":"return String(dsx.attribute.sortOrder == null ? '' : dsx.attribute.sortOrder).trim().split(' ')[0]","computed":false},{"as":"sortDir","body":"return String(dsx.attribute.sortOrder == null ? '' : dsx.attribute.sortOrder).trim().toLowerCase().endsWith(' desc') ? 'desc' : 'asc'","computed":false}],"formulas":[{"as":"list","inputs":{},"body":"\n      const raw = dsx.attribute.rows\n      if (Array.isArray(raw)) { return raw }\n      if (raw != null &amp;&amp; String(raw).trim().startsWith('[')) { return JSON.parse(raw) || [] }\n      return []\n    "},{"as":"cols","inputs":{},"body":"\n      const raw = dsx.attribute.columns\n      let all = []\n      if (Array.isArray(raw)) { all = raw }\n      else if (raw != null &amp;&amp; String(raw).trim().startsWith('[')) { all = JSON.parse(raw) || [] }\n      const rows = dsx.formula.list\n      const filled = (c) => rows.some((r) => { const v = r[c.key]; return Array.isArray(v) ? v.length > 0 : v != null &amp;&amp; String(v) !== '' })\n      const list = all.filter((c, i) => i === 0 || filled(c))\n      return list.map((c, i) => {\n        const type = ['number', 'tags', 'strength', 'status', 'time'].includes(c.type) ? c.type : 'text'\n        const sorted = dsx.variable.sortKey === String(c.key)\n        const fill = c.width === 'fill'\n        const px = fill ? (Number(c.min) || 120) : (Number(c.width) || (type === 'tags' ? 170 : 110))\n        const label = String(c.label == null ? c.key : c.label)\n        return { key: String(c.key), label: label, type: type, width: px + 'px', grow: fill ? '2' : '1', first: i === 0, last: i === list.length - 1,\n                 end: i === list.length - 1 ? '8px' : (type === 'number' ? '40px' : '16px'), sorted: sorted, glyph: sorted &amp;&amp; dsx.variable.sortDir === 'desc' ? 'chevron.down' : 'chevron.up',\n                 align: type === 'number' ? 'flex-end' : 'flex-start',\n                 say: label + (sorted ? (dsx.variable.sortDir === 'desc' ? ', sorted descending' : ', sorted ascending') : ', sortable') }\n      })\n    "},{"as":"head","inputs":{},"body":"return dsx.formula.cols.length > 0 ? dsx.formula.cols[0] : { key: '', label: '', width: '150px', grow: '1', end: '8px' }"},{"as":"rest","inputs":{},"body":"return dsx.formula.cols.slice(1)"},{"as":"records","inputs":{},"body":"\n      const list = dsx.formula.list\n      const cols = dsx.formula.cols\n      const key = dsx.variable.sortKey\n      const col = cols.find((c) => c.key === key)\n      const value = (r) => {\n        const v = r[key]\n        if (col != null &amp;&amp; (col.type === 'number' || col.type === 'strength')) { const n = parseFloat(String(v)); return Number.isFinite(n) ? n : 0 }\n        if (col != null &amp;&amp; col.type === 'time') { return typeof v === 'number' ? v : (Date.parse(String(v)) || 0) }\n        if (Array.isArray(v)) { return v.join(' ').toLowerCase() }\n        return String(v == null ? '' : v).toLowerCase()\n      }\n      const sorted = key === '' || col == null ? list : list.toSorted((a, b) => {\n        const x = value(a)\n        const y = value(b)\n        const d = x &lt; y ? -1 : x > y ? 1 : 0\n        return dsx.variable.sortDir === 'desc' ? -d : d\n      })\n      const words = ['weak', 'fair', 'good', 'strong']\n      const inks = { accent: 'var(--dsx-accent)', success: 'var(--dsx-success)', warning: 'var(--dsx-warning)', danger: 'var(--dsx-danger)', info: 'var(--dsx-info)' }\n      const now = Date.now()\n      const moment = (v) => {\n        const t = typeof v === 'number' ? v : Date.parse(String(v == null ? '' : v))\n        if (!Number.isFinite(t) || t &lt;= 0) { return { text: '', hint: '' } }\n        const s = Math.max(0, Math.round((now - t) / 1000))\n        const exact = new Date(t).toLocaleString('en-US', { dateStyle: 'medium', timeStyle: 'short' })\n        let text = new Date(t).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })\n        if (s &lt; 60) { text = 'Just now' }\n        else if (s &lt; 3600) { text = Math.floor(s / 60) + 'm ago' }\n        else if (s &lt; 86400) { text = Math.floor(s / 3600) + 'h ago' }\n        else if (s &lt; 172800) { text = 'Yesterday' }\n        else if (s &lt; 604800) { text = Math.floor(s / 86400) + 'd ago' }\n        return { text: text, hint: exact }\n      }\n      const statusCol = cols.slice(1).find((c) => c.type === 'status')\n      const chosen = String(dsx.attribute.selected == null ? '' : dsx.attribute.selected)\n      const ids = sorted.map((r, i) => String(r.id == null ? i : r.id))\n      return sorted.map((r, i) => {\n        const id = ids[i]\n        const name = cols.length > 0 ? String(r[cols[0].key] == null ? '' : r[cols[0].key]) : id\n        const cells = cols.slice(1).map((c, j) => {\n          const v = r[c.key]\n          let f = Number(v)\n          if (!Number.isFinite(f)) { f = 0 }\n          if (f > 1) { f = f / 100 }\n          const step = Math.max(0, Math.min(3, Math.floor(f * 4 - 0.0001)))\n          const tags = Array.isArray(v) ? v.map((t, k) => ({ key: 't' + k, t: String(t) })) : []\n          const when = c.type === 'time' ? moment(v) : { text: '', hint: '' }\n          const text = c.type === 'time' ? when.text : (Array.isArray(v) ? '' : String(v == null ? '' : v))\n          const role = c.type === 'status' ? String(r[c.key + 'Role'] == null ? '' : r[c.key + 'Role']) : ''\n          const part = text === '' &amp;&amp; tags.length === 0 &amp;&amp; c.type !== 'strength' ? '' : ', ' + c.label + ' ' + (c.type === 'strength' ? words[step] : c.type === 'tags' ? tags.map((t) => t.t).join(' and ') : c.type === 'time' &amp;&amp; when.hint !== '' ? text + ', ' + when.hint : text)\n          return { part: part, key: 'c' + j, type: c.type, width: c.width, grow: c.grow, end: c.end, align: c.align, text: text, hint: when.hint, role: role,\n                   ink: inks[role] || 'var(--dsx-tertiary-label)', spin: role === 'progress', tags: tags, word: words[step],\n                   bars: [0, 1, 2, 3].map((k) => ({ key: 'b' + k, on: k &lt;= step &amp;&amp; f > 0 })) }\n        })\n        const lead = r.image ? 'image' : (r.icon ? 'icon' : 'monogram')\n        const subtitle = String(r.subtitle == null ? '' : r.subtitle)\n        const iconLabel = String(r.iconLabel == null ? '' : r.iconLabel)\n        const status = statusCol == null ? '' : String(r[statusCol.key] == null ? '' : r[statusCol.key])\n        const statusRole = statusCol == null ? '' : String(r[statusCol.key + 'Role'] == null ? '' : r[statusCol.key + 'Role'])\n        const picked = chosen !== '' &amp;&amp; chosen === id\n        const afterPicked = i > 0 &amp;&amp; chosen !== '' &amp;&amp; ids[i - 1] === chosen\n        const say = name + (iconLabel === '' ? '' : ', ' + iconLabel) + (subtitle === '' ? '' : ', ' + subtitle) + cells.map((c) => c.part).join('')\n        return { key: 'r' + id, id: id, name: name, subtitle: subtitle, monogram: name.substring(0, 1).toUpperCase(),\n                 lead: lead, icon: String(r.icon == null ? '' : r.icon), tint: String(r.iconName == null ? name : r.iconName), image: String(r.image == null ? '' : r.image),\n                 status: status, statusRole: statusRole, statusInk: inks[statusRole] || 'var(--dsx-tertiary-label)', statusSpin: statusRole === 'progress',\n                 sep: i > 0 &amp;&amp; !picked &amp;&amp; !afterPicked ? '1' : '0', sepInset: lead === 'icon' ? '50px' : '56px',\n                 picked: picked, rowClass: picked ? 'dsx-records-table-row dsx-records-table-row-selected' : 'dsx-records-table-row',\n                 cells: cells, say: say + (picked ? ', selected' : ''), row: r }\n      })\n    "}],"actions":[{"as":"sortBy","inputs":{},"body":"\n      if (dsx.variable.sortKey === dsx.this.key) { dsx.variable.sortDir = dsx.variable.sortDir === 'asc' ? 'desc' : 'asc' }\n      else { dsx.variable.sortKey = dsx.this.key; dsx.variable.sortDir = 'asc' }\n      dsx.event('sort', { key: dsx.variable.sortKey, direction: dsx.variable.sortDir })\n    "}],"watches":[],"scripts":[],"globalScripts":[],"sheets":["@property --dsx-records-table-row-height { syntax: \"&lt;length&gt;\"; inherits: true; initial-value: 52px }\n      .dsx-records-table-row { transition: background-color var(--dsx-dur-fast, 120ms) ease }\n      .dsx-records-table-row-selected { background-color: var(--dsx-records-table-selection, color-mix(in srgb, var(--dsx-state-tint, var(--dsx-label)) var(--dsx-state-selected, 12%), transparent)) }\n      @media (hover: hover) and (pointer: fine) {\n        /* ONE hover surface (owner 2026-10-07: \"Why a double hover with different hover states?\"): the row's pressable owns\n           hover and press (the stock state layer over its whole box); the row inside it paints only the selection. */\n        .dsx-records-table-hit:hover .dsx-records-table-sep,\n        .dsx-records-table-hit:hover + .dsx-records-table-hit .dsx-records-table-sep { visibility: hidden }\n      }\n      /* THE HIGHLIGHT IS THE WHOLE ROW (owner 2026-10-08: \"I need the hover full width of the card list item\"): a row's\n         hover and press fill it edge to edge with no radius and no inset, clipped by the table's own continuous corner on\n         the first and last rows, and the highlighted row hides the separators beside it, as an iOS list row does. */\n      /* keyboard focus on a row is the row wash, never a ring (a ring around an edge-to-edge row would be cut by the\n         platter's clip): the --dsx-focus-row recipe a list row takes */\n      .dsx-records-table-hit:focus-visible { outline: none; box-shadow: none; background-image: linear-gradient(var(--dsx-focus-row), var(--dsx-focus-row)) }\n      .dsx-records-table-hit:active .dsx-records-table-sep,\n      .dsx-records-table-hit:active + .dsx-records-table-hit .dsx-records-table-sep { visibility: hidden }"]},"root":{"tag":"vstack","attrs":{"class":"dsx-records-table dsx-list-bleed","container":"true","__css":"c279"},"children":[{"tag":"vstack","attrs":{"visible-if":"dsx.element.width > 0 && dsx.element.width < 560","__css":"c280"},"children":[{"tag":"pressable","attrs":{"repeat":"dsx.formula.records","key":"key","class":"dsx-records-table-hit","on:tap":"dsx.event('open', { id: dsx.this.id })","a11yLabel":"{{ dsx.this.say }}","a11yTrait":"button","__css":"c281"},"children":[{"tag":"vstack","attrs":{"a11yHidden":"true","__css":"c282"},"children":[{"tag":"stack","attrs":{"class":"dsx-records-table-sep","__style_reactive":"margin-left:{{ dsx.this.sepInset }};--dsx-rx-opacity:{{ dsx.this.sep }}","__css":"c283"},"children":[],"text":"","reactive":true,"nid":4},{"tag":"hstack","attrs":{"class":"{{ dsx.this.rowClass }}","__steers":"1","__css":"c284"},"children":[{"tag":"IconTile","attrs":{"visible-if":"dsx.this.lead === 'image'","src":"{{ dsx.this.image }}","name":"{{ dsx.this.tint }}"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"image","attrs":{"class":"dsx-records-table-lead","visible-if":"dsx.this.lead === 'icon'","icon":"{{ dsx.this.icon }}","__inkAuthored":"true","__fontSize":"17px","__css":"c285"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"stack","attrs":{"visible-if":"dsx.this.lead === 'monogram'","__steers":"1","__css":"c286"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.this.monogram }}","__css":"c287"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n            \n          ","reactive":true,"nid":8},{"tag":"vstack","attrs":{"__css":"c288"},"children":[{"tag":"text","attrs":{"class":"dsx-records-table-name","value":"{{ dsx.this.name }}","__css":"c289"},"children":[],"text":"","reactive":true,"nid":11},{"tag":"text","attrs":{"visible-if":"{{ dsx.this.subtitle !== '' }}","value":"{{ dsx.this.subtitle }}","__css":"c290"},"children":[],"text":"","reactive":true,"nid":12}],"text":"\n            \n            \n          ","reactive":true,"nid":10},{"tag":"hstack","attrs":{"class":"dsx-records-table-status","visible-if":"dsx.this.status !== ''","__steers":"1","__css":"c291"},"children":[{"tag":"stack","attrs":{"class":"dsx-records-table-dot","visible-if":"!dsx.this.statusSpin","__style_reactive":"--dsx-rx-background-color:{{ dsx.this.statusInk }}","__css":"c292"},"children":[],"text":"","reactive":true,"nid":14},{"tag":"spinner","attrs":{"visible-if":"dsx.this.statusSpin","__css":"c293"},"children":[],"text":"","reactive":true,"nid":15},{"tag":"text","attrs":{"value":"{{ dsx.this.status }}","__css":"c294"},"children":[],"text":"","reactive":true,"nid":16}],"text":"\n            \n            \n            \n          ","reactive":true,"nid":13},{"tag":"image","attrs":{"icon":"chevron.forward","__inkAuthored":"true","__fontSize":"13px","__css":"c295"},"children":[],"text":"","reactive":false,"nid":17}],"text":"\n          \n          \n          \n          \n          \n          \n        ","reactive":true,"nid":5}],"text":"\n        \n        \n      ","reactive":true,"nid":3}],"text":"\n      \n    ","reactive":true,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"scroll","attrs":{"class":"dsx-records-table-wide","axis":"horizontal","indicators":"false","visible-if":"!(dsx.element.width > 0 && dsx.element.width < 560)","__css":"c9"},"children":[{"tag":"vstack","attrs":{"__css":"c296"},"children":[{"tag":"hstack","attrs":{"class":"dsx-records-table-header","__steers":"1","__css":"c297"},"children":[{"tag":"pressable","attrs":{"repeat":"dsx.formula.cols","key":"key","on:tap":"dsx.action.sortBy({ key: dsx.this.key })","a11yLabel":"{{ dsx.this.say }}","a11yTrait":"button","__style_reactive":"flex-grow:{{ dsx.this.grow }};flex-basis:{{ dsx.this.width }}","__css":"c205"},"children":[{"tag":"hstack","attrs":{"a11yHidden":"true","__steers":"1","__style_reactive":"justify-content:{{ dsx.this.align }};--dsx-rx-padding-right:{{ dsx.this.end }}","__css":"c298"},"children":[{"tag":"image","attrs":{"class":"dsx-records-table-sort","visible-if":"dsx.this.type === 'number'","icon":"{{ dsx.this.glyph }}","__inkAuthored":"true","__fontSize":"12px","__style_reactive":"--dsx-rx-opacity:{{ dsx.this.sorted ? '1' : '0' }}","__css":"c299"},"children":[],"text":"","reactive":true,"nid":23},{"tag":"text","attrs":{"value":"{{ dsx.this.label }}","__css":"c300"},"children":[],"text":"","reactive":true,"nid":24},{"tag":"image","attrs":{"class":"dsx-records-table-sort","visible-if":"dsx.this.type !== 'number'","icon":"{{ dsx.this.glyph }}","__inkAuthored":"true","__fontSize":"12px","__style_reactive":"--dsx-rx-opacity:{{ dsx.this.sorted ? '1' : '0' }}","__css":"c299"},"children":[],"text":"","reactive":true,"nid":25}],"text":"\n            \n            \n            \n            \n          ","reactive":true,"nid":22}],"text":"\n          \n        ","reactive":true,"nid":21}],"text":"\n        \n      ","reactive":true,"nid":20},{"tag":"pressable","attrs":{"repeat":"dsx.formula.records","key":"key","class":"dsx-records-table-hit","on:tap":"dsx.event('open', { id: dsx.this.id })","a11yLabel":"{{ dsx.this.say }}","a11yTrait":"button","__css":"c281"},"children":[{"tag":"vstack","attrs":{"a11yHidden":"true","__css":"c282"},"children":[{"tag":"stack","attrs":{"class":"dsx-records-table-sep","__style_reactive":"--dsx-rx-opacity:{{ dsx.this.sep }}","__css":"c301"},"children":[],"text":"","reactive":true,"nid":28},{"tag":"hstack","attrs":{"class":"{{ dsx.this.rowClass }}","__steers":"1","__css":"c302"},"children":[{"tag":"hstack","attrs":{"__steers":"1","__style_reactive":"flex-grow:{{ dsx.formula.head.grow }};flex-basis:{{ dsx.formula.head.width }};--dsx-rx-padding-right:{{ dsx.formula.head.end }}","__css":"c303"},"children":[{"tag":"IconTile","attrs":{"visible-if":"dsx.this.lead === 'image'","src":"{{ dsx.this.image }}","name":"{{ dsx.this.tint }}"},"children":[],"text":"","reactive":true,"nid":31},{"tag":"image","attrs":{"class":"dsx-records-table-lead","visible-if":"dsx.this.lead === 'icon'","icon":"{{ dsx.this.icon }}","__inkAuthored":"true","__fontSize":"17px","__css":"c285"},"children":[],"text":"","reactive":true,"nid":32},{"tag":"stack","attrs":{"visible-if":"dsx.this.lead === 'monogram'","__steers":"1","__css":"c286"},"children":[{"tag":"text","attrs":{"value":"{{ dsx.this.monogram }}","__css":"c287"},"children":[],"text":"","reactive":true,"nid":34}],"text":"\n                \n              ","reactive":true,"nid":33},{"tag":"vstack","attrs":{"__css":"c304"},"children":[{"tag":"text","attrs":{"class":"dsx-records-table-name","value":"{{ dsx.this.name }}","__css":"c289"},"children":[],"text":"","reactive":true,"nid":36},{"tag":"text","attrs":{"visible-if":"{{ dsx.this.subtitle !== '' }}","value":"{{ dsx.this.subtitle }}","__css":"c290"},"children":[],"text":"","reactive":true,"nid":37}],"text":"\n                \n                \n              ","reactive":true,"nid":35}],"text":"\n              \n              \n              \n              \n            ","reactive":true,"nid":30},{"tag":"hstack","attrs":{"repeat":"dsx.this.cells","key":"key","tooltip":"{{ dsx.this.hint }}","__steers":"1","__style_reactive":"flex-grow:{{ dsx.this.grow }};flex-basis:{{ dsx.this.width }};justify-content:{{ dsx.this.align }};--dsx-rx-padding-right:{{ dsx.this.end }}","__css":"c305"},"children":[{"tag":"text","attrs":{"visible-if":"{{ dsx.this.type === 'text' || dsx.this.type === 'number' || dsx.this.type === 'time' }}","value":"{{ dsx.this.text }}","__css":"c306"},"children":[],"text":"","reactive":true,"nid":39},{"tag":"hstack","attrs":{"class":"dsx-records-table-status","visible-if":"{{ dsx.this.type === 'status' && dsx.this.text !== '' }}","__steers":"1","__css":"c307"},"children":[{"tag":"stack","attrs":{"class":"dsx-records-table-dot","visible-if":"!dsx.this.spin","__style_reactive":"--dsx-rx-background-color:{{ dsx.this.ink }}","__css":"c292"},"children":[],"text":"","reactive":true,"nid":41},{"tag":"spinner","attrs":{"visible-if":"dsx.this.spin","__css":"c293"},"children":[],"text":"","reactive":true,"nid":42},{"tag":"text","attrs":{"value":"{{ dsx.this.text }}","__css":"c308"},"children":[],"text":"","reactive":true,"nid":43}],"text":"\n                \n                \n                \n              ","reactive":true,"nid":40},{"tag":"hstack","attrs":{"visible-if":"{{ dsx.this.type === 'tags' }}","__steers":"1","__css":"c143"},"children":[{"tag":"text","attrs":{"repeat":"dsx.this.tags","key":"key","value":"{{ dsx.this.t }}","__css":"c309"},"children":[],"text":"","reactive":true,"nid":45}],"text":"\n                \n              ","reactive":true,"nid":44},{"tag":"hstack","attrs":{"visible-if":"{{ dsx.this.type === 'strength' }}","__steers":"1","__css":"c310"},"children":[{"tag":"hstack","attrs":{"__steers":"1","__css":"c18"},"children":[{"tag":"stack","attrs":{"repeat":"dsx.this.bars","key":"key","__style_reactive":"--dsx-rx-background-color:{{ dsx.this.on ? 'var(--dsx-records-table-meter, var(--dsx-accent))' : 'var(--dsx-fill)' }}","__css":"c311"},"children":[],"text":"","reactive":true,"nid":48}],"text":"\n                  \n                ","reactive":true,"nid":47},{"tag":"text","attrs":{"value":"{{ dsx.this.word }}","__css":"c312"},"children":[],"text":"","reactive":true,"nid":49}],"text":"\n                \n                \n              ","reactive":true,"nid":46}],"text":"\n              \n              \n              \n              \n            ","reactive":true,"nid":38}],"text":"\n            \n            \n          ","reactive":true,"nid":29}],"text":"\n          \n          \n        ","reactive":true,"nid":27}],"text":"\n        \n      ","reactive":true,"nid":26}],"text":"\n      \n      \n    ","reactive":true,"nid":19}],"text":"\n    \n  ","reactive":true,"nid":18}],"text":"\n  \n\n  \n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.SettingsRow":{"name":"SettingsRow","scheme":"foundation","head":{"attributes":[{"as":"icon"},{"as":"status"},{"as":"iconStyle"},{"as":"image"},{"as":"title"},{"as":"subtitle"},{"as":"lines"},{"as":"code"},{"as":"more"},{"as":"badge"},{"as":"badgeRole"},{"as":"tone"},{"as":"value"},{"as":"valueIcon"},{"as":"count"},{"as":"link"},{"as":"linkIcon"},{"as":"checked"},{"as":"chevron"},{"as":"tappable"},{"as":"disabled"},{"as":"shortcut"}],"apis":[],"expects":[],"events":[{"as":"tap","payload":[]},{"as":"more","payload":[]}],"inputs":[],"tools":[],"variables":[{"as":"rowChecked","body":"\n      return dsx.attribute.checked === true || dsx.attribute.checked === 'true'\n    ","computed":true},{"as":"rowSelectable","body":"\n      return dsx.variable.rowChecked || dsx.attribute.checked === false || dsx.attribute.checked === 'false'\n    ","computed":true},{"as":"rowTappable","body":"\n      if (dsx.variable.rowDisabled) { return false }\n      return (!!dsx.attribute.chevron &amp;&amp; dsx.attribute.chevron !== 'false') || dsx.attribute.tappable === true || dsx.attribute.tappable === 'true' || !!dsx.attribute.link || dsx.variable.rowSelectable\n    ","computed":true},{"as":"rowDisabled","body":"\n      if (dsx.attribute.disabled === true || dsx.attribute.disabled === 'true') { return true }\n      return !!dsx.attribute.tone &amp;&amp; (dsx.attribute.tappable === false || dsx.attribute.tappable === 'false')\n    ","computed":true},{"as":"rowValue","body":"\n      const v = dsx.attribute.value\n      if (v === null || v === undefined || v === '') { return '' }\n      return String(v)\n    ","computed":true},{"as":"rowLinkIcon","body":"\n      const g = dsx.attribute.linkIcon\n      if (g === null || g === undefined || g === '') { return 'arrow.up.right.square' }\n      return g === 'none' ? '' : String(g)\n    ","computed":true},{"as":"rowValueText","body":"\n      const t = dsx.variable.rowValue\n      return (t.length > 15 &amp;&amp; !/\\s/.test(t)) ? t.replace(/([.\\/_:@-])(?=[A-Za-z0-9])/g, '$1\\u200b') : t\n    ","computed":true},{"as":"rowTitleText","body":"\n      const t = dsx.attribute.title == null ? '' : String(dsx.attribute.title)\n      return (t.length > 15 &amp;&amp; !/\\s/.test(t)) ? t.replace(/([.\\/_:@-])(?=[A-Za-z0-9])/g, '$1\\u200b') : t\n    ","computed":true},{"as":"rowSubtitleText","body":"\n      const t = dsx.attribute.subtitle == null ? '' : String(dsx.attribute.subtitle)\n      return (t.length > 15 &amp;&amp; !/\\s/.test(t)) ? t.replace(/([.\\/_:@-])(?=[A-Za-z0-9])/g, '$1\\u200b') : t\n    ","computed":true},{"as":"rowCodeText","body":"\n      const t = dsx.attribute.code == null ? '' : String(dsx.attribute.code)\n      return t.replace(/([.\\/_:@-])(?=[A-Za-z0-9])/g, '$1\\u200b')\n    ","computed":true},{"as":"rowStatusWord","body":"\n      return dsx.attribute.status == null ? '' : String(dsx.attribute.status).trim().toLowerCase()\n    ","computed":true},{"as":"rowPhase","body":"\n      const w = dsx.variable.rowStatusWord\n      if (w == '') { return '' }\n      const phases = { done: 'done', complete: 'done', completed: 'done', success: 'done', running: 'running', active: 'running',\n        failed: 'failed', error: 'failed', skipped: 'skipped', cancelled: 'skipped', warning: 'warning' }\n      return phases[w] || 'upcoming'\n    ","computed":true},{"as":"rowStatusIcon","body":"\n      const icons = { done: 'checkmark.circle.fill', complete: 'checkmark.circle.fill', completed: 'checkmark.circle.fill', success: 'checkmark.circle.fill',\n        failed: 'xmark.circle.fill', error: 'xmark.circle.fill', skipped: 'minus.circle', cancelled: 'minus.circle',\n        warning: 'exclamationmark.triangle.fill', queued: 'clock' }\n      return icons[dsx.variable.rowStatusWord] || 'circle'\n    ","computed":true},{"as":"rowStatusSay","body":"\n      const says = { done: 'completed', complete: 'completed', completed: 'completed', success: 'completed', running: 'in progress', active: 'in progress',\n        failed: 'failed', error: 'failed', skipped: 'skipped', cancelled: 'cancelled', warning: 'needs attention', queued: 'queued' }\n      return says[dsx.variable.rowStatusWord] || 'not started'\n    ","computed":true},{"as":"rowLeading","body":"\n      if (dsx.attribute.image) { return 'image' }\n      if (dsx.variable.rowPhase != '') { return dsx.variable.rowPhase == 'running' ? 'spinner' : 'status' }\n      if (dsx.attribute.icon) {\n        if (dsx.attribute.iconStyle == 'plain') { return 'plain' }\n        if (dsx.attribute.iconStyle == 'tile') { return 'tile' }\n        return 'system'\n      }\n      return 'none'\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-settings-row-root","__steers":"1"},"children":[{"tag":"SystemSettingsRow","attrs":{"visible-if":"dsx.css.supports('element(SystemSettingsRow)')","class":"{{ dsx.variable.rowDisabled ? 'dsx-settings-row-disabled' : '' }}","icon":"{{ dsx.variable.rowLeading == 'system' ? dsx.attribute.icon : '' }}","title":"{{ dsx.attribute.title }}","value":"{{ dsx.variable.rowValue }}","tone":"{{ dsx.attribute.tone }}","count":"{{ dsx.attribute.count || '' }}","checked":"{{ dsx.variable.rowChecked }}","chevron":"{{ !!dsx.attribute.chevron && dsx.attribute.chevron !== 'false' }}","tappable":"{{ dsx.variable.rowTappable }}","on:tap":"dsx.event('tap')"},"children":[{"tag":"stack","attrs":{"slot":"leading","class":"dsx-settings-row-icon","visible-if":"dsx.variable.rowLeading == 'tile'","__css":"c323","__steers":"1"},"children":[{"tag":"image","attrs":{"icon":"{{ dsx.attribute.icon }}","a11yHidden":"true","__inkAuthored":"true","__fontSize":"14px","__css":"c324"},"children":[],"text":"","reactive":true,"nid":3}],"text":"\n      \n    ","reactive":true,"nid":2},{"tag":"image","attrs":{"slot":"leading","class":"dsx-settings-row-glyph","visible-if":"dsx.variable.rowLeading == 'plain'","icon":"{{ dsx.attribute.icon }}","a11yHidden":"true","__fontSize":"20px","__css":"c223"},"children":[],"text":"","reactive":true,"nid":4},{"tag":"image","attrs":{"slot":"leading","class":"dsx-settings-row-image","visible-if":"dsx.variable.rowLeading == 'image'","src":"{{ dsx.attribute.image }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"image","attrs":{"slot":"leading","class":"dsx-settings-row-glyph dsx-settings-row-status dsx-settings-row-status-{{ dsx.variable.rowPhase }}","visible-if":"dsx.variable.rowLeading == 'status'","icon":"{{ dsx.variable.rowStatusIcon }}","a11yLabel":"{{ dsx.variable.rowStatusSay }}","__fontSize":"20px","__css":"c223"},"children":[],"text":"","reactive":true,"nid":6},{"tag":"spinner","attrs":{"slot":"leading","class":"dsx-settings-row-spinner","visible-if":"dsx.variable.rowLeading == 'spinner'","aria-label":"In progress"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"slot","attrs":{"name":"leading","slot":"leading"},"children":[],"text":"","reactive":false,"nid":8},{"tag":"chip","attrs":{"slot":"accessory","class":"dsx-settings-row-badge","visible-if":"dsx.attribute.badge","label":"{{ dsx.attribute.badge }}","role":"{{ dsx.attribute.badgeRole }}"},"children":[],"text":"","reactive":true,"nid":9},{"tag":"stack","attrs":{"slot":"subtitle","class":"dsx-settings-row-more-copy","visible-if":"dsx.attribute.subtitle || dsx.attribute.code","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-settings-row-subtitle","visible-if":"dsx.attribute.subtitle","value":"{{ dsx.attribute.subtitle }}","lineLimit":"{{ dsx.attribute.lines || 0 }}"},"children":[],"text":"","reactive":true,"nid":11},{"tag":"text","attrs":{"class":"dsx-settings-row-code","visible-if":"dsx.attribute.code","value":"{{ dsx.variable.rowCodeText }}"},"children":[],"text":"","reactive":true,"nid":12},{"tag":"button","attrs":{"class":"dsx-settings-row-more","visible-if":"dsx.attribute.lines && dsx.attribute.more","variant":"plain","label":"{{ dsx.attribute.more }}","on:tap":"dsx.event('more')"},"children":[],"text":"","reactive":true,"nid":13}],"text":"\n      \n      \n      \n    ","reactive":true,"nid":10},{"tag":"image","attrs":{"class":"dsx-settings-row-value-icon","visible-if":"dsx.attribute.valueIcon","icon":"{{ dsx.attribute.valueIcon }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":14},{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":15},{"tag":"stack","attrs":{"class":"dsx-settings-row-link","visible-if":"dsx.attribute.link","a11yHidden":"true","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-settings-row-link-text","value":"{{ dsx.attribute.link }}","__css":"c325"},"children":[],"text":"","reactive":true,"nid":17},{"tag":"image","attrs":{"visible-if":"dsx.variable.rowLinkIcon","icon":"{{ dsx.variable.rowLinkIcon }}","__inkAuthored":"true","__fontSize":"18px","__css":"c326"},"children":[],"text":"","reactive":true,"nid":18}],"text":"\n      \n      \n    ","reactive":true,"nid":16}],"text":"\n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n  ","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-settings-row {{ dsx.variable.rowDisabled ? 'dsx-settings-row-disabled' : '' }}","visible-if":"!dsx.css.supports('element(SystemSettingsRow)')","__steers":"1"},"children":[{"tag":"button","attrs":{"class":"dsx-settings-row-action","visible-if":"dsx.variable.rowTappable","label":"","a11yLabel":"{{ dsx.attribute.title }}","a11yValue":"{{ dsx.variable.rowChecked ? 'Selected' : (dsx.attribute.value || '') }}","shortcut":"{{ dsx.attribute.shortcut || '' }}","on:tap":"dsx.event('tap')"},"children":[],"text":"","reactive":true,"nid":20},{"tag":"stack","attrs":{"class":"dsx-settings-row-content","a11yGroup":"{{ dsx.variable.rowTappable }}","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-settings-row-icon","visible-if":"dsx.variable.rowLeading == 'tile'","__css":"c323","__steers":"1"},"children":[{"tag":"image","attrs":{"icon":"{{ dsx.attribute.icon }}","a11yHidden":"true","__inkAuthored":"true","__fontSize":"14px","__css":"c324"},"children":[],"text":"","reactive":true,"nid":23}],"text":"\n        \n      ","reactive":true,"nid":22},{"tag":"image","attrs":{"class":"dsx-settings-row-glyph","visible-if":"dsx.variable.rowLeading == 'plain'","icon":"{{ dsx.attribute.icon }}","a11yHidden":"true","__fontSize":"var(--dsx-settings-row-glyph-size, 27px)","__css":"c327"},"children":[],"text":"","reactive":true,"nid":24},{"tag":"image","attrs":{"class":"dsx-settings-row-glyph dsx-settings-row-glyph-system","visible-if":"dsx.variable.rowLeading == 'system'","icon":"{{ dsx.attribute.icon }}","a11yHidden":"true","__fontSize":"var(--dsx-settings-row-glyph-size, 27px)","__css":"c327"},"children":[],"text":"","reactive":true,"nid":25},{"tag":"image","attrs":{"class":"dsx-settings-row-image","visible-if":"dsx.variable.rowLeading == 'image'","src":"{{ dsx.attribute.image }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":26},{"tag":"image","attrs":{"class":"dsx-settings-row-glyph dsx-settings-row-status dsx-settings-row-status-{{ dsx.variable.rowPhase }}","visible-if":"dsx.variable.rowLeading == 'status'","icon":"{{ dsx.variable.rowStatusIcon }}","a11yLabel":"{{ dsx.variable.rowStatusSay }}","__fontSize":"var(--dsx-settings-row-glyph-size, 27px)","__css":"c327"},"children":[],"text":"","reactive":true,"nid":27},{"tag":"spinner","attrs":{"class":"dsx-settings-row-spinner","visible-if":"dsx.variable.rowLeading == 'spinner'","aria-label":"In progress"},"children":[],"text":"","reactive":true,"nid":28},{"tag":"slot","attrs":{"name":"leading"},"children":[],"text":"","reactive":false,"nid":29},{"tag":"stack","attrs":{"class":"dsx-settings-row-copy","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-settings-row-title-line","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-settings-row-title dsx-settings-row-tone-{{ dsx.attribute.tone || 'label' }}","value":"{{ dsx.variable.rowTitleText }}"},"children":[],"text":"","reactive":true,"nid":32},{"tag":"chip","attrs":{"class":"dsx-settings-row-badge","visible-if":"dsx.attribute.badge","label":"{{ dsx.attribute.badge }}","role":"{{ dsx.attribute.badgeRole }}"},"children":[],"text":"","reactive":true,"nid":33}],"text":"\n          \n          \n        ","reactive":true,"nid":31},{"tag":"text","attrs":{"class":"dsx-settings-row-subtitle","visible-if":"dsx.attribute.subtitle","value":"{{ dsx.variable.rowSubtitleText }}","lineLimit":"{{ dsx.attribute.lines || 0 }}"},"children":[],"text":"","reactive":true,"nid":34},{"tag":"button","attrs":{"class":"dsx-settings-row-more","visible-if":"dsx.attribute.lines && dsx.attribute.more","variant":"plain","label":"{{ dsx.attribute.more }}","on:tap":"dsx.event('more')"},"children":[],"text":"","reactive":true,"nid":35},{"tag":"text","attrs":{"class":"dsx-settings-row-code","visible-if":"dsx.attribute.code","value":"{{ dsx.variable.rowCodeText }}"},"children":[],"text":"","reactive":true,"nid":36}],"text":"\n        \n        \n        \n        \n      ","reactive":true,"nid":30},{"tag":"spacer","attrs":{},"children":[],"text":"","reactive":false,"nid":37},{"tag":"text","attrs":{"class":"dsx-settings-row-value","visible-if":"dsx.variable.rowValue !== ''","value":"{{ dsx.variable.rowValueText }}"},"children":[],"text":"","reactive":true,"nid":38},{"tag":"image","attrs":{"class":"dsx-settings-row-value-icon","visible-if":"dsx.attribute.valueIcon","icon":"{{ dsx.attribute.valueIcon }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":39},{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":40},{"tag":"text","attrs":{"class":"dsx-settings-row-count","visible-if":"dsx.attribute.count","value":"{{ dsx.attribute.count }}"},"children":[],"text":"","reactive":true,"nid":41},{"tag":"stack","attrs":{"class":"dsx-settings-row-link","visible-if":"dsx.attribute.link","a11yHidden":"true","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-settings-row-link-text","value":"{{ dsx.attribute.link }}","__css":"c325"},"children":[],"text":"","reactive":true,"nid":43},{"tag":"image","attrs":{"visible-if":"dsx.variable.rowLinkIcon","icon":"{{ dsx.variable.rowLinkIcon }}","__inkAuthored":"true","__fontSize":"18px","__css":"c326"},"children":[],"text":"","reactive":true,"nid":44}],"text":"\n        \n        \n      ","reactive":true,"nid":42},{"tag":"image","attrs":{"class":"dsx-settings-row-check","visible-if":"dsx.variable.rowChecked","icon":"checkmark","a11yHidden":"true","__fontSize":"20px","__css":"c223"},"children":[],"text":"","reactive":true,"nid":45},{"tag":"image","attrs":{"class":"dsx-settings-row-chevron","visible-if":"!!dsx.attribute.chevron && dsx.attribute.chevron !== 'false'","icon":"chevron.right","a11yHidden":"true","__fontSize":"17.5px","__css":"c328"},"children":[],"text":"","reactive":true,"nid":46}],"text":"\n      \n      \n      \n      \n      \n      \n      \n      \n      \n      \n      \n      \n      \n      \n      \n      \n    ","reactive":true,"nid":21}],"text":"\n    \n    \n  ","reactive":true,"nid":19},{"tag":"stack","attrs":{"class":"dsx-settings-row-separator dsx-settings-row-separator-{{ dsx.variable.rowLeading }}","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":47}],"text":"\n  \n\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Stat":{"name":"Stat","scheme":"foundation","head":{"attributes":[{"as":"label"},{"as":"value"},{"as":"delta"},{"as":"trend"},{"as":"icon"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"statTrend","body":"\n      const stated = String(dsx.attribute.trend || '').trim().toLowerCase()\n      if (stated == 'up' || stated == 'down' || stated == 'flat') { return stated }\n      const raw = String(dsx.attribute.delta == null ? '' : dsx.attribute.delta).trim()\n      if (raw == '') { return 'flat' }\n      if (raw.startsWith('-') || raw.startsWith('−')) { return 'down' }\n      if (raw.startsWith('+')) { return 'up' }\n      const n = parseFloat(raw)\n      if (isNaN(n) || n == 0) { return 'flat' }\n      return n > 0 ? 'up' : 'down'\n    ","computed":true},{"as":"statTrendWord","body":"\n      if (dsx.variable.statTrend == 'up') { return 'up' }\n      if (dsx.variable.statTrend == 'down') { return 'down' }\n      return 'no change'\n    ","computed":true},{"as":"statTrendIcon","body":"\n      if (dsx.variable.statTrend == 'up') { return 'arrow.up.right' }\n      if (dsx.variable.statTrend == 'down') { return 'arrow.down.right' }\n      return 'arrow.right'\n    ","computed":true},{"as":"statTrendTint","body":"\n      if (dsx.variable.statTrend == 'up') { return 'accent' }\n      if (dsx.variable.statTrend == 'down') { return 'destructive' }\n      return 'secondary'\n    ","computed":true},{"as":"statUtterance","body":"\n      const head = String(dsx.attribute.label || '') + ', ' + String(dsx.attribute.value || '')\n      const raw = String(dsx.attribute.delta == null ? '' : dsx.attribute.delta).trim()\n      if (raw == '') { return head }\n      return head + ', ' + dsx.variable.statTrendWord + ' ' + raw.replace(/^[+\\-−]/, '')\n    ","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-stat","__background":"var(--dsx-card-background, var(--dsx-list-cell, var(--dsx-secondary-grouped-background)))","__css":"c340"},"children":[{"tag":"stack","attrs":{"class":"dsx-stat-body","a11yGroup":"true","a11yLabel":"{{ dsx.variable.statUtterance }}","__steers":"1","__css":"c341"},"children":[{"tag":"stack","attrs":{"class":"dsx-stat-head","__flexDirection":"row","__steers":"1","__css":"c261"},"children":[{"tag":"image","attrs":{"visible-if":"dsx.attribute.icon","a11yHidden":"true","icon":"{{ dsx.attribute.icon }}","__inkAuthored":"true","__fontSize":"13px","__css":"c342"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"text","attrs":{"value":"{{ dsx.attribute.label }}","lineLimit":"1","__css":"c343"},"children":[],"text":"","reactive":true,"nid":4}],"text":"\n        \n        \n      ","reactive":true,"nid":2},{"tag":"text","attrs":{"value":"{{ dsx.attribute.value }}","lineLimit":"1","__css":"c344"},"children":[],"text":"","reactive":true,"nid":5},{"tag":"stack","attrs":{"visible-if":"dsx.attribute.delta","class":"dsx-stat-delta","__flexDirection":"row","__steers":"1","__css":"c64"},"children":[{"tag":"image","attrs":{"a11yHidden":"true","icon":"{{ dsx.variable.statTrendIcon }}","__inkAuthored":"true","__fontSize":"11px","__style_reactive":"--dsx-rx-color:{{ dsx.variable.statTrendTint }}","__css":"c345"},"children":[],"text":"","reactive":true,"nid":7},{"tag":"text","attrs":{"value":"{{ dsx.attribute.delta }}","lineLimit":"1","__style_reactive":"--dsx-rx-color:{{ dsx.variable.statTrendTint }}","__css":"c346"},"children":[],"text":"","reactive":true,"nid":8}],"text":"\n        \n        \n      ","reactive":true,"nid":6}],"text":"\n      \n      \n      \n    ","reactive":true,"nid":1}],"text":"\n  \n\n    \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.SummaryHeader":{"name":"SummaryHeader","scheme":"foundation","head":{"attributes":[{"as":"title"},{"as":"subtitle"},{"as":"image"},{"as":"icon"},{"as":"status"},{"as":"statusRole"},{"as":"facts"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[{"as":"summaryFacts","body":"\n      const f = dsx.attribute.facts\n      const rows = Array.isArray(f) ? f : (f &amp;&amp; String(f).trim().startsWith('[') ? (JSON.parse(f) || []) : [])\n      return rows.filter(r => r != null &amp;&amp; r.label != null &amp;&amp; r.value != null &amp;&amp; String(r.value) != '').map((r, i) => ({\n        key: 'f' + i, label: String(r.label), value: String(r.value), hint: r.hint == null ? '' : String(r.hint),\n        mono: r.mono === true || r.mono === 'true',\n        say: String(r.label) + ', ' + (r.hint == null || String(r.hint) == '' ? String(r.value) : String(r.value) + ', ' + String(r.hint))\n      }))\n    ","computed":true},{"as":"summaryHasArt","body":"return !!(dsx.attribute.image || dsx.attribute.icon)","computed":true}],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-summary-header"},"children":[{"tag":"stack","attrs":{"class":"dsx-summary-header-top","__row":"1","__steers":"1"},"children":[{"tag":"IconTile","attrs":{"class":"dsx-summary-header-icon","visible-if":"dsx.variable.summaryHasArt","src":"{{ dsx.attribute.image }}","icon":"{{ dsx.attribute.icon }}","name":"{{ dsx.attribute.title }}"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"stack","attrs":{"class":"dsx-summary-header-heading"},"children":[{"tag":"stack","attrs":{"class":"dsx-summary-header-title-line","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-summary-header-title","value":"{{ dsx.attribute.title }}","lineLimit":"2","a11yTrait":"header"},"children":[],"text":"","reactive":true,"nid":5}],"text":"\n        \n      ","reactive":true,"nid":4},{"tag":"stack","attrs":{"class":"dsx-summary-header-status dsx-summary-header-status-{{ dsx.attribute.statusRole || 'neutral' }}","visible-if":"dsx.attribute.status","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-summary-header-dot","a11yHidden":"true"},"children":[],"text":"","reactive":false,"nid":7},{"tag":"text","attrs":{"class":"dsx-summary-header-status-text","value":"{{ dsx.attribute.status }}","lineLimit":"1"},"children":[],"text":"","reactive":true,"nid":8}],"text":"\n        \n        \n      ","reactive":true,"nid":6},{"tag":"text","attrs":{"class":"dsx-summary-header-subtitle","visible-if":"dsx.attribute.subtitle","value":"{{ dsx.attribute.subtitle }}","lineLimit":"2"},"children":[],"text":"","reactive":true,"nid":9}],"text":"\n      \n      \n      \n    ","reactive":true,"nid":3},{"tag":"stack","attrs":{"class":"dsx-summary-header-actions","__row":"1","__steers":"1"},"children":[{"tag":"slot","attrs":{"name":"trailing"},"children":[],"text":"","reactive":false,"nid":11},{"tag":"slot","attrs":{"name":"actions"},"children":[],"text":"","reactive":false,"nid":12}],"text":"\n      \n         \n    ","reactive":false,"nid":10}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":1},{"tag":"grid","attrs":{"class":"dsx-summary-header-facts","visible-if":"dsx.variable.summaryFacts.length > 0","bind":"dsx.variable.summaryFacts","key":"key","columns":"adaptive","minimum":"150","scroll":"false"},"children":[{"tag":"stack","attrs":{"class":"dsx-summary-header-fact","tooltip":"{{ dsx.this.hint }}","a11yLabel":"{{ dsx.this.say }}","a11yGroup":"true"},"children":[{"tag":"text","attrs":{"class":"dsx-summary-header-fact-label","value":"{{ dsx.this.label }}","lineLimit":"1","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":15},{"tag":"text","attrs":{"class":"dsx-summary-header-fact-value {{ dsx.this.mono ? 'dsx-summary-header-fact-mono' : '' }}","value":"{{ dsx.this.value }}","lineLimit":"1","a11yHidden":"true"},"children":[],"text":"","reactive":true,"nid":16}],"text":"\n      \n      \n    ","reactive":true,"nid":14}],"text":"\n    \n  ","reactive":true,"nid":13}],"text":"\n  \n\n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.TagsField":{"name":"TagsField","scheme":"foundation","head":{"attributes":[{"as":"label"},{"as":"tags"},{"as":"separator","default":"','"},{"as":"suggestions"},{"as":"suggestionsKey"},{"as":"max","default":"0"},{"as":"validate"},{"as":"placeholder"},{"as":"keyboard"},{"as":"a11yLabel"}],"apis":[],"expects":[],"events":[{"as":"add","payload":["tags","added","rejected"]},{"as":"remove","payload":["tags","tag"]}],"inputs":[],"tools":[],"variables":[{"as":"tagsQuery","body":"return ''","computed":false},{"as":"tagsList","body":"\n      const given = dsx.attribute.tags\n      if (Array.isArray(given)) { return given.map(v => String(v)) }\n      return String(given == null ? '' : given).split(',').map(s => s.trim()).filter(s => s != '')\n    ","computed":true},{"as":"tagsRows","body":"\n      return dsx.variable.tagsList.map(tag => ({ key: 't' + tag, tag: tag }))\n    ","computed":true},{"as":"tagsMax","body":"\n      const n = Number(dsx.attribute.max || 0)\n      return isNaN(n) || n &lt; 0 ? 0 : Math.round(n)\n    ","computed":true},{"as":"tagsSeparators","body":"\n      const raw = String(dsx.attribute.separator == null ? '' : dsx.attribute.separator)\n      return raw == '' ? ',' : raw\n    ","computed":true},{"as":"tagsFull","body":"\n      const max = dsx.variable.tagsMax\n      return max &gt; 0 &amp;&amp; dsx.variable.tagsList.length &gt;= max\n    ","computed":true},{"as":"tagsAnnouncement","body":"\n      const count = dsx.variable.tagsList.length\n      return count + ' ' + (count == 1 ? 'tag' : 'tags')\n    ","computed":true},{"as":"tagsSuggestionRows","body":"\n      const rich = dsx.attribute.suggestionsKey\n      const raw = Array.isArray(rich)\n        ? rich.map(v => String(v))\n        : String(dsx.attribute.suggestions == null ? '' : dsx.attribute.suggestions).split(',').map(s => s.trim())\n      const query = String(dsx.variable.tagsQuery || '').trim().toLowerCase()\n      const chosen = dsx.variable.tagsList\n      return raw.filter(s => s != '' &amp;&amp; !chosen.includes(s))\n                .filter(s => query == '' || s.toLowerCase().includes(query))\n                .map(s => ({ key: 's' + s, tag: s }))\n    ","computed":true},{"as":"tagsShowsSuggestions","body":"\n      return dsx.variable.tagsSuggestionRows.length &gt; 0\n    ","computed":true}],"formulas":[],"actions":[{"as":"tagsCommit","inputs":{},"body":"\n      const separators = dsx.variable.tagsSeparators\n      const source = String(dsx.this.text || '') != '' ? String(dsx.this.text) : String(dsx.variable.tagsQuery || '')\n      const parts = source.split('').reduce((acc, ch) => {\n        if (separators.includes(ch)) { return acc.concat(['']) }\n        return acc.slice(0, acc.length - 1).concat([acc[acc.length - 1] + ch])\n      }, ['']);\n      const outcome = parts.reduce((acc, part) => {\n        const tag = String(part).trim()\n        if (tag == '') { return acc }\n        if (acc.tags.includes(tag)) { return { tags: acc.tags, added: acc.added, rejected: acc.rejected.concat([{ tag: tag, reason: 'duplicate' }]) } }\n        if (dsx.variable.tagsMax &gt; 0 &amp;&amp; acc.tags.length &gt;= dsx.variable.tagsMax) { return { tags: acc.tags, added: acc.added, rejected: acc.rejected.concat([{ tag: tag, reason: 'max-reached' }]) } }\n        const pattern = String(dsx.attribute.validate || '')\n        if (pattern != '' &amp;&amp; !regex(tag, pattern)) { return { tags: acc.tags, added: acc.added, rejected: acc.rejected.concat([{ tag: tag, reason: 'invalid' }]) } }\n        return { tags: acc.tags.concat([tag]), added: acc.added.concat([tag]), rejected: acc.rejected }\n      }, { tags: dsx.variable.tagsList, added: [], rejected: [] });\n      dsx.variable.tagsQuery = '';\n      dsx.event('add', outcome)\n    "},{"as":"tagsMaybeSplit","inputs":{},"body":"\n      const typed = String(dsx.variable.tagsQuery || '')\n      const separators = dsx.variable.tagsSeparators\n      const hit = typed.split('').some(ch => separators.includes(ch))\n      if (hit) { dsx.action.tagsCommit({ text: typed }) }\n    "},{"as":"tagsRemove","inputs":{},"body":"\n      dsx.event('remove', { tags: dsx.variable.tagsList.filter(t => t != dsx.this.tag), tag: dsx.this.tag })\n    "}],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-tagsfield","role":"group","a11yLabel":"{{ dsx.attribute.a11yLabel || dsx.attribute.label || 'Tags' }}","a11yValue":"{{ dsx.variable.tagsAnnouncement }}","__css":"c5"},"children":[{"tag":"text","attrs":{"visible-if":"dsx.attribute.label","value":"{{ dsx.attribute.label }}","lineLimit":"1","a11yHidden":"true","__css":"c157"},"children":[],"text":"","reactive":true},{"tag":"stack","attrs":{"visible-if":"dsx.variable.tagsRows.length","class":"dsx-tagsfield-chips","__css":"c9"},"children":[{"tag":"list","attrs":{"bind":"dsx.variable.tagsRows","key":"key","axis":"horizontal","scroll":"false","__css":"c196"},"children":[{"tag":"Chip","attrs":{"label":"{{ dsx.this.tag }}","icon":"xmark","on:tap":"dsx.action.tagsRemove({ tag: dsx.this.tag })"},"children":[],"text":"","reactive":true}],"text":"\n      \n    ","reactive":true}],"text":"\n    \n  ","reactive":true},{"tag":"textfield","attrs":{"bind":"dsx.variable.tagsQuery","disabled-if":"dsx.variable.tagsFull","placeholder":"{{ dsx.attribute.placeholder || 'Add' }}","keyboard":"{{ dsx.attribute.keyboard }}","a11yLabel":"{{ dsx.attribute.a11yLabel || dsx.attribute.label || 'Add a tag' }}","a11yHint":"{{ dsx.variable.tagsAnnouncement }}","on:change":"dsx.action.tagsMaybeSplit()","on:submit":"dsx.action.tagsCommit({ text: '' })"},"children":[],"text":"","reactive":true},{"tag":"stack","attrs":{"visible-if":"dsx.variable.tagsShowsSuggestions","class":"dsx-tagsfield-suggestions","role":"listbox","__css":"c9"},"children":[{"tag":"list","attrs":{"bind":"dsx.variable.tagsSuggestionRows","key":"key","axis":"horizontal","scroll":"false","__css":"c196"},"children":[{"tag":"Chip","attrs":{"label":"{{ dsx.this.tag }}","icon":"plus","on:tap":"dsx.action.tagsCommit({ text: dsx.this.tag })"},"children":[],"text":"","reactive":true}],"text":"\n      \n    ","reactive":true}],"text":"\n    \n  ","reactive":true}],"text":"\n  \n\n  \n\n  \n\n  \n\n  \n","reactive":true},"reactive":true,"language":"0"},"foundation.ThinkingOrb":{"name":"ThinkingOrb","scheme":"foundation","head":{"attributes":[{"as":"label"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"hstack","attrs":{"class":"dsx-thinking-orb","a11yLabel":"{{ dsx.attribute.label || 'Working' }}","a11yGroup":"true","__steers":"1","__css":"c99"},"children":[{"tag":"hstack","attrs":{"class":"dsx-thinking-dots","a11yHidden":"true","__steers":"1","__css":"c209"},"children":[{"tag":"vstack","attrs":{"class":"dsx-thinking-dot dsx-thinking-dot-1","__css":"c359"},"children":[],"text":"","reactive":false,"nid":2},{"tag":"vstack","attrs":{"class":"dsx-thinking-dot dsx-thinking-dot-2","__css":"c359"},"children":[],"text":"","reactive":false,"nid":3},{"tag":"vstack","attrs":{"class":"dsx-thinking-dot dsx-thinking-dot-3","__css":"c359"},"children":[],"text":"","reactive":false,"nid":4}],"text":"\n    \n    \n    \n  ","reactive":false,"nid":1},{"tag":"text","attrs":{"visible-if":"dsx.attribute.label","value":"{{ dsx.attribute.label }}","type":"footnote","__css":"c96"},"children":[],"text":"","reactive":true,"nid":5}],"text":"\n  \n\n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.ThreadPane":{"name":"ThreadPane","scheme":"foundation","head":{"attributes":[{"as":"label","default":"'Messages'"}],"apis":[],"expects":[],"events":[],"inputs":[],"tools":[],"variables":[],"formulas":[],"actions":[],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"vstack","attrs":{"class":"dsx-threadpane"},"children":[{"tag":"scroll","attrs":{"class":"dsx-threadpane-scroll","a11yLabel":"{{ dsx.attribute.label }}"},"children":[{"tag":"vstack","attrs":{"class":"dsx-threadpane-thread"},"children":[{"tag":"slot","attrs":{},"children":[],"text":"","reactive":false,"nid":3}],"text":"","reactive":false,"nid":2}],"text":"\n    \n  ","reactive":true,"nid":1},{"tag":"vstack","attrs":{"class":"dsx-threadpane-composer"},"children":[{"tag":"slot","attrs":{"name":"bottom"},"children":[],"text":"","reactive":false,"nid":5}],"text":"","reactive":false,"nid":4}],"text":"\n  \n  \n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"},"foundation.Timeline":{"name":"Timeline","scheme":"foundation","head":{"attributes":[{"as":"bind","type":"array"},{"as":"titleField","default":"'title'"},{"as":"detailField","default":"'detail'"},{"as":"trailingField","default":"'trailing'"},{"as":"timeField"},{"as":"stateField","default":"'state'"},{"as":"iconField","default":"'icon'"},{"as":"states"},{"as":"current"},{"as":"expand","default":"'current'"},{"as":"clickable","default":"'false'"},{"as":"a11yLabel"}],"apis":[],"expects":[],"events":[{"as":"select","payload":["key","index","state","title"]},{"as":"action","payload":["key","index","state","title"]}],"inputs":[],"tools":[],"variables":[{"as":"timelineStates","body":"\n      const stock = {\n        done: { icon: 'checkmark.circle.fill', say: 'completed', phase: 'done' },\n        complete: { icon: 'checkmark.circle.fill', say: 'completed', phase: 'done' },\n        completed: { icon: 'checkmark.circle.fill', say: 'completed', phase: 'done' },\n        success: { icon: 'checkmark.circle.fill', say: 'completed', phase: 'done' },\n        running: { icon: 'spinner', say: 'in progress', phase: 'current' },\n        active: { icon: '', say: 'in progress', phase: 'current' },\n        current: { icon: '', say: 'current', phase: 'current' },\n        queued: { icon: 'clock', say: 'queued', phase: 'upcoming' },\n        pending: { icon: '', say: 'not started', phase: 'upcoming' },\n        todo: { icon: 'circle', say: 'not done', phase: 'upcoming' },\n        upcoming: { icon: '', say: 'not started', phase: 'upcoming' },\n        failed: { icon: 'xmark.circle.fill', say: 'failed', phase: 'failed' },\n        error: { icon: 'xmark.circle.fill', say: 'failed', phase: 'failed' },\n        skipped: { icon: 'minus.circle', say: 'skipped', phase: 'skipped' },\n        cancelled: { icon: 'minus.circle', say: 'cancelled', phase: 'skipped' },\n        warning: { icon: 'exclamationmark.triangle.fill', say: 'needs attention', phase: 'done' },\n        info: { icon: 'info.circle.fill', say: '', phase: 'done' }\n      }\n      let custom = {}\n      if (dsx.attribute.states != null &amp;&amp; typeof dsx.attribute.states == 'object') { custom = dsx.attribute.states }\n      else if (dsx.attribute.states &amp;&amp; String(dsx.attribute.states).trim().startsWith('{')) { custom = JSON.parse(dsx.attribute.states) || {} }\n      return Object.assign({}, stock, custom)\n    ","computed":true},{"as":"timelineRaw","body":"\n      if (Array.isArray(dsx.attribute.bind)) { return dsx.attribute.bind }\n      if (dsx.attribute.bind &amp;&amp; String(dsx.attribute.bind).trim().startsWith('[')) { return JSON.parse(dsx.attribute.bind) || [] }\n      return []\n    ","computed":true},{"as":"timelineAt","body":"\n      const raw = dsx.variable.timelineRaw\n      const c = dsx.attribute.current\n      const sk = dsx.attribute.stateField || 'state'\n      if (c != null &amp;&amp; String(c) != '') {\n        for (let i = 0; i &lt; raw.length; i++) {\n          const r = raw[i]\n          if (typeof r == 'object' &amp;&amp; r != null &amp;&amp; r.key != null &amp;&amp; String(r.key) == String(c)) { return i }\n        }\n        const n = Number(c)\n        if (n &gt;= 1 &amp;&amp; n &lt;= raw.length) { return Math.floor(n) - 1 }\n        return -1\n      }\n      const states = dsx.variable.timelineStates\n      for (let i = 0; i &lt; raw.length; i++) {\n        const r = raw[i]\n        const s = typeof r == 'object' &amp;&amp; r != null ? String(r[sk] == null ? '' : r[sk]) : ''\n        const def = states[s]\n        if (def != null &amp;&amp; (def.phase == 'current' || def.phase == 'failed')) { return i }\n      }\n      return -1\n    ","computed":true},{"as":"timelineRows","body":"\n      const raw = dsx.variable.timelineRaw\n      const states = dsx.variable.timelineStates\n      const at = dsx.variable.timelineAt\n      const tk = dsx.attribute.titleField || 'title'\n      const dk = dsx.attribute.detailField || 'detail'\n      const rk = dsx.attribute.timeField || dsx.attribute.trailingField || 'trailing'\n      const sk = dsx.attribute.stateField || 'state'\n      const ik = dsx.attribute.iconField || 'icon'\n      const expand = String(dsx.attribute.expand || 'current')\n      const text = (v) => v == null ? '' : String(v)\n      const rows = raw.map((r, i) => {\n        const o = (typeof r == 'object' &amp;&amp; r != null) ? r : { title: r }\n        let state = text(o[sk])\n        if (state == '') { state = at &lt; 0 ? 'upcoming' : (i &lt; at ? 'done' : (i == at ? 'current' : 'upcoming')) }\n        const def = states[state] || { icon: '', say: '', phase: 'upcoming' }\n        const icon = text(o[ik]) != '' ? text(o[ik]) : text(def.icon)\n        const image = text(o.image)\n        const isCurrent = i == at\n        const expanded = expand == 'all' || (expand == 'current' &amp;&amp; (isCurrent || def.phase == 'failed'))\n        const items = Array.isArray(o.items) ? o.items.map((s, j) => ({ key: 'n' + j, title: text(typeof s == 'object' &amp;&amp; s != null ? s.title : s), trailing: text(typeof s == 'object' &amp;&amp; s != null ? s.trailing : '') })) : []\n        const title = text(tk == 'title' ? (o.title != null ? o.title : o.label) : o[tk])\n        const trailing = text(o[rk] != null ? o[rk] : (rk == 'trailing' ? o.time : null))\n        let say = title\n        if (text(def.say) != '') { say = say + ', ' + localize(text(def.say)) }\n        if (isCurrent &amp;&amp; def.phase != 'current') { say = say + ', ' + localize('current') }\n        if (trailing != '') { say = say + ', ' + trailing }\n        say = say + ', ' + (i + 1) + ' ' + localize('of') + ' ' + raw.length\n        return {\n          key: text(o.key) != '' ? text(o.key) : 'r' + i,\n          index: i,\n          number: String(i + 1),\n          title: title,\n          detail: text(o[dk]),\n          trailing: trailing,\n          state: state,\n          phase: def.phase,\n          marker: image != '' ? 'image' : (icon == 'spinner' ? 'spinner' : (icon != '' ? 'icon' : 'plain')),\n          icon: icon == 'spinner' ? '' : icon,\n          image: image,\n          action: text(o.action),\n          reason: text(o.reason),\n          fix: text(o.fix),\n          items: items,\n          current: isCurrent,\n          actionable: dsx.variable.timelineClickable == 'all' || (dsx.variable.timelineClickable == 'done' &amp;&amp; def.phase == 'done' &amp;&amp; !isCurrent),\n          expanded: expanded,\n          first: i == 0,\n          last: i == raw.length - 1,\n          say: say\n        }\n      })\n      return rows.map((r, i) => Object.assign(r, { afterDone: i &gt; 0 &amp;&amp; rows[i - 1].phase == 'done' }))\n    ","computed":true},{"as":"timelineDone","body":"\n      return dsx.variable.timelineRows.filter(r => r.phase == 'done').length\n    ","computed":true},{"as":"timelineCounter","body":"\n      const rows = dsx.variable.timelineRows\n      const at = dsx.variable.timelineAt\n      if (rows.length == 0) { return '' }\n      const n = at &lt; 0 ? Math.min(rows.length, dsx.variable.timelineDone + 1) : at + 1\n      return localize('Step') + ' ' + n + ' ' + localize('of') + ' ' + rows.length\n    ","computed":true},{"as":"timelineDoneCounter","body":"\n      return dsx.variable.timelineDone + ' ' + localize('of') + ' ' + dsx.variable.timelineRows.length\n    ","computed":true},{"as":"timelineProgressSay","body":"\n      const rows = dsx.variable.timelineRows\n      const at = dsx.variable.timelineAt\n      if (at &lt; 0 || at &gt;= rows.length) { return dsx.variable.timelineCounter }\n      return dsx.variable.timelineCounter + ': ' + rows[at].title\n    ","computed":true},{"as":"timelineClickable","body":"\n      const c = dsx.attribute.clickable\n      if (c === 'true' || c === true || c === '1') { return 'all' }\n      if (c === 'done') { return 'done' }\n      return 'none'\n    ","computed":true}],"formulas":[],"actions":[{"as":"pick","inputs":{"key":"dsx.this.key","index":"dsx.this.index","state":"dsx.this.state","title":"dsx.this.title","actionable":"dsx.this.actionable"},"body":"\n      if (!actionable) { return }\n      dsx.event('select', { key: key, index: index, state: state, title: title })\n    "},{"as":"act","inputs":{"key":"dsx.this.key","index":"dsx.this.index","state":"dsx.this.state","title":"dsx.this.title"},"body":"\n      dsx.event('action', { key: key, index: index, state: state, title: title })\n    "}],"watches":[],"scripts":[],"globalScripts":[]},"root":{"tag":"stack","attrs":{"class":"dsx-timeline {{ dsx.variable.timelineClickable == 'none' ? '' : 'dsx-timeline-actionable' }}","role":"list","a11yLabel":"{{ dsx.attribute.a11yLabel || localize('Timeline') }}","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-timeline-header","a11yLabel":"{{ dsx.variable.timelineProgressSay }}","a11yTrait":"updates","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-timeline-step-count","value":"{{ dsx.variable.timelineCounter }}"},"children":[],"text":"","reactive":true,"nid":2},{"tag":"text","attrs":{"class":"dsx-timeline-done-count","value":"{{ dsx.variable.timelineDoneCounter }}"},"children":[],"text":"","reactive":true,"nid":3},{"tag":"stack","attrs":{"class":"dsx-timeline-segments","a11yHidden":"true","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-timeline-segment dsx-timeline-phase-{{ dsx.this.phase }} {{ dsx.this.current ? 'dsx-timeline-current' : '' }}","repeat":"dsx.variable.timelineRows","key":"key"},"children":[],"text":"","reactive":true,"nid":5}],"text":"\n      \n    ","reactive":true,"nid":4}],"text":"\n    \n    \n    \n  ","reactive":true,"nid":1},{"tag":"stack","attrs":{"class":"dsx-timeline-items","__steers":"1"},"children":[{"tag":"stack","attrs":{"repeat":"dsx.variable.timelineRows","key":"key","class":"dsx-timeline-row dsx-timeline-state-{{ dsx.this.state }} dsx-timeline-phase-{{ dsx.this.phase }} {{ dsx.this.current ? 'dsx-timeline-current' : '' }} {{ dsx.this.first ? 'dsx-timeline-first' : '' }} {{ dsx.this.last ? 'dsx-timeline-last' : '' }} {{ dsx.this.afterDone ? 'dsx-timeline-after-done' : '' }}","role":"listitem","a11yGroup":"true","a11yLabel":"{{ dsx.this.actionable ? '' : dsx.this.say }}","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-timeline-rail","a11yHidden":"true","__row":"1","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-timeline-link dsx-timeline-link-lead","__row":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-timeline-link-fill"},"children":[],"text":"","reactive":false,"nid":10}],"text":"","reactive":false,"nid":9},{"tag":"stack","attrs":{"class":"dsx-timeline-rail-marker"},"children":[],"text":"","reactive":false,"nid":11},{"tag":"stack","attrs":{"class":"dsx-timeline-link dsx-timeline-link-trail","__row":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-timeline-link-fill"},"children":[],"text":"","reactive":false,"nid":13}],"text":"","reactive":false,"nid":12}],"text":"\n        \n        \n        \n      ","reactive":false,"nid":8},{"tag":"stack","attrs":{"class":"dsx-timeline-step","__row":"1","__steers":"1"},"children":[{"tag":"zstack","attrs":{"class":"dsx-timeline-marker","a11yHidden":"true","__steers":"1"},"children":[{"tag":"image","attrs":{"class":"dsx-timeline-avatar","visible-if":"dsx.this.marker == 'image'","src":"{{ dsx.this.image }}"},"children":[],"text":"","reactive":true,"nid":16},{"tag":"spinner","attrs":{"class":"dsx-timeline-spinner","visible-if":"dsx.this.marker == 'spinner'"},"children":[],"text":"","reactive":true,"nid":17},{"tag":"image","attrs":{"class":"dsx-timeline-icon","visible-if":"dsx.this.marker == 'icon'","icon":"{{ dsx.this.icon }}"},"children":[],"text":"","reactive":true,"nid":18},{"tag":"stack","attrs":{"class":"dsx-timeline-dot","visible-if":"dsx.this.marker == 'plain'","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-timeline-number","value":"{{ dsx.this.number }}"},"children":[],"text":"","reactive":true,"nid":20}],"text":"\n            \n          ","reactive":true,"nid":19}],"text":"\n          \n          \n          \n          \n        ","reactive":true,"nid":15},{"tag":"stack","attrs":{"class":"dsx-timeline-copy","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-timeline-headline","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-timeline-title","value":"{{ dsx.this.title }}"},"children":[],"text":"","reactive":true,"nid":23},{"tag":"text","attrs":{"class":"dsx-timeline-trailing","visible-if":"dsx.this.trailing != ''","value":"{{ dsx.this.trailing }}"},"children":[],"text":"","reactive":true,"nid":24}],"text":"\n            \n            \n          ","reactive":true,"nid":22},{"tag":"text","attrs":{"class":"dsx-timeline-detail","visible-if":"dsx.this.detail != '' && dsx.this.expanded","value":"{{ dsx.this.detail }}"},"children":[],"text":"","reactive":true,"nid":25},{"tag":"text","attrs":{"class":"dsx-timeline-reason","visible-if":"dsx.this.reason != '' && dsx.this.expanded","value":"{{ dsx.this.reason }}"},"children":[],"text":"","reactive":true,"nid":26},{"tag":"text","attrs":{"class":"dsx-timeline-fix","visible-if":"dsx.this.fix != '' && dsx.this.expanded","value":"{{ dsx.this.fix }}"},"children":[],"text":"","reactive":true,"nid":27},{"tag":"stack","attrs":{"class":"dsx-timeline-subitems","visible-if":"dsx.this.items.length > 0 && dsx.this.expanded","__steers":"1"},"children":[{"tag":"stack","attrs":{"class":"dsx-timeline-subitem","repeat":"dsx.this.items","key":"key","__row":"1","__steers":"1"},"children":[{"tag":"text","attrs":{"class":"dsx-timeline-subitem-title","value":"{{ dsx.this.title }}"},"children":[],"text":"","reactive":true,"nid":30},{"tag":"text","attrs":{"class":"dsx-timeline-trailing","visible-if":"dsx.this.trailing != ''","value":"{{ dsx.this.trailing }}"},"children":[],"text":"","reactive":true,"nid":31}],"text":"\n              \n              \n            ","reactive":true,"nid":29}],"text":"\n            \n          ","reactive":true,"nid":28}],"text":"\n          \n          \n          \n          \n          \n        ","reactive":true,"nid":21},{"tag":"button","attrs":{"class":"dsx-timeline-hit","visible-if":"dsx.this.actionable","label":"","a11yLabel":"{{ dsx.this.say }}","on:tap":"dsx.action.pick()"},"children":[],"text":"","reactive":true,"nid":32},{"tag":"button","attrs":{"class":"dsx-timeline-action","visible-if":"dsx.this.action != '' && dsx.this.expanded","variant":"plain","label":"{{ dsx.this.action }}","on:tap":"dsx.action.act()"},"children":[],"text":"","reactive":true,"nid":33}],"text":"\n        \n        \n        \n        \n      ","reactive":true,"nid":14},{"tag":"stack","attrs":{"class":"dsx-timeline-connector","a11yHidden":"true"},"children":[{"tag":"stack","attrs":{"class":"dsx-timeline-connector-fill"},"children":[],"text":"","reactive":false,"nid":35}],"text":"\n        \n      ","reactive":false,"nid":34}],"text":"\n      \n      \n      \n      \n    ","reactive":true,"nid":7}],"text":"\n    \n    \n  ","reactive":true,"nid":6}],"text":"\n  \n\n  \n  \n\n  \n","reactive":true,"nid":0},"reactive":true,"language":"0"}},"globalPool":{"Announcements":"supportinbox.Announcements","ArticleEditor":"supportinbox.ArticleEditor","Copilot":"supportinbox.Copilot","CustomerContext":"supportinbox.CustomerContext","CustomerDetail":"supportinbox.CustomerDetail","FrameworkMark":"supportinbox.FrameworkMark","Health":"supportinbox.Health","HelpCenter":"supportinbox.HelpCenter","IdentityLock":"supportinbox.IdentityLock","Inbox":"supportinbox.Inbox","IssueDetail":"supportinbox.IssueDetail","LikelyIssue":"supportinbox.LikelyIssue","Login":"supportinbox.Login","Migration":"supportinbox.Migration","NewWave":"supportinbox.NewWave","NoAccess":"supportinbox.NoAccess","Proactive":"supportinbox.Proactive","RelatedArticles":"supportinbox.RelatedArticles","ReviewMonitor":"supportinbox.ReviewMonitor","ReviewSubmission":"supportinbox.ReviewSubmission","WaveDetail":"supportinbox.WaveDetail","Answer":"foundation.Answer","Attachment":"foundation.Attachment","AudioLevel":"foundation.AudioLevel","Avatar":"foundation.Avatar","Breadcrumbs":"foundation.Breadcrumbs","Callout":"foundation.Callout","Card":"foundation.Card","Chip":"foundation.Chip","CodeBlock":"foundation.CodeBlock","CopyButton":"foundation.CopyButton","CopyRow":"foundation.CopyRow","Diff":"foundation.Diff","EmptyState":"foundation.EmptyState","FieldRow":"foundation.FieldRow","Figure":"foundation.Figure","Gallery":"foundation.Gallery","Guide":"foundation.Guide","IconTile":"foundation.IconTile","ImageViewer":"foundation.ImageViewer","LinkCard":"foundation.LinkCard","ListGroup":"foundation.ListGroup","MarkdownEditor":"foundation.MarkdownEditor","MarkdownItem":"foundation.MarkdownItem","MarkdownList":"foundation.MarkdownList","MarkdownStep":"foundation.MarkdownStep","MarkdownSteps":"foundation.MarkdownSteps","MarkdownTab":"foundation.MarkdownTab","MarkdownTable":"foundation.MarkdownTable","MarkdownTabs":"foundation.MarkdownTabs","NavBar":"foundation.NavBar","Post":"foundation.Post","PromptInput":"foundation.PromptInput","Quote":"foundation.Quote","ReadMore":"foundation.ReadMore","Recommendation":"foundation.Recommendation","RecordsTable":"foundation.RecordsTable","SettingsRow":"foundation.SettingsRow","Stat":"foundation.Stat","SummaryHeader":"foundation.SummaryHeader","TagsField":"foundation.TagsField","ThinkingOrb":"foundation.ThinkingOrb","ThreadPane":"foundation.ThreadPane","Timeline":"foundation.Timeline"},"css":"@layer dsx-defaults, dsx-tokens, dsx-elements, dsx-theme, dsx-library.sheets, dsx-library.inline, dsx-sheets, dsx-inline;\n\n@layer dsx-tokens{[dir=rtl]{--dsx-origin-start:100%;--dsx-origin-end:0%}[dir=ltr]{--dsx-origin-start:0%;--dsx-origin-end:100%}}\n\n@property --dsx-lh-l{syntax:\"<length>\";inherits:true;initial-value:0px}@property --dsx-lh-pn{syntax:\"<number>\";inherits:false;initial-value:0}@property --dsx-lh-pl{syntax:\"<length>\";inherits:false;initial-value:0px}\n\n@layer dsx-library.sheets {\n[data-dsx-owner~=\"Answer\"] .dsx-answer-next, [data-dsx-owner~=\"Answer\"]:is(.dsx-answer-next) { opacity: 1; transform: translateY(0px); transition: opacity 220ms ease-out, transform 220ms ease-out; }\n@starting-style {\n[data-dsx-settled] [data-dsx-owner~=\"Answer\"] .dsx-answer-next, [data-dsx-settled] [data-dsx-owner~=\"Answer\"]:is(.dsx-answer-next) { opacity: 0; transform: translateY(4px); }\n}\n\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs) { flex-direction: row; align-items: center; min-width: 0; max-width: 100%; overflow: hidden; }\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-list, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-list) { flex-direction: row; align-items: center; gap: 0.125rem; min-width: 0; font-size: var(--dsx-type-callout-size, 0.9375rem); --dsx-lh-n: 1.25; --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-item, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-item) { flex-direction: row; align-items: center; gap: 0.125rem; min-width: 0; }\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-separator, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-separator) { width: 0.875rem; height: 0.875rem; flex-shrink: 0; font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-tertiary-label, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-link, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-link), [data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-current, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-current), [data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-more, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-more) { flex-direction: row; align-items: center; gap: 0.25rem; min-width: 0; max-width: 14rem; padding: 0.25rem 0.375rem; border-radius: var(--dsx-radius-control, 0.5rem); background: transparent; }\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-link, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-link), [data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-more, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-more) { color: var(--dsx-secondary-label); transition: background-color var(--dsx-dur-fast, 120ms) ease, color var(--dsx-dur-fast, 120ms) ease; }\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-current, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-current) { color: var(--dsx-label); font-weight: var(--dsx-type-label-weight, 600); }\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-title, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-title) { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: inherit; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: inherit; color: inherit; }\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-icon, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-icon) { font-size: 0.875rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: inherit; }\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-more, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-more) { min-width: 1.75rem; --dsx-button-icon-size: 15px; }\n@media (hover: hover) and (pointer: fine) {\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-link:hover, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-link:hover), [data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-more:hover, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-more:hover) { background-color: var(--dsx-state-layer-hover); color: var(--dsx-label); }\n}\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-link:active, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-link:active), [data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-more:active, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-more:active) { background-color: var(--dsx-state-layer-pressed); }\n[data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-link:focus-visible, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-link:focus-visible), [data-dsx-owner~=\"Breadcrumbs\"] .dsx-breadcrumbs-more:focus-visible, [data-dsx-owner~=\"Breadcrumbs\"]:is(.dsx-breadcrumbs-more:focus-visible) { outline: var(--dsx-focus-ring-width, 2px) solid var(--dsx-focus-ring-color, var(--dsx-accent)); outline-offset: var(--dsx-focus-ring-offset, 1px); }\nhtml[dir=\"rtl\"] .dsx-breadcrumbs-separator { transform: scaleX(-1); }\n\n[data-dsx-owner~=\"Callout\"] .dsx-callout, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout) { position: relative; flex-direction: row; flex-shrink: 0; gap: 10px; padding: 14px 16px; border: var(--dsx-hairline, 1px) solid var(--dsx-callout-rim, color-mix(in srgb, var(--dsx-callout-tone) 22%, transparent)); border-radius: var(--dsx-callout-border-radius, var(--dsx-surface-radius, 36.5px)); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); background: var(--dsx-callout-background, color-mix(in srgb, var(--dsx-callout-tone) var(--dsx-callout-wash, 6%), var(--dsx-list-cell, var(--dsx-secondary-grouped-background)))); align-self: stretch; align-items: flex-start; --dsx-callout-tone: var(--dsx-info-fill, var(--dsx-tone-info-ink)); --dsx-callout-link: var(--dsx-tone-info-ink, var(--dsx-callout-tone)); --dsx-callout-type: 0.9375rem; --dsx-callout-symbol: 17px; color: var(--dsx-callout-ink, var(--dsx-label)); }\n@media (prefers-color-scheme: dark) {\n[data-dsx-owner~=\"Callout\"] .dsx-callout, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout) { --dsx-callout-wash: 10%; }\n}\n@media (min-width: 48rem) {\n[data-dsx-owner~=\"Callout\"] .dsx-callout, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout) { gap: 12px; padding: 16px 20px; --dsx-callout-type: 0.875rem; --dsx-callout-symbol: 16px; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-close, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-close) { top: 14px; right: 14px; }\n}\n[data-dsx-owner~=\"Callout\"] .dsx-callout-dismissed, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-dismissed) { display: none; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-is-none, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-is-none) { --dsx-callout-tone: var(--dsx-secondary-label); --dsx-callout-link: var(--dsx-label); }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-is-success, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-is-success) { --dsx-callout-tone: var(--dsx-success-fill, var(--dsx-tone-success-ink)); --dsx-callout-link: var(--dsx-tone-success-ink, var(--dsx-callout-tone)); }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-is-warning, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-is-warning) { --dsx-callout-tone: var(--dsx-warning-fill, var(--dsx-tone-warning-ink)); --dsx-callout-link: var(--dsx-tone-warning-ink, var(--dsx-callout-tone)); }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-is-error, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-is-error) { --dsx-callout-tone: var(--dsx-danger-fill, var(--dsx-tone-danger-ink)); --dsx-callout-link: var(--dsx-tone-danger-ink, var(--dsx-callout-tone)); }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-row, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-row) { flex-direction: row; flex-grow: 1; flex-shrink: 1; gap: inherit; align-items: flex-start; min-width: 0; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-accent-bar, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-accent-bar) { display: var(--dsx-callout-accent-display, none); width: var(--dsx-callout-accent-width, 4px); border-radius: calc(var(--dsx-callout-accent-width, 4px) / 2); background: var(--dsx-callout-tone); align-self: stretch; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-icon, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-icon) { flex-shrink: 0; width: var(--dsx-callout-symbol); height: var(--dsx-callout-symbol); margin-top: calc((20px - var(--dsx-callout-symbol)) / 2); margin-inline: var(--dsx-callout-icon-margin, 0px); font-size: var(--dsx-callout-symbol); font-weight: 500; --dsx-lh-n: 1; --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-callout-tone); }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-body, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-body) { gap: 2px; padding-inline-start: var(--dsx-callout-text-inset, 0px); flex-grow: 1; flex-shrink: 1; min-width: 0; max-width: var(--dsx-callout-measure, 65ch); align-items: start; justify-items: start; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-body-blocks, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-body-blocks) { align-items: stretch; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-title, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-title) { font-size: var(--dsx-callout-type); --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 20px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: var(--dsx-callout-title-ink, inherit); }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-dismissible .dsx-callout-body, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-dismissible .dsx-callout-body) { padding-inline-end: 20px; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-message, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-message) { font-size: var(--dsx-callout-type); --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 20px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 400; color: inherit; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-body:not(:has(> .dsx-callout-message)) > .dsx-callout-title, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-body:not(:has(> .dsx-callout-message)) > .dsx-callout-title) { font-weight: 400; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-titled .dsx-callout-message, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-titled .dsx-callout-message) { color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-action, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-action) { align-self: flex-start; margin-top: 2px; padding: 0px; min-height: 0px; font-size: var(--dsx-callout-type); --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 20px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; --dsx-button-font-weight: 600; color: var(--dsx-callout-link); }\n[data-dsx-owner~=\"Callout\"] :is(a, .dsx-text a, .dsx-markdown a, [role=\"link\"]), [data-dsx-owner~=\"Callout\"]:is(:is(a, .dsx-text a, .dsx-markdown a, [role=\"link\"])) { color: var(--dsx-callout-link); text-decoration-line: underline; text-decoration-color: color-mix(in srgb, var(--dsx-callout-link) 45%, transparent); text-decoration-thickness: 1px; text-underline-offset: 0.2em; }\n[data-dsx-owner~=\"Callout\"] :is(a, .dsx-text a, .dsx-markdown a, [role=\"link\"]):active, [data-dsx-owner~=\"Callout\"]:is(:is(a, .dsx-text a, .dsx-markdown a, [role=\"link\"]):active) { color: var(--dsx-callout-link); opacity: 0.8; }\n[data-dsx-owner~=\"Callout\"] :is(a, .dsx-markdown a, [role=\"link\"]):focus-visible, [data-dsx-owner~=\"Callout\"]:is(:is(a, .dsx-markdown a, [role=\"link\"]):focus-visible) { outline: 2px solid var(--dsx-callout-link); outline-offset: 2px; border-radius: 4px; }\n@media (hover: hover) {\n[data-dsx-owner~=\"Callout\"] :is(a, .dsx-text a, .dsx-markdown a, [role=\"link\"]):hover, [data-dsx-owner~=\"Callout\"]:is(:is(a, .dsx-text a, .dsx-markdown a, [role=\"link\"]):hover) { color: var(--dsx-callout-link); text-decoration-color: var(--dsx-callout-link); }\n}\n[data-dsx-owner~=\"Callout\"] .dsx-callout-close, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-close) { position: absolute; top: 12px; right: 12px; width: 24px; height: 24px; min-width: 24px; min-height: 24px; padding: 0px; border-radius: var(--dsx-surface-inner-radius, 14px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); background: transparent; color: var(--dsx-list-secondary-label, var(--dsx-secondary-label)); font-size: 12px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 700; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-article, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-article) { align-self: stretch; padding: 16px 20px 32px; max-width: var(--dsx-callout-article-measure, 70ch); margin-inline: auto; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-compact, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-compact) { padding: 10px 12px; gap: 10px; align-items: center; --dsx-callout-type: 0.8125rem; --dsx-callout-symbol: 16px; --dsx-callout-wash: 7%; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-compact .dsx-callout-icon, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-compact .dsx-callout-icon) { margin-top: 0; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-compact .dsx-callout-body, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-compact .dsx-callout-body) { flex-direction: row; flex-wrap: wrap; align-items: baseline; column-gap: 8px; row-gap: 0; max-width: none; padding-inline-end: 0; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-compact .dsx-callout-title, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-compact .dsx-callout-title) { order: 1; font-size: 0.9375rem; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 20px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-compact .dsx-callout-message, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-compact .dsx-callout-message) { order: 3; flex: 1 1 100%; min-width: 0; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 18px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-compact .dsx-callout-action, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-compact .dsx-callout-action) { order: 2; margin-top: 0; margin-inline-start: auto; white-space: nowrap; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 20px; font-size: 0.875rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n@media (min-width: 48rem) {\n[data-dsx-owner~=\"Callout\"] .dsx-callout-compact, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-compact) { padding: 10px 14px; }\n}\n[data-dsx-owner~=\"Callout\"] .dsx-callout-close, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-close) { top: 2px; right: 2px; width: 44px; height: 44px; min-width: 44px; min-height: 44px; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-dismissible.dsx-callout-compact .dsx-callout-body, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-dismissible.dsx-callout-compact .dsx-callout-body) { padding-inline-end: 34px; }\n[data-dsx-owner~=\"Callout\"] .dsx-callout-compact .dsx-callout-close, [data-dsx-owner~=\"Callout\"]:is(.dsx-callout-compact .dsx-callout-close) { top: 50%; translate: 0 -50%; }\n\n[data-dsx-owner~=\"Card\"] .dsx-card, [data-dsx-owner~=\"Card\"]:is(.dsx-card) { box-shadow: none; corner-shape: var(--dsx-card-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); --dsx-corner-shape-k: var(--dsx-card-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); }\n[data-dsx-owner~=\"Card\"] .dsx-card:has(> .dsx-list-bleed:only-child), [data-dsx-owner~=\"Card\"]:is(.dsx-card:has(> .dsx-list-bleed:only-child)) { --dsx-card-padding: 0px; --dsx-platter-nested-radius: 0px; --dsx-platter-nested-fill: transparent; --dsx-platter-nested-pad: 0px; --dsx-platter-nested-inset: 16px; --dsx-platter-nested-inset-end: 16px; overflow: hidden; }\n[data-dsx-owner~=\"Card\"] .dsx-card-cut, [data-dsx-owner~=\"Card\"]:is(.dsx-card-cut) { box-shadow: inset 0 1px 2px color-mix(in srgb, var(--dsx-label) 8%, transparent),\n    inset 0 0 0 var(--dsx-hairline, 1px) var(--dsx-outline-soft, var(--dsx-separator)); }\n@media (forced-colors: active) {\n[data-dsx-owner~=\"Card\"] .dsx-card, [data-dsx-owner~=\"Card\"]:is(.dsx-card) { border: 1px solid CanvasText; }\n}\n[data-dsx-owner~=\"Card\"] .dsx-card-title, [data-dsx-owner~=\"Card\"]:is(.dsx-card-title) { font-size: 1.0625rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: inherit; }\n[data-dsx-owner~=\"Card\"] .dsx-card-link, [data-dsx-owner~=\"Card\"]:is(.dsx-card-link) { flex-direction: row; gap: 0.375rem; align-self: stretch; align-items: center; }\n[data-dsx-owner~=\"Card\"] .dsx-card-link-title, [data-dsx-owner~=\"Card\"]:is(.dsx-card-link-title) { flex-grow: 1; flex-shrink: 1; min-width: 0; }\n[data-dsx-owner~=\"Card\"] .dsx-card-link-chevron, [data-dsx-owner~=\"Card\"]:is(.dsx-card-link-chevron) { flex-shrink: 0; color: var(--dsx-tertiary-label); }\n\n[data-dsx-owner~=\"Chip\"] .dsx-chip, [data-dsx-owner~=\"Chip\"]:is(.dsx-chip) { border-radius: 999px; min-height: 30px; }\n@media (prefers-reduced-motion: reduce) {\n[data-dsx-owner~=\"Chip\"] .dsx-chip, [data-dsx-owner~=\"Chip\"]:is(.dsx-chip) { transition: none; }\n}\n@media (forced-colors: active) {\n[data-dsx-owner~=\"Chip\"] .dsx-chip[aria-pressed=\"true\"], [data-dsx-owner~=\"Chip\"]:is(.dsx-chip[aria-pressed=\"true\"]) { border: 3px double CanvasText; }\n}\n\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock), [data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-sheet, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-sheet) { --dsx-codeblock-surface: #f7f7f7; --dsx-codeblock-edge: rgba(0, 0, 0, 0.09); --dsx-codeblock-ink: #1f1f1f; --dsx-codeblock-muted: #696969; --dsx-codeblock-keyword: #4d4d4d; --dsx-codeblock-string: #2a6b52; --dsx-codeblock-comment: #696969; --dsx-codeblock-number: var(--dsx-codeblock-string); --dsx-codeblock-literal: var(--dsx-codeblock-keyword); --dsx-codeblock-call: var(--dsx-codeblock-ink); --dsx-codeblock-type: var(--dsx-codeblock-ink); --dsx-codeblock-property: var(--dsx-codeblock-ink); --dsx-codeblock-tag: var(--dsx-codeblock-keyword); --dsx-codeblock-attribute: var(--dsx-codeblock-ink); --dsx-codeblock-regex: var(--dsx-codeblock-string); --dsx-codeblock-meta: var(--dsx-codeblock-muted); --dsx-codeblock-heading: var(--dsx-codeblock-ink); --dsx-codeblock-inserted: #1a6b34; --dsx-codeblock-deleted: #a3222a; --dsx-codeblock-operator: var(--dsx-codeblock-muted); --dsx-codeblock-punct: var(--dsx-codeblock-muted); --dsx-codeblock-inserted-tint: rgba(31, 136, 61, 0.10); --dsx-codeblock-deleted-tint: rgba(207, 34, 46, 0.09); --dsx-codeblock-wash: rgba(0, 0, 0, 0.045); --dsx-codeblock-marker: #9e9e9e; --dsx-codeblock-meta-tint: var(--dsx-codeblock-wash); --dsx-codeblock-marked-tint: var(--dsx-codeblock-wash); --dsx-codeblock-error-tint: color-mix(in srgb, var(--dsx-destructive) 12%, transparent); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock) { position: relative; align-self: stretch; gap: 0rem; border-radius: var(--dsx-codeblock-radius, var(--dsx-surface-radius, 36.5px)); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); overflow: hidden; background: var(--dsx-codeblock-background, var(--dsx-codeblock-surface)); box-shadow: inset 0 0 0 var(--dsx-hairline, 1px) var(--dsx-codeblock-border, var(--dsx-codeblock-edge)); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-list .dsx-codeblock, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-list .dsx-codeblock), [data-dsx-owner~=\"CodeBlock\"] .dsx-list-group .dsx-codeblock, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-list-group .dsx-codeblock) { border-radius: var(--dsx-codeblock-radius, var(--dsx-surface-inner-radius, 14px)); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-list > .dsx-row > .dsx-codeblock:only-child, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-list > .dsx-row > .dsx-codeblock:only-child) { border-radius: var(--dsx-codeblock-radius, var(--dsx-surface-radius, 36.5px)); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); }\n@media (prefers-color-scheme: dark) {\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock), [data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-sheet, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-sheet) { --dsx-codeblock-surface: #161616; --dsx-codeblock-edge: rgba(255, 255, 255, 0.10); --dsx-codeblock-ink: #e6e6e6; --dsx-codeblock-muted: #9a9a9a; --dsx-codeblock-keyword: #b8b8b8; --dsx-codeblock-string: #8fc4a9; --dsx-codeblock-comment: #8c8c8c; --dsx-codeblock-inserted: #8fd19e; --dsx-codeblock-deleted: #ffa8a3; --dsx-codeblock-inserted-tint: rgba(46, 160, 67, 0.16); --dsx-codeblock-deleted-tint: rgba(248, 81, 73, 0.15); --dsx-codeblock-wash: rgba(255, 255, 255, 0.06); --dsx-codeblock-marker: #6b6b6b; }\n}\n[data-dsx-owner~=\"CodeBlock\"] [data-dsx-theme=\"light\"] .dsx-codeblock, [data-dsx-owner~=\"CodeBlock\"]:is([data-dsx-theme=\"light\"] .dsx-codeblock), [data-dsx-owner~=\"CodeBlock\"] [data-dsx-theme=\"light\"] .dsx-codeblock-sheet, [data-dsx-owner~=\"CodeBlock\"]:is([data-dsx-theme=\"light\"] .dsx-codeblock-sheet) { --dsx-codeblock-surface: #f7f7f7; --dsx-codeblock-edge: rgba(0, 0, 0, 0.09); --dsx-codeblock-ink: #1f1f1f; --dsx-codeblock-muted: #696969; --dsx-codeblock-keyword: #4d4d4d; --dsx-codeblock-string: #2a6b52; --dsx-codeblock-comment: #696969; --dsx-codeblock-inserted: #1a6b34; --dsx-codeblock-deleted: #a3222a; --dsx-codeblock-inserted-tint: rgba(31, 136, 61, 0.10); --dsx-codeblock-deleted-tint: rgba(207, 34, 46, 0.09); --dsx-codeblock-wash: rgba(0, 0, 0, 0.045); --dsx-codeblock-marker: #9e9e9e; }\n[data-dsx-owner~=\"CodeBlock\"] [data-dsx-theme=\"dark\"] .dsx-codeblock, [data-dsx-owner~=\"CodeBlock\"]:is([data-dsx-theme=\"dark\"] .dsx-codeblock), [data-dsx-owner~=\"CodeBlock\"] [data-dsx-theme=\"dark\"] .dsx-codeblock-sheet, [data-dsx-owner~=\"CodeBlock\"]:is([data-dsx-theme=\"dark\"] .dsx-codeblock-sheet) { --dsx-codeblock-surface: #161616; --dsx-codeblock-edge: rgba(255, 255, 255, 0.10); --dsx-codeblock-ink: #e6e6e6; --dsx-codeblock-muted: #9a9a9a; --dsx-codeblock-keyword: #b8b8b8; --dsx-codeblock-string: #8fc4a9; --dsx-codeblock-comment: #8c8c8c; --dsx-codeblock-inserted: #8fd19e; --dsx-codeblock-deleted: #ffa8a3; --dsx-codeblock-inserted-tint: rgba(46, 160, 67, 0.16); --dsx-codeblock-deleted-tint: rgba(248, 81, 73, 0.15); --dsx-codeblock-wash: rgba(255, 255, 255, 0.06); --dsx-codeblock-marker: #6b6b6b; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-bar, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-bar) { flex-direction: row; align-items: center; gap: 0.25rem; min-height: 2.75rem; padding: 0rem 0.5rem 0rem 1rem; border-bottom: var(--dsx-hairline, 1px) solid var(--dsx-codeblock-border, var(--dsx-codeblock-edge)); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-corner, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-corner) { position: absolute; z-index: 2; top: 0px; right: 0px; min-height: 0; padding: 0.5rem; gap: 0rem; border-bottom: none; border-end-start-radius: var(--dsx-radius-control, 10px); background: var(--dsx-codeblock-background, var(--dsx-codeblock-surface)); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-corner > .dsx-codeblock-action, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-corner > .dsx-codeblock-action) { min-width: 1.75rem; min-height: 1.75rem; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-label, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-label) { font-family: var(--dsx-font); --dsx-face-normal: var(--dsx-font--dsx-face-normal, 1.2); font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 500; color: var(--dsx-codeblock-bar-ink, var(--dsx-codeblock-muted)); flex-shrink: 1; min-width: 0; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-tabs, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-tabs) { flex-direction: row; align-items: stretch; align-self: stretch; gap: 1rem; flex-shrink: 1; min-width: 0; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-tab, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-tab) { font-family: var(--dsx-font); --dsx-face-normal: var(--dsx-font--dsx-face-normal, 1.2); justify-content: center; min-height: 2.25rem; padding: 0rem; border-radius: 0px; font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 500; color: var(--dsx-codeblock-bar-ink, var(--dsx-codeblock-muted)); background: transparent; box-shadow: none; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-tab-label, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-tab-label) { font-family: var(--dsx-font); --dsx-face-normal: var(--dsx-font--dsx-face-normal, 1.2); font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 500; color: inherit; white-space: nowrap; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-tab-on, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-tab-on) { color: var(--dsx-codeblock-ink); box-shadow: inset 0 -1.5px 0 var(--dsx-codeblock-ink); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-action, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-action) { flex-shrink: 0; gap: 0.25rem; min-width: 1.75rem; min-height: 1.75rem; padding: 0.25rem 0.375rem; justify-content: center; border-radius: var(--dsx-radius-sm, 6px); font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 500; --dsx-button-icon-size: 14px; color: var(--dsx-codeblock-bar-ink, var(--dsx-codeblock-muted)); background: transparent; transition: color 180ms ease-out, background-color 180ms ease-out; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-action:hover, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-action:hover) { color: var(--dsx-codeblock-ink); background: var(--dsx-codeblock-wash); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-copied-note, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-copied-note) { font-family: var(--dsx-font); --dsx-face-normal: var(--dsx-font--dsx-face-normal, 1.2); flex-shrink: 0; font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 500; color: var(--dsx-codeblock-bar-ink, var(--dsx-codeblock-muted)); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-copied, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-copied) { color: var(--dsx-codeblock-copied-ink, var(--dsx-codeblock-bar-ink, var(--dsx-codeblock-muted))); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-on, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-on) { color: var(--dsx-codeblock-ink); background: var(--dsx-codeblock-wash); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-viewport, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-viewport) { position: relative; align-self: stretch; gap: 0rem; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-body, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-body) { align-self: stretch; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-lines, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-lines) { gap: 0rem; padding: 0.875rem 0rem; align-items: stretch; min-width: 100%; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-line, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-line) { flex-direction: row; align-items: flex-start; gap: 0rem; margin: 0rem 0.5rem; padding: 0rem 0.5rem; border-radius: 4px; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-line-inserted, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-line-inserted) { background: var(--dsx-codeblock-inserted-tint); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-line-deleted, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-line-deleted) { background: var(--dsx-codeblock-deleted-tint); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-line-meta, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-line-meta) { background: var(--dsx-codeblock-meta-tint); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-line-marked, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-line-marked) { background: var(--dsx-codeblock-marked-tint); box-shadow: inset 2px 0 0 var(--dsx-codeblock-marker); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-line-error, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-line-error) { background: var(--dsx-codeblock-error-tint); box-shadow: inset 2px 0 0 var(--dsx-destructive); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-capped, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-capped) { align-self: stretch; max-height: var(--dsx-codeblock-max-height, 20rem); overscroll-behavior: contain; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-capped > .dsx-codeblock-body, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-capped > .dsx-codeblock-body) { flex-shrink: 0; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-follow, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-follow) { flex-direction: column-reverse; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-no, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-no) { flex-shrink: 0; box-sizing: content-box; padding-right: 1rem; text-align: right; font-family: ui-monospace, \"SF Mono\", Menlo, Consolas, monospace; --dsx-face-normal: 1.2; font-size: var(--dsx-codeblock-font-size, 0.8125rem); --dsx-lh-pn: var(--dsx-codeblock-line-height, 1.375rem); --dsx-lh-pl: var(--dsx-codeblock-line-height, 1.375rem); --dsx-lh-n: var(--dsx-lh-pn); --dsx-lh-k: 0; --dsx-lh-l: var(--dsx-lh-pl); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-codeblock-muted); -webkit-user-select: none; user-select: none; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-code, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-code) { flex-direction: row; align-items: flex-start; gap: 0rem; flex-shrink: 0; font-family: ui-monospace, \"SF Mono\", Menlo, Consolas, monospace; --dsx-face-normal: 1.2; font-size: var(--dsx-codeblock-font-size, 0.8125rem); --dsx-lh-pn: var(--dsx-codeblock-line-height, 1.375rem); --dsx-lh-pl: var(--dsx-codeblock-line-height, 1.375rem); --dsx-lh-n: var(--dsx-lh-pn); --dsx-lh-k: 0; --dsx-lh-l: var(--dsx-lh-pl); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-wrapped, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-wrapped) { flex-wrap: wrap; flex-shrink: 1; min-width: 0; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-tok, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-tok) { font-family: ui-monospace, \"SF Mono\", Menlo, Consolas, monospace; --dsx-face-normal: 1.2; font-size: var(--dsx-codeblock-font-size, 0.8125rem); --dsx-lh-pn: var(--dsx-codeblock-line-height, 1.375rem); --dsx-lh-pl: var(--dsx-codeblock-line-height, 1.375rem); --dsx-lh-n: var(--dsx-lh-pn); --dsx-lh-k: 0; --dsx-lh-l: var(--dsx-lh-pl); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); white-space: pre; color: var(--dsx-codeblock-ink); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-tok-wrap, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-tok-wrap) { white-space: pre-wrap; overflow-wrap: anywhere; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-comment, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-comment) { color: var(--dsx-codeblock-comment); font-style: italic; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-string, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-string) { color: var(--dsx-codeblock-string); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-number, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-number) { color: var(--dsx-codeblock-number); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-regex, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-regex) { color: var(--dsx-codeblock-regex); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-keyword, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-keyword) { color: var(--dsx-codeblock-keyword); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-literal, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-literal) { color: var(--dsx-codeblock-literal); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-call, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-call) { color: var(--dsx-codeblock-call); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-property, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-property) { color: var(--dsx-codeblock-property); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-operator, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-operator) { color: var(--dsx-codeblock-operator); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-punct, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-punct) { color: var(--dsx-codeblock-punct); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-type, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-type) { color: var(--dsx-codeblock-type); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-tag, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-tag) { color: var(--dsx-codeblock-tag); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-attribute, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-attribute) { color: var(--dsx-codeblock-attribute); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-inserted, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-inserted) { color: var(--dsx-codeblock-inserted); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-deleted, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-deleted) { color: var(--dsx-codeblock-deleted); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-meta, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-meta) { color: var(--dsx-codeblock-meta); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-k-heading, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-k-heading) { color: var(--dsx-codeblock-heading); font-weight: 600; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-fade, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-fade) { position: absolute; left: 0px; right: 0px; bottom: 0px; height: 3rem; pointer-events: none; background: linear-gradient(to bottom, transparent, var(--dsx-codeblock-background, var(--dsx-codeblock-surface))); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-foot, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-foot) { align-items: center; padding: 0rem 0.5rem 0.375rem; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-more, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-more) { gap: 0.375rem; min-height: 2rem; padding: 0.25rem 0.75rem; border-radius: var(--dsx-radius-control, 10px); font-size: 0.8125rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 500; color: var(--dsx-codeblock-muted); background: transparent; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-more:hover, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-more:hover) { color: var(--dsx-codeblock-ink); background: var(--dsx-codeblock-wash); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-sheet, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-sheet) { gap: 0rem; align-self: stretch; flex-grow: 1; min-height: 0; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-sheet-bar, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-sheet-bar) { flex-direction: row; align-items: center; gap: 0.25rem; padding: 0.25rem 0.75rem; border-bottom: var(--dsx-hairline, 1px) solid var(--dsx-separator); }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-sheet-body, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-sheet-body) { flex-grow: 1; min-height: 0; align-self: stretch; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-sheet-lines, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-sheet-lines) { align-self: stretch; }\n[data-dsx-owner~=\"CodeBlock\"] .dsx-codeblock-action:focus-visible, [data-dsx-owner~=\"CodeBlock\"]:is(.dsx-codeblock-action:focus-visible) { outline-offset: calc(-1 * var(--dsx-focus-ring-width, 3px)); }\n\n[data-dsx-owner~=\"CopyButton\"] .dsx-copybutton, [data-dsx-owner~=\"CopyButton\"]:is(.dsx-copybutton) { flex-shrink: 0; min-width: 2rem; min-height: 2rem; padding: 0; background: transparent; font-size: 1rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-copybutton-ink, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"CopyButton\"] .dsx-copybutton-done, [data-dsx-owner~=\"CopyButton\"]:is(.dsx-copybutton-done) { color: var(--dsx-copybutton-done-ink, var(--dsx-success, #34c759)); }\n[data-dsx-owner~=\"CopyButton\"] .dsx-copybutton-fail, [data-dsx-owner~=\"CopyButton\"]:is(.dsx-copybutton-fail) { color: var(--dsx-copybutton-fail-ink, var(--dsx-destructive, var(--dsx-danger, #ff3b30))); }\n\n[data-dsx-owner~=\"CopyRow\"] .dsx-copyrow, [data-dsx-owner~=\"CopyRow\"]:is(.dsx-copyrow) { flex-direction: row; align-items: center; align-self: stretch; gap: 0.25rem; min-height: var(--dsx-list-row-height, 2.75rem); padding: var(--dsx-list-row-pad-block, 0.375rem) var(--dsx-list-padding-inline, 1rem); color: var(--dsx-label); font-family: ui-monospace, \"SF Mono\", Menlo, Consolas, monospace; --dsx-face-normal: 1.2; font-size: 0.9375rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx-owner~=\"CopyRow\"] .dsx-copyrow-text, [data-dsx-owner~=\"CopyRow\"]:is(.dsx-copyrow-text) { flex-grow: 1; flex-shrink: 1; min-width: 0; gap: 0.125rem; align-items: flex-start; }\n[data-dsx-owner~=\"CopyRow\"] .dsx-copyrow-label, [data-dsx-owner~=\"CopyRow\"]:is(.dsx-copyrow-label) { font-family: var(--dsx-font); --dsx-face-normal: var(--dsx-font--dsx-face-normal, 1.2); font-size: 0.8125rem; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1rem; line-height: round(nearest, 1rem, 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"CopyRow\"] .dsx-copyrow-value, [data-dsx-owner~=\"CopyRow\"]:is(.dsx-copyrow-value) { max-width: 100%; overflow-wrap: anywhere; font-family: inherit; --dsx-face-normal: inherit; font-size: inherit; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1.25rem; line-height: round(nearest, 1.25rem, 1px); color: inherit; }\n[data-dsx-owner~=\"CopyRow\"] .dsx-copyrow-action, [data-dsx-owner~=\"CopyRow\"]:is(.dsx-copyrow-action) { flex-shrink: 0; min-width: 2rem; min-height: 2rem; padding: 0; background: transparent; font-size: 1rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"CopyRow\"] .dsx-copyrow-text.dsx-copyrow-columns, [data-dsx-owner~=\"CopyRow\"]:is(.dsx-copyrow-text.dsx-copyrow-columns) { flex-direction: row; gap: 1rem; align-items: center; }\n[data-dsx-owner~=\"CopyRow\"] .dsx-copyrow-columns .dsx-copyrow-label, [data-dsx-owner~=\"CopyRow\"]:is(.dsx-copyrow-columns .dsx-copyrow-label) { flex-shrink: 0; width: var(--dsx-copyrow-label-width, 13rem); font-size: 1.0625rem; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1.375rem; line-height: round(nearest, 1.375rem, 1px); color: var(--dsx-label); }\n[data-dsx-owner~=\"CopyRow\"] .dsx-copyrow-columns .dsx-copyrow-value, [data-dsx-owner~=\"CopyRow\"]:is(.dsx-copyrow-columns .dsx-copyrow-value) { flex-shrink: 1; min-width: 0; padding: 0.25rem 0.5rem; border-radius: var(--dsx-radius-sm, 6px); font-size: 0.8125rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); background: var(--dsx-fill); }\n[data-dsx-owner~=\"CopyRow\"] .dsx-copyrow-trail, [data-dsx-owner~=\"CopyRow\"]:is(.dsx-copyrow-trail) { flex-direction: row; flex-shrink: 0; gap: 0.25rem; align-items: center; margin-block: -0.25rem; }\n[data-dsx-owner~=\"CopyRow\"] .dsx-copyrow-columns .dsx-copyrow-value, [data-dsx-owner~=\"CopyRow\"]:is(.dsx-copyrow-columns .dsx-copyrow-value) { margin-block: -0.125rem; }\n\n[data-dsx-owner~=\"EmptyState\"] .dsx-empty-state, [data-dsx-owner~=\"EmptyState\"]:is(.dsx-empty-state) { min-height: 10rem; }\n[data-dsx-owner~=\"EmptyState\"] .dsx-empty-state-link, [data-dsx-owner~=\"EmptyState\"]:is(.dsx-empty-state-link) { min-height: 2.75rem; padding: 0 0.5rem; font-size: 0.8125rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: var(--dsx-empty-state-link-color, var(--dsx-accent)); background: transparent; }\n[data-dsx-owner~=\"EmptyState\"] .dsx-empty-state-icon, [data-dsx-owner~=\"EmptyState\"]:is(.dsx-empty-state-icon) { opacity: 0.82; }\n\n[data-dsx-owner~=\"FieldRow\"] .dsx-field-row, [data-dsx-owner~=\"FieldRow\"]:is(.dsx-field-row) { align-self: stretch; align-items: stretch; color: var(--dsx-label); font-size: 1.0625rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx-owner~=\"FieldRow\"] .dsx-field-row-content, [data-dsx-owner~=\"FieldRow\"]:is(.dsx-field-row-content) { flex-direction: row; gap: 0.75rem; min-height: 3.25rem; padding: 0 1rem; align-items: center; }\n[data-dsx-owner~=\"FieldRow\"] .dsx-field-row-label, [data-dsx-owner~=\"FieldRow\"]:is(.dsx-field-row-label) { width: var(--dsx-field-row-label-width, 4rem); flex-shrink: 0; font-size: inherit; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: inherit; }\n[data-dsx-owner~=\"FieldRow\"] .dsx-field-row-slot, [data-dsx-owner~=\"FieldRow\"]:is(.dsx-field-row-slot) { --dsx-field-well-fill: transparent; --dsx-field-well-border: 0 solid transparent; --dsx-field-well-radius: 0; --dsx-field-well-shadow: none; --dsx-field-well-focus-fill: transparent; --dsx-field-well-focus-border: transparent; --dsx-field-well-focus-ring: none; --dsx-field-well-hover-layer: none; --dsx-field-well-hover-ring: none; --dsx-field-density-pad: 1px; --dsx-field-density-type: 1.0625rem; --dsx-control-height: 2.75rem; flex-grow: 1; min-width: 0; align-items: stretch; }\n[data-dsx-owner~=\"FieldRow\"] .dsx-field-row-separator, [data-dsx-owner~=\"FieldRow\"]:is(.dsx-field-row-separator) { display: var(--dsx-list-group-separator-display, none); height: var(--dsx-hairline, 1px); margin-inline-start: 1rem; background: var(--dsx-separator); }\n[data-dsx-owner~=\"FieldRow\"] .dsx-field-row:last-child > .dsx-field-row-separator, [data-dsx-owner~=\"FieldRow\"]:is(.dsx-field-row:last-child > .dsx-field-row-separator) { display: none; }\n[data-dsx-owner~=\"FieldRow\"] .dsx-list .dsx-field-row-content, [data-dsx-owner~=\"FieldRow\"]:is(.dsx-list .dsx-field-row-content), [data-dsx-owner~=\"FieldRow\"] .dsx-list-group .dsx-field-row-content, [data-dsx-owner~=\"FieldRow\"]:is(.dsx-list-group .dsx-field-row-content) { min-height: 0; padding: 0; }\n\n[data-dsx-owner~=\"Figure\"] .dsx-figure, [data-dsx-owner~=\"Figure\"]:is(.dsx-figure) { gap: 0.5rem; align-self: stretch; align-items: stretch; }\n[data-dsx-owner~=\"Figure\"] .dsx-figure-frame, [data-dsx-owner~=\"Figure\"]:is(.dsx-figure-frame) { align-self: stretch; overflow: hidden; border-radius: var(--dsx-figure-radius, var(--dsx-radius-control, 10px)); background: var(--dsx-figure-placeholder, var(--dsx-fill)); }\n[data-dsx-owner~=\"Figure\"] .dsx-figure-image, [data-dsx-owner~=\"Figure\"]:is(.dsx-figure-image) { width: 100%; height: 100%; }\n[data-dsx-owner~=\"Figure\"] .dsx-figure-caption, [data-dsx-owner~=\"Figure\"]:is(.dsx-figure-caption) { gap: 0.25rem; align-items: center; color: var(--dsx-figure-caption-ink, var(--dsx-secondary-label)); font-size: 0.8125rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); text-align: center; }\n[data-dsx-owner~=\"Figure\"] .dsx-figure-in-strip, [data-dsx-owner~=\"Figure\"]:is(.dsx-figure-in-strip) { width: var(--dsx-gallery-item-width, 280px); flex-shrink: 0; align-self: flex-start; }\n[data-dsx-owner~=\"Figure\"] .dsx-figure-in-grid, [data-dsx-owner~=\"Figure\"]:is(.dsx-figure-in-grid) { gap: 0rem; }\n\n[data-dsx-owner~=\"Gallery\"] .dsx-gallery, [data-dsx-owner~=\"Gallery\"]:is(.dsx-gallery) { align-self: stretch; align-items: stretch; }\n[data-dsx-owner~=\"Gallery\"] .dsx-gallery-strip, [data-dsx-owner~=\"Gallery\"]:is(.dsx-gallery-strip) { align-self: stretch; scroll-snap-type: x mandatory; scroll-snap-align: start; }\n[data-dsx-owner~=\"Gallery\"] .dsx-gallery-row, [data-dsx-owner~=\"Gallery\"]:is(.dsx-gallery-row) { flex-direction: row; gap: var(--dsx-gallery-gap, 8px); align-items: flex-start; }\n[data-dsx-owner~=\"Gallery\"] .dsx-gallery-grid, [data-dsx-owner~=\"Gallery\"]:is(.dsx-gallery-grid) { display: grid; gap: var(--dsx-gallery-gap, 4px); align-self: stretch; }\n[data-dsx-owner~=\"Gallery\"] .dsx-gallery-grid-2, [data-dsx-owner~=\"Gallery\"]:is(.dsx-gallery-grid-2) { grid-template-columns: 1fr 1fr; }\n[data-dsx-owner~=\"Gallery\"] .dsx-gallery-grid-3, [data-dsx-owner~=\"Gallery\"]:is(.dsx-gallery-grid-3) { grid-template-columns: 1fr 1fr 1fr; }\n[data-dsx-owner~=\"Gallery\"] .dsx-gallery-grid-4, [data-dsx-owner~=\"Gallery\"]:is(.dsx-gallery-grid-4) { grid-template-columns: 1fr 1fr 1fr 1fr; }\n[data-dsx-owner~=\"Gallery\"] .dsx-gallery-grid-5, [data-dsx-owner~=\"Gallery\"]:is(.dsx-gallery-grid-5) { grid-template-columns: 1fr 1fr 1fr 1fr 1fr; }\n[data-dsx-owner~=\"Gallery\"] .dsx-gallery-grid-6, [data-dsx-owner~=\"Gallery\"]:is(.dsx-gallery-grid-6) { grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; }\n\n[data-dsx-owner~=\"Guide\"] .dsx-guide, [data-dsx-owner~=\"Guide\"]:is(.dsx-guide) { gap: 0rem; align-self: stretch; align-items: stretch; min-width: 0; padding-block: var(--dsx-guide-pad-block, var(--dsx-list-padding-inline, 0px)); --dsx-markdown-step-rail-end: 0.25rem; --dsx-markdown-step-disc: var(--dsx-guide-disc, var(--dsx-fill)); --dsx-markdown-step-number-weight: 600; --dsx-markdown-step-rail-width: 1px; --dsx-markdown-step-rail: var(--dsx-guide-rail, var(--dsx-separator)); --dsx-markdown-step-gap: var(--dsx-guide-gap, 0.375rem); --dsx-markdown-step-spacing: var(--dsx-guide-spacing, 1.5rem); --dsx-markdown-step-last-rail: none; --dsx-markdown-step-last-spacing: 0rem; --dsx-markdown-step-title-size: var(--dsx-guide-title-size, var(--dsx-type-title3-size)); --dsx-markdown-step-title-weight: 600; --dsx-markdown-step-title-leading: 1.3; --dsx-markdown-step-title-offset: 0.0625rem; }\n[data-dsx-owner~=\"Guide\"] .dsx-guide-compact, [data-dsx-owner~=\"Guide\"]:is(.dsx-guide-compact) { --dsx-markdown-step-title-size: var(--dsx-type-body-size); --dsx-markdown-step-spacing: 1rem; }\n[data-dsx-owner~=\"Guide\"] .dsx-guide-body, [data-dsx-owner~=\"Guide\"]:is(.dsx-guide-body) { max-width: var(--dsx-guide-measure, 40rem); font-size: var(--dsx-guide-body-size, var(--dsx-type-body-size)); --dsx-lh-n: 1.45; --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-secondary-label); gap: 0.5rem; }\n[data-dsx-owner~=\"Guide\"] .dsx-guide-body .dsx-text, [data-dsx-owner~=\"Guide\"]:is(.dsx-guide-body .dsx-text), [data-dsx-owner~=\"Guide\"] .dsx-guide-body .dsx-markdown-item, [data-dsx-owner~=\"Guide\"]:is(.dsx-guide-body .dsx-markdown-item) { color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Guide\"] .dsx-guide-body strong, [data-dsx-owner~=\"Guide\"]:is(.dsx-guide-body strong) { font-weight: 600; color: var(--dsx-label); }\n[data-dsx-owner~=\"Guide\"] .dsx-guide-body code, [data-dsx-owner~=\"Guide\"]:is(.dsx-guide-body code) { font-size: 0.875em; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-label); }\n[data-dsx-owner~=\"Guide\"] .dsx-guide-action, [data-dsx-owner~=\"Guide\"]:is(.dsx-guide-action) { align-self: flex-start; margin-inline-start: 0; color: var(--dsx-accent); }\n\n[data-dsx-owner~=\"IconTile\"] .dsx-icon-tile, [data-dsx-owner~=\"IconTile\"]:is(.dsx-icon-tile) { display: grid; flex-shrink: 0; width: var(--dsx-icon-tile-size, 29px); min-width: var(--dsx-icon-tile-size, 29px); height: var(--dsx-icon-tile-size, 29px); min-height: var(--dsx-icon-tile-size, 29px); overflow: hidden; align-items: center; justify-items: center; justify-content: center; border-radius: calc(var(--dsx-icon-tile-size, 29px) * 0.277); corner-shape: superellipse(1.38); --dsx-corner-shape-k: 1.38 1.38 1.38 1.38; box-shadow: inset 0 0 0 var(--dsx-hairline, 1px) var(--dsx-outline-soft, var(--dsx-separator)); }\n[data-dsx-owner~=\"IconTile\"] .dsx-icon-tile-image, [data-dsx-owner~=\"IconTile\"]:is(.dsx-icon-tile-image) { grid-area: 1 / 1; width: var(--dsx-icon-tile-size, 29px); min-width: var(--dsx-icon-tile-size, 29px); height: var(--dsx-icon-tile-size, 29px); min-height: var(--dsx-icon-tile-size, 29px); }\n[data-dsx-owner~=\"IconTile\"] .dsx-icon-tile-ground, [data-dsx-owner~=\"IconTile\"]:is(.dsx-icon-tile-ground) { grid-area: 1 / 1; width: var(--dsx-icon-tile-size, 29px); min-width: var(--dsx-icon-tile-size, 29px); height: var(--dsx-icon-tile-size, 29px); min-height: var(--dsx-icon-tile-size, 29px); }\n[data-dsx-owner~=\"IconTile\"] .dsx-icon-tile-dark, [data-dsx-owner~=\"IconTile\"]:is(.dsx-icon-tile-dark) { display: none; }\n@media (prefers-color-scheme: dark) {\n[data-dsx-owner~=\"IconTile\"] .dsx-icon-tile-twin > .dsx-icon-tile-light, [data-dsx-owner~=\"IconTile\"]:is(.dsx-icon-tile-twin > .dsx-icon-tile-light) { display: none; }\n[data-dsx-owner~=\"IconTile\"] .dsx-icon-tile-dark, [data-dsx-owner~=\"IconTile\"]:is(.dsx-icon-tile-dark) { display: flex; }\n}\n[data-dsx-owner~=\"IconTile\"] .dsx-icon-tile-mark, [data-dsx-owner~=\"IconTile\"]:is(.dsx-icon-tile-mark) { grid-area: 1 / 1; font-size: calc(var(--dsx-icon-tile-size, 29px) * 0.64); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx-owner~=\"IconTile\"] .dsx-icon-tile-symbol, [data-dsx-owner~=\"IconTile\"]:is(.dsx-icon-tile-symbol) { grid-area: 1 / 1; font-size: calc(var(--dsx-icon-tile-size, 29px) * 0.5); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-icon-tile-color, #FFFFFF); }\n[data-dsx-owner~=\"IconTile\"] .dsx-icon-tile-monogram, [data-dsx-owner~=\"IconTile\"]:is(.dsx-icon-tile-monogram) { grid-area: 1 / 1; font-size: calc(var(--dsx-icon-tile-size, 29px) * 0.5); font-weight: 600; --dsx-lh-n: 1; --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-icon-tile-color, #FFFFFF); }\n@media (forced-colors: active) {\n[data-dsx-owner~=\"IconTile\"] .dsx-icon-tile, [data-dsx-owner~=\"IconTile\"]:is(.dsx-icon-tile) { border: 1px solid CanvasText; }\n}\n\n[data-dsx-owner~=\"ImageViewer\"] .dsx-image-viewer, [data-dsx-owner~=\"ImageViewer\"]:is(.dsx-image-viewer) { height: 100%; align-self: stretch; align-items: stretch; background: var(--dsx-image-viewer-ground, #000); padding-block-start: env(safe-area-inset-top, 0px); padding-block-end: env(safe-area-inset-bottom, 0px); }\n[data-dsx-owner~=\"ImageViewer\"] .dsx-image-viewer-bar, [data-dsx-owner~=\"ImageViewer\"]:is(.dsx-image-viewer-bar) { flex-direction: row; gap: 0.5rem; padding: 0.5rem 1rem; align-items: center; }\n[data-dsx-owner~=\"ImageViewer\"] .dsx-image-viewer-close, [data-dsx-owner~=\"ImageViewer\"]:is(.dsx-image-viewer-close) { color: var(--dsx-image-viewer-ink, #fff); }\n[data-dsx-owner~=\"ImageViewer\"] .dsx-image-viewer-count, [data-dsx-owner~=\"ImageViewer\"]:is(.dsx-image-viewer-count) { font-size: 0.9375rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-variant-numeric: tabular-nums; color: var(--dsx-image-viewer-ink, #fff); }\n[data-dsx-owner~=\"ImageViewer\"] .dsx-image-viewer-pager, [data-dsx-owner~=\"ImageViewer\"]:is(.dsx-image-viewer-pager) { flex-grow: 1; align-self: stretch; }\n[data-dsx-owner~=\"ImageViewer\"] .dsx-image-viewer-page, [data-dsx-owner~=\"ImageViewer\"]:is(.dsx-image-viewer-page) { flex-grow: 1; align-self: stretch; align-items: stretch; justify-content: center; }\n[data-dsx-owner~=\"ImageViewer\"] .dsx-image-viewer-image, [data-dsx-owner~=\"ImageViewer\"]:is(.dsx-image-viewer-image) { width: 100%; height: 100%; }\n\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card) { flex-direction: row; gap: 0.75rem; padding: var(--dsx-link-card-padding, 1rem); align-self: stretch; align-items: center; border-radius: var(--dsx-link-card-radius, var(--dsx-surface-radius, 36.5px)); corner-shape: var(--dsx-link-card-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); --dsx-corner-shape-k: var(--dsx-link-card-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); background: var(--dsx-link-card-background, var(--dsx-list-cell, var(--dsx-secondary-grouped-background))); box-shadow: none; color: var(--dsx-label); font-size: 0.9375rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n@media (hover: hover) and (pointer: fine) {\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card:hover, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card:hover) { box-shadow: inset 0 0 0 var(--dsx-hairline, 1px) var(--dsx-separator); }\n}\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card:active, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card:active) { box-shadow: inset 0 0 0 var(--dsx-hairline, 1px) var(--dsx-separator); }\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card-thumb, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card-thumb) { width: var(--dsx-link-card-thumb-size, 56px); height: var(--dsx-link-card-thumb-size, 56px); flex-shrink: 0; overflow: hidden; border-radius: var(--dsx-surface-inner-radius, 14px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); background: var(--dsx-fill); }\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card-image, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card-image) { width: 100%; height: 100%; }\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card-text, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card-text) { gap: 0.125rem; flex-grow: 1; flex-shrink: 1; min-width: 0; align-items: flex-start; }\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card-title, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card-title) { font-size: inherit; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: inherit; }\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card-description, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card-description) { font-size: 0.8125rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card-host, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card-host) { font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-tertiary-label); }\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card-arrow, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card-arrow) { flex-shrink: 0; color: var(--dsx-tertiary-label); }\n@media (forced-colors: active) {\n[data-dsx-owner~=\"LinkCard\"] .dsx-link-card, [data-dsx-owner~=\"LinkCard\"]:is(.dsx-link-card) { border: 1px solid LinkText; }\n}\n\n[data-dsx-owner~=\"ListGroup\"] .dsx-list-group, [data-dsx-owner~=\"ListGroup\"]:is(.dsx-list-group) { --dsx-list-ground: transparent; }\n[data-dsx-owner~=\"ListGroup\"] .dsx-list-group-link-row, [data-dsx-owner~=\"ListGroup\"]:is(.dsx-list-group-link-row) { align-items: flex-start; padding-inline: var(--dsx-list-group-text-inset, var(--dsx-list-padding-inline, 1rem)); padding-block: var(--dsx-list-footer-pad-top, 9px) var(--dsx-list-footer-pad-bottom, 6.67px); }\n[data-dsx-owner~=\"ListGroup\"] .dsx-list-group-link, [data-dsx-owner~=\"ListGroup\"]:is(.dsx-list-group-link) { min-height: 0; padding: 0; font-size: 0.8125rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-list-group-link-color, var(--dsx-accent)); background: transparent; }\n\n[data-dsx-owner~=\"MarkdownItem\"] .dsx-markdown-item, [data-dsx-owner~=\"MarkdownItem\"]:is(.dsx-markdown-item) { display: list-item; align-self: stretch; position: relative; }\n[data-dsx-owner~=\"MarkdownItem\"] .dsx-markdown-item-task, [data-dsx-owner~=\"MarkdownItem\"]:is(.dsx-markdown-item-task) { list-style-type: none; }\n[data-dsx-owner~=\"MarkdownItem\"] .dsx-markdown-item-check, [data-dsx-owner~=\"MarkdownItem\"]:is(.dsx-markdown-item-check) { position: absolute; right: 100%; top: 0; margin-right: 0.4rem; color: var(--dsx-tertiary-label); }\n[data-dsx-owner~=\"MarkdownItem\"] .dsx-markdown-item-check-on, [data-dsx-owner~=\"MarkdownItem\"]:is(.dsx-markdown-item-check-on) { color: var(--dsx-markdown-item-check-ink, var(--dsx-accent)); }\n[data-dsx-owner~=\"MarkdownItem\"] .dsx-markdown-item-content, [data-dsx-owner~=\"MarkdownItem\"]:is(.dsx-markdown-item-content) { gap: 0.375rem; align-items: stretch; }\n\n[data-dsx-owner~=\"MarkdownList\"] .dsx-markdown-list, [data-dsx-owner~=\"MarkdownList\"]:is(.dsx-markdown-list) { gap: var(--dsx-markdown-list-gap, 0.375rem); align-self: stretch; align-items: stretch; padding-left: var(--dsx-markdown-list-indent, 1.5rem); }\n[data-dsx-owner~=\"MarkdownList\"] .dsx-markdown-list-ordered, [data-dsx-owner~=\"MarkdownList\"]:is(.dsx-markdown-list-ordered) { list-style-type: decimal; }\n\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step) { flex-direction: row; gap: 0.75rem; align-self: stretch; align-items: stretch; }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-track, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-track) { gap: 0.25rem; align-items: center; flex-shrink: 0; }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-disc, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-disc) { display: grid; width: 24px; height: 24px; border-radius: 999px; align-items: center; justify-items: center; justify-content: center; background: var(--dsx-markdown-step-disc, var(--dsx-fill)); }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-disc-done, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-disc-done), [data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-disc-current, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-disc-current) { background: var(--dsx-markdown-step-accent, var(--dsx-accent)); }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-disc-upcoming, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-disc-upcoming) { background: transparent; border: 1.5px solid var(--dsx-separator); }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-tick, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-tick) { color: var(--dsx-on-accent, white); }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-number, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-number) { font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: var(--dsx-markdown-step-number-weight, 700); font-variant-numeric: tabular-nums; color: var(--dsx-label); }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-number-current, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-number-current) { color: var(--dsx-on-accent, white); }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-number-upcoming, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-number-upcoming) { color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-rail, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-rail) { width: var(--dsx-markdown-step-rail-width, 1.5px); flex-grow: 1; min-height: 0.75rem; margin-block-end: var(--dsx-markdown-step-rail-end, 0rem); background: var(--dsx-markdown-step-rail, var(--dsx-separator)); }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-content, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-content) { gap: var(--dsx-markdown-step-gap, 0.375rem); flex-grow: 1; flex-shrink: 1; min-width: 0; padding-bottom: var(--dsx-markdown-step-spacing, 1rem); align-items: stretch; }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step-title, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step-title) { font-size: var(--dsx-markdown-step-title-size, inherit); font-weight: var(--dsx-markdown-step-title-weight, 600); --dsx-lh-pn: var(--dsx-markdown-step-title-leading, inherit); --dsx-lh-pl: var(--dsx-markdown-step-title-leading, inherit); --dsx-lh-n: var(--dsx-lh-pn); --dsx-lh-k: 0; --dsx-lh-l: var(--dsx-lh-pl); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); padding-top: var(--dsx-markdown-step-title-offset, 0.125rem); }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step:last-child .dsx-markdown-step-rail, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step:last-child .dsx-markdown-step-rail) { display: var(--dsx-markdown-step-last-rail, flex); }\n[data-dsx-owner~=\"MarkdownStep\"] .dsx-markdown-step:last-child .dsx-markdown-step-content, [data-dsx-owner~=\"MarkdownStep\"]:is(.dsx-markdown-step:last-child .dsx-markdown-step-content) { padding-bottom: var(--dsx-markdown-step-last-spacing, var(--dsx-markdown-step-spacing, 1rem)); }\n\n[data-dsx-owner~=\"MarkdownSteps\"] .dsx-markdown-steps, [data-dsx-owner~=\"MarkdownSteps\"]:is(.dsx-markdown-steps) { gap: 0rem; align-self: stretch; align-items: stretch; }\n\n[data-dsx-owner~=\"MarkdownTab\"] .dsx-markdown-tab, [data-dsx-owner~=\"MarkdownTab\"]:is(.dsx-markdown-tab) { align-self: stretch; align-items: stretch; }\n[data-dsx-owner~=\"MarkdownTab\"] .dsx-markdown-tab-pane, [data-dsx-owner~=\"MarkdownTab\"]:is(.dsx-markdown-tab-pane) { gap: 0.5rem; align-self: stretch; align-items: stretch; }\n\n[data-dsx-owner~=\"MarkdownTable\"] .dsx-markdown-table, [data-dsx-owner~=\"MarkdownTable\"]:is(.dsx-markdown-table) { align-self: stretch; }\n[data-dsx-owner~=\"MarkdownTable\"] .dsx-markdown-table-frame, [data-dsx-owner~=\"MarkdownTable\"]:is(.dsx-markdown-table-frame) { gap: 0rem; align-items: stretch; border-radius: var(--dsx-markdown-table-radius, var(--dsx-radius-control, 10px)); overflow: hidden; box-shadow: inset 0 0 0 var(--dsx-hairline, 1px) var(--dsx-markdown-table-rule, var(--dsx-separator)); }\n[data-dsx-owner~=\"MarkdownTable\"] .dsx-markdown-table-head, [data-dsx-owner~=\"MarkdownTable\"]:is(.dsx-markdown-table-head) { gap: 0rem; background: var(--dsx-markdown-table-head-background, var(--dsx-secondary-grouped-background)); border-bottom: var(--dsx-hairline, 1px) solid var(--dsx-markdown-table-rule, var(--dsx-separator)); }\n[data-dsx-owner~=\"MarkdownTable\"] .dsx-markdown-table-row, [data-dsx-owner~=\"MarkdownTable\"]:is(.dsx-markdown-table-row) { gap: 0rem; align-items: stretch; border-bottom: var(--dsx-hairline, 1px) solid var(--dsx-markdown-table-rule, var(--dsx-separator)); }\n[data-dsx-owner~=\"MarkdownTable\"] .dsx-markdown-table-row-last, [data-dsx-owner~=\"MarkdownTable\"]:is(.dsx-markdown-table-row-last) { border-bottom-width: 0px; }\n[data-dsx-owner~=\"MarkdownTable\"] .dsx-markdown-table-cell, [data-dsx-owner~=\"MarkdownTable\"]:is(.dsx-markdown-table-cell) { padding: 0.5rem 0.75rem; flex-shrink: 0; align-items: flex-start; }\n[data-dsx-owner~=\"MarkdownTable\"] .dsx-markdown-table-th, [data-dsx-owner~=\"MarkdownTable\"]:is(.dsx-markdown-table-th) { font-weight: 600; }\n\n[data-dsx-owner~=\"MarkdownTabs\"] .dsx-markdown-tabs, [data-dsx-owner~=\"MarkdownTabs\"]:is(.dsx-markdown-tabs) { gap: var(--dsx-markdown-tabs-gap, 0.75rem); align-self: stretch; align-items: stretch; }\n[data-dsx-owner~=\"MarkdownTabs\"] .dsx-markdown-tabs-panes, [data-dsx-owner~=\"MarkdownTabs\"]:is(.dsx-markdown-tabs-panes) { align-items: stretch; }\n\n[data-dsx-owner~=\"NavBar\"] .dsx-navbar-button, [data-dsx-owner~=\"NavBar\"]:is(.dsx-navbar-button) { width: var(--dsx-navbar-button-size, 34px); height: var(--dsx-navbar-button-size, 34px); min-width: var(--dsx-navbar-button-size, 34px); min-height: var(--dsx-navbar-button-size, 34px); padding: 0; flex: none; align-self: center; aspect-ratio: 1; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; color: var(--dsx-navbar-foreground, var(--dsx-label)); }\n@media (pointer: coarse) {\n[data-dsx-owner~=\"NavBar\"] .dsx-navbar-button, [data-dsx-owner~=\"NavBar\"]:is(.dsx-navbar-button) { min-width: 44px; min-height: 44px; }\n}\n@property --dsx-navigation-style { syntax: \"auto | back | breadcrumbs\"; inherits: true; initial-value: auto; }\n[data-dsx-owner~=\"NavBar\"] .dsx-navbar-trail, [data-dsx-owner~=\"NavBar\"]:is(.dsx-navbar-trail) { display: none; }\n[data-dsx-owner~=\"NavBar\"] .dsx-page-header, [data-dsx-owner~=\"NavBar\"]:is(.dsx-page-header) { align-self: stretch; min-width: 0; padding-block: var(--dsx-page-header-gap, 0.125rem) var(--dsx-page-header-padding-end, 1rem); margin-block-end: var(--dsx-page-header-spacing, 1.5rem); border-bottom: var(--dsx-page-header-divider, var(--dsx-hairline, 1px) solid var(--dsx-separator)); }\n[data-dsx-owner~=\"NavBar\"] .dsx-page-header-line, [data-dsx-owner~=\"NavBar\"]:is(.dsx-page-header-line) { flex-direction: row; flex-wrap: wrap; align-items: baseline; column-gap: 0.375rem; row-gap: 0; max-width: var(--dsx-page-header-measure, 46rem); }\n[data-dsx-owner~=\"NavBar\"] .dsx-page-header-description, [data-dsx-owner~=\"NavBar\"]:is(.dsx-page-header-description) { font-size: var(--dsx-page-header-size, var(--dsx-type-body-size)); --dsx-lh-n: var(--dsx-type-body-leading); --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); letter-spacing: var(--dsx-type-body-tracking); color: var(--dsx-page-header-ink, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"NavBar\"] .dsx-page-header-more.dsx-page-header-more, [data-dsx-owner~=\"NavBar\"]:is(.dsx-page-header-more.dsx-page-header-more) { min-height: 0; min-width: 0; padding: 0; background: transparent; font-size: var(--dsx-page-header-size, var(--dsx-type-body-size)); --dsx-lh-n: var(--dsx-type-body-leading); --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 400; color: var(--dsx-accent); }\n@media (min-width: 48rem) {\n[data-dsx-owner~=\"NavBar\"] .dsx-page-header, [data-dsx-owner~=\"NavBar\"]:is(.dsx-page-header) { padding-block-end: var(--dsx-page-header-padding-end, 1.25rem); }\n}\n[data-dsx-owner~=\"NavBar\"] .dsx-page-header-article, [data-dsx-owner~=\"NavBar\"]:is(.dsx-page-header-article) { gap: 1.25rem; align-items: stretch; padding: 0.5rem 1.25rem 1.5rem; }\n[data-dsx-owner~=\"NavBar\"] .dsx-page-header-body, [data-dsx-owner~=\"NavBar\"]:is(.dsx-page-header-body) { max-width: 40rem; font-size: var(--dsx-type-body-size); --dsx-lh-n: 1.45; --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-label); gap: 0.75rem; }\n[data-dsx-owner~=\"NavBar\"] .dsx-page-header-body strong, [data-dsx-owner~=\"NavBar\"]:is(.dsx-page-header-body strong) { font-weight: 600; }\n[data-dsx-owner~=\"NavBar\"] .dsx-page-header-body code, [data-dsx-owner~=\"NavBar\"]:is(.dsx-page-header-body code) { font-size: 0.875em; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx-owner~=\"NavBar\"] .dsx-navbar-large, [data-dsx-owner~=\"NavBar\"]:is(.dsx-navbar-large) { padding-block-start: var(--dsx-chrome-scroll-extra, 0px); }\n\n[data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-surface, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-surface) { border-radius: var(--dsx-promptinput-radius, var(--dsx-surface-radius, 36.5px)); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); box-shadow: var(--dsx-promptinput-shadow, var(--dsx-shadow-1)); background: color-mix(in srgb, var(--dsx-promptinput-background, var(--dsx-surface-raised)) 84%, transparent); -webkit-backdrop-filter: blur(20px) saturate(1.6); backdrop-filter: blur(20px) saturate(1.6); backdrop-filter: blur(20px) saturate(1.6); transition: box-shadow var(--dsx-dur-base) var(--dsx-ease), padding var(--dsx-dur-base) var(--dsx-ease-out); }\n@supports selector(:focus-within) {\n[data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-surface:focus-within, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-surface:focus-within) { box-shadow: var(--dsx-promptinput-shadow-focus, var(--dsx-shadow-2)); }\n}\n[data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-panel, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-panel) { border-radius: var(--dsx-surface-radius, 36.5px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); box-shadow: var(--dsx-shadow-3); background: color-mix(in srgb, var(--dsx-promptinput-background, var(--dsx-surface-raised)) 96%, transparent); -webkit-backdrop-filter: blur(24px) saturate(1.6); backdrop-filter: blur(24px) saturate(1.6); backdrop-filter: blur(24px) saturate(1.6); transition: opacity var(--dsx-dur-base) var(--dsx-ease-out), transform var(--dsx-dur-base) var(--dsx-ease-out); }\n@starting-style {\n[data-dsx-settled] [data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-panel, [data-dsx-settled] [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-panel) { opacity: 0; transform: translateY(6px) scale(0.98); }\n}\n[data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-tool, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-tool) { background-color: var(--dsx-promptinput-tool-background, transparent); color: var(--dsx-label); transition: background-color var(--dsx-dur-fast) var(--dsx-ease), color var(--dsx-dur-fast) var(--dsx-ease); }\n[data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-pill, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-pill) { background-color: var(--dsx-fill); transition: background-color var(--dsx-dur-fast) var(--dsx-ease); }\n[data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-chip, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-chip) { background-color: var(--dsx-fill); color: var(--dsx-label); transition: background-color var(--dsx-dur-fast) var(--dsx-ease); }\n@media (hover: hover) and (pointer: fine) {\n[data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-tool:hover, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-tool:hover) { background-color: var(--dsx-fill); }\n[data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-mention:hover, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-mention:hover) { background-color: var(--dsx-fill); }\n}\n@media (prefers-reduced-motion: reduce) {\n[data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-surface, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-surface), [data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-panel, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-panel), [data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-tool, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-tool), [data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-chip, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-chip) { transition: none; }\n}\n@media (prefers-reduced-transparency: reduce) {\n[data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-surface, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-surface), [data-dsx-owner~=\"PromptInput\"] .dsx-prompt-input-panel, [data-dsx-owner~=\"PromptInput\"]:is(.dsx-prompt-input-panel) { background: var(--dsx-promptinput-background, var(--dsx-surface-raised)); -webkit-backdrop-filter: none; backdrop-filter: none; backdrop-filter: none; }\n}\n\n[data-dsx-owner~=\"Quote\"] .dsx-quote, [data-dsx-owner~=\"Quote\"]:is(.dsx-quote) { flex-direction: row; gap: 0.75rem; align-self: stretch; align-items: stretch; }\n[data-dsx-owner~=\"Quote\"] .dsx-quote-rail, [data-dsx-owner~=\"Quote\"]:is(.dsx-quote-rail) { width: var(--dsx-quote-rail-width, 3px); border-radius: calc(var(--dsx-quote-rail-width, 3px) / 2); background: var(--dsx-quote-rail, var(--dsx-separator)); align-self: stretch; flex-shrink: 0; }\n[data-dsx-owner~=\"Quote\"] .dsx-quote-body, [data-dsx-owner~=\"Quote\"]:is(.dsx-quote-body) { gap: 0.5rem; flex-grow: 1; flex-shrink: 1; min-width: 0; align-items: stretch; color: var(--dsx-quote-ink, var(--dsx-secondary-label)); }\n@media (forced-colors: active) {\n[data-dsx-owner~=\"Quote\"] .dsx-quote-rail, [data-dsx-owner~=\"Quote\"]:is(.dsx-quote-rail) { background: CanvasText; }\n}\n\n[data-dsx-owner~=\"ReadMore\"] .dsx-read-more, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-read-more) { position: relative; flex: 1 1 auto; align-self: stretch; align-items: stretch; min-width: 0; }\n[data-dsx-owner~=\"ReadMore\"] .dsx-row > .dsx-read-more, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-row > .dsx-read-more) { padding: var(--dsx-list-row-pad-block, 15px) var(--dsx-list-padding-inline, 1rem); }\n[data-dsx-owner~=\"ReadMore\"] .dsx-read-more-clip, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-read-more-clip) { max-height: calc(var(--dsx-read-more-lines, 8) * 1lh); overflow: hidden; align-items: stretch; --dsx-lh-n: 1.45; --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx-owner~=\"ReadMore\"] .dsx-read-more-body, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-read-more-body) { min-width: 0; --dsx-lh-n: inherit; --dsx-lh-k: inherit; --dsx-lh-l: inherit; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-label); }\n[data-dsx-owner~=\"ReadMore\"] .dsx-read-more-body > :first-child, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-read-more-body > :first-child) { margin-block-start: 0; }\n[data-dsx-owner~=\"ReadMore\"] .dsx-read-more-button, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-read-more-button) { position: absolute; inset-block-end: var(--dsx-read-more-button-inset-block, 0); inset-inline-end: var(--dsx-read-more-button-inset-inline, 0); min-height: 1lh; color: var(--dsx-read-more-button-ink, var(--dsx-accent)); padding-inline-start: 2.5em; background: linear-gradient(to right, transparent, var(--dsx-read-more-ground, var(--dsx-background)) 2em); }\n[data-dsx-owner~=\"ReadMore\"] .dsx-row > .dsx-read-more, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-row > .dsx-read-more) { --dsx-read-more-ground: var(--dsx-list-cell, var(--dsx-background)); }\n[data-dsx-owner~=\"ReadMore\"] .dsx-row > .dsx-read-more > .dsx-read-more-button, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-row > .dsx-read-more > .dsx-read-more-button) { --dsx-read-more-button-inset-block: var(--dsx-list-row-pad-block, 15px); --dsx-read-more-button-inset-inline: var(--dsx-list-padding-inline, 1rem); }\n@container style(--dsx-section-beside: true) {\n[data-dsx-owner~=\"ReadMore\"] .dsx-read-more-clip, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-read-more-clip) { flex: 1 1 0; max-height: none; min-height: calc(var(--dsx-read-more-lines, 8) * 1lh); contain: size; }\n}\n[data-dsx-owner~=\"ReadMore\"] .dsx-read-more-sheet, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-read-more-sheet) { --dsx-sheet-sizing: page; }\n[data-dsx-owner~=\"ReadMore\"] .dsx-read-more-article, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-read-more-article) { align-items: stretch; padding: var(--dsx-read-more-article-padding, 0.5rem 1.25rem 2rem); }\n[data-dsx-owner~=\"ReadMore\"] .dsx-read-more-full, [data-dsx-owner~=\"ReadMore\"]:is(.dsx-read-more-full) { align-self: center; width: 100%; max-width: var(--dsx-read-more-measure, 42rem); --dsx-lh-n: 1.5; --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-label); }\n\n[data-dsx-owner~=\"Recommendation\"] .dsx-recommendation-done, [data-dsx-owner~=\"Recommendation\"]:is(.dsx-recommendation-done) { opacity: 1; transition: opacity 200ms ease-out; }\n@starting-style {\n[data-dsx-settled] [data-dsx-owner~=\"Recommendation\"] .dsx-recommendation-done, [data-dsx-settled] [data-dsx-owner~=\"Recommendation\"]:is(.dsx-recommendation-done) { opacity: 0; }\n}\n[data-dsx-owner~=\"Recommendation\"] .dsx-recommendation-seg, [data-dsx-owner~=\"Recommendation\"]:is(.dsx-recommendation-seg) { transition: background-color 240ms ease-out; }\n\n@property --dsx-records-table-row-height { syntax: \"&lt;length&gt;\"; inherits: true; initial-value: 52px; }\n[data-dsx-owner~=\"RecordsTable\"] .dsx-records-table-row, [data-dsx-owner~=\"RecordsTable\"]:is(.dsx-records-table-row) { transition: background-color var(--dsx-dur-fast, 120ms) ease; }\n[data-dsx-owner~=\"RecordsTable\"] .dsx-records-table-row-selected, [data-dsx-owner~=\"RecordsTable\"]:is(.dsx-records-table-row-selected) { background-color: var(--dsx-records-table-selection, color-mix(in srgb, var(--dsx-state-tint, var(--dsx-label)) var(--dsx-state-selected, 12%), transparent)); }\n@media (hover: hover) and (pointer: fine) {\n[data-dsx-owner~=\"RecordsTable\"] .dsx-records-table-hit:hover .dsx-records-table-sep, [data-dsx-owner~=\"RecordsTable\"]:is(.dsx-records-table-hit:hover .dsx-records-table-sep), [data-dsx-owner~=\"RecordsTable\"] .dsx-records-table-hit:hover + .dsx-records-table-hit .dsx-records-table-sep, [data-dsx-owner~=\"RecordsTable\"]:is(.dsx-records-table-hit:hover + .dsx-records-table-hit .dsx-records-table-sep) { visibility: hidden; }\n}\n[data-dsx-owner~=\"RecordsTable\"] .dsx-records-table-hit:focus-visible, [data-dsx-owner~=\"RecordsTable\"]:is(.dsx-records-table-hit:focus-visible) { outline: none; box-shadow: none; background-image: linear-gradient(var(--dsx-focus-row), var(--dsx-focus-row)); }\n[data-dsx-owner~=\"RecordsTable\"] .dsx-records-table-hit:active .dsx-records-table-sep, [data-dsx-owner~=\"RecordsTable\"]:is(.dsx-records-table-hit:active .dsx-records-table-sep), [data-dsx-owner~=\"RecordsTable\"] .dsx-records-table-hit:active + .dsx-records-table-hit .dsx-records-table-sep, [data-dsx-owner~=\"RecordsTable\"]:is(.dsx-records-table-hit:active + .dsx-records-table-hit .dsx-records-table-sep) { visibility: hidden; }\n\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row) { --dsx-settings-row-min-height: var(--dsx-list-row-height, 54px); --dsx-settings-row-separator-inset: 3.5rem; --dsx-settings-row-surface: transparent; --dsx-settings-row-state: var(--dsx-state-layer-pressed); position: relative; align-items: stretch; width: 100%; min-height: var(--dsx-settings-row-min-height); border-radius: 0; background: var(--dsx-settings-row-surface); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row:has(.dsx-settings-row-tone-accent), [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row:has(.dsx-settings-row-tone-accent)) { --dsx-state-tint: var(--dsx-settings-row-tone-accent, var(--dsx-accent)); --dsx-state-hover: var(--dsx-state-hover-strong, 7%); --dsx-state-pressed: var(--dsx-state-pressed-strong, 14%); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row:has(.dsx-settings-row-tone-destructive), [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row:has(.dsx-settings-row-tone-destructive)) { --dsx-state-tint: var(--dsx-destructive); --dsx-state-hover: var(--dsx-state-hover-strong, 7%); --dsx-state-pressed: var(--dsx-state-pressed-strong, 14%); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row:has(.dsx-settings-row-action:focus-visible) .dsx-settings-row-content, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row:has(.dsx-settings-row-action:focus-visible) .dsx-settings-row-content) { background-image: linear-gradient(var(--dsx-focus-row), var(--dsx-focus-row)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-action, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-action) { position: absolute; z-index: 2; inset: 0; width: 100%; min-height: 0; padding: 0; border-radius: 0; color: transparent; background: transparent; box-shadow: none; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-action:hover, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-action:hover), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-action:active, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-action:active), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-action:focus-visible, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-action:focus-visible) { background: transparent; box-shadow: none; outline: none; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content) { position: relative; z-index: 1; width: 100%; min-height: var(--dsx-settings-row-min-height); transition: background-color var(--dsx-dur-fast, 120ms) ease; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-list > .dsx-row > .dsx-settings-row-root, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-list > .dsx-row > .dsx-settings-row-root) { padding: 0; color: inherit; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > *, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > *) { transition: opacity var(--dsx-dur-fast, 120ms) ease; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-icon, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-icon) { background: linear-gradient(\n    165deg,\n    var(--dsx-surface-highlight, var(--dsx-surface-level-2)),\n    var(--dsx-surface-recessed, var(--dsx-fill))\n  ); box-shadow: inset 0 0 0 var(--dsx-hairline, 1px) var(--dsx-outline-soft, var(--dsx-separator)),\n    inset 0 1px 0 var(--dsx-inner-highlight, transparent),\n    0 1px 2px color-mix(in srgb, var(--dsx-label) 7%, transparent); }\n@media (hover: hover) and (pointer: fine) {\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row:has(.dsx-settings-row-action:hover) .dsx-settings-row-content, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row:has(.dsx-settings-row-action:hover) .dsx-settings-row-content) { background-color: var(--dsx-surface-hover, var(--dsx-state-layer-hover)); }\n}\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row:has(.dsx-settings-row-action:active) .dsx-settings-row-content, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row:has(.dsx-settings-row-action:active) .dsx-settings-row-content) { background-color: var(--dsx-settings-row-state); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-action:active + .dsx-settings-row-content > *, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-action:active + .dsx-settings-row-content > *) { opacity: 0.78; }\n@media (forced-colors: active) {\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row:has(.dsx-settings-row-action:focus-visible) .dsx-settings-row-content, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row:has(.dsx-settings-row-action:focus-visible) .dsx-settings-row-content) { outline: 2px solid Highlight; outline-offset: -2px; }\n}\n@media (prefers-reduced-motion: reduce) {\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > *, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > *) { transition: none; }\n}\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-root, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-root) { align-self: stretch; align-items: stretch; color: var(--dsx-label); font-size: 1.0625rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content) { flex-direction: row; gap: var(--dsx-settings-row-gap, 1rem); padding: var(--dsx-list-row-pad-block, 15px) var(--dsx-list-padding-inline, 1rem); align-self: stretch; align-items: center; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-spacer:not(:last-child), [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-spacer:not(:last-child)) { margin-inline-end: calc(var(--dsx-settings-row-gap, 1rem) * -1); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-icon, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-icon) { width: 1.75rem; height: 1.75rem; flex-shrink: 0; border-radius: var(--dsx-radius-control, 10px); align-items: center; justify-content: center; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-glyph, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-glyph) { width: 1.75rem; flex-shrink: 0; color: var(--dsx-settings-row-glyph-color, var(--dsx-secondary-label)); --dsx-icon-brand-ink: var(--dsx-settings-row-glyph-color); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-settings-row-glyph, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-settings-row-glyph) { width: 1em; margin-inline: calc((var(--dsx-list-leading-icon-slot, 1.5rem) - 1em) / 2); margin-block: calc((1.375rem - 1em) / 2); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-glyph-system, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-glyph-system) { color: var(--dsx-settings-row-glyph-color, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-image, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-image) { width: var(--dsx-list-leading-icon-slot, 1.5rem); height: var(--dsx-list-leading-icon-slot, 1.5rem); flex-shrink: 0; border-radius: var(--dsx-radius-control, 10px); object-fit: contain; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-copy, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-copy) { gap: var(--dsx-settings-row-copy-gap, 1px); flex-shrink: 0.5; min-width: 0; align-items: flex-start; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-title-line, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-title-line) { max-width: 100%; min-width: 0; flex-direction: row; flex-wrap: wrap; gap: 0.5rem; align-items: center; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-title, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-title) { min-width: 0; font-size: inherit; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1.375rem; line-height: round(nearest, 1.375rem, 1px); color: inherit; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-tone-accent, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-tone-accent) { color: var(--dsx-settings-row-tone-accent, var(--dsx-accent)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-tone-destructive, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-tone-destructive) { color: var(--dsx-destructive); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-tone-success, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-tone-success) { color: var(--dsx-settings-row-tone-success, var(--dsx-success, #1f9d55)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(.dsx-settings-row-tone-destructive) .dsx-settings-row-glyph-system, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(.dsx-settings-row-tone-destructive) .dsx-settings-row-glyph-system) { color: var(--dsx-settings-row-glyph-color, var(--dsx-destructive)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(.dsx-settings-row-tone-success) .dsx-settings-row-glyph-system, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(.dsx-settings-row-tone-success) .dsx-settings-row-glyph-system) { color: var(--dsx-settings-row-glyph-color, var(--dsx-settings-row-tone-success, var(--dsx-success, #1f9d55))); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-subtitle, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-subtitle) { font-size: 0.9375rem; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1.375rem; line-height: round(nearest, 1.375rem, 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-code, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-code) { font-family: ui-monospace, \"SF Mono\", Menlo, Consolas, monospace; --dsx-face-normal: 1.2; font-size: 0.8125rem; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1.125rem; line-height: round(nearest, 1.125rem, 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-more-copy, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-more-copy) { gap: 0.125rem; align-items: flex-start; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-more, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-more) { position: relative; z-index: 3; min-height: 0; padding: 0; font-size: 0.9375rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-settings-row-link-color, var(--dsx-accent)); background: transparent; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-spacer ~ :not(.dsx-settings-row-link, .dsx-textfield, .dsx-text), [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-spacer ~ :not(.dsx-settings-row-link, .dsx-textfield, .dsx-text)), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-spacer ~ .dsx-overlay-host > *, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-spacer ~ .dsx-overlay-host > *) { flex-shrink: 0; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-value, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-value) { flex-shrink: 0; min-inline-size: min-content; max-inline-size: 50%; font-size: 1.0625rem; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1.375rem; line-height: round(nearest, 1.375rem, 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-value-icon, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-value-icon) { flex-shrink: 0; font-size: 1.0625rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); margin-inline-start: -10px; color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-count, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-count) { flex-shrink: 0; white-space: nowrap; font-size: 1.0625rem; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1.375rem; line-height: round(nearest, 1.375rem, 1px); color: var(--dsx-settings-row-count-color, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-link, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-link) { flex-direction: row; flex-shrink: 1; min-width: 0; max-inline-size: 60%; white-space: nowrap; gap: 0.375rem; align-items: center; font-size: 1.0625rem; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1.375rem; line-height: round(nearest, 1.375rem, 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-link-text, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-link-text) { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-link-material, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-link-material) { flex-direction: row; gap: 0.375rem; align-items: center; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-glyph-material, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-glyph-material) { color: var(--dsx-settings-row-glyph-color, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-check, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-check) { flex-shrink: 0; color: var(--dsx-settings-row-check-color, var(--dsx-accent)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-chevron, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-chevron) { flex-shrink: 0; margin-inline-start: -9.5px; margin-inline-end: -2.33px; color: var(--dsx-tertiary-label); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-toggle, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-toggle) { margin-block: -2px; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-toggle:last-child, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-toggle:last-child) { margin-inline-end: -2px; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-separator, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-separator) { display: var(--dsx-list-group-separator-display, none); height: var(--dsx-hairline, 1px); margin-inline-start: 1rem; background: var(--dsx-separator); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-root:last-child > .dsx-settings-row-separator, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-root:last-child > .dsx-settings-row-separator) { display: none; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-separator-tile, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-separator-tile), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-separator-plain, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-separator-plain), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-separator-system, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-separator-system), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-separator-status, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-separator-status), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-separator-spinner, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-separator-spinner), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-separator-image, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-separator-image) { margin-inline-start: var(--dsx-settings-row-separator-inset, 3.5rem); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-root > .dsx-settings-row .dsx-settings-row-content, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-root > .dsx-settings-row .dsx-settings-row-content) { box-shadow: none; }\n@supports selector(:focus-within) {\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-glyph:not(.dsx-settings-row-glyph-system), [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-glyph:not(.dsx-settings-row-glyph-system)) { color: var(--dsx-settings-row-glyph-color, var(--dsx-list-label, var(--dsx-label))); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-root, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-root) { color: var(--dsx-list-label, var(--dsx-label)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-tone-label, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-tone-label) { color: inherit; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-subtitle, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-subtitle) { color: var(--dsx-list-secondary-ink, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-count, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-count) { color: var(--dsx-settings-row-count-color, var(--dsx-list-secondary-ink, var(--dsx-secondary-label))); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-value, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-value), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-link, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-link) { color: var(--dsx-list-secondary-label, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-chevron, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-chevron) { color: var(--dsx-list-tertiary-label, var(--dsx-tertiary-label)); }\n}\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-disabled, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-disabled) { opacity: var(--dsx-settings-row-disabled-opacity, 0.4); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-scaffold-shell[data-dsx-layout^=\"split\"] > .dsx-scaffold-sidebar .dsx-settings-row .dsx-settings-row-content, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-scaffold-shell[data-dsx-layout^=\"split\"] > .dsx-scaffold-sidebar .dsx-settings-row .dsx-settings-row-content) { background: transparent; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-settings-row-status-done, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-settings-row-status-done), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row .dsx-settings-row-status-done, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row .dsx-settings-row-status-done) { color: var(--dsx-settings-row-glyph-color, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-settings-row-status-failed, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-settings-row-status-failed), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row .dsx-settings-row-status-failed, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row .dsx-settings-row-status-failed) { color: var(--dsx-destructive); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-settings-row-status-warning, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-settings-row-status-warning), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row .dsx-settings-row-status-warning, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row .dsx-settings-row-status-warning) { color: var(--dsx-warning); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-settings-row-status-upcoming, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-settings-row-status-upcoming), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-settings-row-status-skipped, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-settings-row-status-skipped), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row .dsx-settings-row-status-upcoming, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row .dsx-settings-row-status-upcoming), [data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row .dsx-settings-row-status-skipped, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row .dsx-settings-row-status-skipped) { color: var(--dsx-list-tertiary-label, var(--dsx-tertiary-label)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-spinner, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-spinner) { width: 20px; height: 20px; flex-shrink: 0; color: var(--dsx-list-secondary-label, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content > .dsx-settings-row-spinner, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content > .dsx-settings-row-spinner) { margin-inline: calc((var(--dsx-list-leading-icon-slot, 1.5rem) - 20px) / 2); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-badge, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-badge) { min-height: 0; padding: 1px 7px; font-size: 0.75rem; font-weight: 600; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1rem; line-height: round(nearest, 1rem, 1px); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-badge:not([data-dsx-role]), [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-badge:not([data-dsx-role])) { --dsx-chip-color: var(--dsx-list-secondary-label, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-accordion-label > .dsx-settings-row-root .dsx-settings-row-content, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-accordion-label > .dsx-settings-row-root .dsx-settings-row-content) { padding-inline-end: 0; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(> .dsx-textfield):not(:has(.dsx-settings-row-title:empty)) > .dsx-settings-row-copy, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(> .dsx-textfield):not(:has(.dsx-settings-row-title:empty)) > .dsx-settings-row-copy) { min-inline-size: min-content; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(> .dsx-textfield):not(:has(.dsx-settings-row-title:empty)) > .dsx-textfield, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(> .dsx-textfield):not(:has(.dsx-settings-row-title:empty)) > .dsx-textfield) { min-width: 0; }\n@property --dsx-settings-row-field-min { syntax: \"<length>\"; inherits: true; initial-value: 12rem; }\n@property --dsx-settings-row-field-gap { syntax: \"<length>\"; inherits: true; initial-value: 0.5rem; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-subtitle):not(:has(.dsx-settings-row-title:empty)), [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-subtitle):not(:has(.dsx-settings-row-title:empty))) { flex-wrap: wrap; row-gap: var(--dsx-settings-row-field-gap, 0.5rem); }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-subtitle):not(:has(.dsx-settings-row-title:empty)) > .dsx-settings-row-copy, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-subtitle):not(:has(.dsx-settings-row-title:empty)) > .dsx-settings-row-copy) { flex: 1 1 100%; max-inline-size: 100%; min-inline-size: 0; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-subtitle):not(:has(.dsx-settings-row-title:empty)) > .dsx-spacer, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-subtitle):not(:has(.dsx-settings-row-title:empty)) > .dsx-spacer) { display: none; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-subtitle):not(:has(.dsx-settings-row-title:empty)) > .dsx-textfield, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-subtitle):not(:has(.dsx-settings-row-title:empty)) > .dsx-textfield) { flex: 1 1 100%; min-inline-size: min(var(--dsx-settings-row-field-min, 12rem), 100%); text-align: start; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(> .dsx-spacer ~ .dsx-picker):not(:has(.dsx-settings-row-title:empty)) > .dsx-settings-row-copy, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(> .dsx-spacer ~ .dsx-picker):not(:has(.dsx-settings-row-title:empty)) > .dsx-settings-row-copy) { flex-shrink: 0; min-inline-size: min-content; max-inline-size: 50%; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:not(:has(.dsx-settings-row-title:empty)) > .dsx-spacer ~ .dsx-picker, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:not(:has(.dsx-settings-row-title:empty)) > .dsx-spacer ~ .dsx-picker) { flex-shrink: 1; min-width: 0; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:not(:has(.dsx-settings-row-title:empty)) > .dsx-spacer ~ .dsx-picker .dsx-picker-select, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:not(:has(.dsx-settings-row-title:empty)) > .dsx-spacer ~ .dsx-picker .dsx-picker-select) { min-width: 0; max-width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-title:empty) > :is(.dsx-settings-row-copy, .dsx-spacer), [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-title:empty) > :is(.dsx-settings-row-copy, .dsx-spacer)) { display: none; }\n[data-dsx-owner~=\"SettingsRow\"] .dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-title:empty) > .dsx-textfield, [data-dsx-owner~=\"SettingsRow\"]:is(.dsx-settings-row-content:has(> .dsx-textfield):has(.dsx-settings-row-title:empty) > .dsx-textfield) { flex: 1 1 0; min-width: 0; text-align: start; }\n\n[data-dsx-owner~=\"Stat\"] .dsx-stat, [data-dsx-owner~=\"Stat\"]:is(.dsx-stat) { box-shadow: none; corner-shape: var(--dsx-card-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); --dsx-corner-shape-k: var(--dsx-card-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); }\n@media (forced-colors: active) {\n[data-dsx-owner~=\"Stat\"] .dsx-stat, [data-dsx-owner~=\"Stat\"]:is(.dsx-stat) { border: 1px solid CanvasText; }\n}\n\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header) { --dsx-icon-tile-size: var(--dsx-summary-header-icon-size, 56px); gap: 1.25rem; align-self: stretch; min-width: 0; padding-block: 0.5rem 0.25rem; }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-top, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-top) { align-self: stretch; flex-direction: row; flex-wrap: wrap; gap: 0.75rem 1.5rem; align-items: center; min-width: 0; }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-heading, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-heading) { flex-grow: 1; flex-shrink: 1; flex-basis: 16rem; gap: 0.25rem; min-width: 0; }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-title-line, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-title-line) { flex-direction: row; flex-wrap: wrap; gap: 0.375rem 0.625rem; align-items: center; min-width: 0; }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-title, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-title) { flex-shrink: 1; min-width: 0; font-size: 1.75rem; --dsx-lh-n: 1.2; --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 700; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; color: var(--dsx-label); }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-status, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-status) { flex-direction: row; gap: 0.375rem; align-items: center; color: var(--dsx-summary-header-status-color, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-dot, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-dot) { flex-shrink: 0; width: 0.5rem; height: 0.5rem; border-radius: 0.25rem; background: currentColor; }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-status-text, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-status-text) { font-size: 0.9375rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: inherit; }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-status-success, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-status-success) { --dsx-summary-header-status-color: var(--dsx-success, #34C759); }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-status-danger, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-status-danger) { --dsx-summary-header-status-color: var(--dsx-danger, #FF3B30); }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-status-warning, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-status-warning) { --dsx-summary-header-status-color: var(--dsx-warning, #FF9500); }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-status-info, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-status-info) { --dsx-summary-header-status-color: var(--dsx-info, #007AFF); }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-subtitle, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-subtitle) { font-size: 0.9375rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-actions, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-actions) { flex-direction: row; flex-wrap: wrap; flex-shrink: 0; gap: 1rem; align-items: center; margin-inline-start: auto; }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-facts, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-facts) { align-self: stretch; gap: 1rem; padding: 1rem; border-radius: var(--dsx-summary-header-radius, var(--dsx-surface-radius, 36.5px)); corner-shape: var(--dsx-summary-header-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); --dsx-corner-shape-k: var(--dsx-summary-header-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); background: var(--dsx-summary-header-background, var(--dsx-list-cell, var(--dsx-secondary-grouped-background))); box-shadow: none; }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-fact, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-fact) { gap: 0.125rem; min-width: 0; }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-fact-label, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-fact-label) { font-size: 0.8125rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-fact-value, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-fact-value) { font-size: 1.0625rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 500; font-variant-numeric: tabular-nums; color: var(--dsx-label); }\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-fact-mono, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-fact-mono) { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; --dsx-face-normal: 1.2; font-size: 0.9375rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n@media (forced-colors: active) {\n[data-dsx-owner~=\"SummaryHeader\"] .dsx-summary-header-facts, [data-dsx-owner~=\"SummaryHeader\"]:is(.dsx-summary-header-facts) { border: 1px solid CanvasText; }\n}\n\n@keyframes dsx-thinking-pulse {\n0%, 80%, 100% { opacity: 0.28; transform: scale(0.82); }\n40% { opacity: 1; transform: scale(1); }\n}\n[data-dsx-owner~=\"ThinkingOrb\"] .dsx-thinking-dot, [data-dsx-owner~=\"ThinkingOrb\"]:is(.dsx-thinking-dot) { opacity: 0.75; animation: dsx-thinking-pulse 1.2s ease-in-out infinite; }\n[data-dsx-owner~=\"ThinkingOrb\"] .dsx-thinking-dot-2, [data-dsx-owner~=\"ThinkingOrb\"]:is(.dsx-thinking-dot-2) { animation-delay: 0.16s; }\n[data-dsx-owner~=\"ThinkingOrb\"] .dsx-thinking-dot-3, [data-dsx-owner~=\"ThinkingOrb\"]:is(.dsx-thinking-dot-3) { animation-delay: 0.32s; }\n@media (prefers-reduced-motion: reduce) {\n[data-dsx-owner~=\"ThinkingOrb\"] .dsx-thinking-dot, [data-dsx-owner~=\"ThinkingOrb\"]:is(.dsx-thinking-dot) { animation: none; opacity: 0.75; }\n}\n\n@property --dsx-threadpane-gutter { syntax: \"<length>\"; inherits: true; initial-value: 20px; }\n@property --dsx-threadpane-gap { syntax: \"<length>\"; inherits: true; initial-value: 8px; }\n[data-dsx-owner~=\"ThreadPane\"] .dsx-threadpane, [data-dsx-owner~=\"ThreadPane\"]:is(.dsx-threadpane) { align-self: stretch; height: 100%; min-height: 0; gap: 0; }\n[data-dsx-owner~=\"ThreadPane\"] .dsx-threadpane-scroll, [data-dsx-owner~=\"ThreadPane\"]:is(.dsx-threadpane-scroll) { flex: 1 1 0; min-height: 0; align-self: stretch; flex-direction: column-reverse; }\n[data-dsx-owner~=\"ThreadPane\"] .dsx-threadpane-thread, [data-dsx-owner~=\"ThreadPane\"]:is(.dsx-threadpane-thread) { align-self: stretch; gap: var(--dsx-threadpane-gap); padding: 16px var(--dsx-threadpane-gutter); }\n[data-dsx-owner~=\"ThreadPane\"] .dsx-threadpane-composer, [data-dsx-owner~=\"ThreadPane\"]:is(.dsx-threadpane-composer) { align-self: stretch; padding: 8px var(--dsx-threadpane-gutter) 16px; }\n\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline) { gap: 0.75rem; align-self: stretch; align-items: stretch; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-progress, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-progress) { --dsx-timeline-header-display: flex; --dsx-timeline-step-count-display: flex; --dsx-timeline-items-display: none; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-checklist, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-checklist) { --dsx-timeline-header-display: flex; --dsx-timeline-done-count-display: flex; --dsx-timeline-connector-visibility: hidden; --dsx-timeline-row-gap: 0.75rem; --dsx-timeline-done-title-ink: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-numbered, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-numbered) { --dsx-timeline-number-display: flex; --dsx-timeline-dot-scale: 1; --dsx-timeline-dot-border: 0px; --dsx-timeline-dot-ground: var(--dsx-fill); --dsx-timeline-current-dot-ground: var(--dsx-label); --dsx-timeline-current-number-ink: var(--dsx-background); --dsx-timeline-icon-scale: 1; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-horizontal, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-horizontal) { --dsx-timeline-axis: row; --dsx-timeline-items-overflow: auto; --dsx-timeline-items-padding: calc(var(--dsx-focus-ring-width, 2px) + var(--dsx-focus-ring-offset, 2px)) 0px; --dsx-timeline-row-align: center; --dsx-timeline-row-grow: 1; --dsx-timeline-row-basis: 0px; --dsx-timeline-row-min: var(--dsx-timeline-track-min, 56px); --dsx-timeline-row-padding: 0px calc(var(--dsx-focus-ring-width, 2px) + var(--dsx-focus-ring-offset, 2px)); --dsx-timeline-track-container: inline-size; --dsx-timeline-rail-display: flex; --dsx-timeline-connector-display: none; --dsx-timeline-step-axis: column; --dsx-timeline-step-align: center; --dsx-timeline-step-self: center; --dsx-timeline-step-padding: 0px 6px 4px 6px; --dsx-timeline-step-gap: 0.5rem; --dsx-timeline-step-grow: 0; --dsx-timeline-copy-grow: 0; --dsx-timeline-copy-align: center; --dsx-timeline-headline-axis: column; --dsx-timeline-headline-align: center; --dsx-timeline-headline-min: 0px; --dsx-timeline-title-size: 0.8125rem; --dsx-timeline-title-line: 1.125rem; --dsx-timeline-title-clamp: 2; --dsx-timeline-title-align: center; --dsx-timeline-action-align: center; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-compact, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-compact) { --dsx-timeline-marker-size: 16px; --dsx-timeline-row-gap: 0.5rem; --dsx-timeline-title-size: 0.9375rem; --dsx-timeline-title-line: 1.25rem; --dsx-timeline-detail-size: 0.8125rem; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-large, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-large) { --dsx-timeline-marker-size: 32px; --dsx-timeline-row-gap: 1.25rem; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-items, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-items) { flex-direction: var(--dsx-timeline-axis, column); display: var(--dsx-timeline-items-display, flex); gap: 0rem; align-items: stretch; overflow-x: var(--dsx-timeline-items-overflow, visible); padding: var(--dsx-timeline-items-padding, 0px); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-row, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-row) { position: relative; flex-direction: column; flex-grow: var(--dsx-timeline-row-grow, 0); flex-shrink: 1; flex-basis: var(--dsx-timeline-row-basis, auto); min-width: var(--dsx-timeline-row-min, 0px); padding: var(--dsx-timeline-row-padding, 0px); gap: 0rem; align-items: var(--dsx-timeline-row-align, stretch); container-name: dsx-timeline-track; container-type: var(--dsx-timeline-track-container, normal); --dsx-timeline-tone: var(--dsx-tertiary-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-rail, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-rail) { display: var(--dsx-timeline-rail-display, none); position: absolute; top: 0px; left: 0px; right: 0px; height: var(--dsx-timeline-marker-size, 24px); flex-direction: row; align-items: center; gap: var(--dsx-timeline-link-gap, 8px); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-rail-marker, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-rail-marker) { flex-shrink: 0; width: var(--dsx-timeline-marker-size, 24px); height: var(--dsx-timeline-marker-size, 24px); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-link, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-link) { display: flex; flex-direction: row; flex-grow: 1; flex-shrink: 1; flex-basis: 0px; min-width: 0px; height: 2px; align-self: center; overflow: hidden; background: var(--dsx-timeline-connector, var(--dsx-separator)); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-link-lead, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-link-lead) { border-radius: 0px 1px 1px 0px; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-link-trail, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-link-trail) { border-radius: 1px 0px 0px 1px; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-first .dsx-timeline-link-lead, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-first .dsx-timeline-link-lead), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-last .dsx-timeline-link-trail, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-last .dsx-timeline-link-trail) { visibility: hidden; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-link-fill, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-link-fill) { flex-grow: 1; align-self: stretch; background: var(--dsx-tertiary-label); scale: 0 1; transform-origin: left center; transition: scale calc(var(--dsx-timeline-duration, 300ms) / 2) linear; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-link-fill:dir(rtl), [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-link-fill:dir(rtl)) { transform-origin: right center; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-link-trail > .dsx-timeline-link-fill, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-link-trail > .dsx-timeline-link-fill) { transition-delay: calc(var(--dsx-timeline-duration, 300ms) / 2); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-phase-done > .dsx-timeline-rail > .dsx-timeline-link-trail > .dsx-timeline-link-fill, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-phase-done > .dsx-timeline-rail > .dsx-timeline-link-trail > .dsx-timeline-link-fill) { scale: 1 1; transition-delay: 0s; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-after-done > .dsx-timeline-rail > .dsx-timeline-link-lead > .dsx-timeline-link-fill, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-after-done > .dsx-timeline-rail > .dsx-timeline-link-lead > .dsx-timeline-link-fill) { scale: 1 1; transition-delay: calc(var(--dsx-timeline-duration, 300ms) / 2); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-step, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-step) { position: relative; flex-direction: var(--dsx-timeline-step-axis, row); flex-grow: var(--dsx-timeline-step-grow, 1); flex-shrink: 1; min-width: 0; max-width: 100%; align-self: var(--dsx-timeline-step-self, auto); padding: var(--dsx-timeline-step-padding, 0px); gap: var(--dsx-timeline-step-gap, 0.75rem); align-items: var(--dsx-timeline-step-align, stretch); border-radius: var(--dsx-timeline-step-radius, var(--dsx-radius-control, 10px)); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-actionable, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-actionable) { --dsx-timeline-connector-gap: calc(var(--dsx-focus-ring-width, 2px) + var(--dsx-focus-ring-offset, 2px)); padding: calc(var(--dsx-focus-ring-width, 2px) + var(--dsx-focus-ring-offset, 2px)); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-hit, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-hit) { position: absolute; z-index: 1; inset: 0; width: 100%; height: 100%; min-width: 0; min-height: 0; margin: 0; padding: 0; border-radius: inherit; color: transparent; background: transparent; box-shadow: none; outline: none; opacity: 1; cursor: pointer; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-hit:hover, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-hit:hover), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-hit:active, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-hit:active), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-hit:focus, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-hit:focus), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-hit:focus-visible, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-hit:focus-visible) { background: transparent; box-shadow: none; outline: none; opacity: 1; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-step:has(> .dsx-timeline-hit:focus-visible), [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-step:has(> .dsx-timeline-hit:focus-visible)) { outline: var(--dsx-focus-ring-outline, 2px solid var(--dsx-accent)); outline-offset: var(--dsx-focus-ring-offset, 2px); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-step > .dsx-timeline-marker, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-step > .dsx-timeline-marker), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-step > .dsx-timeline-copy, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-step > .dsx-timeline-copy) { transition: opacity var(--dsx-dur-fast, 120ms) ease; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-step:has(> .dsx-timeline-hit:active) > .dsx-timeline-marker, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-step:has(> .dsx-timeline-hit:active) > .dsx-timeline-marker), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-step:has(> .dsx-timeline-hit:active) > .dsx-timeline-copy, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-step:has(> .dsx-timeline-hit:active) > .dsx-timeline-copy) { opacity: 0.6; transition-duration: 0s; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-phase-done, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-phase-done) { --dsx-timeline-tone: var(--dsx-tone-success-ink); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-phase-current, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-phase-current) { --dsx-timeline-tone: var(--dsx-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-phase-failed, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-phase-failed) { --dsx-timeline-tone: var(--dsx-destructive); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-phase-skipped, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-phase-skipped) { --dsx-timeline-tone: var(--dsx-tertiary-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-state-warning, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-state-warning) { --dsx-timeline-tone: var(--dsx-warning, #ff9500); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-state-info, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-state-info) { --dsx-timeline-tone: var(--dsx-info, var(--dsx-accent)); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-marker, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-marker) { flex-shrink: 0; width: var(--dsx-timeline-marker-size, 24px); height: var(--dsx-timeline-marker-size, 24px); align-items: center; justify-content: center; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-icon, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-icon) { font-size: calc(var(--dsx-timeline-marker-size, 24px) * var(--dsx-timeline-icon-scale, 0.8)); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-timeline-tone); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-spinner, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-spinner) { width: calc(var(--dsx-timeline-marker-size, 24px) * 0.75); height: calc(var(--dsx-timeline-marker-size, 24px) * 0.75); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-avatar, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-avatar) { width: var(--dsx-timeline-marker-size, 24px); height: var(--dsx-timeline-marker-size, 24px); border-radius: 999px; object-fit: cover; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-dot, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-dot) { width: calc(var(--dsx-timeline-marker-size, 24px) * var(--dsx-timeline-dot-scale, 0.5)); height: calc(var(--dsx-timeline-marker-size, 24px) * var(--dsx-timeline-dot-scale, 0.5)); border-radius: 999px; border: var(--dsx-timeline-dot-border, 2px) solid var(--dsx-timeline-tone); background: var(--dsx-timeline-dot-ground, transparent); align-items: center; justify-content: center; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-phase-done .dsx-timeline-dot, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-phase-done .dsx-timeline-dot) { background: var(--dsx-timeline-done-dot-ground, var(--dsx-timeline-tone)); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-current .dsx-timeline-dot, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-current .dsx-timeline-dot) { background: var(--dsx-timeline-current-dot-ground, var(--dsx-timeline-tone)); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-number, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-number) { display: var(--dsx-timeline-number-display, none); font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; font-variant-numeric: tabular-nums; color: var(--dsx-secondary-label); transition: color var(--dsx-timeline-duration, 300ms) ease; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-current .dsx-timeline-number, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-current .dsx-timeline-number) { color: var(--dsx-timeline-current-number-ink, var(--dsx-secondary-label)); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-connector, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-connector) { display: var(--dsx-timeline-connector-display, flex); visibility: var(--dsx-timeline-connector-visibility, visible); flex-grow: 0; flex-shrink: 0; align-self: flex-start; width: 2px; min-width: 2px; min-height: calc(var(--dsx-timeline-row-gap, 1rem) - 2 * var(--dsx-timeline-connector-gap, 2px)); margin: var(--dsx-timeline-connector-gap, 2px) 0px var(--dsx-timeline-connector-gap, 2px) calc(var(--dsx-timeline-marker-size, 24px) / 2 - 1px); border-radius: 1px; overflow: hidden; background: var(--dsx-timeline-connector, var(--dsx-separator)); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-connector-fill, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-connector-fill) { flex-grow: 1; align-self: stretch; background: var(--dsx-timeline-tone); scale: 1 0; transform-origin: center top; transition: scale var(--dsx-timeline-duration, 300ms) cubic-bezier(0.32, 0.72, 0, 1); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-phase-done .dsx-timeline-connector-fill, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-phase-done .dsx-timeline-connector-fill) { scale: 1 1; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-last .dsx-timeline-connector, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-last .dsx-timeline-connector) { display: none; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-copy, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-copy) { flex-grow: var(--dsx-timeline-copy-grow, 1); flex-shrink: 1; min-width: 0; max-width: 100%; gap: 0.125rem; align-items: var(--dsx-timeline-copy-align, stretch); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-headline, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-headline) { flex-direction: var(--dsx-timeline-headline-axis, row); gap: 0.5rem; min-height: var(--dsx-timeline-headline-min, var(--dsx-timeline-marker-size, 24px)); align-items: var(--dsx-timeline-headline-align, center); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-title, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-title) { flex-grow: 1; flex-shrink: 1; min-width: 0; font-size: var(--dsx-timeline-title-size, 1.0625rem); --dsx-lh-pn: var(--dsx-timeline-title-line, 1.375rem); --dsx-lh-pl: var(--dsx-timeline-title-line, 1.375rem); --dsx-lh-n: var(--dsx-lh-pn); --dsx-lh-k: 0; --dsx-lh-l: var(--dsx-lh-pl); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); line-clamp: var(--dsx-timeline-title-clamp, none); text-align: var(--dsx-timeline-title-align, start); overflow-wrap: normal; text-overflow: ellipsis; color: var(--dsx-label); transition: color var(--dsx-timeline-duration, 300ms) ease,\n    font-weight var(--dsx-timeline-duration, 300ms) ease; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-current .dsx-timeline-title, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-current .dsx-timeline-title) { font-weight: 600; }\n@container dsx-timeline-track (max-width: 63.98px) {\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-row:not(.dsx-timeline-current) .dsx-timeline-copy, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-row:not(.dsx-timeline-current) .dsx-timeline-copy) { display: none; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-current .dsx-timeline-copy, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-current .dsx-timeline-copy) { max-width: none; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-current .dsx-timeline-title, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-current .dsx-timeline-title) { white-space: nowrap; line-clamp: none; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-first.dsx-timeline-current .dsx-timeline-copy, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-first.dsx-timeline-current .dsx-timeline-copy) { align-self: flex-start; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-last.dsx-timeline-current .dsx-timeline-copy, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-last.dsx-timeline-current .dsx-timeline-copy) { align-self: flex-end; }\n}\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-phase-skipped .dsx-timeline-title, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-phase-skipped .dsx-timeline-title) { color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-phase-done .dsx-timeline-title, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-phase-done .dsx-timeline-title) { color: var(--dsx-timeline-done-title-ink, var(--dsx-label)); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-trailing, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-trailing) { flex-shrink: 0; font-size: var(--dsx-timeline-detail-size, 0.9375rem); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-variant-numeric: tabular-nums; color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-detail, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-detail), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-fix, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-fix) { font-size: var(--dsx-timeline-detail-size, 0.9375rem); --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1.25rem; line-height: round(nearest, 1.25rem, 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-reason, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-reason) { font-size: var(--dsx-timeline-detail-size, 0.9375rem); --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 1.25rem; line-height: round(nearest, 1.25rem, 1px); color: var(--dsx-destructive); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-subitems, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-subitems) { flex-direction: column; gap: 0.25rem; padding-top: 0.25rem; align-items: stretch; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-subitem, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-subitem) { flex-direction: row; gap: 0.5rem; align-items: center; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-subitem-title, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-subitem-title) { flex-grow: 1; flex-shrink: 1; min-width: 0; font-size: var(--dsx-timeline-detail-size, 0.9375rem); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-action, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-action) { position: relative; z-index: 2; align-self: var(--dsx-timeline-action-align, flex-start); font-size: 0.9375rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: var(--dsx-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-header, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-header) { display: var(--dsx-timeline-header-display, none); gap: 0.5rem; align-items: stretch; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-step-count, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-step-count) { display: var(--dsx-timeline-step-count-display, none); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-done-count, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-done-count) { display: var(--dsx-timeline-done-count-display, none); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-step-count, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-step-count), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-done-count, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-done-count) { font-size: 0.8125rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; font-variant-numeric: tabular-nums; color: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-segments, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-segments) { flex-direction: row; gap: 4px; align-items: stretch; }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-segment, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-segment) { flex-grow: 1; flex-basis: 0; height: var(--dsx-timeline-segment-height, 4px); border-radius: 999px; background: var(--dsx-fill); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-segment.dsx-timeline-phase-done, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-segment.dsx-timeline-phase-done), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-segment.dsx-timeline-current, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-segment.dsx-timeline-current) { background: var(--dsx-secondary-label); }\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-icon, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-icon), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-dot, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-dot) { transition: scale var(--dsx-timeline-duration, 300ms) cubic-bezier(0.34, 1.4, 0.64, 1),\n    opacity var(--dsx-timeline-duration, 300ms) ease,\n    background-color var(--dsx-timeline-duration, 300ms) ease,\n    border-color var(--dsx-timeline-duration, 300ms) ease; }\n@starting-style {\n[data-dsx-settled] [data-dsx-owner~=\"Timeline\"] .dsx-timeline-icon, [data-dsx-settled] [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-icon), [data-dsx-settled] [data-dsx-owner~=\"Timeline\"] .dsx-timeline-dot, [data-dsx-settled] [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-dot) { scale: 0.6; opacity: 0; }\n}\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-icon[data-dsx-leaving], [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-icon)[data-dsx-leaving], [data-dsx-owner~=\"Timeline\"] .dsx-timeline-dot[data-dsx-leaving], [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-dot)[data-dsx-leaving] { scale: 0.6; opacity: 0; }\n@media (prefers-reduced-motion: reduce) {\n[data-dsx-owner~=\"Timeline\"] .dsx-timeline-icon, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-icon), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-dot, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-dot), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-number, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-number), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-title, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-title), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-connector-fill, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-connector-fill), [data-dsx-owner~=\"Timeline\"] .dsx-timeline-link-fill, [data-dsx-owner~=\"Timeline\"]:is(.dsx-timeline-link-fill) { transition: opacity var(--dsx-timeline-duration, 300ms) ease; }\n}\n}\n\n@layer dsx-sheets {\n[data-dsx-owner~=\"Announcements\"] .hub-page-sheet, [data-dsx-owner~=\"Announcements\"]:is(.hub-page-sheet) { --dsx-sheet-sizing: page; }\n\n[data-dsx-owner~=\"ArticleEditor\"] .hub-page-sheet, [data-dsx-owner~=\"ArticleEditor\"]:is(.hub-page-sheet) { --dsx-sheet-sizing: page; }\n\n[data-dsx-owner~=\"HelpCenter\"] .hub-page-sheet, [data-dsx-owner~=\"HelpCenter\"]:is(.hub-page-sheet) { --dsx-sheet-sizing: page; }\n}\n\n@property --dsx-rx-background { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-background-color { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-border { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-border-color { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-border-radius { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-border-width { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-color { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-font-weight { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-opacity { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-padding { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-padding-right { syntax: \"*\"; inherits: false; }\n@property --dsx-rx-text-decoration-line { syntax: \"*\"; inherits: false; }\n@layer dsx-library.inline {\n[data-dsx~=\"c4\"] { --dsx-button-icon-size: 15px; }\n[data-dsx~=\"c5\"] { gap: 0.5rem; }\n[data-dsx~=\"c6\"] { align-self: stretch; color: var(--dsx-answer-ink, var(--dsx-label)); }\n[data-dsx~=\"c7\"] { gap: 0px; align-self: stretch; padding-top: 4px; }\n[data-dsx~=\"c8\"] { font-size: 12px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; padding-bottom: 2px; color: var(--dsx-tertiary-label); }\n[data-dsx~=\"c9\"] { align-self: stretch; }\n[data-dsx~=\"c10\"] { gap: 10px; align-items: center; min-height: 44px; border-top: 0.5px solid var(--dsx-separator); }\n[data-dsx~=\"c11\"] { flex-shrink: 0; color: var(--dsx-tertiary-label); font-size: 12px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c12\"] { flex-grow: 1; flex-shrink: 1; min-width: 0; font-size: 15px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-label); }\n[data-dsx~=\"c13\"] { background: var(--dsx-rx-background); }\n[data-dsx~=\"c16\"] { flex-shrink: 0; color: var(--dsx-accent); font-size: 14px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c17\"] { flex-grow: 1; font-size: 13px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c18\"] { gap: 2px; align-items: center; }\n[data-dsx~=\"c38\"] { font-weight: 600; color: var(--dsx-label); }\n[data-dsx~=\"c39\"] { color: var(--dsx-tertiary-label); }\n[data-dsx~=\"c42\"] { flex-direction: row; align-items: center; gap: 0.625rem; padding: 0.5rem 0.625rem; border-radius: var(--dsx-radius-control, 10px); background: var(--dsx-fill); }\n[data-dsx~=\"c43\"] { color: var(--dsx-secondary-label); font-size: 18px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c44\"] { gap: 0.0625rem; align-items: flex-start; }\n[data-dsx~=\"c45\"] { color: var(--dsx-label); }\n[data-dsx~=\"c46\"] { gap: 0.1875rem; align-items: center; justify-content: center; }\n[data-dsx~=\"c47\"] { gap: 0.1875rem; align-items: center; }\n[data-dsx~=\"c48\"] { background: var(--dsx-audio-level-color, var(--dsx-accent)); width: var(--dsx-audio-level-bar-width, 3px); min-width: var(--dsx-audio-level-bar-width, 3px); border-radius: 999px; }\n[data-dsx~=\"c64\"] { flex-direction: row; gap: 0.25rem; align-items: center; justify-items: center; justify-content: center; }\n[data-dsx~=\"c67\"] { display: grid; border-radius: 999px; color: var(--dsx-avatar-color, var(--dsx-on-accent)); font-size: calc(var(--dsx-avatar-size, 44px) * 0.4); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); width: var(--dsx-avatar-size, 44px); min-width: var(--dsx-avatar-size, 44px); height: var(--dsx-avatar-size, 44px); min-height: var(--dsx-avatar-size, 44px); align-items: end; justify-items: end; background: var(--dsx-rx-background); }\n[data-dsx~=\"c68\"] { border-radius: 999px; border-style: solid; border-width: var(--dsx-avatar-ring-width, 0px); border-color: var(--dsx-avatar-ring-color, transparent); width: var(--dsx-avatar-size, 44px); min-width: var(--dsx-avatar-size, 44px); height: var(--dsx-avatar-size, 44px); min-height: var(--dsx-avatar-size, 44px); }\n[data-dsx~=\"c69\"] { display: grid; border-radius: 999px; border-style: solid; border-width: var(--dsx-avatar-ring-width, 0px); border-color: var(--dsx-avatar-ring-color, transparent); width: var(--dsx-avatar-size, 44px); min-width: var(--dsx-avatar-size, 44px); height: var(--dsx-avatar-size, 44px); min-height: var(--dsx-avatar-size, 44px); align-items: center; justify-items: center; justify-content: center; }\n[data-dsx~=\"c70\"] { font-weight: 600; }\n[data-dsx~=\"c71\"] { display: var(--dsx-avatar-status-display, none); border-radius: 999px; width: calc(var(--dsx-avatar-size, 44px) * 0.28); min-width: calc(var(--dsx-avatar-size, 44px) * 0.28); height: calc(var(--dsx-avatar-size, 44px) * 0.28); min-height: calc(var(--dsx-avatar-size, 44px) * 0.28); background: var(--dsx-avatar-status-background, transparent); border: 2px solid var(--dsx-avatar-status-ring-color, var(--dsx-background)); }\n[data-dsx~=\"c80\"] { gap: 0rem; }\n[data-dsx~=\"c85\"] { color: var(--dsx-rx-color); }\n[data-dsx~=\"c86\"] { gap: var(--dsx-card-gap, 0.5rem); background: var(--dsx-card-background, var(--dsx-list-cell, var(--dsx-secondary-grouped-background))); border-radius: var(--dsx-card-border-radius, var(--dsx-surface-radius, 36.5px)); corner-shape: var(--dsx-card-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); --dsx-corner-shape-k: var(--dsx-card-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); padding: var(--dsx-card-padding, 1rem); color: var(--dsx-label); }\n[data-dsx~=\"c87\"] { font-size: 13px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c88\"] { font-size: 0.875rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-rx-color); }\n[data-dsx~=\"c89\"] { flex-direction: row; gap: 0.375rem; border-radius: 999px; padding-left: 0.75rem; padding-right: 0.75rem; min-height: 30px; padding-top: 0px; padding-bottom: 0px; align-items: center; justify-items: center; justify-content: center; background: var(--dsx-rx-background); }\n[data-dsx~=\"c90\"] { font-weight: 500; }\n[data-dsx~=\"c96\"] { color: var(--dsx-secondary-label); }\n[data-dsx~=\"c99\"] { gap: 0.5rem; align-items: center; }\n[data-dsx~=\"c106\"] { gap: 8px; align-items: center; align-self: stretch; }\n[data-dsx~=\"c121\"] { gap: 0rem; border-radius: var(--dsx-radius-control, 10px); overflow: hidden; background: var(--dsx-secondary-grouped-background); }\n[data-dsx~=\"c122\"] { gap: 0rem; padding: 0.625rem; }\n[data-dsx~=\"c123\"] { flex-direction: row; gap: 0.5rem; background: var(--dsx-rx-background); }\n[data-dsx~=\"c124\"] { font-size: 0.8125rem; font-weight: 700; white-space: pre; min-width: 10px; font-family: ui-monospace, monospace; --dsx-face-normal: 1.2; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-rx-color); }\n[data-dsx~=\"c125\"] { font-size: 0.8125rem; white-space: pre; font-family: ui-monospace, monospace; --dsx-face-normal: 1.2; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-rx-color); }\n[data-dsx~=\"c126\"] { flex-direction: row; gap: 0.75rem; }\n[data-dsx~=\"c127\"] { gap: 0rem; flex-grow: 1; align-items: start; justify-items: start; background: var(--dsx-rx-background); }\n[data-dsx~=\"c143\"] { gap: 4px; align-items: center; }\n[data-dsx~=\"c147\"] { color: light-dark(#1F9D55, #3DD68C); font-size: 16px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c148\"] { font-size: 15px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 500; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c149\"] { color: var(--dsx-label); font-size: 0.9375rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); gap: 0.625rem; padding: 1.25rem; align-items: center; justify-items: center; justify-content: center; }\n[data-dsx~=\"c150\"] { color: var(--dsx-empty-state-icon-color, var(--dsx-secondary-label)); font-size: 32px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c151\"] { gap: 0.25rem; align-items: center; justify-items: center; justify-content: center; }\n[data-dsx~=\"c152\"] { font-weight: 600; text-align: center; }\n[data-dsx~=\"c153\"] { font-size: 0.8125rem; color: var(--dsx-secondary-label); max-width: 280px; text-align: center; --dsx-lh-pn: calc(1em + 2px); --dsx-lh-pl: calc(1em + 2px); --dsx-lh-n: var(--dsx-lh-pn); --dsx-lh-k: 0; --dsx-lh-l: var(--dsx-lh-pl); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c157\"] { font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-secondary-label); }\n[data-dsx~=\"c169\"] { color: #FFFFFF; }\n[data-dsx~=\"c170\"] { color: #000000; }\n[data-dsx~=\"c187\"] { gap: 0.5rem; align-items: stretch; }\n[data-dsx~=\"c188\"] { padding: 0.75rem; border-radius: var(--dsx-radius-control, 10px); align-items: stretch; background: var(--dsx-fill); }\n[data-dsx~=\"c189\"] { font-size: 17px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c190\"] { font-size: 11px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c191\"] { --dsx-appearance: none; }\n[data-dsx~=\"c192\"] { --dsx-appearance: none; gap: 0rem; }\n[data-dsx~=\"c196\"] { gap: 0.375rem; }\n[data-dsx~=\"c198\"] { font-size: 18px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-rx-color); }\n[data-dsx~=\"c199\"] { display: grid; padding-left: var(--dsx-navbar-padding-inline, 0.75rem); padding-right: var(--dsx-navbar-padding-inline, 0.75rem); padding-top: 0.625rem; padding-bottom: 0.625rem; align-self: stretch; }\n[data-dsx~=\"c200\"] { grid-area: 1 / 1; align-self: center; gap: 0.0625rem; padding-left: 3.5rem; padding-right: 3.5rem; align-items: center; justify-items: center; justify-content: center; }\n[data-dsx~=\"c201\"] { font-size: 1.0625rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; text-align: center; color: var(--dsx-navbar-foreground, inherit); }\n[data-dsx~=\"c202\"] { grid-area: 1 / 1; align-self: center; flex-direction: row; gap: 0.5rem; justify-self: stretch; align-items: center; justify-items: center; justify-content: center; }\n[data-dsx~=\"c203\"] { --dsx-button-icon-size: 20px; }\n[data-dsx~=\"c204\"] { --dsx-sheet-sizing: form; }\n[data-dsx~=\"c205\"] { flex-shrink: 0; }\n[data-dsx~=\"c209\"] { gap: 0.25rem; align-items: center; }\n[data-dsx~=\"c217\"] { flex-direction: row; align-items: flex-start; gap: 0.625rem; padding: 0.75rem 0rem; }\n[data-dsx~=\"c218\"] { --dsx-avatar-size: 40px; }\n[data-dsx~=\"c219\"] { gap: 0.25rem; align-items: stretch; flex-grow: 1; }\n[data-dsx~=\"c220\"] { gap: 0.3125rem; align-items: baseline; }\n[data-dsx~=\"c221\"] { width: 100%; height: 200px; border-radius: var(--dsx-surface-inner-radius, 14px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); margin-top: 0.25rem; }\n[data-dsx~=\"c222\"] { gap: 1.25rem; align-items: center; margin-top: 0.25rem; }\n[data-dsx~=\"c223\"] { font-size: 20px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c224\"] { position: relative; align-items: stretch; }\n[data-dsx~=\"c225\"] { position: absolute; left: 0; right: 0; bottom: 100%; margin-bottom: 0.5rem; padding: 0.375rem; gap: 0.125rem; align-items: stretch; }\n[data-dsx~=\"c226\"] { color: var(--dsx-tertiary-label); padding: 0.5rem 0.625rem 0.375rem; }\n[data-dsx~=\"c227\"] { --dsx-appearance: none; gap: 0.125rem; }\n[data-dsx~=\"c228\"] { border-radius: var(--dsx-surface-inner-radius, 14px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); background-color: var(--dsx-rx-background-color); }\n[data-dsx~=\"c229\"] { gap: 0.75rem; align-items: center; padding: 0.5rem 0.625rem; }\n[data-dsx~=\"c230\"] { flex-grow: 1; color: var(--dsx-label); }\n[data-dsx~=\"c231\"] { align-items: stretch; padding: var(--dsx-rx-padding); }\n[data-dsx~=\"c232\"] { color: var(--dsx-label); padding: 0.375rem 0.5rem 0.5rem; }\n[data-dsx~=\"c233\"] { display: grid; grid-template-columns: auto auto auto minmax(0, 1fr) auto auto auto; column-gap: 0.25rem; row-gap: 0; align-items: end; }\n[data-dsx~=\"c234\"] { grid-area: top; gap: 0.25rem; align-items: stretch; }\n[data-dsx~=\"c235\"] { gap: 0.5rem; align-items: center; margin-bottom: 0.25rem; padding: 0.25rem 0.25rem 0.25rem 0.75rem; border-radius: var(--dsx-surface-inner-radius, 14px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); background-color: var(--dsx-fill); }\n[data-dsx~=\"c236\"] { flex-grow: 1; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c237\"] { width: 30px; height: 30px; min-width: 30px; min-height: 30px; padding: 0; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; flex-shrink: 0; color: var(--dsx-secondary-label); --dsx-button-icon-size: 13px; }\n[data-dsx~=\"c238\"] { grid-area: tray; gap: 0.5rem; padding: 0.125rem 0.125rem 0.25rem; }\n[data-dsx~=\"c239\"] { grid-area: field; min-width: 0; --dsx-appearance: none; background: transparent; border: 0; border-radius: 0; box-shadow: none; outline: none; padding: var(--dsx-rx-padding); }\n[data-dsx~=\"c240\"] { grid-area: plus; width: 36px; height: 36px; min-width: 36px; min-height: 36px; padding: 0; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; flex-shrink: 0; --dsx-button-icon-size: 20px; }\n[data-dsx~=\"c241\"] { grid-area: plus; }\n[data-dsx~=\"c242\"] { width: 36px; height: 36px; min-width: 36px; min-height: 36px; padding: 0; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; flex-shrink: 0; --dsx-button-icon-size: 20px; }\n[data-dsx~=\"c243\"] { grid-area: model; align-self: center; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; }\n[data-dsx~=\"c244\"] { gap: 0.3125rem; align-items: center; padding: 0.4375rem 0.875rem; }\n[data-dsx~=\"c245\"] { grid-area: pills; gap: 0.25rem; align-items: center; align-self: center; }\n[data-dsx~=\"c246\"] { grid-area: model; min-height: 36px; --dsx-appearance: none; background: transparent; border: 0; box-shadow: none; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c247\"] { grid-area: count; align-self: center; padding: 0 0.25rem; color: var(--dsx-rx-color); }\n[data-dsx~=\"c248\"] { grid-area: mic; width: 36px; height: 36px; min-width: 36px; min-height: 36px; padding: 0; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; flex-shrink: 0; --dsx-button-icon-size: 19px; }\n[data-dsx~=\"c249\"] { grid-area: send; width: 36px; height: 36px; min-width: 36px; min-height: 36px; padding: 0; opacity: 1; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; flex-shrink: 0; transition: background-color var(--dsx-dur-base) var(--dsx-ease), color var(--dsx-dur-base) var(--dsx-ease); background-color: var(--dsx-promptinput-send-background, var(--dsx-label)); color: var(--dsx-promptinput-send-color, var(--dsx-background)); --dsx-button-icon-size: 17px; }\n[data-dsx~=\"c250\"] { grid-area: send; width: 36px; height: 36px; min-width: 36px; min-height: 36px; padding: 0; opacity: 1; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; flex-shrink: 0; transition: background-color var(--dsx-dur-base) var(--dsx-ease), color var(--dsx-dur-base) var(--dsx-ease); --dsx-button-icon-size: 16px; background-color: var(--dsx-rx-background-color); color: var(--dsx-rx-color); }\n[data-dsx~=\"c251\"] { --dsx-popover-compact: popover; }\n[data-dsx~=\"c252\"] { width: 36px; height: 36px; min-width: 36px; min-height: 36px; padding: 0; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; flex-shrink: 0; --dsx-button-icon-size: 15px; }\n[data-dsx~=\"c253\"] { gap: 0.75rem; padding: 1rem; max-width: 16rem; align-items: stretch; }\n[data-dsx~=\"c254\"] { flex-grow: 1; --dsx-audio-level-height: 22px; --dsx-audio-level-color: var(--dsx-label); --dsx-audio-level-bar-width: 2px; }\n[data-dsx~=\"c255\"] { width: 36px; height: 36px; min-width: 36px; min-height: 36px; padding: 0; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; flex-shrink: 0; --dsx-button-icon-size: 13px; }\n[data-dsx~=\"c256\"] { width: 36px; height: 36px; min-width: 36px; min-height: 36px; padding: 0; opacity: 1; border-radius: 999px; corner-shape: round; --dsx-corner-shape-k: 1 1 1 1; flex-shrink: 0; transition: background-color var(--dsx-dur-base) var(--dsx-ease), color var(--dsx-dur-base) var(--dsx-ease); background-color: var(--dsx-promptinput-send-background, var(--dsx-label)); color: var(--dsx-promptinput-send-color, var(--dsx-background)); --dsx-button-icon-size: 16px; }\n[data-dsx~=\"c261\"] { flex-direction: row; gap: 0.375rem; align-items: center; justify-items: center; justify-content: center; }\n[data-dsx~=\"c263\"] { gap: 14px; align-self: stretch; padding: 16px; border-radius: var(--dsx-surface-radius, 36.5px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); background-color: var(--dsx-recommendation-fill, var(--dsx-secondary-grouped-background)); border: 0.5px solid var(--dsx-separator); }\n[data-dsx~=\"c264\"] { font-size: 12px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 500; padding: 3px 8px; border-radius: 999px; color: var(--dsx-secondary-label); background-color: var(--dsx-fill); }\n[data-dsx~=\"c265\"] { gap: 6px; align-self: stretch; }\n[data-dsx~=\"c266\"] { font-size: 19px; font-weight: 600; --dsx-lh-n: 1.3; --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-label); }\n[data-dsx~=\"c267\"] { font-size: 14px; --dsx-lh-n: 1.45; --dsx-lh-k: 0; --dsx-lh-l: 0px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-secondary-label); }\n[data-dsx~=\"c268\"] { gap: 10px; align-items: center; align-self: stretch; }\n[data-dsx~=\"c269\"] { gap: 3px; flex-grow: 1; align-items: center; }\n[data-dsx~=\"c270\"] { flex-grow: 1; flex-basis: 0px; height: 6px; border-radius: 3px; background-color: var(--dsx-rx-background-color); }\n[data-dsx~=\"c271\"] { flex-shrink: 0; min-width: 36px; text-align: right; font-size: 13px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; font-variant-numeric: tabular-nums; color: var(--dsx-label); }\n[data-dsx~=\"c272\"] { gap: 0px; align-self: stretch; border-radius: var(--dsx-surface-inner-radius, 14px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); background-color: var(--dsx-background); border: 0.5px solid var(--dsx-separator); }\n[data-dsx~=\"c273\"] { font-size: 12px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; padding: 10px 14px 4px 14px; color: var(--dsx-tertiary-label); }\n[data-dsx~=\"c274\"] { gap: 10px; align-items: center; min-height: 44px; padding: 0px 14px; }\n[data-dsx~=\"c275\"] { flex-grow: 1; flex-shrink: 1; min-width: 0; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; --dsx-text-shrinkable: 1; font-size: 15px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-label); }\n[data-dsx~=\"c276\"] { flex-shrink: 0; font-size: 13px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-variant-numeric: tabular-nums; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c277\"] { flex-shrink: 0; color: var(--dsx-tertiary-label); font-size: 11px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c278\"] { gap: 8px; align-items: center; justify-content: flex-end; align-self: stretch; min-height: 50px; }\n[data-dsx~=\"c279\"] { gap: 0px; align-self: stretch; border-radius: var(--dsx-platter-nested-radius, var(--dsx-surface-radius, 36.5px)); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); overflow: hidden; background-color: var(--dsx-platter-nested-fill, var(--dsx-list-cell, var(--dsx-secondary-grouped-background))); }\n[data-dsx~=\"c280\"] { gap: 0px; align-self: stretch; }\n[data-dsx~=\"c281\"] { align-self: stretch; border-radius: 0px; }\n[data-dsx~=\"c282\"] { gap: 0px; align-self: stretch; flex-grow: 1; min-width: 0; }\n[data-dsx~=\"c283\"] { height: 0.5px; background-color: var(--dsx-separator); opacity: var(--dsx-rx-opacity); }\n[data-dsx~=\"c284\"] { align-self: stretch; gap: 12px; align-items: center; min-height: 44px; padding: 11px var(--dsx-platter-nested-inset-end, 16px) 11px var(--dsx-platter-nested-inset, 16px); }\n[data-dsx~=\"c285\"] { flex-shrink: 0; width: 22px; font-size: 17px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-secondary-label); }\n[data-dsx~=\"c286\"] { flex-shrink: 0; width: 28px; height: 28px; border-radius: var(--dsx-surface-inner-radius, 14px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); align-items: center; justify-content: center; background-color: var(--dsx-fill); }\n[data-dsx~=\"c287\"] { font-size: 12px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c288\"] { gap: 1px; flex-grow: 1; flex-shrink: 1; min-width: 0; }\n[data-dsx~=\"c289\"] { font-size: 17px; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 22px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; --dsx-text-shrinkable: 1; font-variant-numeric: tabular-nums; color: var(--dsx-label); }\n[data-dsx~=\"c290\"] { font-size: 15px; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 20px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; --dsx-text-shrinkable: 1; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c291\"] { flex-shrink: 0; gap: 6px; align-items: center; }\n[data-dsx~=\"c292\"] { flex-shrink: 0; width: 8px; height: 8px; border-radius: 4px; background-color: var(--dsx-rx-background-color); }\n[data-dsx~=\"c293\"] { width: 12px; height: 12px; }\n[data-dsx~=\"c294\"] { font-size: 17px; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 22px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; --dsx-text-shrinkable: 1; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c295\"] { flex-shrink: 0; font-size: 13px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: var(--dsx-tertiary-label); }\n[data-dsx~=\"c296\"] { gap: 0px; min-width: 100%; padding: var(--dsx-platter-nested-pad, 0px); }\n[data-dsx~=\"c297\"] { align-self: stretch; gap: 0px; height: 44px; align-items: center; padding: 0px var(--dsx-platter-nested-inset-end, 8px) 0px var(--dsx-platter-nested-inset, 16px); }\n[data-dsx~=\"c298\"] { flex-grow: 1; gap: 6px; align-items: center; padding-right: var(--dsx-rx-padding-right); }\n[data-dsx~=\"c299\"] { color: var(--dsx-secondary-label); font-size: 12px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; opacity: var(--dsx-rx-opacity); }\n[data-dsx~=\"c300\"] { font-size: 15px; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 20px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; --dsx-text-shrinkable: 1; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c301\"] { height: 0.5px; margin: 0px 0px 0px var(--dsx-platter-nested-inset, 16px); background-color: var(--dsx-separator); opacity: var(--dsx-rx-opacity); }\n[data-dsx~=\"c302\"] { align-self: stretch; gap: 0px; align-items: center; box-sizing: border-box; min-height: var(--dsx-records-table-row-height); padding: 12px var(--dsx-platter-nested-inset-end, 8px) 12px var(--dsx-platter-nested-inset, 16px); border-radius: var(--dsx-platter-nested-radius, 0px); corner-shape: var(--dsx-surface-corner-shape, superellipse(1.6)); --dsx-corner-shape-k: var(--dsx-surface-corner-shape, superellipse(1.6)); }\n[data-dsx~=\"c303\"] { flex-shrink: 0; gap: 10px; align-items: center; min-width: 0; padding-right: var(--dsx-rx-padding-right); }\n[data-dsx~=\"c304\"] { gap: 2px; flex-shrink: 1; min-width: 0; }\n[data-dsx~=\"c305\"] { flex-shrink: 0; gap: 4px; align-items: center; overflow: hidden; padding-right: var(--dsx-rx-padding-right); }\n[data-dsx~=\"c306\"] { font-size: 17px; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 22px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; --dsx-text-shrinkable: 1; font-variant-numeric: tabular-nums; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c307\"] { gap: 7px; align-items: center; min-width: 0; }\n[data-dsx~=\"c308\"] { font-size: 17px; --dsx-lh-n: 0; --dsx-lh-k: 0; --dsx-lh-l: 22px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; --dsx-text-shrinkable: 1; color: var(--dsx-label); }\n[data-dsx~=\"c309\"] { flex-shrink: 0; padding: 3px 8px; border-radius: 999px; font-size: 13px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 500; color: var(--dsx-label); background-color: var(--dsx-records-table-tag, var(--dsx-fill)); }\n[data-dsx~=\"c310\"] { gap: 8px; align-items: center; }\n[data-dsx~=\"c311\"] { width: 10px; height: 6px; border-radius: 2px; background-color: var(--dsx-rx-background-color); }\n[data-dsx~=\"c312\"] { font-size: 15px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-secondary-label); }\n[data-dsx~=\"c323\"] { background: var(--dsx-settings-row-icon-background, var(--dsx-fill)); }\n[data-dsx~=\"c324\"] { color: var(--dsx-label); font-size: 14px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c325\"] { font-size: inherit; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: inherit; }\n[data-dsx~=\"c326\"] { color: inherit; font-size: 18px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c327\"] { font-size: var(--dsx-settings-row-glyph-size, 27px); line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c328\"] { font-size: 17.5px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c340\"] { align-self: stretch; padding: var(--dsx-stat-padding, 1rem); border-radius: var(--dsx-card-border-radius, var(--dsx-surface-radius, 36.5px)); corner-shape: var(--dsx-card-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); --dsx-corner-shape-k: var(--dsx-card-corner-shape, var(--dsx-surface-corner-shape, superellipse(1.6))); background: var(--dsx-card-background, var(--dsx-list-cell, var(--dsx-secondary-grouped-background))); color: var(--dsx-label); font-size: 1.625rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c341\"] { gap: 0.375rem; align-items: start; justify-items: start; }\n[data-dsx~=\"c342\"] { color: var(--dsx-stat-icon-color, var(--dsx-secondary-label)); font-size: 13px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); }\n[data-dsx~=\"c343\"] { font-size: 0.75rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: var(--dsx-secondary-label); }\n[data-dsx~=\"c344\"] { font-weight: 700; }\n[data-dsx~=\"c345\"] { font-size: 11px; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); color: var(--dsx-rx-color); }\n[data-dsx~=\"c346\"] { font-size: 0.8125rem; line-height: round(nearest, calc((var(--dsx-lh-n) + var(--dsx-lh-k) * var(--dsx-face-normal, 1.2)) * 1em + var(--dsx-lh-l)), 1px); font-weight: 600; color: var(--dsx-rx-color); }\n[data-dsx~=\"c359\"] { width: 7px; height: 7px; border-radius: 4px; background: var(--dsx-thinking-orb-color, var(--dsx-accent)); }\n}\n@layer dsx-inline {\n[data-dsx~=\"c0\"] { height: 220px; }\n}","schemes":["supportinbox","supportdesk","foundation","lifecycle","routing","appearance","clipboard","toast"],"packageWeb":[{"scheme":"supportdesk","routes":[],"styles":[],"assets":[],"dependencies":{},"entry":"web/index.js","boot":true,"dir":"/Volumes/DSXLanes/lanes/deploy-support-0910/inbox/Packages/SupportDesk"},{"scheme":"foundation","routes":[],"styles":[],"assets":[],"dependencies":{},"entry":"web/index.js","boot":true,"dir":"/Volumes/DSXLanes/lanes/codex-listgroup-footer-link/ClosedSource/DSX/Modules/Mandatory/Foundation"},{"scheme":"routing","routes":[],"styles":[],"assets":[],"dependencies":{},"entry":"web/index.js","boot":true,"dir":"/Volumes/DSXLanes/lanes/codex-listgroup-footer-link/ClosedSource/DSX/Modules/Mandatory/Routing"},{"scheme":"appearance","routes":[],"styles":[],"assets":[],"dependencies":{},"entry":"web/index.js","boot":true,"dir":"/Volumes/DSXLanes/lanes/codex-listgroup-footer-link/ClosedSource/DSX/Modules/Core/Basics/Appearance"},{"scheme":"clipboard","routes":[],"styles":[],"assets":[],"dependencies":{},"entry":"web/index.js","boot":true,"dir":"/Volumes/DSXLanes/lanes/codex-listgroup-footer-link/ClosedSource/DSX/Modules/Core/Clipboard"},{"scheme":"toast","routes":[],"styles":[],"assets":[],"dependencies":{},"entry":"web/index.js","boot":true,"dir":"/Volumes/DSXLanes/lanes/codex-listgroup-footer-link/ClosedSource/DSX/Modules/Core/Toast"}],"routes":[{"path":"/","component":"supportinbox.Inbox","meta":{"title":"Inbox · Despia Support"}},{"path":"/c/:id","component":"supportinbox.Inbox","meta":{"title":"Conversation · Despia Support"}},{"path":"/migration","component":"supportinbox.Migration","meta":{"title":"Migration · Despia Support"}},{"path":"/proactive","component":"supportinbox.Proactive","meta":{"title":"Proactive · Despia Support"}},{"path":"/health","component":"supportinbox.Health","meta":{"title":"Health · Despia Support"}},{"path":"/review","component":"supportinbox.ReviewMonitor","meta":{"title":"Review Monitoring · Despia Support"}},{"path":"/hub","component":"supportinbox.HelpCenter","meta":{"title":"Help Center · Despia Support"}},{"path":"/announcements","component":"supportinbox.Announcements","meta":{"title":"Announcements · Despia Support"}},{"path":"/login","component":"supportinbox.Login","meta":{"title":"Sign in · Despia Support"}},{"path":"/no-access","component":"supportinbox.NoAccess","meta":{"title":"No access · Despia Support"}}],"router":{"transition":"dsx"},"shell":{"appName":"Despia Support","lang":"en","importMapJson":"{\n  \"imports\": {\n    \"@despia-native/dom\": \"./vendor/dom/index.js\",\n    \"@despia-native/dom/boot\": \"./vendor/dom/boot.js\",\n    \"@despia-native/dom/elements\": \"./vendor/dom/elements.js\",\n    \"@despia-native/dom/navigation-trail\": \"./vendor/dom/navigation-trail.js\",\n    \"@despia-native/dom/offline\": \"./vendor/dom/offline.js\",\n    \"@despia-native/dom/route-chrome\": \"./vendor/dom/route-chrome.js\",\n    \"@despia-native/dom/route-chrome-style\": \"./vendor/dom/route-chrome-style.js\",\n    \"@despia-native/kernel\": \"./vendor/kernel/index.js\",\n    \"dsx:icon-corpus\": \"./vendor/icon-corpus.d7f35871.js\",\n    \"dsx:package/supportdesk\": \"./vendor/packages/supportdesk.a15c32d579.js\",\n    \"dsx:package/foundation\": \"./vendor/packages/foundation.7c5803448f.js\",\n    \"dsx:package/routing\": \"./vendor/packages/routing.b7d2139185.js\",\n    \"dsx:package/appearance\": \"./vendor/packages/appearance.b0fd88eb09.js\",\n    \"dsx:package/clipboard\": \"./vendor/packages/clipboard.1c8057008d.js\",\n    \"dsx:package/toast\": \"./vendor/packages/toast.d42a8036a9.js\"\n  },\n  \"integrity\": {\n    \"./vendor/dom/boot.js\": \"sha256-7aAsottPC7Betx5RoCfHp9g3zSQLx2EuHYXxPwKokI8=\",\n    \"./vendor/dom/elements.js\": \"sha256-Vls8r5sbraIg3vDLDRNyW6Ch0Ew15B0Skp8HK0MjwPY=\",\n    \"./vendor/dom/index.js\": \"sha256-h4FwOrhx8eXYr8tOLpMQGn0cVIB5qzYmWQjWKACd+/k=\",\n    \"./vendor/dom/navigation-trail.js\": \"sha256-+pZhfpx34zWmp841twGY64dRner/HZbHI2Yjna3NI2A=\",\n    \"./vendor/dom/offline.js\": \"sha256-jdR1ZpWBHKlyeHwTgvHRjl8FKxePJuXiOWxWxydoKVg=\",\n    \"./vendor/dom/route-chrome-style.js\": \"sha256-UGTtacLUagBJh/nHjuQVfBEIL0Zi7PWN88Q4fTsKD0I=\",\n    \"./vendor/dom/route-chrome.js\": \"sha256-fkv5vUA2jBnkgPHEDFytKRV//8sTDWW1jwUfpS0kGnY=\",\n    \"./vendor/icon-corpus.d7f35871.js\": \"sha256-1/NYcWjacZdKEjBmEx0CeiNfjOQJZb9WbOMy+hBza2Y=\",\n    \"./vendor/kernel/index.js\": \"sha256-B1RXkoDvkKkzFC+V6mJuAaieNtnlpHp91DX5MLDOrwI=\",\n    \"./vendor/packages/appearance.b0fd88eb09.js\": \"sha256-sP2I6wnIsNu0UU9CQ5cnU85rjhnfOo2J4hKvdskmdgs=\",\n    \"./vendor/packages/clipboard.1c8057008d.js\": \"sha256-HIBXAI1pBYaC8FitKZ7FzBx5L80qs9NvjMKgiuaTy6E=\",\n    \"./vendor/packages/foundation.7c5803448f.js\": \"sha256-fFgDRI+03xdbS7ezaxgrY1AEf6ax7nkAREpF8Hz7crc=\",\n    \"./vendor/packages/routing.b7d2139185.js\": \"sha256-t9ITkYWU+QE4DSEBhvlhOhpmd+nthP/RCt+V2CrSeAs=\",\n    \"./vendor/packages/supportdesk.a15c32d579.js\": \"sha256-oVwy1XmllTT6dejUaQjCLxkPwDgzQlqg0QJWhAgF0CI=\",\n    \"./vendor/packages/toast.d42a8036a9.js\": \"sha256-1CqANqkEEQmRubi4u2sTi0wBc/VRfisEFeJCroEgFN0=\"\n  }\n}","mainSrc":"./main.js","manifestHref":"/manifest.webmanifest","iconHref":"/icon.png","fontFaceCss":"@font-face{font-family:\"InterVariable\";src:url(/fonts/InterVariable-latin.woff2) format(\"woff2\");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}@font-face{font-family:\"InterVariable\";src:url(/fonts/InterVariable-latin-ext.woff2) format(\"woff2\");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0100-017F,U+0192,U+01FA-01FF,U+0218-021B,U+0259,U+2020,U+20A0-20BF,U+2113;}@font-face{font-family:\"InterVariable Fallback\";src:local(\"Arial\"),local(\"Liberation Sans\"),local(\"Arimo\");font-weight:100 549;size-adjust:107.30%;ascent-override:90.28%;descent-override:22.48%;line-gap-override:0.00%;}@font-face{font-family:\"InterVariable Fallback\";src:local(\"Arial Bold\"),local(\"Arial-BoldMT\"),local(\"Liberation Sans Bold\"),local(\"LiberationSans-Bold\"),local(\"Arimo Bold\"),local(\"Arimo-Bold\");font-weight:550 1000;size-adjust:107.30%;ascent-override:90.28%;descent-override:22.48%;line-gap-override:0.00%;}","fontPreloads":[{"href":"/fonts/InterVariable-latin.woff2","type":"font/woff2"}],"head":[{"tag":"meta","attributes":{"name":"apple-mobile-web-app-capable","content":"yes"}},{"tag":"meta","attributes":{"name":"mobile-web-app-capable","content":"yes"}},{"tag":"meta","attributes":{"name":"apple-mobile-web-app-title","content":"Support"}},{"tag":"meta","attributes":{"name":"application-name","content":"Support"}},{"tag":"meta","attributes":{"name":"robots","content":"noindex, nofollow"}}],"buildId":"ff35f985287f"},"partial":true}