@mavea/mavea 1.0.13 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +4 -3
  3. package/dist/.vite/manifest.json +605 -623
  4. package/dist/assets/{AppCommandPalette-D_g8-7C0.js → AppCommandPalette-Dzl_DbDd.js} +1 -1
  5. package/dist/assets/{BlockEmpty-Ddhgr5pu.js → BlockEmpty-B5Q0hgDJ.js} +1 -1
  6. package/dist/assets/{BriefingPlayer-D-QhLgXI.js → BriefingPlayer-Dy7JCGm-.js} +1 -1
  7. package/dist/assets/{CanvasSkeleton-BIiOmCMG.js → CanvasSkeleton-CJwPWnFG.js} +2 -2
  8. package/dist/assets/{CheckLogRail-ZrDqyjQ7.js → CheckLogRail-DNtXlkcR.js} +1 -1
  9. package/dist/assets/{CodeOutput-D7sVg1Nr.js → CodeOutput-Bg64AyKu.js} +1 -1
  10. package/dist/assets/{CommandPalette-DNa2q8E_.js → CommandPalette-mO1FEvlx.js} +1 -1
  11. package/dist/assets/{CourseLessonReader-BIpGjcJk.js → CourseLessonReader-CKfvBMtL.js} +2 -2
  12. package/dist/assets/{CourseRail-CQaotzN0.js → CourseRail-CRcB319H.js} +1 -1
  13. package/dist/assets/{CoursesApp-q3kZJmu1.js → CoursesApp-BbCGxAav.js} +2 -2
  14. package/dist/assets/{CrossExamPanel-BIJslibV.js → CrossExamPanel-Deywo95y.js} +1 -1
  15. package/dist/assets/{DashPresent-DGSE0vYM.js → DashPresent-BEm1tGse.js} +1 -1
  16. package/dist/assets/{DashboardDetail-BpaLNg8R.js → DashboardDetail-tK6FpgtH.js} +2 -2
  17. package/dist/assets/DashboardLoopRuntime-Cis4WMqk.js +1 -0
  18. package/dist/assets/{DashboardOverview-8x3OxX2i.js → DashboardOverview-DrdqBgds.js} +1 -1
  19. package/dist/assets/{DashboardSettings-f_zxcs5j.js → DashboardSettings-CBhzLW0P.js} +1 -1
  20. package/dist/assets/DashboardsApp-Dc43FBIi.js +2 -0
  21. package/dist/assets/{DeepZoomApp-E7bDmzuL.js → DeepZoomApp-Chz6laKc.js} +1 -1
  22. package/dist/assets/{DelegatePanel-_9RZiLHM.css → DelegatePanel-Cf85-0qE.css} +1 -1
  23. package/dist/assets/DelegatePanel-DmtTY_lE.js +33 -0
  24. package/dist/assets/{DemoGallery-DDzX8Z7I.js → DemoGallery-zw3d7ap9.js} +1 -1
  25. package/dist/assets/{DropSelect-BMZYAX6q.js → DropSelect-Bo2Oyi-2.js} +1 -1
  26. package/dist/assets/{ExportModal-CTMJaU1l.js → ExportModal-DICXavg9.js} +2 -2
  27. package/dist/assets/{ExtractionPreview-C9wq7CrK.js → ExtractionPreview-C636AVw-.js} +1 -1
  28. package/dist/assets/{FlagshipCTA-DPNSflKv.js → FlagshipCTA-B-7nH43r.js} +1 -1
  29. package/dist/assets/{FlagshipCommandPalette-55zqyPFm.js → FlagshipCommandPalette-DgTL_Kjj.js} +1 -1
  30. package/dist/assets/{FlagshipShowcase-BWpoPWOn.js → FlagshipShowcase-CbAC2s4X.js} +1 -1
  31. package/dist/assets/{FlashcardsApp-apCj3I17.js → FlashcardsApp-CatYcaJJ.js} +1 -1
  32. package/dist/assets/{ForecastPanel-CMRD-UKn.js → ForecastPanel-BOG361kr.js} +1 -1
  33. package/dist/assets/{GalleryApp-CcsbirLT.js → GalleryApp-uW6b1Y0d.js} +1 -1
  34. package/dist/assets/{HonestByDesign-DU4qmc61.js → HonestByDesign-hCxc0A7b.js} +1 -1
  35. package/dist/assets/{HowItWorks-CkZXftN-.js → HowItWorks-BlbQcUxx.js} +1 -1
  36. package/dist/assets/{LegalApp-BmZpqH-6.js → LegalApp-sCZjJYWx.js} +1 -1
  37. package/dist/assets/{LegalMarkdownDocument-CcbAfubz.js → LegalMarkdownDocument-Bk3U7ChN.js} +1 -1
  38. package/dist/assets/{LegalPageShell-raMATqhx.js → LegalPageShell-BsgRV7aL.js} +1 -1
  39. package/dist/assets/{LeverPanel-DVUgGcYW.js → LeverPanel-CP32QcIf.js} +1 -1
  40. package/dist/assets/{Library-D725dNcx.js → Library-CJTnp1pC.js} +1 -1
  41. package/dist/assets/{LibraryOverlay-D7PzQIpH.js → LibraryOverlay-geQRGAzG.js} +1 -1
  42. package/dist/assets/LiveApp-C0BN0o3_.js +61 -0
  43. package/dist/assets/LiveApp-Dj_6EQuL.css +1 -0
  44. package/dist/assets/LiveSettings-CzSXXMoo.js +6 -0
  45. package/dist/assets/{MindMapViewerDrawer-CIMuABKE.js → MindMapViewerDrawer-7HLErRQF.js} +1 -1
  46. package/dist/assets/{MindShape-0KPrv0CF.js → MindShape-Bhu4yoIj.js} +1 -1
  47. package/dist/assets/MindShape-DjHtMW_5.css +1 -0
  48. package/dist/assets/{PinToDashboard-ML4NFCAU.js → PinToDashboard-Cj8S9XKC.js} +1 -1
  49. package/dist/assets/{PlanReview-CbJ_7Ld1.js → PlanReview-3NxZD9wt.js} +1 -1
  50. package/dist/assets/{Presence-B_zDfiE7.js → Presence-DDxb6yE5.js} +1 -1
  51. package/dist/assets/{PresentationDeck-Tm3PUdh5.js → PresentationDeck-B6AHRYEA.js} +1 -1
  52. package/dist/assets/{PrismApp-Bc-6PO_P.js → PrismApp-BlPpWxao.js} +2 -2
  53. package/dist/assets/{PrismAskController-OwqFx5Pk.js → PrismAskController-DUvOTeW9.js} +1 -1
  54. package/dist/assets/{PrismBriefingPlayer-Bu_ZxYdh.js → PrismBriefingPlayer-Bmo9tOGX.js} +2 -2
  55. package/dist/assets/{PrismOverlay-UTsJ8R5d.js → PrismOverlay-9Q_14eEO.js} +4 -4
  56. package/dist/assets/{PrivacyApp-BLXan6dm.js → PrivacyApp-CatB3OpJ.js} +1 -1
  57. package/dist/assets/{Recap-5rYrcMCC.js → Recap-DkKrrqi5.js} +1 -1
  58. package/dist/assets/{ReelJelly-Dg3XGB0c.js → ReelJelly-DCD4bG10.js} +1 -1
  59. package/dist/assets/{ReplayCard-wMIMlorH.js → ReplayCard-Bz69tOST.js} +2 -2
  60. package/dist/assets/{ReplayOverlay-BomkTonB.js → ReplayOverlay-DbJX08Kr.js} +1 -1
  61. package/dist/assets/{RewindOverlay-Izf89nG9.js → RewindOverlay-Bop4a63b.js} +1 -1
  62. package/dist/assets/{RippleApp-8QSIEjTX.js → RippleApp-u3hCfb5b.js} +2 -2
  63. package/dist/assets/{RippleAskController-Cd86GrKs.js → RippleAskController-CK4iSwT0.js} +1 -1
  64. package/dist/assets/{RippleOverlay-SCrXZTqz.js → RippleOverlay-BM_B9JEc.js} +2 -2
  65. package/dist/assets/{SeeDontRead-Bp8qsF20.js → SeeDontRead-CGGKmvBV.js} +1 -1
  66. package/dist/assets/{ShareModal-C-sD-aia.js → ShareModal-D4En6Y3L.js} +1 -1
  67. package/dist/assets/{ShipCascade-Cq_I4c_v.js → ShipCascade-k_GWrcau.js} +1 -1
  68. package/dist/assets/{ShipCourse-CzsJyMnT.js → ShipCourse-BQOY4MyI.js} +1 -1
  69. package/dist/assets/{ShipHotspots-OMjPhQWP.js → ShipHotspots-vLRK0w_b.js} +1 -1
  70. package/dist/assets/{ShipIncident-Cqn6ZmKz.js → ShipIncident-BWxerYtX.js} +1 -1
  71. package/dist/assets/{ShipMigration-5_ZWn7K9.js → ShipMigration-OgAGEbjm.js} +1 -1
  72. package/dist/assets/{ShipOnboarding-Yr8oKgmQ.js → ShipOnboarding-B_2IEq3N.js} +1 -1
  73. package/dist/assets/{ShipRead-Bnw7mnv3.js → ShipRead--gGqg2SE.js} +1 -1
  74. package/dist/assets/{ShipRollout-ECsDrqAd.js → ShipRollout-B_U2P8Yw.js} +1 -1
  75. package/dist/assets/{ShipSuggestions-C6oDw2F8.js → ShipSuggestions-D9coTmgw.js} +1 -1
  76. package/dist/assets/{ShipWorkspace-BT6gZrqd.js → ShipWorkspace-BmdcHZXa.js} +1 -1
  77. package/dist/assets/{SignatureLoop-D7sibSnc.js → SignatureLoop-KA6Cf93g.js} +1 -1
  78. package/dist/assets/{SynthesisApp-B768x2r_.js → SynthesisApp-BCBhCJhx.js} +2 -2
  79. package/dist/assets/{SynthesisOverlay-Ds0MhZLQ.js → SynthesisOverlay-BuGIeaKq.js} +1 -1
  80. package/dist/assets/{TermsApp-Da8FeMj3.js → TermsApp-CleIlDtR.js} +1 -1
  81. package/dist/assets/{TopicCanvas-D64O3lvD.js → TopicCanvas-BRu3xVL8.js} +2 -2
  82. package/dist/assets/{TopicCanvas-D2Nax9II.css → TopicCanvas-uRuHi99s.css} +1 -1
  83. package/dist/assets/{TourPrism-CTf1G-Vv.js → TourPrism-zbVLe2ag.js} +1 -1
  84. package/dist/assets/{TrackerTile-DeujTCk-.js → TrackerTile-D9Wa3CSq.js} +2 -2
  85. package/dist/assets/{TwoSurfaces-kyK2yqm0.js → TwoSurfaces-TyWXgAdq.js} +1 -1
  86. package/dist/assets/{UnderstoodPanel-Dgwk_Cuj.js → UnderstoodPanel-BS9OhgLJ.js} +1 -1
  87. package/dist/assets/{WhyMachineOverlay-C4eQC0lg.js → WhyMachineOverlay-B-KJhCjr.js} +1 -1
  88. package/dist/assets/{WowFeatures-CaBZ5WPM.js → WowFeatures-Bv1-PmXF.js} +1 -1
  89. package/dist/assets/{ZoomDeck-DnCtbhx1.js → ZoomDeck-C2Q6xbgX.js} +1 -1
  90. package/dist/assets/{alternateFinishes-FSV_gA1A.js → alternateFinishes-BG6svkXG.js} +1 -1
  91. package/dist/assets/{annotationAuto-x_dV8z65.js → annotationAuto-BpBsjbDQ.js} +1 -1
  92. package/dist/assets/{annotationReel-SeXzv0P-.js → annotationReel-yzysA-Gr.js} +1 -1
  93. package/dist/assets/{backup-0zODkqi-.js → backup-BdeBr3wq.js} +1 -1
  94. package/dist/assets/canvas-Ep2Kfupo.js +1 -0
  95. package/dist/assets/{catalog-Car_1ocN.js → catalog-DF7YTNju.js} +1 -1
  96. package/dist/assets/{dashboardEvents-BqcPN-K8.js → dashboardEvents-C_XvGVLJ.js} +1 -1
  97. package/dist/assets/{dist-BTg4yEWr.js → dist-CBEt6Q8V.js} +1 -1
  98. package/dist/assets/{fit-I3tuibfX.js → fit-B1LJWvMO.js} +1 -1
  99. package/dist/assets/{generateLive-Dk24OxVt.js → generateLive-ChhSWKbq.js} +1 -1
  100. package/dist/assets/gesture-Bouqjr3g.js +2 -0
  101. package/dist/assets/{index-CWqRe4-B.js → index-C7H7A1rW.js} +3 -3
  102. package/dist/assets/{jspdf.es.min-wkD3BzGZ.js → jspdf.es.min-DutJi91O.js} +1 -1
  103. package/dist/assets/{kokoro-B-3GqktX.js → kokoro-kGWf7M0e.js} +1 -1
  104. package/dist/assets/{lib-CwruVYU_.js → lib-C7zXL8h0.js} +1 -1
  105. package/dist/assets/{liveSchema-CCpVMy0H.js → liveSchema-DCL21WdS.js} +2 -2
  106. package/dist/assets/{motion-CURfDtdH.js → motion-dfA87zbb.js} +1 -1
  107. package/dist/assets/{notes-BG5QP-Dj.js → notes-DblI4Ko_.js} +1 -1
  108. package/dist/assets/{pdf-x4qTBJIZ.js → pdf-DFYCstCC.js} +1 -1
  109. package/dist/assets/{penStrokes-9Q_l7NTt.js → penStrokes-DlHnO9xE.js} +1 -1
  110. package/dist/assets/{perfProbe-BFwfpxJt.js → perfProbe-CCSPF3EA.js} +1 -1
  111. package/dist/assets/{pin-DRN5H7py.js → pin-D5_Ebl_s.js} +1 -1
  112. package/dist/assets/{portal-BYHo9LOD.js → portal-BndazODr.js} +1 -1
  113. package/dist/assets/{pptxgen.es-DGywGiaX.js → pptxgen.es-CwCkoJdp.js} +1 -1
  114. package/dist/assets/{prewarm-CQNCE4Uq.js → prewarm--KODwuMi.js} +1 -1
  115. package/dist/assets/{quietHours-CKjQ2pGY.js → quietHours-DVPplPtM.js} +1 -1
  116. package/dist/assets/{registry-CfTTYQrE.js → registry-0E1uKPCI.js} +1 -1
  117. package/dist/assets/{registry-Bpx4VBWb.js → registry-B3V5-8v0.js} +1 -1
  118. package/dist/assets/{registry-_T6pLDPG.js → registry-B51MhOLx.js} +2 -2
  119. package/dist/assets/{registry-DrqQbf_n.js → registry-BH6FfyZk.js} +1 -1
  120. package/dist/assets/{registry-CqfjqOX5.js → registry-Ba9xMFO4.js} +2 -2
  121. package/dist/assets/{registry-CNr6L-3z.js → registry-BlB0FYf0.js} +1 -1
  122. package/dist/assets/{registry-DFmFBfRz.js → registry-C30HGS2G.js} +1 -1
  123. package/dist/assets/{registry-1BWL6SXY.js → registry-CIa1EU-G.js} +1 -1
  124. package/dist/assets/{registry-DEgW3zel.js → registry-COxprhRN.js} +1 -1
  125. package/dist/assets/{registry-Dw42uggW.js → registry-CWkBxxsI.js} +1 -1
  126. package/dist/assets/{registry-9S6KiKjR.js → registry-D-qEhm1d.js} +1 -1
  127. package/dist/assets/registry-D5oMqeSa.js +1 -0
  128. package/dist/assets/{registry-BZQeYzgv.js → registry-D7rspCZr.js} +1 -1
  129. package/dist/assets/{registry-Bl3NkU-0.js → registry-DNzF-nvu.js} +1 -1
  130. package/dist/assets/{registry-aUZZeh27.js → registry-DQIm_hbI.js} +1 -1
  131. package/dist/assets/{registry-cPmSqaRu.js → registry-Dphh5ADP.js} +1 -1
  132. package/dist/assets/{registry-GLjcQX0n.js → registry-DrNMbrA_.js} +1 -1
  133. package/dist/assets/{registry-DBsjgIxw.js → registry-Dvv84L9K.js} +1 -1
  134. package/dist/assets/{registry-D84Bs-bD.js → registry-M3VgAiQv.js} +1 -1
  135. package/dist/assets/{registry-BueBIP-N.js → registry-Pr5IKqro.js} +1 -1
  136. package/dist/assets/{registry-BpBiRe-o.js → registry-WJE8Z0T1.js} +1 -1
  137. package/dist/assets/registry-hsSlT6pi.js +1 -0
  138. package/dist/assets/{registry-Bc6_RQ8l.js → registry-nG70-amx.js} +1 -1
  139. package/dist/assets/{registry-BklPTZre.js → registry-wJhGGVuP.js} +1 -1
  140. package/dist/assets/{relate-yq30L3hZ.js → relate-DxAi8xpo.js} +1 -1
  141. package/dist/assets/{shikiHighlight-BgZoQAHs.js → shikiHighlight-B_TEagaE.js} +1 -1
  142. package/dist/assets/{useDashboardLoop-mGmJwv27.js → useDashboardLoop-DzbRz-V9.js} +3 -3
  143. package/dist/assets/{useLiveConfig-vMyjo2gV.js → useLiveConfig-Lm0cYTcu.js} +1 -1
  144. package/dist/assets/{useSpatialCanvas-CEXy6ZC2.js → useSpatialCanvas-D_C8VoCy.js} +1 -1
  145. package/dist/assets/{useSpotlightWalk-B9XJ6OLK.js → useSpotlightWalk-CCQT0-_g.js} +1 -1
  146. package/dist/assets/{useSrsCards-Vc6B2_he.js → useSrsCards-BKCPBPYw.js} +1 -1
  147. package/dist/assets/{useStudy-6QnY-Fw_.js → useStudy-Diy4ITBm.js} +1 -1
  148. package/dist/assets/{useZoomGesture-BONUz5cE.js → useZoomGesture-B82XnSfi.js} +1 -1
  149. package/dist/index.html +1 -1
  150. package/package.json +1 -1
  151. package/dist/assets/DashboardLoopRuntime-14yzj-xx.js +0 -1
  152. package/dist/assets/DashboardsApp-mvMbGmp0.js +0 -2
  153. package/dist/assets/DelegatePanel-pwRk9pFf.js +0 -26
  154. package/dist/assets/LiveApp-B8Jw1Q0h.js +0 -61
  155. package/dist/assets/LiveApp-DQhDk2ma.css +0 -1
  156. package/dist/assets/LiveSettings-BQ06gZB7.js +0 -6
  157. package/dist/assets/MindShape-Bel2yDqO.css +0 -1
  158. package/dist/assets/RehearsalPanel-BCU615wg.css +0 -1
  159. package/dist/assets/RehearsalPanel-CM4466Os.js +0 -6
  160. package/dist/assets/canvas-uhcwigAL.js +0 -1
  161. package/dist/assets/gesture-DabMpPcq.js +0 -2
  162. package/dist/assets/registry-BffpZK5w.js +0 -1
  163. package/dist/assets/registry-Z3TIPbYJ.js +0 -1
@@ -1,4 +1,4 @@
1
- import{n as e}from"./blockLabel-DAqaHKy3.js";import{n as t}from"./layout-BFQOzXtG.js";import{n}from"./catalog-BHjl-1uH.js";import{n as r,t as i}from"./catalog-Car_1ocN.js";import{n as a,t as o}from"./facts-BBTt3ImG.js";import{E as s,T as c,l,r as u,t as d,w as f}from"./providers-wzm7E8Pa.js";import{i as p,o as ee,t as te}from"./streamParse-DRgMHWye.js";import{ANNOTATABLE_TYPES as ne,liveSystemPrompt as re,t as m,validateLiveResponse as h}from"./liveSchema-CCpVMy0H.js";import{n as g,t as ie}from"./screen-DLR7p_yP.js";import{C as _,E as v,O as ae,T as y,a as b,c as oe,d as se,f as x,g as ce,h as S,i as le,l as C,m as w,n as T,o as E,p as D,r as ue,t as de,x as O}from"./shapes-Cw7tCHIp.js";import{n as fe,t as pe}from"./speed-DwPw9KSv.js";import{t as k}from"./number-DXgzss0v.js";import{t as me}from"./now-C9-UAzTC.js";import{a as he,i as ge,n as A,o as _e,r as j,t as ve}from"./search-Be63DJkp.js";var M={insight:{title:`ARR crossed $5.4M, up 18% QoQ`,stat:`$5.4M`,delta:`+18%`,deltaDir:`up`,conf:`strong`,summary:`Net-new ARR of $824k, the best quarter on record, led by the Enterprise tier.`,sources:[{file:`Stripe · Q2.csv`}]},scorecard:{title:`The quarter at a glance`,icon:`spark`,iconColor:`var(--insight)`,cols:4,tiles:[{icon:`chart`,label:`ARR`,value:`$5.4M`,delta:`+18%`,deltaDir:`up`,color:`var(--insight)`,detail:`Net-new $824k; Enterprise drove 61% of it.`},{icon:`arrowUp`,label:`Net new logos`,value:`47`,delta:`+11`,deltaDir:`up`,color:`var(--presence)`,detail:`47 new customers, 9 in Enterprise.`},{icon:`spark`,label:`NRR`,value:`116%`,delta:`+6pt`,deltaDir:`up`,color:`var(--insight)`,detail:`Gross retention 94%; expansion +22pt.`},{icon:`alert`,label:`Logo churn`,value:`2.1%`,delta:`+0.4pt`,deltaDir:`up`,color:`var(--warning)`,detail:`Concentrated in self-serve Starter accounts.`},{icon:`cart`,label:`CAC payback`,value:`14 mo`,delta:`-3 mo`,deltaDir:`down`,color:`var(--presence)`,detail:`Improving as Enterprise deal size grows.`}],footer:`Eight headline metrics, all from the Q2 close.`},trendtile:{title:`Net-new ARR`,icon:`chart`,iconColor:`var(--insight)`,value:`$824k`,delta:`+27%`,deltaDir:`up`,color:`var(--insight)`,bars:[410,480,520,590,650],footer:`Six quarters of acceleration, Q2 is the steepest step yet.`},waterfall:{title:`ARR bridge · Q1 → Q2`,icon:`layers`,iconColor:`var(--presence)`,unit:`$k`,steps:[{label:`Q1 ARR`,value:4580,total:!0,color:`var(--text-muted)`},{label:`New`,value:712,color:`var(--insight)`},{label:`Expansion`,value:386,color:`var(--presence)`},{label:`Reactivation`,value:64,color:`var(--presence-soft)`},{label:`Contraction`,value:-148,color:`var(--warning)`}],footer:`Gross adds of <b>$1.16M</b> against <b>$338k</b> of churn + contraction, a healthy 3.4× r…`},funnel:{title:`Sales funnel · Q2`,icon:`cart`,iconColor:`var(--insight)`,unit:` deals`,stages:[{label:`Leads`,value:2840,color:`var(--presence-soft)`},{label:`Qualified (MQL)`,value:980,color:`var(--presence)`},{label:`Opportunity`,value:412,color:`var(--insight)`},{label:`Proposal`,value:168,color:`var(--insight)`},{label:`Closed-won`,value:47,color:`var(--insight)`}],footer:`Lead→won at <b>1.7%</b>; the proposal→won step is the cleanest it has been.`},flightchart:{title:`Marketing media flights · Q2`,icon:`clock`,iconColor:`var(--presence)`,currency:`USD`,channels:[{name:`Paid Search`,color:`var(--presence)`},{name:`Paid Social`,color:`var(--insight)`},{name:`Display`,color:`var(--warning)`},{name:`Email`,color:`var(--presence-soft)`}],flights:[{channel:`Paid Search`,start:0,span:13,budget:86e3},{channel:`Paid Social`,start:0,span:6,budget:42e3},{channel:`Paid Social`,start:8,span:5,budget:34e3},{channel:`Display`,start:2,span:4,budget:21e3},{channel:`Display`,start:9,span:3,budget:15e3}],totalBudget:207e3,footer:`Search stays always-on; Social paused weeks 7-8 to swap creative before relaunching.`},deltacascade:{title:`New bookings, built up`,icon:`spark`,iconColor:`var(--insight)`,prefix:`$`,suffix:`k`,steps:[{label:`Pipeline created`,delta:3200,isBase:!0,detail:`Sourced from inbound + outbound + partner.`},{label:`Stage slippage`,delta:-940,detail:`Deals pushed to Q3.`},{label:`No-decision losses`,delta:-560},{label:`Competitive losses`,delta:-188,detail:`Two to the incumbent on price.`},{label:`Discount given`,delta:-136}],footer:`Win-rate held at <b>28%</b> even as deal sizes grew.`},bulletkpi:{title:`Quarter targets vs actuals`,icon:`check`,iconColor:`var(--insight)`,rows:[{label:`Net-new ARR`,value:824,target:750,max:1e3,display:`$824k`,color:`var(--insight)`},{label:`New logos`,value:47,target:45,max:60,display:`47`,color:`var(--insight)`},{label:`Pipeline ($M)`,value:3.2,target:3.6,max:5,display:`$3.2M`,color:`var(--warning)`},{label:`NRR`,value:116,target:110,max:130,display:`116%`,color:`var(--insight)`},{label:`NPS`,value:52,target:55,max:80,display:`52`,color:`var(--warning)`}],footer:`Three of five beat target, pipeline and NPS are the watch items.`},bulletchart:{title:`Unit economics vs goal`,icon:`shield`,iconColor:`var(--presence)`,rows:[{label:`Gross margin`,value:82,target:80,max:100,bands:[60,75,90],unit:`%`,color:`var(--insight)`},{label:`LTV : CAC`,value:4.1,target:3,max:6,bands:[2,3,5],unit:`×`,color:`var(--insight)`},{label:`CAC payback`,value:14,target:18,max:30,bands:[12,18,24],unit:` mo`,color:`var(--presence)`},{label:`Magic number`,value:1.2,target:1,max:2,bands:[.5,1,1.5],unit:``,color:`var(--insight)`}],footer:`Every efficiency metric is in the strong band, payback beats goal by 4 months.`},comparebars:{title:`Us vs the two competitors we lose to`,icon:`layers`,iconColor:`var(--insight)`,series:[{name:`Atlas (us)`,color:`var(--insight)`},{name:`Northgate`,color:`var(--presence-soft)`},{name:`Beacon`,color:`var(--text-muted)`}],rows:[{label:`Win rate`,values:[28,22,19],unit:`%`,higherBetter:!0},{label:`ACV`,values:[29,41,24],unit:`k`,higherBetter:!0},{label:`Time to value`,values:[9,21,16],unit:` d`,higherBetter:!1},{label:`G2 rating`,values:[4.6,4.2,4.4],unit:`★`,higherBetter:!0},{label:`NRR`,values:[116,104,109],unit:`%`,higherBetter:!0}],highlight:0,footer:`We win on speed-to-value and retention; Northgate still beats us on deal size.`},bcgmatrix:{title:`Product-line portfolio · Q2`,icon:`layers`,iconColor:`var(--presence)`,unit:`k`,items:[{label:`Core Platform`,growth:9,share:2.6,revenue:3200,note:`The flagship — still the category leader, growth has plateaued.`},{label:`Analytics Add-on`,growth:46,share:1.4,revenue:640,note:`Fastest-growing upsell, closing in on the category leader.`},{label:`Workflow Automation`,growth:22,share:1.1,revenue:520},{label:`Mobile App`,growth:68,share:.35,revenue:260,note:`High growth, still building share against two incumbents.`},{label:`API Marketplace`,growth:74,share:.22,revenue:150}],footer:`Analytics is the one bet to fund harder; Legacy On-Prem is the one to wind down on schedu…`},pivot:{title:`Revenue by region × segment`,icon:`globe`,iconColor:`var(--presence)`,rowGroup:`Region`,colHeaders:[`SMB`,`Mid-market`,`Enterprise`],measures:[{key:`arr`,label:`ARR`,prefix:`$`,unit:`k`},{key:`logos`,label:`Logos`},{key:`nrr`,label:`NRR`,unit:`%`}],rows:[{label:`North America`,cells:[{values:{arr:980,logos:210,nrr:112}},{values:{arr:1640,logos:96,nrr:118}},{values:{arr:1320,logos:22,nrr:124}}]},{label:`EMEA`,cells:[{values:{arr:360,logos:88,nrr:108}},{values:{arr:540,logos:41,nrr:114}},{values:{arr:280,logos:6,nrr:121}}]},{label:`APAC`,cells:[{values:{arr:120,logos:34,nrr:105}},{values:{arr:190,logos:18,nrr:110}},{values:{arr:64,logos:3,nrr:116}}]}],measure:0,accent:`var(--insight)`,footer:`NA Mid-market is the single biggest cell; APAC Enterprise is the whitespace.`},groupedbars:{title:`Net-new ARR by quarter × tier`,icon:`chart`,iconColor:`var(--insight)`,unit:`$k`,groups:[`Q3`,`Q4`,`Q1`,`Q2`],series:[{name:`SMB`,color:`var(--presence-soft)`,data:[120,140,150,168]},{name:`Mid-market`,color:`var(--presence)`,data:[210,250,280,348]},{name:`Enterprise`,color:`var(--insight)`,data:[180,230,270,308]}],footer:`Enterprise is now nearly even with mid-market on net-new, the mix is shifting up.`},leaderboard:{title:`Sales leaderboard · Q2`,icon:`spark`,iconColor:`var(--insight)`,metrics:[{key:`acv`,label:`New ACV`,unit:`k`},{key:`quota`,label:`Quota`,unit:`%`},{key:`deals`,label:`Deals`}],rows:[{name:`Priya Nair`,sub:`Enterprise · West`,values:{acv:412,quota:137,deals:6},move:2},{name:`Marcus Hale`,sub:`Enterprise · East`,values:{acv:388,quota:129,deals:7},move:-1},{name:`Dana Liu`,sub:`Mid-market`,values:{acv:246,quota:118,deals:11},move:1},{name:`Tom Okafor`,sub:`Mid-market`,values:{acv:198,quota:102,deals:9},move:0},{name:`Sofia Reyes`,sub:`SMB · velocity`,values:{acv:142,quota:96,deals:14},move:3}],metric:0,accent:`var(--insight)`,footer:`Top two reps closed 53% of new ACV, bus-factor risk worth noting.`},datatable:{title:`Largest expansions this quarter`,icon:`table`,iconColor:`var(--presence)`,columns:[{key:`account`,label:`Account`,align:`left`},{key:`tier`,label:`Tier`,align:`left`},{key:`arr`,label:`ARR`,align:`right`,numeric:!0,color:`var(--insight)`},{key:`delta`,label:`Δ QoQ`,align:`right`},{key:`health`,label:`Health`,align:`left`}],rows:[{account:`Meridian Logistics`,tier:`Enterprise`,arr:`$284k`,delta:`+62k`,health:`Healthy`},{account:`Cobalt Health`,tier:`Enterprise`,arr:`$241k`,delta:`+44k`,health:`Healthy`},{account:`Foundry Labs`,tier:`Mid-market`,arr:`$96k`,delta:`+38k`,health:`Champion`},{account:`Lumen Retail`,tier:`Mid-market`,arr:`$88k`,delta:`+21k`,health:`Watch`},{account:`Drift Studios`,tier:`Mid-market`,arr:`$74k`,delta:`+19k`,health:`Healthy`}],sortKey:`arr`,sortDir:`desc`,searchable:!0,searchPlaceholder:`Filter accounts…`,footer:`Pelham contracted on a seat reduction, flagged for a QBR before renewal.`},roadmap:{title:`Product roadmap · next 4 quarters`,icon:`layers`,iconColor:`var(--insight)`,quarters:[`Q2`,`Q3`,`Q4`,`Q1`],lanes:[{name:`Platform`,accent:`var(--insight)`,items:[{label:`SSO + SCIM`,startQ:0,spanQ:1,status:`done`,detail:`Shipped, unblocked 3 Enterprise deals.`},{label:`Audit log API`,startQ:1,spanQ:1,status:`active`},{label:`Data residency (EU)`,startQ:2,spanQ:2,status:`todo`,detail:`Required for EMEA Enterprise.`}]},{name:`Growth`,accent:`var(--presence)`,items:[{label:`Usage-based billing`,startQ:0,spanQ:2,status:`active`},{label:`In-product onboarding`,startQ:2,spanQ:1,status:`todo`}]},{name:`AI`,accent:`var(--warning)`,items:[{label:`Copilot beta`,startQ:1,spanQ:2,status:`risk`,detail:`Eval quality is the gating item.`},{label:`Auto-insights GA`,startQ:3,spanQ:1,status:`todo`}]}],footer:`SSO already paid for itself; usage-based billing is the Q3 revenue lever.`},gantt:{title:`Usage-based billing launch plan`,icon:`clock`,iconColor:`var(--presence)`,cols:[`W1`,`W2`,`W3`,`W4`,`W5`],tasks:[{name:`Metering pipeline`,lane:`Eng`,start:0,span:3,pct:100,color:`var(--insight)`,detail:`Event ingestion + aggregation.`},{name:`Pricing model`,lane:`Finance`,start:0,span:2,pct:100,color:`var(--presence)`},{name:`Billing integration`,lane:`Eng`,start:2,span:3,pct:60,color:`var(--insight)`,dependsOn:0},{name:`Self-serve UI`,lane:`Product`,start:3,span:3,pct:35,color:`var(--presence-soft)`,dependsOn:2},{name:`Beta with 8 accounts`,lane:`GTM`,start:5,span:2,pct:0,color:`var(--warning)`,dependsOn:3}],footer:`On track for an end-of-W8 GA; the billing integration is the critical path.`},kanban:{title:`Current sprint board`,icon:`edit`,iconColor:`var(--presence)`,stages:[{name:`Todo`,accent:`var(--text-muted)`,cards:[{id:`k1`,title:`Audit log retention policy`,tag:`Platform`,tagColor:`var(--insight)`,assignee:`JK`,points:3},{id:`k2`,title:`Onboarding empty states`,tag:`Growth`,tagColor:`var(--presence)`,assignee:`AM`,points:2}]},{name:`In progress`,accent:`var(--insight)`,cards:[{id:`k3`,title:`Billing integration`,tag:`Billing`,tagColor:`var(--warning)`,assignee:`RP`,points:5},{id:`k4`,title:`Copilot eval harness`,tag:`AI`,tagColor:`var(--warning)`,assignee:`SL`,points:8}]},{name:`Review`,accent:`var(--presence-soft)`,cards:[{id:`k5`,title:`SCIM edge cases`,tag:`Platform`,tagColor:`var(--insight)`,assignee:`DV`,points:3}]},{name:`Done`,accent:`var(--presence)`,cards:[{id:`k6`,title:`Metering pipeline`,tag:`Billing`,tagColor:`var(--warning)`,assignee:`RP`,points:5},{id:`k7`,title:`SSO GA`,tag:`Platform`,tagColor:`var(--insight)`,assignee:`DV`,points:5}]}],footer:`23 points committed, 10 done, pace is on track for the sprint goal.`},plandag:{title:`Series B readiness plan`,icon:`share`,iconColor:`var(--insight)`,nodes:[{id:`n1`,label:`Close Q2 books`,col:0,row:1,status:`done`,meta:`Finance`},{id:`n2`,label:`Data room`,col:1,row:0,status:`active`,meta:`Finance`},{id:`n3`,label:`Metrics deck`,col:1,row:2,status:`active`,meta:`Ops`},{id:`n4`,label:`Reference calls`,col:2,row:0,status:`todo`,meta:`CEO`},{id:`n5`,label:`Model + scenarios`,col:2,row:2,status:`risk`,meta:`Finance`}],edges:[{from:`n1`,to:`n2`},{from:`n1`,to:`n3`},{from:`n2`,to:`n4`},{from:`n3`,to:`n5`},{from:`n4`,to:`n6`}],footer:`The financial model is the one at-risk node, it gates partner meetings.`},milestones:{title:`Company milestones`,icon:`check`,iconColor:`var(--insight)`,milestones:[{label:`$5M ARR`,date:`May 2026`,status:`done`,detail:`Crossed three weeks ahead of plan.`,owner:`Company`},{label:`First $1M+ logo`,date:`Jun 2026`,status:`done`,detail:`Meridian renewed + expanded to $284k.`,owner:`Sales`},{label:`SOC 2 Type II`,date:`Aug 2026`,status:`active`,detail:`Audit window opens next month.`,owner:`Security`},{label:`EU data residency`,date:`Q4 2026`,status:`todo`,detail:`Unlocks EMEA Enterprise pipeline.`,owner:`Platform`},{label:`Series B close`,date:`Q1 2027`,status:`todo`,detail:`Targeting on strength, not need.`,owner:`CEO`}],footer:`Two hit this quarter; SOC 2 is the next gate for Enterprise.`},progressbar:{title:`Annual plan progress`,icon:`chart`,iconColor:`var(--presence)`,caption:`58% of the $1.45M net-new ARR plan`,segments:[{label:`Q1`,value:650,color:`var(--presence)`,done:!0,detail:`Q1 net-new $650k (delivered).`},{label:`Q2`,value:824,color:`var(--insight)`,done:!0,detail:`Q2 net-new $824k (delivered).`},{label:`Q3 plan`,value:880,color:`var(--presence-soft)`,detail:`Usage-based billing is the lever.`},{label:`Q4 plan`,value:940,color:`var(--text-muted)`,detail:`EU residency unlocks EMEA Enterprise.`}],footer:`Halfway through the year, you are <b>tracking ahead</b> of the full-year plan.`},statustimeline:{title:`Operating cadence · this quarter`,icon:`clock`,iconColor:`var(--presence)`,events:[{time:`Apr 3`,label:`Q2 kickoff + targets set`,status:`done`,detail:`Board approved the $750k net-new target.`},{time:`Apr 18`,label:`SSO + SCIM shipped`,status:`done`,detail:`Unblocked three Enterprise deals.`},{time:`May 9`,label:`Pricing v2 launched`,status:`done`,detail:`Cut sales cycle by 6 days.`},{time:`May 27`,label:`Crossed $5M ARR`,status:`done`},{time:`Jun 12`,label:`Usage-based billing beta`,status:`progress`,detail:`8 design-partner accounts onboarding.`}],footer:`Four shipped, two in flight, one at risk, the Copilot gate needs a call.`},healthgrid:{title:`System & business health`,icon:`shield`,iconColor:`var(--insight)`,cols:4,cells:[{label:`API uptime`,level:`ok`,value:`99.98%`,detail:`30-day rolling; SLA is 99.9%.`},{label:`p95 latency`,level:`ok`,value:`212 ms`,detail:`Steady quarter-over-quarter.`},{label:`Error rate`,level:`ok`,value:`0.04%`,detail:`Well under the 0.1% budget.`},{label:`APAC region`,level:`warn`,value:`99.4%`,detail:`One 38-min partial outage in June.`},{label:`Support SLA`,level:`ok`,value:`94%`,detail:`First response under 2h, 94% of tickets.`}],footer:`Green where it counts; the three amber cells are this quarter’s focus list.`},kpidashboard:{title:`Q2 board metrics`,icon:`chart`,iconColor:`var(--presence)`,caption:`Trailing 6 months · refreshed nightly from the data warehouse`,tiles:[{label:`MRR`,value:`$182.4k`,delta:`+6.8%`,deltaDir:`up`,spark:[142,148,153,161,167],conf:`MoM`},{label:`Net revenue retention`,value:118,unit:`%`,delta:`+3 pts`,deltaDir:`up`,spark:[109,111,112,114,115],conf:`cohort-weighted`},{label:`Gross churn`,value:2.1,unit:`%/mo`,delta:`−0.6 pts`,deltaDir:`good`,spark:[3.4,3.1,2.9,2.7,2.5],conf:`logo churn`},{label:`CAC`,value:`$1,240`,delta:`+9.2%`,deltaDir:`down`,spark:[980,1010,1055,1080,1120],conf:`blended`},{label:`CAC payback`,value:11,unit:`mo`,delta:`−1 mo`,deltaDir:`good`,spark:[14,13.5,13,12.5,12],conf:`gross-margin adj.`}],footer:`NRR above 115% and falling churn are funding the runway draw — <strong>CAC creep</strong>…`},issuetree:{title:`Why is Q3 pipeline coverage short of target?`,icon:`share`,iconColor:`var(--warning)`,rootQuestion:`Pipeline coverage is 2.6×, below the 3× target for Q3`,nodes:[{id:`volume`,label:`Not enough pipeline created`,children:[`inbound`,`outbound`]},{id:`inbound`,label:`Inbound leads`,isLeaf:!0,finding:`On plan: 2,840 leads, flat QoQ.`},{id:`outbound`,label:`Outbound + partner`,isLeaf:!0,finding:`Down 18%, two SDR seats sat open all quarter.`},{id:`conversion`,label:`Deals not converting`,children:[`qual`,`competitive`]},{id:`qual`,label:`Lead → qualified rate`,isLeaf:!0,finding:`Steady at 34%, in line with Q1.`}],footer:`The SDR gap and the Northgate losses explain most of the shortfall, not a demand problem.`},meetingnotes:{title:`Notes from the review`,icon:`doc`,iconColor:`var(--presence)`,meetingDate:`Q2 business review · Jul 8`,attendees:[`Priya (CEO)`,`Marcus (CFO)`,`Dana (VP Sales)`,`Wei (VP Eng)`],discussionPoints:[`ARR crossed $5.4M, up 18% QoQ, ahead of plan`,`Pipeline coverage is at 2.6×, below the 3× target for Q3`,`CAC crept up 9.2% — mostly paid channels, not organic`],decisions:[`Hold headcount flat in Sales until pipeline coverage recovers`,`Shift 20% of the paid budget to the channels with the best CAC payback`],actionItems:[{task:`Rebuild the Q3 pipeline plan with the new coverage target`,owner:`Dana`,dueDate:`Jul 15`,done:!1},{task:`Audit paid channel spend by CAC payback`,owner:`Marcus`,dueDate:`Jul 12`,done:!0},{task:`Share the runway model with the board`,owner:`Priya`,dueDate:`Jul 10`,done:!1}],footer:`Next review: Oct 8. Dana owns the pipeline rebuild before then.`},sparkstat:{title:`Resting heart rate`,icon:`spark`,iconColor:`var(--presence)`,value:`54 bpm`,unit:`avg last 7 days`,delta:`-4 bpm`,deltaDir:`down`,color:`var(--presence)`,points:[{v:61,label:`Mar`},{v:60,label:`wk 1`},{v:59,label:`wk 2`},{v:58,label:`wk 3`},{v:57,label:`wk 4`}],footer:`Lower is fitter, a 4-bpm drop in 90 days tracks your rising aerobic base.`},counter:{title:`Steps today`,icon:`arrowUp`,iconColor:`var(--insight)`,value:11420,label:`steps · 84% of goal beaten on 5 of 7 days`,delta:`+2.1k vs avg`,deltaDir:`up`,color:`var(--insight)`,footer:`Your 10k goal is now the floor, not the ceiling.`},herostat:{title:`VO₂ max`,icon:`sparkle`,iconColor:`var(--presence)`,value:`48.6`,unit:`mL/kg/min`,narrative:`Estimated from your runs, <b>“excellent”</b> for your age band.`,trend:`+1.9 this quarter`,trendDir:`up`,detail:`Up from 46.7 in February. Most of the gain came from two threshold runs a week.`,color:`var(--presence)`,footer:`A reliable long-run predictor of cardiovascular health.`},streamgraph:{title:`Where your active minutes go`,icon:`chart`,iconColor:`var(--insight)`,unit:`min/wk`,ticks:[`Wk 1`,`Wk 2`,`Wk 3`,`Wk 4`,`Wk 5`],series:[{label:`Running`,color:`var(--presence)`,values:[90,110,105,130,120]},{label:`Strength`,color:`var(--insight)`,values:[60,60,75,70,80]},{label:`Cycling`,color:`var(--presence-soft)`,values:[40,50,45,60,55]},{label:`Mobility`,color:`var(--warning)`,values:[20,25,20,30,35]}],footer:`Total load is up ~45% over the block, but the <mark>mix stayed balanced</mark>, that prot…`},scorebadge:{title:`Recovery readiness`,icon:`shield`,iconColor:`var(--presence)`,score:82,grade:`A-`,caption:`Primed to train hard today`,color:`var(--presence)`,components:[{label:`HRV`,value:88,color:`var(--presence)`},{label:`Sleep`,value:84,color:`var(--insight)`},{label:`Resting HR`,value:86,color:`var(--presence-soft)`},{label:`Prior strain`,value:71,color:`var(--warning)`}],footer:`Whoop blends four signals into one go/no-go number.`},radar:{title:`Your fitness shape vs your age band`,icon:`spark`,iconColor:`var(--insight)`,axes:[`Endurance`,`Strength`,`Mobility`,`Power`,`Sleep`],max:100,series:[{label:`You`,color:`var(--presence)`,values:[88,72,58,64,81]},{label:`Age-band median`,color:`var(--text-muted)`,values:[60,62,55,58,64]}],footer:`Endurance and recovery lead; <mark>mobility</mark> is the clear place to invest next.`},smallmultiples:{title:`Every vital, last 8 weeks`,icon:`layers`,iconColor:`var(--presence-soft)`,kind:`line`,cols:2,panels:[{label:`HRV (ms)`,series:[52,55,54,58,60],stat:`65 ms`,delta:`+13`,deltaDir:`up`,color:`var(--presence)`},{label:`Resting HR`,series:[60,59,59,57,56],stat:`54 bpm`,delta:`-6`,deltaDir:`down`,color:`var(--insight)`},{label:`Sleep (h)`,series:[6.6,6.8,6.7,7,7.1],stat:`7.4 h`,delta:`+0.8`,deltaDir:`up`,color:`var(--presence-soft)`},{label:`Body weight`,series:[178,177,177,176,176],stat:`174 lb`,delta:`-4`,deltaDir:`down`,color:`var(--warning)`}],footer:`Same scale per metric, every line is pointing the way you want.`},arearange:{title:`Nightly sleep, with your typical range`,icon:`moon`,iconColor:`var(--insight)`,unit:`h`,color:`var(--insight)`,points:[{label:`Mon`,value:7.1,lo:6.4,hi:7.8},{label:`Tue`,value:7.4,lo:6.6,hi:8},{label:`Wed`,value:6.9,lo:6.2,hi:7.6},{label:`Thu`,value:7.6,lo:6.9,hi:8.2},{label:`Fri`,value:7.2,lo:6.5,hi:7.9}],footer:`The band is your 30-day p25–p75, you stayed inside it all week, weekends running high.`},waffle:{title:`Body composition`,icon:`layers`,iconColor:`var(--presence-soft)`,cats:[{name:`Lean mass`,pct:62,color:`var(--presence)`},{name:`Water`,pct:20,color:`var(--presence-soft)`},{name:`Body fat`,pct:15,color:`var(--warning)`},{name:`Bone`,pct:3,color:`var(--text-muted)`}],footer:`15% body fat, athletic range. Each square is one percent.`},histogram:{title:`Your fasting glucose readings`,icon:`chart`,iconColor:`var(--insight)`,unit:`mg/dL`,color:`var(--insight)`,marker:89,markerLabel:`your mean · 89`,bins:[{x0:78,x1:82,count:2},{x0:82,x1:86,count:7},{x0:86,x1:90,count:14},{x0:90,x1:94,count:11},{x0:94,x1:98,count:5}],footer:`41 morning readings cluster comfortably below the 100 mg/dL line, no spikes.`},boxplot:{title:`Blood pressure by time of day`,icon:`spark`,iconColor:`var(--presence)`,unit:`mmHg`,domain:[60,140],groups:[{label:`Morning`,min:108,q1:114,median:118,q3:123,max:129,color:`var(--presence)`},{label:`Afternoon`,min:110,q1:116,median:121,q3:126,max:134,outliers:[138],color:`var(--insight)`},{label:`Evening`,min:105,q1:112,median:116,q3:121,max:128,color:`var(--presence-soft)`},{label:`Post-workout`,min:118,q1:124,median:129,q3:135,max:141,outliers:[148],color:`var(--warning)`}],footer:`Systolic sits in the healthy band all day, the post-workout bump is expected and resolves…`},sparktable:{title:`Full blood panel · 12-month trend`,icon:`table`,iconColor:`var(--insight)`,valueLabel:`Latest`,trendLabel:`12-mo trend`,rows:[{name:`LDL cholesterol`,value:`138 mg/dL`,delta:`+11`,deltaDir:`up`,color:`var(--warning)`,series:[121,124,119,127,131]},{name:`HDL cholesterol`,value:`58 mg/dL`,delta:`+5`,deltaDir:`up`,color:`var(--presence)`,series:[49,51,52,54,56]},{name:`Triglycerides`,value:`92 mg/dL`,delta:`-18`,deltaDir:`down`,color:`var(--presence)`,series:[128,120,115,106,99]},{name:`HbA1c`,value:`5.2 %`,delta:`-0.2`,deltaDir:`down`,color:`var(--presence)`,series:[5.5,5.5,5.4,5.4,5.3]},{name:`Vitamin D`,value:`41 ng/mL`,delta:`+14`,deltaDir:`up`,color:`var(--insight)`,series:[22,26,29,33,37]}],footer:`Six of seven markers improving, LDL is the only one drifting up.`},percentilebar:{title:`Your VO₂ max vs everyone your age`,icon:`spark`,iconColor:`var(--presence)`,percentile:91,value:`48.6 mL/kg/min`,unit:`cardio fitness`,lowLabel:`sedentary`,highLabel:`elite`,color:`var(--presence)`,footer:`You're fitter than <mark>91%</mark> of people in your age band.`},statpair:{title:`Calories: in vs out`,icon:`sparkle`,iconColor:`var(--insight)`,left:{label:`Intake`,value:`2,240`,weight:2240,color:`var(--insight)`,sub:`avg / day`},right:{label:`Burned`,value:`2,610`,weight:2610,color:`var(--presence)`,sub:`BMR + activity`},connector:`→`,ratioLabel:`daily deficit ≈ 370 kcal`,footer:`A modest, sustainable deficit, consistent with your 4-lb drop.`},calibration:{title:`How well the sleep-stage model is calibrated`,icon:`shield`,iconColor:`var(--insight)`,color:`var(--insight)`,ece:`0.03`,bins:[{predicted:.1,actual:.08,count:120},{predicted:.3,actual:.31,count:240},{predicted:.5,actual:.52,count:310},{predicted:.7,actual:.68,count:280},{predicted:.9,actual:.91,count:190}],footer:`When the model says “deep sleep,” it’s right about that often, <mark>ECE 0.03</mark> mean…`},ratinginput:{title:`This week’s habit consistency`,icon:`check`,iconColor:`var(--presence)`,shape:`star`,max:5,value:4,caption:`4 of 5, your strongest week yet`,color:`var(--presence)`,facets:[{label:`Hydration`,value:5},{label:`Protein target`,value:4},{label:`Lights out by 11`,value:4},{label:`Mobility 10 min`,value:2},{label:`No alcohol`,value:5}],footer:`Mobility is the habit dragging the score, the same gap your radar flagged.`},sliderinput:{title:`Set your daily step goal`,icon:`arrowUp`,iconColor:`var(--insight)`,prompt:`Drag to set a target, Mavéa estimates the weekly calorie burn.`,min:6e3,max:16e3,step:500,value:11e3,suffix:` steps`,marks:[{at:8e3,label:`baseline`},{at:1e4,label:`guideline`},{at:14e3,label:`stretch`}],outputLabel:`Est. weekly burn`,outputFactor:.28,outputPrefix:``,outputSuffix:` kcal`,color:`var(--insight)`,footer:`Each extra 1,000 steps adds roughly 40 kcal a day for you.`},segmented:{title:`Activity rings by window`,icon:`sun`,iconColor:`var(--presence)`,selected:1,color:`var(--presence)`,options:[{label:`Today`,icon:`clock`,value:`94%`,caption:`Move ring nearly closed, <b>1 short walk</b> to finish.`},{label:`This week`,icon:`chart`,value:`6 / 7`,caption:`Closed all three rings on <b>6 of 7</b> days.`},{label:`This month`,icon:`spark`,value:`24 / 30`,caption:`A perfect streak from the 4th to the 19th.`}],footer:`Switch the window to see how the rings held up.`},rangefilter:{title:`Filter workouts by effort`,icon:`spark`,iconColor:`var(--warning)`,min:60,max:190,step:5,low:130,high:175,suffix:` bpm`,unitLabel:`workouts`,color:`var(--warning)`,items:[{label:`Easy recovery jog`,value:118,display:`118 bpm avg`,meta:`Mon · 32 min`},{label:`Tempo run`,value:162,display:`162 bpm avg`,meta:`Tue · 28 min`},{label:`Strength circuit`,value:138,display:`138 bpm avg`,meta:`Wed · 45 min`},{label:`Threshold intervals`,value:171,display:`171 bpm avg`,meta:`Thu · 38 min`},{label:`Zone-2 cycle`,value:134,display:`134 bpm avg`,meta:`Fri · 60 min`}],footer:`Drag the handles to see which sessions land in your target heart-rate band.`},stepindicator:{title:`Your half-marathon plan`,icon:`check`,iconColor:`var(--presence)`,orientation:`vertical`,color:`var(--presence)`,steps:[{label:`Base building`,sub:`Weeks 1–4`,state:`done`,icon:`check`,detail:`Easy mileage banked, aerobic base is set.`},{label:`Build phase`,sub:`Weeks 5–8`,state:`done`,icon:`arrowUp`,detail:`Tempo + threshold work added. VO₂ max climbed 1.9.`},{label:`Peak`,sub:`Weeks 9–10`,state:`active`,icon:`spark`,detail:`Highest load of the block, recovery readiness says you’re primed for it.`},{label:`Taper`,sub:`Week 11`,state:`locked`,icon:`moon`,detail:`Cut volume 40%, keep intensity. Sleep does the rest.`},{label:`Race day`,sub:`Week 12`,state:`locked`,icon:`sparkle`,detail:`Target 1:42, your fitness markers support it.`}],footer:`You’re on schedule and trending ahead of your goal pace.`},pregnancyweek:{title:`This week`,icon:`clock`,week:20,trimester:2,fruitSize:`banana`,lengthCm:25.6,weightG:300,milestones:[`Halfway there — the anatomy scan usually happens around now.`,`Baby can hear your voice and may respond to sound.`,`Taste buds are forming and swallowing practice has begun.`,`You may start to feel distinct kicks and flutters.`]},cycletrack:{title:`Cycle overview`,icon:`clock`,cycleLength:28,periodDays:5,currentDay:8,fertileWindow:[11,16],ovulationDay:14,caption:`Day 8 of 28 — fertile window opens in 3 days.`},contractiontimer:{title:`Contraction log`,icon:`clock`,rule:`5-1-1`,contractions:[{start:`1:42 PM`,durationSec:45,intervalMin:8},{start:`1:50 PM`,durationSec:50,intervalMin:7},{start:`1:57 PM`,durationSec:55,intervalMin:6},{start:`2:03 PM`,durationSec:58,intervalMin:6},{start:`2:09 PM`,durationSec:62}],caption:`About 6 min apart, ~55s each — closing in on the 5-1-1 rule.`},reasoning:{title:`How I worked the question`,icon:`spark`,iconColor:`var(--insight)`,steps:[{label:`Decompose`,summary:`Split into efficacy, durability, safety, and population impact.`,detail:`Each sub-question needs a <b>different evidence bar</b>, RCTs for efficacy, real-world cl…`,tag:`frame`,tagColor:`var(--insight)`},{label:`Source`,summary:`Prioritize Phase 3 RCTs and guideline bodies over press coverage.`,detail:`Ranked 38 candidates by study design, sample size, and recency; demoted anything secondar…`,tag:`rank`,tagColor:`var(--presence-soft)`},{label:`Cross-check`,summary:`Require two independent sources before stating a number as fact.`,detail:`A single trial sets a hypothesis; a <mark>replication or meta-analysis</mark> promotes it…`,tag:`verify`,tagColor:`var(--presence)`},{label:`Caveat`,summary:`Separate trial-population results from real-world adherence.`,tag:`temper`,tagColor:`var(--warning)`}],conclusion:`Efficacy is <b>strongly</b> supported; population impact is <b>plausible but unproven</b>…`,footer:`Reasoning is shown so you can audit the chain, not just the answer.`},routing:{title:`Where I routed the question`,icon:`share`,iconColor:`var(--presence-soft)`,query:`did GLP-1 drugs cure obesity?`,classifier:`intent · medical-evidence`,choices:[{label:`Evidence synthesis`,sub:`RCTs + meta-analyses`,score:.91,taken:!0,reason:`Asks a <b>causal medical claim</b>, needs graded trial evidence, not opinion.`,color:`var(--insight)`},{label:`News summary`,sub:`recent coverage`,score:.38,reason:`Too shallow for a causal claim.`,color:`var(--text-muted)`},{label:`Market analysis`,sub:`Lilly / Novo revenue`,score:.21,color:`var(--text-muted)`}],footer:`High-stakes health queries route to the evidence pipeline by default.`},agenttrace:{title:`The search agent's decisions`,icon:`layers`,iconColor:`var(--insight)`,nodes:[{step:`01`,decision:`Which databases to query first?`,branches:[{label:`PubMed + Cochrane`,note:`Peer-reviewed, gradeable`,chosen:!0,score:.94,color:`var(--insight)`},{label:`Open web`,note:`Fast but noisy`,score:.42,color:`var(--text-muted)`}]},{step:`02`,decision:`How to handle conflicting weight-loss numbers?`,branches:[{label:`Anchor on largest RCT`,note:`STEP 1, n=1,961`,chosen:!0,score:.88,color:`var(--presence)`},{label:`Average all studies`,note:`Mixes drugs + doses`,score:.31,color:`var(--text-muted)`}]},{step:`03`,decision:`Can I claim a population-level cure?`,branches:[{label:`No, flag as premature`,note:`Adherence + access gaps`,chosen:!0,score:.86,color:`var(--warning)`},{label:`Yes, trials are decisive`,note:`Conflates efficacy with reach`,score:.19,color:`var(--danger)`}]}],footer:`Each fork shows the path taken and the value of the road not travelled.`},toolcalls:{title:`Tools I called`,icon:`globe`,iconColor:`var(--presence)`,calls:[{name:`pubmed.search`,verb:`GET`,request:`{ q: "semaglutide weight loss RCT", years: "2021-2026" }`,response:`38 results · 11 Phase 3 trials`,status:`ok`,ms:412},{name:`fetch.pdf`,verb:`GET`,request:`{ url: "nejm.org/STEP1", pages: "1-12" }`,response:`parsed 11 pages · Table 2 extracted`,status:`ok`,ms:1840},{name:`claims.query`,verb:`POST`,request:`{ cohort: "GLP1_2024", metric: "persistence_12mo" }`,response:`{ persistence: 0.331, n: 24117 }`,status:`ok`,ms:690},{name:`fetch.pdf`,verb:`GET`,request:`{ url: "fda.gov/wegovy-label" }`,response:`timeout, retried via cache`,status:`error`,ms:5001}],footer:`Four calls, one retried, the cached label still resolved.`},retrieval:{title:`Top retrieved chunks`,icon:`doc`,iconColor:`var(--insight)`,query:`mean percent body-weight change at 68 weeks`,chunks:[{source:`STEP 1 · NEJM`,score:.94,snippet:`Mean change in body weight was −14.9% with semaglutide.`,tag:`anchor`,tagColor:`var(--insight)`,used:!0,body:`Participants in the <mark>semaglutide group</mark> lost a mean of 14.9% of body weight vs…`},{source:`SURMOUNT-1 · NEJM`,score:.91,snippet:`Tirzepatide 15 mg produced −20.9% at 72 weeks.`,tag:`support`,tagColor:`var(--presence)`,used:!0},{source:`SELECT · NEJM`,score:.87,snippet:`20% relative reduction in MACE in cardiovascular patients.`,tag:`outcomes`,tagColor:`var(--presence-soft)`,used:!0},{source:`Health blog`,score:.41,snippet:`"I lost 30 pounds", anecdote, not graded`,tag:`dropped`,tagColor:`var(--text-muted)`,used:!1}],footer:`Re-ranked by cosine score; the anecdote scored low and was dropped.`},embedmap:{title:`The evidence, embedded`,icon:`layers`,iconColor:`var(--presence-soft)`,clusters:[{name:`Efficacy RCTs`,color:`var(--insight)`},{name:`Safety / side-effects`,color:`var(--warning)`},{name:`Real-world adherence`,color:`var(--presence)`},{name:`Off-topic / weak`,color:`var(--text-muted)`}],points:[{x:.22,y:.3,label:`STEP 1`,cluster:0},{x:.28,y:.24,label:`STEP 4`,cluster:0},{x:.18,y:.38,label:`SURMOUNT-1`,cluster:0},{x:.31,y:.34,label:`the question`,cluster:0,query:!0},{x:.7,y:.28,label:`GI events`,cluster:1}],footer:`The question lands inside the efficacy cluster, that's what it's really asking.`},tokenstream:{title:`Drafting the verdict, token by token`,icon:`sparkle`,iconColor:`var(--insight)`,prefix:`The evidence shows GLP-1 therapy is `,tokens:[{text:`highly`,p:.88,alts:[{t:`very`,p:.07},{t:`broadly`,p:.03}]},{text:` effective`,p:.95},{text:` for`,p:.91},{text:` weight`,p:.97},{text:` loss`,p:.98}],footer:`Low-confidence tokens are where the hedging lives, hover to see what I almost said.`},modelcompare:{title:`Three models, one prompt`,icon:`chart`,iconColor:`var(--presence-soft)`,prompt:`Did GLP-1 drugs cure the obesity epidemic? Answer with evidence.`,outputs:[{model:`Mavéa Research`,badge:`graded`,color:`var(--insight)`,best:!0,text:`No "cure," but a <mark>genuine inflection</mark>: ~15% weight loss in trials, modest popu…`,meta:[{k:`citations`,v:`11`},{k:`hallucinations`,v:`0`},{k:`hedged`,v:`yes`}]},{model:`Generic Large`,badge:`baseline`,color:`var(--text-muted)`,text:`GLP-1 drugs have <mark>largely solved</mark> obesity for those who take them, reversing d…`,meta:[{k:`citations`,v:`2`},{k:`hallucinations`,v:`1`},{k:`hedged`,v:`no`}]},{model:`Fast Mini`,badge:`cheap`,color:`var(--warning)`,text:`Yes, semaglutide and tirzepatide are <mark>effective cures</mark> with few downsides.`,meta:[{k:`citations`,v:`0`},{k:`hallucinations`,v:`2`},{k:`hedged`,v:`no`}]}],footer:`The graded pipeline is the only one that refused the word "cure", and cited why.`},whatchanged:{title:`What changed after I read the payer data`,icon:`edit`,iconColor:`var(--warning)`,beforeLabel:`First draft`,afterLabel:`Revised`,before:`GLP-1 drugs are reversing the obesity epidemic at population scale.`,after:`GLP-1 drugs work powerfully per-patient, but population impact is gated by adherence and …`,diff:[{t:`del`,c:`GLP-1 drugs are <b>reversing the obesity epidemic at population scale</b>.`},{t:`add`,c:`GLP-1 drugs work powerfully <b>per-patient</b>,`},{t:`add`,c:`but population impact is <b>gated by adherence and access</b>.`},{t:`ctx`,c:`Trigger: 12-month persistence in claims data was only 33%.`}],footer:`The real-world number forced a more honest claim, the edit is the work.`},factcheck:{title:`The load-bearing claims, checked`,icon:`proof`,iconColor:`var(--presence)`,claims:[{claim:`Semaglutide produces ~15% mean weight loss at 68 weeks.`,verdict:`true`,confidence:96,sources:[`nejm.org`,`cochrane.org`],detail:`STEP 1 reported <mark>−14.9%</mark>; the Cochrane synthesis corroborates within 1pt.`},{claim:`Tirzepatide outperforms semaglutide on weight loss.`,verdict:`partly`,confidence:74,sources:[`nejm.org`,`jama.com`],detail:`SURMOUNT-1 (−20.9%) vs STEP 1 (−14.9%), but no head-to-head at matched doses yet.`},{claim:`GLP-1 drugs have cured the obesity epidemic.`,verdict:`false`,confidence:91,sources:[`cdc.gov`,`claims data`],detail:`Population obesity prevalence has not meaningfully fallen; reach is ~2% of eligible adult…`},{claim:`Therapy reduces major cardiovascular events.`,verdict:`true`,confidence:89,sources:[`nejm.org`],detail:`SELECT showed a <mark>20% relative MACE reduction</mark> in overweight CV patients.`}],footer:`Each verdict expands to its sources, green is replicated, amber is single-study.`},confidencemeter:{title:`Confidence in the headline number`,icon:`shield`,iconColor:`var(--insight)`,claim:`<b>~15% weight loss</b> at 68 weeks on semaglutide 2.4mg`,overall:94,segments:[{label:`RCT design`,weight:38,band:`strong`,basis:`Randomized, double-blind, placebo-controlled Phase 3.`},{label:`Replication`,weight:30,band:`strong`,basis:`Reproduced across STEP 1–4 and a Cochrane meta-analysis.`},{label:`Sample size`,weight:18,band:`strong`,basis:`n=1,961 in the anchor trial alone.`},{label:`Generalizability`,weight:14,band:`partial`,basis:`Trial adherence far exceeds real-world persistence.`}],footer:`The only soft segment is generalizing trial results to everyday use.`},citationchain:{title:`Claim → source → sub-evidence`,icon:`link`,iconColor:`var(--presence-soft)`,root:{label:`<b>Semaglutide drives ~15% weight loss</b> at 68 weeks`,cite:`synthesis`,color:`var(--insight)`,strength:`strong`,children:[{label:`STEP 1 randomized trial`,cite:`nejm.org`,color:`var(--presence)`,strength:`strong`,children:[{label:`Table 2, mean change −14.9%`,cite:`p. 994`,strength:`strong`},{label:`Pre-registered endpoint`,cite:`NCT03548935`,strength:`strong`}]},{label:`Cochrane meta-analysis`,cite:`cochrane.org`,color:`var(--presence-soft)`,strength:`strong`,children:[{label:`Pooled across 11 RCTs`,cite:`2024`,strength:`strong`},{label:`Low heterogeneity (I²=22%)`,cite:`forest plot`,strength:`partial`}]}]},footer:`Every node traces to a primary document, expand to walk the chain.`},sourcelist:{title:`Sources I kept`,icon:`doc`,iconColor:`var(--insight)`,sources:[{domain:`nejm.org`,titleText:`STEP 1: Once-Weekly Semaglutide in Adults with Overweight`,relevance:98,glyph:`N`,color:`var(--insight)`,date:`2021`,snippet:`The anchor efficacy RCT, <mark>−14.9%</mark> mean weight change.`},{domain:`nejm.org`,titleText:`SURMOUNT-1: Tirzepatide for Obesity`,relevance:95,glyph:`N`,color:`var(--insight)`,date:`2022`,snippet:`−20.9% at the 15mg dose over 72 weeks.`},{domain:`nejm.org`,titleText:`SELECT: Semaglutide and Cardiovascular Outcomes`,relevance:92,glyph:`N`,color:`var(--presence)`,date:`2023`,snippet:`20% relative reduction in major adverse CV events.`},{domain:`cochrane.org`,titleText:`GLP-1 agonists for weight management (review)`,relevance:90,glyph:`C`,color:`var(--presence-soft)`,date:`2024`},{domain:`cdc.gov`,titleText:`Adult Obesity Prevalence Maps`,relevance:78,glyph:`C`,color:`var(--text-muted)`,date:`2025`}],footer:`Ranked by relevance, three NEJM RCTs carry the efficacy claim.`},claimgrid:{title:`Claims × evidence, who backs what`,icon:`table`,iconColor:`var(--presence-soft)`,columns:[`STEP 1`,`SURMOUNT-1`,`SELECT`,`Cochrane`,`Claims data`],rows:[{claim:`~15% weight loss`,cells:[{state:`yes`,note:`−14.9% primary endpoint`},{state:`yes`,note:`Exceeds it (−20.9%)`},{state:`partial`,note:`Secondary outcome`},{state:`yes`,note:`Pooled confirmation`},{state:`na`}]},{claim:`Cardiovascular benefit`,cells:[{state:`na`},{state:`na`},{state:`yes`,note:`−20% MACE`},{state:`partial`,note:`Noted, not pooled`},{state:`na`}]},{claim:`Durable in real life`,cells:[{state:`partial`,note:`Only to 68 weeks`},{state:`partial`},{state:`na`},{state:`no`,note:`Trials ≠ adherence`},{state:`no`,note:`33% persist at 1yr`}]},{claim:`Cured obesity epidemic`,cells:[{state:`no`},{state:`no`},{state:`no`},{state:`no`},{state:`no`,note:`Prevalence flat`}]}],footer:`The bottom row is empty of green, which is exactly the headline.`},highlightsnippet:{title:`The sentence everything hangs on`,icon:`quote`,iconColor:`var(--insight)`,quote:`The mean change in body weight from baseline to week 68 was −14.9% in the semaglutide gro…`,phrase:`−14.9% in the semaglutide group`,source:`NEJM · STEP 1`,locator:`p. 994`,color:`var(--insight)`,footer:`Pulled verbatim, this is the primary endpoint, not a press summary.`},redline:{title:`How the abstract's claim was tightened`,icon:`edit`,iconColor:`var(--warning)`,docName:`Draft conclusion · v3 → v4`,tokens:[{text:`Semaglutide `},{del:`cures obesity`,by:`AM`},{ins:`produces clinically meaningful weight loss`,by:`AM`},{text:` and `},{del:`eliminates`,by:`ED`}],footer:`2 deletions · 2 insertions, softening "cure" to "clinically meaningful."`},annotateddoc:{title:`The trial abstract, annotated`,icon:`doc`,iconColor:`var(--presence)`,docName:`STEP 1 · NEJM 2021 · abstract`,paragraphs:[`In this 68-week, double-blind trial, we randomly assigned 1,961 adults with a body-mass i…`,`The mean change in body weight from baseline to week 68 was −14.9% in the semaglutide gro…`,`Nausea and diarrhea were the most common adverse events; they were typically transient an…`],highlights:[{phrase:`1,961 adults`,note:`Large, adequately powered sample for a Phase 3 obesity RCT.`,color:`var(--insight)`,author:`Sample`},{phrase:`−14.9%`,note:`The headline efficacy figure, replicated downstream in STEP 2–4.`,color:`var(--presence)`,author:`Endpoint`},{phrase:`Nausea and diarrhea`,note:`Real but tolerable, drives much of the early discontinuation.`,color:`var(--warning)`,author:`Safety`}],footer:`Click a highlight to read why it matters to the verdict.`},docoutline:{title:`How the report is structured`,icon:`layers`,iconColor:`var(--insight)`,docName:`GLP-1 evidence review`,activeIndex:1,sections:[{heading:`1 · The question`,loc:`p.1`,weight:6},{heading:`2 · Efficacy evidence`,loc:`p.2`,weight:40,children:[{heading:`2.1 Anchor RCT (STEP 1)`,loc:`p.2`,weight:16},{heading:`2.2 Tirzepatide comparison`,loc:`p.4`,weight:14},{heading:`2.3 Meta-analysis`,loc:`p.5`,weight:10}]},{heading:`3 · Real-world impact`,loc:`p.6`,weight:28,children:[{heading:`3.1 Adherence & persistence`,loc:`p.6`,weight:16},{heading:`3.2 Access & cost`,loc:`p.7`,weight:12}]},{heading:`4 · Verdict & caveats`,loc:`p.8`,weight:14}],footer:`The efficacy section carries the most weight, and the strongest evidence.`},network:{title:`How the trials cite each other`,icon:`share`,iconColor:`var(--presence-soft)`,layout:`circle`,nodes:[{id:`step1`,label:`STEP 1`,group:0,weight:9,color:`var(--insight)`},{id:`step2`,label:`STEP 2`,group:0,weight:6,color:`var(--insight)`},{id:`step4`,label:`STEP 4`,group:0,weight:5,color:`var(--insight)`},{id:`surmount`,label:`SURMOUNT-1`,group:1,weight:7,color:`var(--presence)`},{id:`select`,label:`SELECT`,group:2,weight:8,color:`var(--presence-soft)`}],edges:[{source:`cochrane`,target:`step1`,weight:3},{source:`cochrane`,target:`step2`,weight:2},{source:`cochrane`,target:`step4`,weight:2},{source:`cochrane`,target:`surmount`,weight:2},{source:`surmount`,target:`step1`,weight:2}],footer:`STEP 1 and the Cochrane review are the hubs, everything leans on them.`},sunburst:{title:`Where the research time went`,icon:`chart`,iconColor:`var(--insight)`,unit:`min`,root:{label:`Research`,value:100,children:[{label:`Reading`,value:52,color:`var(--insight)`,children:[{label:`RCTs`,value:30},{label:`Meta-analyses`,value:14},{label:`Guidelines`,value:8}]},{label:`Verifying`,value:30,color:`var(--presence)`,children:[{label:`Cross-check`,value:18},{label:`Claims data`,value:12}]},{label:`Writing`,value:18,color:`var(--presence-soft)`,children:[{label:`Synthesis`,value:12},{label:`Caveats`,value:6}]}]},footer:`More than half the time was reading, and nearly a third was checking.`},researchsummary:{title:`GLP-1 agonists, evidence summary`,question:`Are GLP-1 receptor agonists effective and safe for long-term weight management in adults …`,method:`Cochrane systematic review + meta-analysis of 14 RCTs`,sampleSize:`~18,000 participants, follow-up 52–208 weeks`,year:`2023`,findings:[`Semaglutide 2.4 mg achieved mean body-weight reduction of 12–15% vs 2–3% for placebo.`,`All GLP-1 agonists outperformed placebo on the primary weight outcome (high certainty).`,`Cardiovascular event rates fell significantly in high-risk populations (SELECT trial).`,`Gastrointestinal side-effects (nausea, vomiting) are common but typically transient.`],conclusion:`GLP-1 agonists are the most effective pharmacotherapy for obesity currently available. Lo…`,limitations:`Most trials exclude people with prior GI surgery; long-term safety beyond 5 years is not …`,source:`Iepsen et al. · Cochrane Database Syst Rev · 2023`},hypothesiscard:{title:`SELECT trial, primary hypothesis`,icon:`proof`,iconColor:`var(--presence)`,h0:`Semaglutide 2.4 mg does not reduce the rate of major adverse cardiovascular events (MACE)…`,h1:`Semaglutide 2.4 mg reduces the rate of MACE versus placebo in this population.`,direction:`two-tailed`,alpha:.05,variables:{iv:`Treatment arm, semaglutide 2.4 mg vs placebo`,dv:`Time to first MACE (CV death, non-fatal MI, non-fatal stroke)`},rejected:!0,footer:`HR 0.80 (95% CI 0.72&ndash;0.90), p &lt; 0.001 &mdash; a highly significant reduction in …`},dotplot:{title:`Weight Loss Distribution, STEP 1 Trial`,values:[3,5,7,8,9],label:`% body weight lost at 68 weeks`,color:`var(--presence)`,note:`Most participants lost 10–16%; the long right tail shows a subgroup exceeding 20%.`},controlchart:{title:`Adherence Rate, 8-Week Titration`,yLabel:`% on therapy`,centerLine:82,ucl:92,lcl:72,points:[{label:`W1`,value:98},{label:`W2`,value:94},{label:`W3`,value:88},{label:`W4`,value:84},{label:`W5`,value:79}],note:`Week 6 dipped below the lower control limit, GI side-effects drove early discontinuation.`},errorbars:{title:`HbA1c Reduction by Semaglutide Dose (SUSTAIN-7)`,yLabel:`HbA1c change (%)`,unit:`%`,groups:[{label:`Placebo`,mean:-.1,ci:.12,color:`var(--text-muted)`},{label:`0.5 mg`,mean:-1.5,ci:.13,color:`var(--insight)`},{label:`1.0 mg`,mean:-1.8,ci:.13,color:`var(--presence)`}],reference:{value:0,label:`no change`},bracket:{from:0,to:2,label:`p < 0.0001`},footer:`Both doses cut HbA1c far more than placebo, and the two confidence intervals barely overl…`},kpi:{title:`Run at a glance`,icon:`spark`,iconColor:`var(--presence)`,kpis:[{val:`2.4M`,label:`cells`},{val:`3h 12m`,label:`wall-time`},{val:`64`,label:`cores`},{val:`7.8×`,label:`speedup`,color:`var(--insight)`}],footer:`Strong scaling held to 64 cores; past that, halo exchange dominates.`},plot:{title:`Residual convergence`,icon:`chart`,iconColor:`var(--presence)`,xLabel:`iteration`,yLabel:`residual (×10⁻³)`,xDomain:[0,1900],yDomain:[0,10],origin:!0,curves:[{label:`continuity residual`,color:`var(--presence)`,points:[{x:0,y:9.5},{x:200,y:5},{x:400,y:2.6},{x:600,y:1.4},{x:800,y:.8}]}],markers:[{x:1840,y:.05,label:`tol 5e-5`,color:`var(--insight)`}],footer:`Clean exponential decay after the first ~300 iterations, the scheme is stable here.`},matrix:{title:`The discretized operator`,icon:`table`,iconColor:`var(--presence)`,caption:`A, 5-point Laplacian stencil (4×4 of a 2.4M² sparse system)`,bracket:!0,rows:[{cells:[{v:4,hot:!0},{v:-1},{v:0},{v:-1}]},{cells:[{v:-1},{v:4,hot:!0},{v:-1},{v:0}]},{cells:[{v:0},{v:-1},{v:4,hot:!0},{v:-1}]},{cells:[{v:-1},{v:0},{v:-1},{v:4,hot:!0}]}],footer:`Each row is one cell’s 5-point stencil; the solver inverts this banded, diagonally-domina…`},diagram:{title:`The domain & boundary conditions`,icon:`image`,iconColor:`var(--presence)`,ratio:2.1,shapes:[{kind:`rect`,x:10,y:8,w:82,h:32,color:`var(--text-muted)`},{kind:`circle`,cx:36,cy:24,r:6,color:`var(--presence)`,fill:`var(--presence-soft)`},{kind:`line`,x1:1,y1:24,x2:9,y2:24,color:`var(--insight)`,arrow:!0},{kind:`line`,x1:92,y1:24,x2:99,y2:24,color:`var(--warning)`,arrow:!0}],labels:[{x:5,y:24,text:`inlet`,side:`bottom`,color:`var(--insight)`},{x:95,y:24,text:`outlet`,side:`bottom`,color:`var(--warning)`},{x:51,y:8,text:`no-slip wall`,side:`top`,color:`var(--text-muted)`},{x:36,y:24,text:`obstacle`,side:`right`,color:`var(--presence)`}],footer:`Uniform inflow left, pressure outlet right, no-slip on the walls and the obstacle.`},diagramflow:{title:`The solver loop`,icon:`layers`,iconColor:`var(--presence)`,layout:`cycle`,nodes:[{id:`init`,label:`Initialize field`,kind:`start`},{id:`assemble`,label:`Assemble system`,sub:`discretize PDE`},{id:`solve`,label:`Solve linear system`,kind:`accent`},{id:`check`,label:`Residual < tol?`,kind:`muted`},{id:`done`,label:`Converged`,kind:`good`}],edges:[{from:`init`,to:`assemble`},{from:`assemble`,to:`solve`},{from:`solve`,to:`check`},{from:`check`,to:`assemble`,label:`no`,kind:`warn`,dashed:!0},{from:`check`,to:`done`,label:`yes`,kind:`good`}],footer:`Each iteration re-assembles and re-solves until the residual falls below tolerance.`},docview:{title:`The method paper, the scheme I used`,icon:`doc`,iconColor:`var(--presence)`,source:`Hoffmann et al. · uploaded · 22 pp`,page:{n:7,of:22},blocks:[{kind:`h2`,text:`§4.1, Pressure-velocity coupling`},{kind:`p`,text:`We use a collocated finite-volume discretization with Rhie–Chow interpolation to suppress…`},{kind:`p`,text:`Stability requires the under-relaxation factors to satisfy α_p + α_u ≤ 1 on stretched mes…`,spot:!0},{kind:`eq`,text:`α_p = 0.3 , α_u = 0.7 ⇒ α_p + α_u = 1.0`},{kind:`p`,text:`Outside this bound the continuity residual stalls rather than decays, the failure mode in…`}],note:`This is the line your run 043 violated (you had α_u = 0.85). Run 044 sits exactly on the …`,footer:`I pulled the stability condition straight from the paper and tied it to why 043 stalled a…`},pdfreader:{title:`The reference, in full`,icon:`doc`,iconColor:`var(--text-muted)`,source:`NASA CR, A First Course in CFD · public domain`,file:`/demo-assets/pdf/cfd-primer.pdf`,footer:`The actual report, embedded, scroll the real PDF for the derivations behind the scheme.`},datastructure:{title:`Binary search tree — searching for 40`,icon:`share`,iconColor:`var(--presence)`,kind:`bst`,nodes:[{id:`a`,value:50,left:`b`,right:`c`},{id:`b`,value:30,left:`d`,right:`e`},{id:`c`,value:70,left:`f`,right:`g`},{id:`d`,value:20},{id:`e`,value:40}],highlight:`e`,footer:`Search visits <b>50 → 30 → 40</b>: 40 &lt; 50 go left, 40 &gt; 30 go right, match. Three …`},bigo:{title:`How algorithm cost grows with input`,icon:`chart`,iconColor:`var(--presence)`,classes:[`o-1`,`o-logn`,`o-n`,`o-nlogn`,`o-n2`],maxN:16,highlight:`o-nlogn`,algorithm:{name:`merge sort`,complexity:`o-nlogn`},xLabel:`input size (n)`,yLabel:`operations`,footer:`Binary search hugs the floor at O(log n), merge sort scales gracefully at O(n log n), but…`},complexitysummary:{title:`Same lookup, three approaches`,icon:`clock`,iconColor:`var(--presence)`,approaches:[{name:`Linear scan`,timeComplexity:`O(n)`,spaceComplexity:`O(1)`,notes:`No setup cost — fine for a one-off search over unsorted data.`},{name:`Binary search`,timeComplexity:`O(log n)`,spaceComplexity:`O(1)`,notes:`Needs the array sorted first; free here since merge sort already sorted it.`},{name:`Merge sort + binary search`,timeComplexity:`O(n log n)`,spaceComplexity:`O(n)`,notes:`Pays off once the same array is searched many times, not for a single query.`}],footer:`For a single lookup, linear scan wins on simplicity; sort once and binary search pays for…`},confusionmatrix:{title:`Classifier results on the held-out test set`,icon:`table`,iconColor:`var(--presence)`,classes:[`Setosa`,`Versicolor`,`Virginica`],matrix:[[50,0,0],[0,47,3],[0,4,46]],showTotals:!0,readout:`perclass`,countLabel:`samples`,footer:`Setosa separates cleanly; the only confusion is between Versicolor and Virginica, where t…`},protocolstack:{title:`The TCP/IP stack: how a request travels down`,icon:`layers`,iconColor:`var(--presence)`,layers:[{name:`Application`,role:`Your request lives here — the actual message a program speaks.`,protocols:[`HTTP`,`DNS`,`TLS`,`SMTP`]},{name:`Transport`,role:`Splits the message into segments and guarantees order & delivery.`,protocols:[`TCP`,`UDP`]},{name:`Internet`,role:`Wraps each segment in a packet and routes it across networks by IP address.`,protocols:[`IP`,`ICMP`]},{name:`Link`,role:`Frames the packet for the local wire and addresses the next hop by MAC.`,protocols:[`Ethernet`,`Wi-Fi`,`ARP`]}],packet:[{header:`Ethernet`,layer:`Link`},{header:`IP`,layer:`Internet`},{header:`TCP`,layer:`Transport`},{header:`HTTP`,layer:`Application`},{header:`Your request`,layer:`Application`}],caption:`Each layer adds its own header on the way down, then the receiver peels them off in rever…`},logicgates:{title:`Half Adder`,icon:`share`,iconColor:`var(--presence)`,inputs:[{id:`A`,label:`A`,value:1},{id:`B`,label:`B`,value:0}],gates:[{id:`sum`,kind:`XOR`,inputs:[`A`,`B`]},{id:`carry`,kind:`AND`,inputs:[`A`,`B`]}],output:{from:`sum`,label:`Sum`},truth:[{row:[0,0],out:0},{row:[0,1],out:1},{row:[1,0],out:1},{row:[1,1],out:0}],caption:`A half adder sums two bits: the XOR gate produces the sum, the AND gate produces the carr…`,footer:`The truth table row matching the live inputs is highlighted; flip A or B in your head and…`},algorithmtrace:{title:`Bubble Sort — First Pass`,icon:`layers`,iconColor:`var(--presence)`,values:[5,1,4,2,8],steps:[{caption:`Start the pass: compare the first adjacent pair, 5 and 1.`,compare:[0,1],pointer:{i:0,j:1}},{caption:`5 > 1, so swap them — the larger value bubbles right.`,swapped:[0,1],pointer:{i:0,j:1}},{caption:`Advance the window and compare 5 and 4.`,compare:[1,2],pointer:{i:1,j:2}},{caption:`5 > 4, swap again.`,swapped:[1,2],pointer:{i:1,j:2}},{caption:`Compare 5 and 2.`,compare:[2,3],pointer:{i:2,j:3}}],caption:`Step through one full pass: each comparison either holds or swaps, walking the largest re…`,footer:`After this pass the maximum (8) is locked in its final position; bubble sort repeats over…`},sortingviz:{title:`Bubble Sort step-by-step`,algorithm:`Bubble Sort`,complexity:`o-n2`,values:[5,3,8,1,6],steps:[{caption:`Pass 1: compare 5 and 3.`,values:[5,3,8,1,6],compared:[0,1]},{caption:`5 > 3 → swap.`,values:[3,5,8,1,6],swapped:[0,1]},{caption:`Compare 5 and 8. No swap.`,values:[3,5,8,1,6],compared:[1,2]},{caption:`Compare 8 and 1.`,values:[3,5,8,1,6],compared:[2,3]},{caption:`8 > 1 → swap.`,values:[3,5,1,8,6],swapped:[2,3]}],footer:`Bubble sort: O(n²) time. Each pass bubbles the largest unsorted element to its final posi…`},graphtrace:{title:`BFS Graph Traversal`,algorithm:`bfs`,nodes:[{id:`A`,label:`A`,x:50,y:10},{id:`B`,label:`B`,x:20,y:40},{id:`C`,label:`C`,x:80,y:40},{id:`D`,label:`D`,x:10,y:75},{id:`E`,label:`E`,x:40,y:75}],edges:[{from:`A`,to:`B`},{from:`A`,to:`C`},{from:`B`,to:`D`},{from:`B`,to:`E`},{from:`C`,to:`F`}],steps:[{caption:`Start BFS at A. Add A to queue.`,current:`A`,frontier:[`A`],visited:[]},{caption:`Dequeue A. Enqueue neighbors B and C.`,current:`A`,visited:[`A`],frontier:[`B`,`C`]},{caption:`Dequeue B. Enqueue neighbors D and E.`,current:`B`,visited:[`A`,`B`],frontier:[`C`,`D`,`E`]},{caption:`Dequeue C. Enqueue neighbor F.`,current:`C`,visited:[`A`,`B`,`C`],frontier:[`D`,`E`,`F`]},{caption:`Dequeue D. No unvisited neighbors.`,current:`D`,visited:[`A`,`B`,`C`,`D`],frontier:[`E`,`F`]}],footer:`BFS visits nodes level-by-level (breadth-first). Queue is FIFO. Time: O(V+E). Contrast wi…`},binarytree:{title:`BST Search — find 7`,nodes:[{id:`n10`,value:10,left:`n5`,right:`n15`},{id:`n5`,value:5,left:`n3`,right:`n7`},{id:`n15`,value:15},{id:`n3`,value:3},{id:`n7`,value:7}],root:`n10`,steps:[{caption:`Start at root: 10. Is 7 == 10?`,states:{n10:`visiting`}},{caption:`7 < 10 → go left to 5.`,states:{n10:`visited`,n5:`visiting`}},{caption:`7 > 5 → go right to 7.`,states:{n10:`visited`,n5:`visited`,n7:`visiting`}},{caption:`7 == 7 → Found! 3 comparisons.`,states:{n10:`visited`,n5:`visited`,n7:`found`}}],footer:`BST search: O(h) time where h is tree height — O(log n) balanced, O(n) worst case. Each c…`},dptable:{title:`LCS — Longest Common Subsequence: "ABCB" vs "BCAB"`,recurrence:`dp[i][j] = dp[i-1][j-1]+1 if s[i]=t[j], else max(dp[i-1][j], dp[i][j-1])`,cols:[`ε`,`B`,`C`,`A`,`B`],rows:[`ε`,`A`,`B`,`C`,`B`],cells:[[0,0,0,0,0],[0,0,0,1,1],[0,1,1,1,2],[0,1,2,2,2],[0,1,2,2,3]],path:[[1,3],[2,4],[3,2],[4,4]],steps:[{caption:`Base case: row 0 and col 0 are all 0 — empty string has LCS 0 with anything.`,current:[0,0],deps:[]},{caption:`dp[1][3]: A matches A → dp[0][2]+1 = 1. First character matched.`,current:[1,3],deps:[[0,2]]},{caption:`dp[2][4]: B matches B → dp[1][3]+1 = 2. Two-character match.`,current:[2,4],deps:[[1,3]]},{caption:`dp[3][2]: C matches C → dp[2][1]+1 = 2.`,current:[3,2],deps:[[2,1]]},{caption:`dp[4][4]: B matches B → dp[3][3]+1 = 3. Final answer: LCS = "BCB" (length 3).`,current:[4,4],deps:[[3,3]]}],footer:`LCS is <b>"BCB"</b> (length 3). Backtrack from dp[4][4]=3 via diagonal match cells. Class…`},hashtable:{title:`Hash table — separate chaining, h(k) = k mod 7`,size:7,hashFn:`h(k) = k mod 7`,entries:[{key:14,value:`Alice`},{key:21,value:`Bob`},{key:7,value:`Carol`},{key:3,value:`Dan`},{key:10,value:`Eve`}],highlight:10,footer:`Keys 7, 14 and 21 hash to bucket 0 (all divisible by 7). Key 10 hashes to bucket 3, colli…`},trie:{title:`Prefix tree (Trie) — autocomplete words`,words:[`apple`,`app`,`apt`,`apply`,`bat`],highlight:`apply`,footer:`Trie lookup: O(m) where m = word length, regardless of dictionary size. Each edge is one …`},gridtrace:{title:`BFS Shortest Path on a Grid`,algorithm:`BFS`,steps:[{caption:`Find shortest path S→E. Walls (#) block movement.`,grid:[[{state:`start`},{state:`empty`},{state:`wall`},{state:`empty`}],[{state:`empty`},{state:`empty`},{state:`empty`},{state:`empty`}],[{state:`empty`},{state:`empty`},{state:`empty`},{state:`end`}]]},{caption:`BFS expands: S visited, neighbors queued.`,grid:[[{state:`visited`},{state:`queued`},{state:`wall`},{state:`empty`}],[{state:`queued`},{state:`empty`},{state:`empty`},{state:`empty`}],[{state:`empty`},{state:`empty`},{state:`empty`},{state:`end`}]]},{caption:`Wave reaches E. Shortest path length = 5.`,grid:[[{state:`path`},{state:`visited`},{state:`wall`},{state:`visited`}],[{state:`path`},{state:`path`},{state:`path`},{state:`visited`}],[{state:`visited`},{state:`visited`},{state:`visited`},{state:`end`}]]}],footer:`BFS guarantees shortest path in unweighted grids. O(rows×cols). Classic FAANG: islands (L…`},sysarchdiagram:{title:`Whiteboard: a URL shortener at scale`,icon:`share`,iconColor:`var(--presence)`,nodes:[{id:`client`,label:`Client`,kind:`client`},{id:`cdn`,label:`CDN`,kind:`cdn`,sub:`static assets`},{id:`lb`,label:`Load Balancer`,kind:`loadbalancer`},{id:`api`,label:`API Service`,kind:`service`,sub:`×12 instances`},{id:`cache`,label:`Redis Cache`,kind:`cache`,sub:`hot slugs`}],edges:[{from:`client`,to:`cdn`,protocol:`HTTPS`},{from:`client`,to:`gw`,protocol:`HTTPS`},{from:`gw`,to:`lb`},{from:`lb`,to:`api`,protocol:`HTTP/2`},{from:`api`,to:`cache`,label:`read-through`}],footer:`Reads hit the cache first (sub-ms for hot slugs); writes go through the queue so Postgres…`},recursiontree:{title:`Naive Recursive fib(4)`,icon:`spark`,iconColor:`var(--presence)`,root:{call:`fib(4)`,result:3,children:[{call:`fib(3)`,result:2,children:[{call:`fib(2)`,result:1,children:[{call:`fib(1)`,result:1},{call:`fib(0)`,result:0}]},{call:`fib(1)`,result:1}]},{call:`fib(2)`,result:1,children:[{call:`fib(1)`,result:1},{call:`fib(0)`,result:0}]}]},footer:`fib(2) is recomputed twice here and the redundant subtree only grows with n — O(2ⁿ) calls…`},sequencealign:{title:`The LCS problem, on real reads`,icon:`layers`,iconColor:`var(--presence)`,kind:`dna`,sequences:[{label:`Reference`,chars:`ATGGCTAACGTTAGC`},{label:`Read 1`,chars:`ATGGCTAAAGTTAGC`},{label:`Read 2`,chars:`ATGGCTA--GTTAGC`}],consensus:`Consensus`,highlightMismatches:!0,footer:`Read 1 carries a single-base substitution (C→A); Read 2 has a 2-base deletion right where…`},compare:{eyebrow:`Differential, what else fits, and why not`,options:[{name:`Pneumonia (CAP)`,sub:`working dx`,pick:!0},{name:`CHF exacerbation`},{name:`Pulmonary embolism`}],criteria:[{label:`Imaging`,cells:[{v:`Focal consolidation`,win:!0},{v:`Bilateral, vascular`},{v:`Often normal CXR`}]},{label:`Fever / CRP↑`,cells:[{v:`Yes`,win:!0},{v:`No`},{v:`Low-grade`}]},{label:`Onset`,cells:[{v:`Days`,win:!0},{v:`Days–weeks`},{v:`Sudden`}]},{label:`D-dimer / risk`,cells:[{v:`n/a`},{v:`BNP↑`},{v:`Wells low`,win:!1}]}],recommendation:`<b>CAP fits this picture best.</b> No orthopnea/edema and a normal BNP argue against CHF;…`},timeline:{eyebrow:`Course so far`,events:[{time:`Day −3`,title:`Productive cough, malaise`,color:`var(--text-muted)`},{time:`Day 0 · 02:10`,title:`ED: T 39.4°, SpO₂ 90%`,tag:`admit`,color:`var(--warning)`},{time:`Day 0 · 03:00`,title:`First antibiotic dose`,tag:`started`,color:`var(--insight)`},{time:`Day 1`,title:`Fever breaking, O₂ weaning`,color:`var(--insight)`}]},clinicaltimeline:{title:`Admission timeline, Mr. Alvarez`,events:[{date:`48h ago`,type:`symptom`,label:`Fever 39.1°C, productive cough, dyspnoea on exertion`},{date:`36h ago`,type:`visit`,label:`ED presentation, SpO₂ 91% on room air`},{date:`34h ago`,type:`test`,label:`CXR ordered, right lower lobe infiltrate`},{date:`34h ago`,type:`test`,label:`Blood cultures × 2, CBC, CRP, procalcitonin`},{date:`30h ago`,type:`result`,label:`WBC 14.2, CRP 187, procalcitonin 2.1, bacterial picture`}]},medicationschedule:{title:`Current medication orders`,medications:[{name:`Amoxicillin-clavulanate`,dose:`1.2g IV`,frequency:`every 8 hours`,times:[`6:00 AM`,`2:00 PM`,`10:00 PM`],withFood:!1,notes:`Switch to oral when tolerating`},{name:`Paracetamol`,dose:`1g IV/oral`,frequency:`every 6 hours PRN`,times:[`6:00 AM`,`12:00 PM`,`6:00 PM`,`12:00 AM`],withFood:!1,notes:`For fever > 38.5°C only`}]},clearancematrix:{title:`Common over-the-counter combos`,icon:`shield`,iconColor:`var(--insight)`,rows:[`Ibuprofen`,`Acetaminophen`,`Aspirin`,`Antihistamine`],columns:[`With alcohol`,`On an empty stomach`,`During pregnancy`,`With a blood thinner`],cells:[{row:`Ibuprofen`,col:`With alcohol`,level:`caution`,reason:`Both irritate the stomach lining — space them out.`},{row:`Ibuprofen`,col:`On an empty stomach`,level:`caution`,reason:`Take with food to limit stomach upset.`},{row:`Ibuprofen`,col:`During pregnancy`,level:`avoid`,reason:`Not advised in the third trimester.`},{row:`Ibuprofen`,col:`With a blood thinner`,level:`avoid`,reason:`Raises bleeding risk markedly.`},{row:`Acetaminophen`,col:`With alcohol`,level:`caution`,reason:`Heavy drinking strains the liver — keep doses low.`}],footer:`General guidance, not medical advice — unrated pairings read “check a pro,” and your phar…`},anatomyfigure:{title:`Anatomy of the heart`,icon:`spark`,iconColor:`var(--danger)`,organ:`heart`,view:`anterior`,pins:[{x:33,y:40,label:`Right atrium`,note:`Receives deoxygenated blood from the body via the venae cavae.`},{x:67,y:40,label:`Left atrium`,note:`Receives oxygen-rich blood returning from the lungs.`},{x:36,y:66,label:`Right ventricle`,note:`Pumps blood to the lungs through the pulmonary artery.`},{x:63,y:66,label:`Left ventricle`,note:`The thickest chamber — drives blood out to the whole body.`},{x:50,y:18,label:`Aorta`,note:`The main artery carrying oxygenated blood from the left ventricle.`}],caption:`The four chambers and the great vessels, viewed from the front.`},odontogram:{title:`Adult dental chart`,icon:`doc`,iconColor:`var(--presence)`,system:`universal`,teeth:[{n:3,status:`filling`,surface:`O`},{n:14,status:`filling`,surface:`MOD`},{n:19,status:`crown`,note:`porcelain-fused-to-metal`},{n:30,status:`missing`},{n:31,status:`implant`,note:`titanium fixture, placed 2024`}],caption:`Universal numbering: teeth 1–16 across the upper arch, 17–32 across the lower.`},ecgstrip:{title:`Rhythm strip · lead II`,iconColor:`var(--danger)`,rateBpm:72,rhythm:`Normal sinus rhythm`,gridMs:40,intervals:[{label:`PR`,fromMs:125,toMs:285},{label:`QRS`,fromMs:300,toMs:390},{label:`QT`,fromMs:300,toMs:700}],caption:`Regular, narrow-complex, every P followed by a QRS — sinus at 72. PR 160 ms, QRS 90 ms, Q…`},vitalstrip:{title:`Bedside monitor`,iconColor:`var(--presence)`,windowLabel:`last 30 min`,channels:[{label:`HR`,unit:`bpm`,normal:[60,100],series:[108,104,99,96,94]},{label:`BP (sys)`,unit:`mmHg`,normal:[90,140],series:[126,124,122,121,120]},{label:`SpO₂`,unit:`%`,color:`var(--warning)`,normal:[94,100],series:[96,95,95,94,93]},{label:`RR`,unit:`/min`,normal:[12,20],series:[22,21,21,20,20]}],caption:`SpO₂ has slipped to 91% on 2 L — below the 94–100% band and flagged. HR settling back int…`},careplan:{title:`Care plan — day 1 post-op`,icon:`shield`,iconColor:`var(--presence)`,caption:`Med-surg · evening shift handoff`,entries:[{assessment:`Rates pain 7/10 at the incision, guarding on movement`,diagnosis:`Acute pain related to surgical incision`,goal:`Pain reported ≤ 3/10 within 24 hours`,interventions:[`Give scheduled analgesia and assess effect at 30 min`,`Reposition and support the incision before activity`,`Reassess pain score every 4 hours`],rationale:`Multimodal, scheduled analgesia controls pain better than PRN-only dosing and supports ea…`,status:`partial`},{assessment:`Clean, dry surgical wound; indwelling IV and urinary catheter in place`,diagnosis:`Risk for infection related to surgical wound and invasive lines`,goal:`Remains afebrile with no signs of wound or line infection`,interventions:[`Hand hygiene and aseptic technique at every contact`,`Inspect wound and line sites each shift for redness or drainage`,`Remove the urinary catheter as soon as clinically appropriate`],rationale:`Early line removal and daily site checks catch infection before it spreads and shorten ex…`,status:`ongoing`},{assessment:`Steady on standby-assist; lungs clear, encouraged to walk`,diagnosis:`Risk for impaired mobility related to post-operative pain`,goal:`Walks the hallway with standby assist by day 2`,interventions:[`Pre-medicate for pain 30 min before ambulation`,`Assist out of bed three times daily`,`Coach incentive spirometry hourly while awake`],rationale:`Early ambulation lowers the risk of pneumonia and venous thromboembolism.`,status:`met`}],footer:`Reassess each goal at the next shift and update the status as outcomes are met.`},triageboard:{title:`Meanwhile, down in the ED`,icon:`alert`,iconColor:`var(--danger)`,patients:[{chiefComplaint:`Crushing chest pain, radiating to left arm`,esiLevel:1,vitals:[{label:`HR`,value:`118`,abnormal:!0},{label:`BP`,value:`88/56`,abnormal:!0},{label:`SpO₂`,value:`91%`,abnormal:!0}],waitTime:`being seen`},{chiefComplaint:`Fall from ladder, deformed forearm`,esiLevel:2,vitals:[{label:`HR`,value:`96`},{label:`Pain`,value:`8/10`,abnormal:!0}],waitTime:`6 min`},{chiefComplaint:`Fever and cough, 3 days`,esiLevel:3,vitals:[{label:`Temp`,value:`38.9°C`,abnormal:!0}],waitTime:`42 min`},{chiefComplaint:`Twisted ankle playing soccer`,esiLevel:4,waitTime:`1h 10m`},{chiefComplaint:`Refill request, ran out of a maintenance medication`,esiLevel:5,waitTime:`1h 45m`}],footer:`The chest-pain patient jumped the queue the moment they walked in, everyone else holds th…`},mentalhealthscreen:{title:`Routine screen on admission — Mr. Alvarez`,icon:`chat`,iconColor:`var(--presence)`,instrument:`PHQ-9`,items:[{prompt:`Little interest or pleasure in doing things`,score:1,anchor:`Several days`},{prompt:`Feeling down, depressed, or hopeless`,score:1,anchor:`Several days`},{prompt:`Trouble falling or staying asleep, or sleeping too much`,score:2,anchor:`More than half the days`},{prompt:`Feeling tired or having little energy`,score:2,anchor:`More than half the days`},{prompt:`Poor appetite or overeating`,score:1,anchor:`Several days`}],total:8,maxTotal:27,bands:[{label:`Minimal`,range:[0,4],tone:`ok`},{label:`Mild`,range:[5,9],tone:`mild`},{label:`Moderate`,range:[10,14],tone:`moderate`},{label:`Mod. severe`,range:[15,19],tone:`moderate`},{label:`Severe`,range:[20,27],tone:`severe`}],footer:`Sleep and fatigue are likely the acute admission talking, not a standalone mood concern, …`},callout:{title:`Recommendation`,icon:`shield`,iconColor:`var(--warning)`,tone:`warn`,kicker:`Before signing`,body:`Sign-ready <b>after three redlines</b> to §8.2 and the liability cap. The economics are f…`,points:[`Redline §8.2: notice 90 → 30 days; consider deleting auto-renew entirely.`,`Raise the liability cap from 1× to 12× annual fees (data processor).`,`Either way, <b>calendar the Nov 30 2027 notice deadline now</b>.`],footer:`Want me to draft the redline markup and a one-paragraph cover note to their counsel?`},casebrief:{title:`The precedent behind that redline`,icon:`proof`,iconColor:`var(--presence)`,citation:`812 F. Supp. 2d 501 (D. Del. 2019)`,parties:{plaintiff:`Bell Fabrication, Inc.`,defendant:`Meridian Systems, LLC`},facts:`Bell signed a 24-month services agreement with a silent auto-renewal clause requiring 90 …`,issue:`Whether a 90-day auto-renewal notice window, buried in a boilerplate term clause, is enfo…`,holding:`Enforceable, but only narrowly — the clause was conspicuously formatted and the buyer had…`,reasoning:`The court weighed three things: whether the term was buried or set apart, whether the buy…`,footer:`The takeaway for §8.2: a 90-day window is defensible, but only barely, negotiating it dow…`},discoverytracker:{title:`Meanwhile: Meridian's discovery requests`,icon:`doc`,iconColor:`var(--presence)`,requests:[{num:1,description:`All communications regarding the Acme MSA renewal terms`,requestingParty:`Meridian Systems`,status:`produced`,batesRange:`ACME-000412–000488`,dueDate:`Apr 3, 2026`},{num:2,description:`Board minutes discussing the 2025 vendor consolidation`,requestingParty:`Meridian Systems`,status:`objected`,dueDate:`Apr 3, 2026`},{num:3,description:`Outside counsel's memo on liability-cap exposure`,requestingParty:`Meridian Systems`,status:`privileged`,privilegeBasis:`attorney-client privilege`,dueDate:`Apr 3, 2026`},{num:4,description:`All Order Forms executed under the MSA since 2024`,requestingParty:`Meridian Systems`,status:`outstanding`,dueDate:`Apr 17, 2026`},{num:5,description:`Internal escalation emails re: the 90-day notice miss`,requestingParty:`Meridian Systems`,status:`outstanding`,dueDate:`Apr 17, 2026`}],footer:`Same file, a different matter — Meridian is compelling production on the renewal dispute.…`},patentclaimchart:{title:`One more diligence check: Acme's sync engine against a live patent`,icon:`table`,iconColor:`var(--presence)`,claimElements:[{id:`1.1`,text:`receiving, at a server, a stream of shipment-location updates from a plurality of mobile …`},{id:`1.2`,text:`storing each location update in a distributed ledger replicated across at least three nod…`},{id:`1.3`,text:`detecting a conflict between two location updates for the same shipment received within a…`},{id:`1.4`,text:`automatically resolving the conflict using a timestamp-priority rule without human interv…`},{id:`1.5`,text:`pushing the resolved location to a customer-facing dashboard in real time`}],references:[`Acme's platform (accused)`,`US 9,112,233 (prior art)`],cells:[[{state:`disclosed`,quote:`Edge devices stream GPS pings to the ingest cluster every 4 seconds.`},{state:`disclosed`,quote:`Sensor readings are logged to a central event bus polled by field units.`}],[{state:`disclosed`,quote:`Every update is written to a 3-node Raft-replicated ledger before ack.`},{state:`disclosed`,quote:`Readings are mirrored to a backup store for durability.`}],[{state:`disputed`,quote:`Acme’s docs describe "duplicate suppression," which may or may not be the claimed conflic…`},{state:`not-disclosed`}],[{state:`not-disclosed`},{state:`not-disclosed`}],[{state:`disclosed`,quote:`Resolved coordinates post to the live tracking map within 400ms.`},{state:`not-disclosed`}]],footer:`Acme's platform is missing element 1.4 — conflicts get flagged for manual review, not aut…`},litigationtimeline:{title:`If the renewal dispute escalates`,icon:`proof`,iconColor:`var(--presence)`,events:[{date:`2026-08-03`,kind:`filing`,court:`D. Del.`,party:`Plaintiff`,urgency:`routine`,detail:`Complaint for breach of contract, if the 90-day notice window gets missed.`},{date:`2026-08-24`,kind:`motion`,court:`D. Del.`,party:`Defendant`,urgency:`soon`,detail:`Motion to dismiss, citing Bell v. Meridian on the notice-window question.`},{date:`2026-09-14`,kind:`hearing`,court:`D. Del.`,urgency:`soon`,detail:`Oral argument on the motion to dismiss.`},{date:`2026-09-28`,kind:`deadline`,urgency:`critical`,detail:`Last day to file non-renewal notice before the term silently rolls another year.`},{date:`2026-10-19`,kind:`order`,court:`D. Del.`,urgency:`routine`,detail:`Ruling expected on the motion to dismiss.`}],footer:`The track record Bell v. Meridian sets, worth avoiding by redlining §8.2 now.`},billtracker:{title:`The bill that could reshape this MSA`,icon:`chart`,iconColor:`var(--insight)`,bill:`S. 1189 — Data Broker Registration Act`,stages:[{name:`Introduced`,status:`done`},{name:`Committee`,status:`done`,voteTally:{yea:14,nay:6}},{name:`Floor Vote`,status:`done`,voteTally:{yea:62,nay:38}},{name:`Other Chamber`,status:`current`},{name:`Signed`,status:`pending`}],footer:`If it passes, data processors like Acme pick up new registration duties, worth its own cl…`},immigrationcase:{title:`Case status — employment-based petition`,icon:`globe`,iconColor:`var(--presence)`,visaCategory:`EB-2 · I-140 Immigrant Petition`,priorityDate:`Mar 15, 2024`,rfeDeadline:`2026-07-20`,stages:[{name:`I-140 filed`,status:`done`,date:`Mar 15, 2024`},{name:`Biometrics`,status:`done`,date:`May 2, 2024`},{name:`Request for Evidence issued`,status:`current`,date:`Jun 10, 2026`},{name:`Decision`,status:`pending`}],footer:`The RFE asks for updated proof of the employer’s ability to pay, gather the last two year…`},caseload:{title:`Open cases`,icon:`shield`,iconColor:`var(--presence)`,cases:[{clientRef:`J.M.-0192`,status:`Active · in-home visits`,nextContact:`Overdue since Thu`,riskLevel:`high`,note:`Housing instability, follow-up on shelter placement.`},{clientRef:`R.K.-0207`,status:`Active · monthly check-in`,nextContact:`Fri`,riskLevel:`high`,note:`Recently reunified; monitoring the transition closely.`},{clientRef:`A.T.-0118`,status:`Active · biweekly check-in`,nextContact:`Mon`,riskLevel:`medium`},{clientRef:`S.D.-0224`,status:`Active · monthly check-in`,nextContact:`Jun 30`,riskLevel:`low`},{clientRef:`M.P.-0055`,status:`Pending intake review`,nextContact:`Jul 3`}],footer:`J.M.-0192 is the one to move today — overdue and high-risk is the combination that matter…`},verdictcard:{title:`The call`,stance:`caution`,label:`Ship it, carefully`,verdict:`Build the search rewrite first, behind a flag, and gate the quarter on its p95.`,reason:`Four of five headline features ride on the new index, derisk it before anything leans on …`,caveat:`If the index migration slips two weeks, cut Polish from Q3, not the search hardening.`,confidence:`medium`,footer:`The roadmap below holds either way, this only changes what ships <strong>last</strong>.`},scenarioset:{title:`How the search rewrite could land`,icon:`chart`,iconColor:`var(--insight)`,metric:`Search p95 at end of quarter (target 400ms)`,scenarios:[{kind:`best`,value:`~320ms`,detail:`Index migration lands on time; cache hit-rate holds.`,points:[`All five features ship`,`Polish keeps its Q3 slot`]},{kind:`likely`,value:`~480ms`,detail:`A two-week migration slip, recovered with cache tuning.`,points:[`Four features ship on time`,`Polish slips ~2 weeks`]},{kind:`worst`,value:`~900ms`,detail:`Index rewrite stalls; fall back to the old path.`,points:[`Search-dependent features held`,`Quarter re-planned`]}],footer:`A range, not a promise, we revisit at the mid-quarter checkpoint.`},divider:{title:`The roadmap`,eyebrow:`Section 01`,heading:`The roadmap`,sub:`Three releases across the quarter, each one unblocks the next.`,badge:`Q2 → Q3`,badgeColor:`var(--insight)`,icon:`layers`,iconColor:`var(--insight)`,chips:[{label:`Foundation`,color:`var(--presence)`},{label:`Search`,color:`var(--insight)`},{label:`Polish`,color:`var(--warning)`}]},wizard:{title:`Release plan · four gates`,icon:`check`,iconColor:`var(--presence-soft)`,activeStep:1,steps:[{label:`Foundation`,caption:`Weeks 1–3`,status:`done`,body:`Stand up the typed core and the migration shim. Dual-write the legacy stores.`,bullets:[`Typed core service live`,`Dual-write shim shipped`,`Read traffic still on legacy`]},{label:`Search index`,caption:`Weeks 4–7`,status:`active`,body:`Build and backfill the new inverted index; shadow-read against legacy for parity.`,bullets:[`Backfill 41M docs`,`Shadow-read parity ≥ 99.5%`,`Cut over behind a flag`]},{label:`Surface features`,caption:`Weeks 8–10`,status:`todo`,body:`Ship saved views, instant filters, and the command bar on top of the new index.`,bullets:[`Saved views`,`Instant filters`,`Command-K`]},{label:`Polish + GA`,caption:`Weeks 11–12`,status:`todo`,body:`Performance pass, decommission legacy reads, and open the gate to GA.`,bullets:[`Kill legacy reads`,`p95 budget check`,`GA flag flip`]}],footer:`We are mid-gate two, the search backfill is the critical path.`},goaltree:{title:`The quarter in OKRs`,icon:`spark`,iconColor:`var(--insight)`,objectives:[{name:`Make Atlas feel instant`,owner:`Priya`,progress:58,keyResults:[{label:`Search p95 < 400ms`,progress:40,target:`400ms`,color:`var(--insight)`},{label:`Cold load < 1.2s`,progress:72,target:`1.2s`,color:`var(--presence)`},{label:`Zero 5xx on cutover`,progress:62,target:`0`,color:`var(--warning)`}]},{name:`One platform, not three`,owner:`Marco`,progress:71,keyResults:[{label:`Services collapsed`,progress:66,target:`3→1`,color:`var(--presence-soft)`},{label:`Legacy reads retired`,progress:35,target:`100%`,color:`var(--danger)`}]}],footer:`On track for "instant"; the platform collapse trails on legacy read retirement.`},candlestick:{title:`Search latency p95 · weekly (ms)`,icon:`chart`,iconColor:`var(--warning)`,unit:`ms`,candles:[{label:`W1`,o:1980,h:2100,l:1900,c:1940,vol:41},{label:`W2`,o:1940,h:1980,l:1610,c:1680,vol:44},{label:`W3`,o:1680,h:1720,l:1180,c:1240,vol:47},{label:`W4`,o:1240,h:1300,l:820,c:880,vol:52},{label:`W5`,o:880,h:940,l:540,c:610,vol:55}],footer:`Each backfill batch drags the floor down. The 400ms target is one batch away.`},lollipop:{title:`Effort left by workstream`,icon:`layers`,iconColor:`var(--presence-soft)`,unit:` pts`,rows:[{label:`Search index`,value:34,color:`var(--insight)`,sub:`critical path`},{label:`Command bar`,value:21,color:`var(--presence)`,sub:`depends on index`},{label:`Saved views`,value:18,color:`var(--presence-soft)`},{label:`Migration shim`,value:9,color:`var(--warning)`,sub:`almost done`},{label:`Docs + GA`,value:6,color:`var(--text-muted)`}],footer:`88 points remain, over a third sit on the search index alone.`},decisiontree:{title:`RFC-114 · how we chose the search engine`,icon:`shield`,iconColor:`var(--insight)`,rootId:`scale`,nodes:[{id:`scale`,question:`Will the corpus pass 40M docs in a year?`,detail:`Current 41M, growing ~9%/qtr.`,yes:`latency`,no:`managed`},{id:`latency`,question:`Is sub-400ms p95 a hard requirement?`,detail:`It is, search gates four features.`,yes:`self`,no:`managed`},{id:`self`,question:`Can we staff index ops in-house?`,detail:`Two infra engineers committed.`,yes:`own`,no:`cloud`},{id:`own`,question:``,outcome:`Self-host the new index on our cluster`,outcomeColor:`var(--presence)`},{id:`cloud`,question:``,outcome:`Managed search with a latency SLA`,outcomeColor:`var(--insight)`}],footer:`We landed on self-host, the only path that hits the latency budget at our scale.`},slopegraph:{title:`Before → after the re-platform`,icon:`arrowDown`,iconColor:`var(--insight)`,beforeLabel:`v2 today`,afterLabel:`v3 target`,unit:``,rows:[{label:`Deploy time (min)`,before:28,after:6,color:`var(--insight)`},{label:`Services to page`,before:11,after:4,color:`var(--presence)`},{label:`p95 search (s)`,before:1.9,after:.4,color:`var(--warning)`},{label:`On-call alerts/wk`,before:37,after:12,color:`var(--danger)`}],footer:`Every operational line moves the right direction, fewer moving parts pays compounding int…`},dumbbell:{title:`Build estimate vs. actual · by epic`,icon:`clock`,iconColor:`var(--warning)`,unit:` days`,startLabel:`estimate`,endLabel:`actual`,startColor:`var(--text-muted)`,endColor:`var(--insight)`,domain:[0,30],rows:[{label:`Typed core`,start:8,end:10,tag:`shipped`},{label:`Migration shim`,start:5,end:6,tag:`shipped`},{label:`Index backfill`,start:12,end:19,tag:`over`},{label:`Shadow-read parity`,start:6,end:7,tag:`in flight`},{label:`Command bar`,start:9,end:9,tag:`planned`}],footer:`The index backfill ran 7 days long, the source of most schedule pressure this quarter.`},powersample:{title:`Command bar test · sample size`,icon:`chart`,iconColor:`var(--presence)`,effectSize:.1,alpha:.05,power:.8,curve:[{n:400,power:.29},{n:800,power:.52},{n:1200,power:.69},{n:1600,power:.81},{n:2400,power:.93}],footer:`We pre-registered for a conservative 5-point lift; the real effect turned out much bigger…`},abtestresult:{title:`Command bar A/B test · search completion`,icon:`chart`,iconColor:`var(--presence)`,control:{name:`Old search bar`,n:8412,conversionRate:.612},variant:{name:`New command bar`,n:8350,conversionRate:.724},pValue:8e-4,confidenceInterval:[9.2,26.4],footer:`The command bar shipped to 50% for two weeks; the interval sits well clear of zero, so th…`},orgchart:{title:`Who owns what`,icon:`share`,iconColor:`var(--presence-soft)`,rootId:`lead`,nodes:[{id:`lead`,name:`Dana R.`,role:`Eng lead · Atlas`,accent:`var(--presence)`,children:[`search`,`platform`,`surface`]},{id:`search`,name:`Priya M.`,role:`Search squad`,accent:`var(--insight)`,children:[`s1`,`s2`]},{id:`platform`,name:`Marco V.`,role:`Platform squad`,accent:`var(--presence-soft)`,children:[`p1`]},{id:`surface`,name:`Lena K.`,role:`Surface squad`,accent:`var(--warning)`,children:[`u1`]},{id:`s1`,name:`Index + backfill`,role:`2 engineers`,accent:`var(--insight)`}],footer:`Eight engineers across three squads, with the search squad on the critical path.`},treemap:{title:`Where the codebase mass sits`,icon:`doc`,iconColor:`var(--insight)`,unit:` kLOC`,root:{label:`Atlas`,value:0,children:[{label:`core`,value:0,color:`var(--presence)`,children:[{label:`typed-core`,value:48,color:`var(--presence)`},{label:`migration`,value:22,color:`var(--presence-soft)`}]},{label:`search`,value:0,color:`var(--insight)`,children:[{label:`index`,value:39,color:`var(--insight)`},{label:`relevance`,value:17,color:`var(--insight-soft)`}]},{label:`surface`,value:0,color:`var(--warning)`,children:[{label:`web app`,value:64,color:`var(--warning)`},{label:`command bar`,value:12,color:`var(--warning-soft)`}]},{label:`shared`,value:28,color:`var(--text-muted)`}]},footer:`The web surface is still the heaviest module, search is catching up fast.`},processflow:{title:`A search query, end to end`,icon:`spark`,iconColor:`var(--insight)`,steps:[{label:`Edge`,detail:`TLS + auth at the edge`,icon:`lock`},{label:`Gateway`,detail:`Rate-limit, route, trace`,icon:`share`,branch:`cache hit → return in <20ms`},{label:`Query planner`,detail:`Parse + expand the query`,icon:`edit`},{label:`Index`,detail:`Inverted index lookup`,icon:`table`},{label:`Ranker`,detail:`Relevance + personalization`,icon:`chart`}],footer:`The planner → index → ranker hop is where the latency budget is won or lost.`},journeymap:{title:`What a developer feels adopting the new SDK`,icon:`chat`,iconColor:`var(--presence-soft)`,persona:`Integrating partner engineer`,stages:[{name:`Discover`,action:`Finds the v3 SDK in the docs`,emotion:1,touchpoints:[`Docs site`,`Changelog`],opportunity:`Lead with a 5-line quickstart`},{name:`Install`,action:`Adds the package, runs init`,emotion:1,touchpoints:[`npm`,`CLI`],opportunity:`Auto-detect the legacy config`},{name:`Migrate`,action:`Rewrites legacy search calls`,emotion:-2,touchpoints:[`Migration guide`,`Codemod`],opportunity:`Ship a codemod, this is the cliff`},{name:`Verify`,action:`Diffs results vs. v2`,emotion:0,touchpoints:[`Shadow mode`,`Parity report`],opportunity:`Surface a parity score inline`},{name:`Ship`,action:`Flips the flag in prod`,emotion:2,touchpoints:[`Dashboard`,`Alerts`],opportunity:`Celebrate + capture a quote`}],footer:`Migration is the emotional low, a codemod turns the cliff into a step.`},userpersona:{title:`Who the migration journey is for`,icon:`eye`,iconColor:`var(--presence-soft)`,name:`Priya Nandakumar`,role:`Integrating partner engineer`,quote:`I don't want to learn your whole platform, I just want my search calls to work.`,goals:[`Ship the v3 migration without a multi-week detour reading docs`,`Verify parity against v2 before flipping the flag in prod`,`Keep the integration boring, no surprise breaking changes later`],frustrations:[`The migration guide assumes she already knows our internal terms`,`No single command tells her how far the codemod actually got`,`Shadow-mode parity results are buried in a log, not surfaced inline`],behaviors:[`Skims docs for code samples first`,`Copies from the changelog, not the guide`],footer:`Priya is why the codemod and an inline parity score outrank more docs.`},swimlane:{title:`Cutover week · who does what, when`,icon:`clock`,iconColor:`var(--warning)`,ticks:[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`],lanes:[{actor:`Search squad`,sub:`Priya`,events:[{at:0,span:.35,label:`Final backfill`,detail:`Drain the last batch`,color:`var(--insight)`},{at:.4,label:`Parity sign-off`,detail:`≥99.5% match`,color:`var(--presence)`}]},{actor:`Platform`,sub:`Marco`,events:[{at:.2,span:.3,label:`Flag wiring`,detail:`Gradual ramp 1→100%`,color:`var(--presence-soft)`},{at:.75,label:`Kill legacy reads`,detail:`Decommission`,color:`var(--danger)`}]},{actor:`Surface`,sub:`Lena`,events:[{at:.5,span:.25,label:`UI smoke pass`,detail:`Command bar + views`,color:`var(--warning)`}]},{actor:`On-call`,sub:`rotation`,events:[{at:.55,span:.4,label:`Heightened watch`,detail:`5xx + p95 dashboards`,color:`var(--text-muted)`}]}],footer:`The ramp starts Tuesday; legacy reads die Thursday once parity holds.`},bubble:{title:`Feature bets · reach × effort, sized by lift`,icon:`spark`,iconColor:`var(--insight)`,xLabel:`Effort (eng-weeks)`,yLabel:`Reach (% of users)`,xDomain:[0,14],yDomain:[0,100],categories:[{name:`Must ship`,color:`var(--insight)`},{name:`Fast follow`,color:`var(--presence)`},{name:`Later`,color:`var(--text-muted)`}],points:[{label:`Search rewrite`,x:11,y:92,size:60,cat:`Must ship`},{label:`Command bar`,x:5,y:74,size:38,cat:`Must ship`},{label:`Saved views`,x:4,y:61,size:30,cat:`Fast follow`},{label:`Instant filters`,x:3,y:58,size:26,cat:`Fast follow`},{label:`Theming`,x:6,y:22,size:14,cat:`Later`}],footer:`Top-left is the sweet spot, the command bar is the best reach-per-week after search.`},matrixgrid:{title:`Dependency matrix · who blocks whom`,icon:`layers`,iconColor:`var(--warning)`,rowLabels:[`Core`,`Index`,`Ranker`,`Cmd bar`,`Views`],colLabels:[`Core`,`Index`,`Rank`,`Cmd`,`View`],cells:[[0,0,0,0,0],[3,0,0,0,0],[1,3,0,0,0],[0,3,2,0,0],[1,2,0,0,0]],min:0,max:3,accent:`var(--warning)`,unit:``,legend:[`no dep`,`hard dep`],footer:`Read down a column to see what it unblocks, the index unblocks almost everything.`},treetable:{title:`Issue backlog by area`,icon:`table`,iconColor:`var(--insight)`,valueLabel:`Open`,accent:`var(--insight)`,nodes:[{label:`Search`,value:`108`,pct:.44,tag:`critical`,color:`var(--insight)`,open:!0,children:[{label:`Index + backfill`,value:`61`,pct:.25,color:`var(--insight)`},{label:`Relevance tuning`,value:`29`,pct:.12,color:`var(--insight-soft)`},{label:`Shadow parity`,value:`18`,pct:.07,color:`var(--presence-soft)`}]},{label:`Platform`,value:`74`,pct:.3,color:`var(--presence-soft)`,children:[{label:`Migration shim`,value:`40`,pct:.16,color:`var(--presence-soft)`},{label:`Observability`,value:`34`,pct:.14,color:`var(--text-muted)`}]},{label:`Surface`,value:`66`,pct:.26,color:`var(--warning)`,children:[{label:`Command bar`,value:`38`,pct:.15,color:`var(--warning)`},{label:`Saved views`,value:`28`,pct:.11,color:`var(--warning-soft)`}]}],footer:`248 open issues, search carries nearly half, concentrated in the backfill.`},footnotetable:{title:`Release readiness scorecard`,icon:`check`,iconColor:`var(--presence-soft)`,columns:[`Workstream`,`Status`,`Confidence`,`Gate`],rows:[{cells:[{v:`Typed core`},{v:`Shipped`,color:`var(--presence)`},{v:`High`},{v:`Passed`}]},{cells:[{v:`Search index`},{v:`In flight`,color:`var(--insight)`,note:1},{v:`Medium`,note:2},{v:`W7`}]},{cells:[{v:`Command bar`},{v:`Not started`,color:`var(--text-muted)`},{v:`Medium`},{v:`W10`}]},{cells:[{v:`Legacy retire`},{v:`Blocked`,color:`var(--danger)`,note:3},{v:`Low`},{v:`W11`}]}],notes:[`Backfill is <b>88% complete</b>; the final batch lands in W6.`,`Confidence is gated on the <mark>shadow-read parity</mark> result, expected ≥99.5%.`,`Blocked until cutover, we cannot retire legacy reads before the flag flips.`],footer:`Two greens, one in flight, one blocked behind cutover. No surprises.`},tabs:{title:`The detail, by lens`,icon:`doc`,iconColor:`var(--insight)`,accent:`var(--insight)`,defaultTab:0,tabs:[{label:`Scope`,icon:`layers`,badge:5,body:`<b>In:</b> typed core, new search index, command bar, saved views, instant filters. <b>Ou…`},{label:`Risks`,icon:`alert`,badge:3,body:`The <mark>backfill</mark> is the top risk and already 7 days long. Secondary risks: relev…`},{label:`Metrics`,icon:`chart`,body:`Headline: search <b>p95 < 400ms</b>, cold load <b>< 1.2s</b>, <b>zero 5xx</b> on cutover,…`},{label:`Rollout`,icon:`send`,body:`Flag-gated ramp 1% → 100% across cutover week, shadow-read parity as the go/no-go gate, i…`}],footer:`Tap a lens, same plan, four angles.`},deflist:{title:`Glossary`,icon:`quote`,iconColor:`var(--text-muted)`,placeholder:`Filter terms…`,items:[{term:`Dual-write`,def:`Writing every change to <b>both</b> the legacy and new stores during migration so we can …`,tag:`migration`,color:`var(--presence-soft)`},{term:`Shadow read`,def:`Running the new index <mark>silently</mark> alongside legacy and diffing results to measu…`,tag:`search`,color:`var(--insight)`},{term:`Backfill`,def:`Indexing the existing 41M documents into the new structure before cutover.`,tag:`search`,color:`var(--insight)`},{term:`p95`,def:`The latency the <b>95th-percentile</b> request stays under, our headline speed metric.`,tag:`metrics`,color:`var(--warning)`},{term:`Cutover`,def:`The moment we flip read traffic from legacy to the new index.`,tag:`rollout`,color:`var(--danger)`}],footer:`Five terms that show up in every standup.`},faq:{title:`Questions the team keeps asking`,icon:`chat`,iconColor:`var(--presence-soft)`,defaultOpen:0,multi:!1,items:[{q:`Why re-platform instead of patching v2?`,a:`Three services with diverging schemas made every search change a three-way migration. One…`,tag:`strategy`},{q:`What happens if the backfill slips again?`,a:`The flag stays at 0% and we ship the command bar against the <mark>legacy</mark> index as…`,tag:`risk`},{q:`Can partners stay on the old SDK?`,a:`Yes, the v2 SDK is supported through the end of next quarter. A codemod migrates 90% of c…`,tag:`sdk`},{q:`How do we roll back during cutover?`,a:`The flag flips read traffic back to legacy in seconds. We keep legacy reads warm until W1…`,tag:`rollout`}],footer:`If your question is not here, drop it in #atlas-v3 and we will add it.`},accordion:{title:`The rollout plan, section by section`,icon:`layers`,iconColor:`var(--presence)`,defaultOpen:0,multi:!1,sections:[{label:`Phase 1, Typed core behind a flag`,icon:`shield`,meta:`Weeks 1–4`,tag:`foundation`,body:`Stand up the single typed search core, dark-shipped at <b>0%</b> traffic. Every read stil…`},{label:`Phase 2, Backfill & shadow reads`,icon:`clock`,meta:`Weeks 5–8`,tag:`migration`,tagColor:`var(--warning)`,body:`Backfill the historical index and ramp shadow reads to 100%. The gate to advance is a <ma…`},{label:`Phase 3, Cutover to GA`,icon:`check`,meta:`Weeks 9–11`,tag:`launch`,tagColor:`var(--insight)`,body:`Flip read traffic over in steps (5 → 25 → 100%), keeping legacy reads warm the whole time…`}],footer:`Each phase is independently reversible, the flag is the safety net at every step.`},riskmatrix:{title:`Launch risk matrix`,icon:`shield`,size:5,caption:`Likelihood × impact, scored 1–5`,risks:[{label:`Onboarding drop-off`,likelihood:4,impact:4,owner:`Growth`,mitigation:`Ship the 3-step guided setup and instrument each step before GA.`},{label:`Scaling spikes`,likelihood:3,impact:5,owner:`Platform`,mitigation:`Load-test to 5× peak; add autoscaling and a read-replica fallback.`},{label:`Pricing confusion`,likelihood:3,impact:2,owner:`GTM`,mitigation:`Simplify to three tiers; add an in-app plan comparison.`},{label:`Data migration errors`,likelihood:2,impact:4,owner:`Data`,mitigation:`Dry-run on a shadow copy; reconcile row counts before cutover.`},{label:`Support backlog`,likelihood:2,impact:2,owner:`Support`,mitigation:`Pre-write a help-center launch FAQ and staff a launch-week rota.`}],footer:`<b>Onboarding drop-off</b> and <b>scaling spikes</b> sit in the red band — gate GA on bot…`},threatmodel:{title:`Threat model — the Atlas v3 search path`,icon:`shield`,iconColor:`var(--danger)`,assets:[{id:`client`,name:`Web / mobile client`,kind:`external-entity`},{id:`gateway`,name:`API Gateway`,kind:`process`},{id:`search`,name:`Search Service`,kind:`process`},{id:`auth`,name:`Auth Service`,kind:`process`},{id:`userdb`,name:`User DB`,kind:`datastore`}],boundaries:[{label:`Public internet`,contains:[`client`]},{label:`Application tier`,contains:[`gateway`,`search`,`auth`]},{label:`Data tier`,contains:[`userdb`,`index`]}],threats:[{assetId:`gateway`,stride:`spoofing`,mitigation:`mTLS + signed JWT on every internal hop.`,status:`mitigated`},{assetId:`gateway`,stride:`repudiation`,mitigation:`Structured audit log per request.`,status:`mitigated`},{assetId:`auth`,stride:`tampering`,mitigation:`Request signing lands with RFC-114 phase 2.`,status:`open`},{assetId:`search`,stride:`info-disclosure`,mitigation:`Field-level redaction on index responses.`,status:`mitigated`},{assetId:`index`,stride:`dos`,mitigation:`Rate limiting at the gateway.`,status:`mitigated`}],footer:`Two threats are still open — request signing on Auth ships with RFC-114 phase 2, and the …`},pricingtable:{title:`Simplified to three tiers`,icon:`cart`,iconColor:`var(--presence)`,caption:`Resolves the "pricing confusion" risk above.`,plans:[{name:`Starter`,price:`$29`,period:`/mo`,tagline:`Solo + small teams`},{name:`Growth`,price:`$79`,period:`/mo`,tagline:`Most teams start here`,ctaLabel:`Recommended`,highlighted:!0},{name:`Scale`,price:`Custom`,tagline:`Org-wide rollout`,ctaLabel:`Talk to sales`}],features:[{label:`Seats`,values:[`Up to 5`,`Up to 25`,`Unlimited`]},{label:`Atlas search`,values:[!0,!0,!0]},{label:`Guided onboarding`,values:[!1,!0,!0]},{label:`Autoscaling`,values:[!1,!0,!0]},{label:`Migration support`,values:[!1,`Self-serve`,`White-glove`]}],footer:`Down from five overlapping tiers today, one plan per team size instead of per feature.`},raci:{title:`Who owns the launch`,icon:`table`,iconColor:`var(--presence)`,tasks:[`Search rewrite`,`Data migration`,`Onboarding redesign`,`Autoscaling rollout`,`Launch comms`],roles:[`Engineering`,`Product`,`Design`,`GTM`,`Support`],cells:[{task:`Search rewrite`,role:`Engineering`,rating:`R`},{task:`Search rewrite`,role:`Product`,rating:`A`},{task:`Search rewrite`,role:`Design`,rating:`C`},{task:`Search rewrite`,role:`GTM`,rating:`I`},{task:`Search rewrite`,role:`Support`,rating:`I`}],footer:`<b>Product is Accountable</b> on every workstream but the two engineering-only builds — t…`},dimensiondrawing:{title:`Mounting bracket — shop drawing`,icon:`edit`,iconColor:`var(--presence)`,outline:[{x:0,y:0},{x:60,y:0},{x:60,y:18},{x:18,y:18},{x:18,y:50}],dimensions:[{from:[0,0],to:[60,0],label:`60`},{from:[0,0],to:[0,50],label:`50`},{from:[0,0],to:[18,0],label:`18`},{from:[60,0],to:[60,18],label:`18`}],tolerance:`±0.1 unless noted`,titleBlock:{part:`BRK-204`,scale:`1:1`,units:`mm`},caption:`L-bracket profile with overall envelope and flange dimensions called out.`,footer:`The dimension lines read the <b>true profile</b> — the drawing auto-fits to scale, so the…`},explodedview:{title:`Flat-pack stool — exploded view`,icon:`layers`,iconColor:`var(--presence)`,axis:`vertical`,parts:[{n:1,name:`Seat panel`,qty:1},{n:2,name:`Tapered leg`,qty:4},{n:3,name:`M6 hex bolt`,qty:8},{n:4,name:`Cam lock`,qty:4},{n:5,name:`Allen wrench`,qty:1}],caption:`Five distinct part types thread onto the centerline in assembly order.`,footer:`Eighteen pieces, <b>five part types</b> — the balloon numbers match the parts list so you…`},weldsymbol:{title:`Bracket-to-base weld callout`,icon:`edit`,iconColor:`var(--warning)`,joint:`fillet`,side:`arrow`,size:`6`,length:`50`,pitch:`100`,process:`GMAW`,caption:`A 6&nbsp;mm fillet on the arrow side, welded intermittently 50&nbsp;long every 100.`,footer:`The glyph below the reference line means <b>arrow-side</b>; <b>50-100</b> reads “50&nbsp;…`},cutlist:{title:`Bookcase — plywood cut list`,icon:`layers`,iconColor:`var(--insight)`,unit:`mm`,stock:{w:2440,h:1220,label:`18mm birch ply — 8×4 sheet`},parts:[{label:`Side`,w:1180,h:360,qty:2},{label:`Shelf`,w:780,h:340,qty:3},{label:`Top`,w:1180,h:340,qty:1},{label:`Base`,w:1180,h:340,qty:1}],caption:`Seven parts nested onto one sheet; the leftover strip is the offcut.`,footer:`All seven parts nest from a <b>single 8×4 sheet</b> at <b>82% yield</b> — one trip to the…`},linebalance:{title:`Bookcase assembly line — station balance`,icon:`chart`,iconColor:`var(--presence)`,takt:90,unit:`s`,stations:[{name:`Panel cut + edge-band`,cycleTime:74},{name:`Dowel + glue-up`,cycleTime:82},{name:`Clamp + cure`,cycleTime:68},{name:`Hardware install`,cycleTime:101,bottleneck:!0},{name:`Inspect + pack`,cycleTime:58}],footer:`Demand sets a <b>90s takt</b>; hardware install runs 101s and is the one station pulling …`},moodboard:{title:`The mood`,icon:`image`,iconColor:`var(--presence)`,tiles:[{kind:`image`,span:2,rows:2,from:`var(--presence-deep)`,to:`var(--presence-soft)`,label:`Sete Cidades · twin lakes from the rim`,src:`/demo-assets/images/sete-cidades.jpg`},{kind:`text`,span:2,text:`Calm, vast, green. Let the landscape be the loud thing.`},{kind:`color`,swatch:`var(--presence)`,hex:`#2f9e7a`,label:`Caldera green`},{kind:`image`,from:`var(--text-muted)`,to:`var(--presence-soft)`,label:`Green coast · hydrangeas`,src:`/demo-assets/images/green-coast.jpg`},{kind:`color`,swatch:`var(--insight)`,hex:`#6ea8ff`,label:`Atlantic grey-blue`}],footer:`Eight tiles pulled straight from your folder, drag to re-rank what leads.`},palette:{title:`The colorway`,icon:`sparkle`,iconColor:`var(--insight)`,swatches:[{name:`Caldera`,hex:`#1d6b4f`,contrast:`AAA`},{name:`Moss`,hex:`#2f9e7a`,contrast:`AA`},{name:`Atlantic`,hex:`#3f6f9c`,contrast:`AAA`},{name:`Mist`,hex:`#cdd8d4`,contrast:`fail`,light:!0},{name:`Ochre`,hex:`#e8b04b`,contrast:`fail`,light:!0}],footer:`Grade every shot toward these, Mist and Ochre stay accents only.`},photo:{title:`Mood frame`,src:`/demo-assets/images/capelinhos.jpg`,alt:`Capelinhos lighthouse on the volcanic ashfield, Faial`,caption:`Reference frame, match the grade and light to this.`},geomap:{title:`The route, mapped`,icon:`share`,iconColor:`var(--presence)`,markers:[{lat:37.7412,lng:-25.6756,name:`Ponta Delgada`,detail:`Base · fly in, two nights to settle.`,color:`var(--text-muted)`},{lat:37.8607,lng:-25.7936,name:`Sete Cidades`,detail:`Day 2 · twin lakes, shoot the rim at first light.`,color:`var(--presence)`},{lat:37.8217,lng:-25.4036,name:`Gorreana tea`,detail:`Day 4 · Europe's only tea estate, green terraces.`,color:`var(--warning)`},{lat:37.7726,lng:-25.3094,name:`Furnas`,detail:`Day 5 · steam vents + the hot-spring gardens.`,color:`var(--insight)`},{lat:37.8297,lng:-25.1456,name:`Nordeste`,detail:`Day 6 · cliff viewpoints, the quiet east.`,color:`var(--presence-soft)`}],footer:`Tap a pin for the why, golden hours are pinned to each stop.`},bars:{title:`Days per region`,icon:`globe`,iconColor:`var(--insight)`,unit:` days`,bars:[{label:`West · Sete Cidades`,value:2},{label:`Central · Ponta Delgada`,value:2},{label:`East · Furnas & Nordeste`,value:3,hot:!0}],footer:`The green east gets the most time, it earns it.`},storystrip:{title:`The arc of the film`,icon:`play`,iconColor:`var(--presence)`,panels:[{heading:`Arrival`,icon:`globe`,body:`Land in the grey. Wet cobbles, low cloud, set the calm.`,color:`var(--text-muted)`,caption:`Day 1`},{heading:`The rim`,icon:`image`,body:`Climb to Sete Cidades. The green opens up. This is the breath.`,color:`var(--presence)`,caption:`Day 2`},{heading:`The work`,icon:`spark`,body:`Tea terraces and steam. People in the landscape, hands, not faces.`,color:`var(--warning)`,caption:`Day 4–5`},{heading:`The edge`,icon:`share`,body:`Nordeste cliffs. The vastness pays off. Let a shot run long.`,color:`var(--insight)`,caption:`Day 6`},{heading:`Leaving`,icon:`send`,body:`Back to grey, but changed. End on still water.`,color:`var(--presence-soft)`,caption:`Day 7`}],footer:`Five beats, calm, breath, work, edge, return.`},carousel:{title:`Hero-shot candidates`,icon:`image`,iconColor:`var(--insight)`,start:0,slides:[{label:`Lakes from the rim`,caption:`The poster frame, wide, symmetrical.`,from:`var(--presence-deep)`,to:`var(--presence-soft)`,tag:`open`,src:`/demo-assets/images/sete-cidades.jpg`},{label:`Green coast`,caption:`Lead line through the hydrangeas.`,from:`var(--insight)`,to:`var(--presence)`,tag:`transition`,src:`/demo-assets/images/green-coast.jpg`},{label:`Furnas lake`,caption:`Still, mood-heavy, the mid.`,from:`var(--text-muted)`,to:`var(--warning)`,tag:`mid`,src:`/demo-assets/images/furnas-lake.jpg`},{label:`Basalt cliffs`,caption:`The held wide, the close.`,from:`var(--presence)`,to:`var(--insight)`,tag:`close`,src:`/demo-assets/images/basalt-cliffs.jpg`}],footer:`Swipe through the four anchor frames the cut hangs on.`},lightbox:{title:`Shot list · the grid`,icon:`layers`,iconColor:`var(--presence)`,items:[{label:`Ponta Delgada · arrival`,caption:`Day 1 · 35mm · grey`,from:`var(--text-muted)`,to:`var(--presence-deep)`,src:`/demo-assets/images/ponta-delgada.jpg`},{label:`Twin lakes · wide`,caption:`Day 2 · 24mm · golden`,from:`var(--presence-deep)`,to:`var(--presence-soft)`,src:`/demo-assets/images/sete-cidades.jpg`},{label:`Patchwork fields · detail`,caption:`Day 4 · 85mm · interior`,from:`var(--warning)`,to:`var(--presence)`,src:`/demo-assets/images/patchwork-fields.jpg`},{label:`Furnas lake · mood`,caption:`Day 5 · 50mm · still`,from:`var(--insight)`,to:`var(--text-muted)`,src:`/demo-assets/images/furnas-lake.jpg`},{label:`Cliff edge · held`,caption:`Day 6 · 24mm · vast`,from:`var(--presence)`,to:`var(--insight)`,src:`/demo-assets/images/cliff-fields.jpg`}],footer:`Click any tile to open it full-frame.`},beforeafter:{title:`The grade`,icon:`sparkle`,iconColor:`var(--warning)`,before:{label:`RAW`,from:`var(--text-muted)`,to:`var(--presence-deep)`,caption:`Flat, cool, true to sensor`,src:`/demo-assets/images/overcast-coast.jpg`},after:{label:`Graded`,from:`var(--presence)`,to:`var(--insight)`,caption:`Greens lifted, mist warmed`,src:`/demo-assets/images/green-coast.jpg`},position:46,footer:`Drag the divider, the look is a soft green lift with crushed basalt shadows.`},imagecallouts:{title:`Composing the rim shot`,icon:`eye`,iconColor:`var(--insight)`,image:{from:`var(--presence-deep)`,to:`var(--presence-soft)`,label:`Sete Cidades · the wide`,src:`/demo-assets/images/sete-cidades.jpg`},callouts:[{x:50,y:24,label:`Horizon high`,detail:`Sky to the top third, land is the subject.`,color:`var(--presence)`},{x:22,y:60,label:`Blue lake`,detail:`Anchor the left third with the deeper water.`,color:`var(--insight)`},{x:74,y:62,label:`Green lake`,detail:`Balance with the warm green on the right.`,color:`var(--warning)`},{x:50,y:86,label:`Foreground rim`,detail:`A sliver of basalt grounds the frame.`,color:`var(--text-muted)`}],footer:`Four pins for the one frame everything else supports.`},annotcallouts:{title:`Contact sheet · notes`,icon:`doc`,iconColor:`var(--presence)`,caption:`Day 2 selects, what made the cut and why.`,ratio:1.7777777777777777,callouts:[{x:20,y:30,label:`01 · keep`,note:`Cleanest horizon line of the morning, <b>this is the poster</b>.`,color:`var(--presence)`},{x:56,y:26,label:`02 · maybe`,note:`Nice light, but a tourist on the path. <mark>Clone-out or cut.</mark>`,color:`var(--warning)`},{x:38,y:70,label:`03 · cut`,note:`Cloud went flat here, no separation in the greens.`,color:`var(--danger)`},{x:80,y:64,label:`04 · keep`,note:`The transition frame for the hydrangea road.`,color:`var(--insight)`}],footer:`Pins map to the selects in your edit folder.`},videoembed:{title:`The 90-second cut`,icon:`play`,iconColor:`var(--presence)`,thumb:{from:`var(--presence-deep)`,to:`var(--insight)`,label:`São Miguel · a quiet film`},video:`/demo-assets/video/azores-film.mp4`,poster:`/demo-assets/images/basalt-cliffs.jpg`,durationLabel:`1:32`,active:1,chapters:[{time:`0:00`,at:0,title:`Cold open · the grey`},{time:`0:18`,at:20,title:`The rim opens up`},{time:`0:44`,at:48,title:`Tea, steam, hands`},{time:`1:06`,at:72,title:`Nordeste · the held wide`},{time:`1:24`,at:91,title:`Still water · out`}],footer:`Chapters line up with the five-beat arc above.`},waveform:{title:`Scratch track`,icon:`speaker`,iconColor:`var(--insight)`,durationLabel:`1:32`,color:`var(--presence)`,position:22,bars:[.12,.2,.16,.3,.42],markers:[{at:20,label:`swell in`},{at:48,label:`rhythm`},{at:91,label:`tail out`}],footer:`Ambient piano under field-recorded wind, builds with the arc.`},sankey:{title:`How the seven days flow`,icon:`chart`,iconColor:`var(--presence)`,unit:` days`,nodes:[{id:`trip`,label:`7 days`,layer:0,color:`var(--presence)`},{id:`west`,label:`West coast`,layer:1,color:`var(--insight)`},{id:`east`,label:`East coast`,layer:1,color:`var(--warning)`},{id:`base`,label:`Base · PDL`,layer:1,color:`var(--text-muted)`},{id:`shoot`,label:`Shoot days`,layer:2,color:`var(--presence-soft)`}],links:[{source:`trip`,target:`west`,value:2},{source:`trip`,target:`east`,value:3},{source:`trip`,target:`base`,value:2},{source:`west`,target:`shoot`,value:2},{source:`east`,target:`shoot`,value:2}],footer:`Five real shoot days, two to scout and breathe.`},proscons:{title:`Drone, pack it?`,icon:`layers`,iconColor:`var(--insight)`,prosLabel:`Bring it`,consLabel:`Leave it`,pros:[{text:`The rim wides are <b>made</b> for the air`,weight:5,note:`Sete Cidades from above is the signature frame.`},{text:`Cliff scale at Nordeste`,weight:4},{text:`Light to carry`,weight:2}],cons:[{text:`Azores wind is <mark>relentless</mark>`,weight:4,note:`Gusts over the calderas are no joke.`},{text:`No-fly near Furnas park`,weight:3},{text:`One more battery system`,weight:2}],verdict:`Pack it, but plan air shots for the <b>calm dawn windows only</b>.`,footer:`Weighted on the frames you actually need.`},casestudy:{title:`A reference that worked`,icon:`spark`,iconColor:`var(--warning)`,subject:`How a 3-day Faroe Islands edit hit a calm, vast feel`,defaultStage:`result`,setup:{body:`Same brief, different rock: <b>calm, green, vast</b>, and the same grey-light problem.`},action:{body:`They shot almost entirely at the <mark>edges of the day</mark> and graded toward two colo…`,metric:`2-color grade`},result:{body:`The film felt like one breath. It traveled, picked up by three travel outlets in a week.`,metric:`1.2M views`},lesson:{body:`Constraint is the look. Fewer colors, fewer hours, more patience.`},footer:`We're borrowing the two-color discipline, moss + slate.`},pullquote:{title:`The line we shoot to`,icon:`quote`,iconColor:`var(--presence)`,quote:`Let the landscape be the loud thing, and stand still long enough to hear it.`,author:`Your brief`,role:`"calm, green, vast"`,tone:`success`,variants:[{quote:`No fast cuts. The island has one speed; match it.`,author:`Edit note`},{quote:`Hands in the frame, never faces, let it stay a place, not a portrait.`,author:`Shot rule`}],footer:`Pinned above the timeline for the whole edit.`},takeaways:{title:`The brief in five`,icon:`check`,iconColor:`var(--insight)`,heading:`What to remember on the island`,items:[{text:`Shoot the <b>edges of the day</b>, grey midday is for scouting.`,color:`var(--presence)`,detail:`Golden + blue hour are pinned per stop.`},{text:`Grade toward <b>moss + slate</b>; ochre is an accent only.`,color:`var(--warning)`},{text:`Hold the wides <b>long</b>, let vastness breathe.`,color:`var(--insight)`,detail:`Min 8 seconds on the cliff and rim shots.`},{text:`Keep <b>Day 2 & 3 open</b> for the one clear rim morning.`,color:`var(--text-muted)`},{text:`Hands, not faces, keep it a place.`,color:`var(--presence-soft)`}],footer:`Tap each as you bag it.`},skeleton:{title:`Pulling 12 more refs`,icon:`image`,iconColor:`var(--text-muted)`,variant:`media`,rows:4,loadedLabel:`Show what loaded`,footer:`Importing the rest of your saved pins, the board grows as they land.`},emptystate:{title:`Soundtrack`,icon:`speaker`,iconColor:`var(--insight)`,art:`spark`,headline:`No licensed track yet`,copy:`The cut is running on a scratch piano. Pick a final track and I'll <b>re-time the chapter…`,action:`Browse calm scores`,actionIcon:`play`,secondary:`Keep the scratch`,color:`var(--presence)`,footer:`One missing piece before this film is shareable.`},mediacard:{title:`Reference film to study before the cut`,icon:`play`,iconColor:`var(--presence)`,cover:{src:`/demo-assets/images/sete-cidades.jpg`,from:`var(--presence-deep)`,to:`var(--presence-soft)`},year:`2018`,runtime:`1h 32m`,rating:`TV-PG`,score:88,genres:[`Travel`,`Documentary`,`Slow cinema`],logline:`A patient, near-wordless portrait of a volcanic island in the Atlantic — mist over calder…`,providers:[`Mubi`,`Criterion`,`Vimeo`],footer:`Watch the first ten minutes for pacing, then mirror its wide-to-still rhythm.`},voicestyle:{title:`Your Writing Voice`,icon:`spark`,iconColor:`var(--presence)`,traits:[{trait:`Short, punchy sentences`,example:`Ship it. Then iterate.`},{trait:`Dry, understated humour`},{trait:`Leads with the verb`},{trait:`Skips the warm-up`,example:`No "I hope this finds you well."`}],sample:{generic:`I wanted to reach out to let you know that we have completed the project and it is now re…`,inYourVoice:`Project's done. Ready for your eyes whenever.`},footer:`Learned from <b>40 of your messages</b> — I'll keep this on for drafts.`},exposuretriangle:{title:`Portrait exposure`,icon:`image`,iconColor:`var(--presence)`,aperture:`f/2.8`,shutter:`1/250`,iso:200,ev:`EV 11`,effects:[{axis:`aperture`,note:`Shallow depth of field — soft, blurred background.`},{axis:`shutter`,note:`Fast enough to freeze a small head turn.`},{axis:`iso`,note:`Low ISO keeps skin tones clean and noise-free.`}],caption:`A classic available-light portrait: wide aperture to isolate the subject, low ISO for cle…`},colorwheel:{title:`Triadic color scheme`,icon:`spark`,iconColor:`var(--presence)`,baseHue:210,harmony:`triad`,swatches:[{hue:210,hex:`#2f80ed`,role:`base`},{hue:330,hex:`#e84393`,role:`accent`},{hue:90,hex:`#8cc63f`,role:`accent`}],caption:`Three hues spaced 120° apart — vivid and balanced, with one dominant and two supporting.`},artanalysis:{title:`Reading the composition`,icon:`image`,iconColor:`var(--presence)`,overlay:`thirds`,regions:[{x:56,y:22,w:32,h:46,label:`Subject`},{x:8,y:58,w:30,h:30,label:`Foreground`}],palette:[{hex:`#e8c39e`,role:`highlight`},{hex:`#b5723a`,role:`midtone`},{hex:`#2e2117`,role:`shadow`}],notes:[{label:`Composition`,text:`The subject sits on the right vertical third — the eye lands there first.`},{label:`Light`,text:`Warm key light from frame-left rakes across the form, deep shadow on the right.`},{label:`Style`,text:`A restrained earth palette gives a quiet, classical feel.`}],caption:`A rule-of-thirds read: the focal subject anchored on the right intersection.`},shotlist:{title:`Opening scene — shot breakdown`,icon:`play`,iconColor:`var(--warning)`,shots:[{n:1,size:`WS`,movement:`Slow push-in`,lens:`24mm`,duration:`6s`,action:`Establish the empty studio at dawn; light bleeds across the floor as she steps into frame.`},{n:2,size:`MS`,movement:`Static`,lens:`50mm`,duration:`4s`,action:`She sets the camera down and exhales, reading the room.`,dialogue:`Okay. One more time, from the top.`},{n:3,size:`CU`,movement:`Slight rack focus`,lens:`85mm`,duration:`3s`,action:`Her hands frame the shot on the small monitor; focus pulls from fingers to screen.`},{n:4,size:`OTS`,movement:`Handheld drift`,lens:`35mm`,duration:`5s`,action:`From behind her shoulder we see the playback begin — the take she has been chasing.`,dialogue:`There it is.`}],caption:`Wide to establish, then tighten with each beat so the room shrinks to a single decisive m…`},runofshow:{title:`Coastal shoot day — run of show`,icon:`clock`,iconColor:`var(--presence)`,eventDate:`Day 3 · Ponta da Ferraria`,cues:[{time:`5:40 AM`,cue:`Crew call, load the van`,owner:`Mara`,state:`done`},{time:`6:15 AM`,cue:`Sunrise coastline wides`,owner:`Mara`,duration:`25 min`,state:`done`},{time:`7:10 AM`,cue:`Drone pass, north cliffs`,owner:`Dev`,duration:`20 min`,state:`live`},{time:`8:00 AM`,cue:`Interview setup, hot spring overlook`,owner:`Théo`,duration:`15 min`,state:`next`},{time:`8:30 AM`,cue:`Interview take`,owner:`Mara`,duration:`30 min`}],footer:`The drone window closes once wind picks up after 7:30 — Dev is racing it now.`},beatsheet:{title:`Beat sheet`,icon:`edit`,iconColor:`var(--presence)`,framework:`Save the Cat`,beats:[{name:`Opening Image`,at:`1%`,line:`A snapshot of the flawed world before anything changes.`},{name:`Catalyst`,at:`10%`,line:`The call that breaks the routine and forces a choice.`},{name:`Break into Two`,at:`20%`,line:`The hero commits and crosses into the new world.`},{name:`Midpoint`,at:`50%`,line:`A false victory (or defeat) raises the stakes for real.`},{name:`All Is Lost`,at:`75%`,line:`The lowest point — the old way clearly fails.`}],tension:[1,2,3,5,8],caption:`Tension climbs to the Midpoint, dips at the false low, then spikes through the Finale.`},craftchart:{title:`Cross-stitch heart motif`,icon:`edit`,iconColor:`var(--insight)`,craft:`crossstitch`,rows:12,cols:12,cells:[{r:1,c:2,color:`var(--danger)`,symbol:`×`},{r:1,c:3,color:`var(--danger)`,symbol:`×`},{r:1,c:8,color:`var(--danger)`,symbol:`×`},{r:1,c:9,color:`var(--danger)`,symbol:`×`},{r:2,c:1,color:`var(--danger)`,symbol:`×`}],legend:[{symbol:`×`,color:`var(--danger)`,meaning:`DMC 321 — red (full cross-stitch)`},{symbol:`o`,color:`var(--warning-soft)`,meaning:`DMC 819 — pale pink (highlight glint)`},{meaning:`Blank — leave the fabric unworked`}],caption:`Work each ×: bring the needle up at the bottom-left of the square and down at the top-rig…`},patternpiece:{title:`Simple tote bag — cutting layout`,icon:`edit`,iconColor:`var(--presence)`,fabric:{w:90,h:70,label:`90 × 70 cm cotton canvas (folded)`},pieces:[{label:`Body panel`,w:38,h:42,x:0,y:4,fold:!0,qty:1},{label:`Lining panel`,w:38,h:42,x:44,y:4,fold:!0,qty:1},{label:`Strap`,w:70,h:8,x:4,y:52,qty:2}],unit:`cm`,caption:`Body and lining are cut on the fold; the two carry straps nest along the bottom.`},storyarc:{title:`Short-Film Arc — Freytag`,icon:`layers`,iconColor:`var(--presence)`,framework:`freytag`,beats:[{stage:`Rising Action`,label:`The storm rolls in`},{stage:`Climax`,label:`The lighthouse fails`},{stage:`Falling Action`,label:`Dawn rescue`}]},castmap:{title:`Cast Map — The Keeper`,icon:`share`,iconColor:`var(--presence)`,nodes:[{id:`elara`,name:`Elara`,role:`The lighthouse keeper`,faction:`The Island`},{id:`mira`,name:`Mira`,role:`A runaway she shelters`,faction:`The Island`},{id:`bram`,name:`Old Bram`,role:`The keeper before her`,faction:`The Island`},{id:`davo`,name:`Captain Davo`,role:`Master of the Wrenn`,faction:`The Sea`},{id:`tomas`,name:`Tomas`,role:`Davo's first mate`,faction:`The Sea`}],links:[{from:`elara`,to:`mira`,kind:`ally`,label:`shelters`},{from:`bram`,to:`elara`,kind:`mentor`,label:`taught the light`},{from:`davo`,to:`mira`,kind:`family`,label:`her father`},{from:`elara`,to:`davo`,kind:`ally`,label:`saves the Wrenn`},{from:`warden`,to:`mira`,kind:`rival`,label:`hunts`}],caption:`Who protects whom — and who is hunting the runaway.`,footer:`The hidden <strong>father</strong> and the first mate’s <strong>betrayal</strong> are the…`},devicemark:{title:`Literary Devices — Opening Line`,text:`The lighthouse stood like a silent sentinel, its beam sweeping the hungry dark with the p…`,marks:[{phrase:`like a silent sentinel`,device:`simile`,note:`compares the lighthouse to a guard`},{phrase:`hungry dark`,device:`personification`,note:`darkness described as if it consumes`},{phrase:`patience of the tide`,device:`metaphor`,note:`slow, inevitable rhythm`}]},creativetest:{title:`Two launch posts for the film`,icon:`image`,iconColor:`var(--presence)`,variants:[{label:`Variant A · wide rim shot`,src:`/demo-assets/images/sete-cidades.jpg`,headline:`Seven days. One quiet island.`,metrics:[{label:`CTR`,value:`2.1%`},{label:`Saves`,value:`340`},{label:`Watch-through`,value:`38%`}]},{label:`Variant B · crater at dusk`,src:`/demo-assets/images/crater-panorama.jpg`,headline:`The film I almost didn't make.`,metrics:[{label:`CTR`,value:`3.4%`,delta:`+1.3pp`,deltaDir:`good`},{label:`Saves`,value:`812`,delta:`+472`,deltaDir:`good`},{label:`Watch-through`,value:`61%`,delta:`+23pp`,deltaDir:`good`}]}],winner:1,footer:`Variant B wins on every metric, the confessional hook out-pulls pure scenery.`},brandguide:{title:`The São Miguel story kit`,icon:`doc`,iconColor:`var(--insight)`,colors:[{name:`Caldera`,hex:`#1d6b4f`,contrast:`AAA`},{name:`Moss`,hex:`#2f9e7a`,contrast:`AA`},{name:`Atlantic`,hex:`#3f6f9c`,contrast:`AAA`},{name:`Mist`,hex:`#cdd8d4`,contrast:`fail`,light:!0},{name:`Ochre`,hex:`#e8b04b`,contrast:`fail`,light:!0}],typography:[{name:`Display`,sample:`'Iowan Old Style', Georgia, serif`,weight:`600`},{name:`Caption`,sample:`ui-sans-serif, system-ui, sans-serif`,weight:`500`},{name:`Overlay numerals`,sample:`ui-monospace, 'JetBrains Mono', monospace`,weight:`600`}],voiceNotes:[`Short sentences, let the landscape do the talking.`,`One plain claim per caption, no exclamation points.`,`Always name the place, never just "the island."`],footer:`Apply this to every caption and thumbnail before it ships.`},musicstaff:{title:`C major scale (treble clef)`,icon:`sparkle`,iconColor:`var(--presence)`,clef:`treble`,timeSignature:`4/4`,tempo:120,notes:[{pitch:`C4`,duration:`quarter`},{pitch:`D4`,duration:`quarter`},{pitch:`E4`,duration:`quarter`},{pitch:`F4`,duration:`quarter`},{pitch:`G4`,duration:`quarter`}],footer:`C major uses only white keys, no sharps or flats. Every other major scale is this same pa…`},flashcard:{title:`Interval ear-training deck`,icon:`spark`,iconColor:`var(--warning)`,cards:[{front:`Perfect 5th (C → G)`,back:`Sounds like: "Twinkle Twinkle" opening. 7 semitones. The power chord of classical harmony.`},{front:`Major 3rd (C → E)`,back:`Sounds like: "When the Saints Go Marching In." 4 semitones. Defines a major chord.`},{front:`Minor 3rd (A → C)`,back:`Sounds like: "Smoke on the Water" riff. 3 semitones. Defines a minor chord, darker colour.`},{front:`Octave (C4 → C5)`,back:`Sounds like: "Somewhere Over the Rainbow" opening leap. 12 semitones. Same note, doubled …`},{front:`Tritone (C → F#)`,back:`The Devil's interval, 6 semitones, right in the middle of the octave. Unstable; resolves …`}],footer:`Flip each card after singing the interval. Aim for instant recognition, the goal is heari…`},chronologicaltimeline:{title:`Staff notation through the centuries`,icon:`clock`,iconColor:`var(--presence)`,startLabel:`900 AD`,endLabel:`1800s`,events:[{at:0,date:`~900 AD`,title:`Neumes`,detail:`Earliest written notation, squiggles above text hinting at melodic contour, no pitch prec…`},{at:18,date:`1025`,title:`Guido of Arezzo`,detail:`Invented the four-line staff and the sol-fa syllable system (ut re mi fa sol la). First r…`,color:`var(--presence)`},{at:34,date:`1200s`,title:`Mensural notation`,detail:`Rhythm encoded for the first time via note shapes, unlocks polyphony (multiple independen…`},{at:55,date:`1450s`,title:`Music printing press`,detail:`Ottaviano Petrucci's moveable-type music printing spreads sheet music across Europe.`,color:`var(--insight)`},{at:73,date:`1600s`,title:`Baroque conventions`,detail:`Five-line treble and bass staves standardised; figured bass shorthand speeds up harmonisa…`}],footer:`Western notation is ~1,000 years old. Non-Western traditions (Indian raga, Arabic maqam, …`},chorddiagram:{title:`G Major chord`,chordName:`G`,instrument:`Guitar`,frets:[3,2,0,0,0],fingers:[2,1,null,null,null],notes:[`G`,`B`,`G`,`D`,`G`]},mixerboard:{title:`Track arrangement`,icon:`sliders`,iconColor:`var(--presence)`,bars:8,tracks:[{name:`Drums`,color:`var(--presence)`,volume:86,pan:0,clips:[{start:0,len:8,label:`Beat`}]},{name:`Bass`,color:`var(--insight)`,volume:78,pan:-12,mute:!0,clips:[{start:0,len:6,label:`Groove`}]},{name:`Keys`,color:`var(--warning)`,volume:64,pan:28,clips:[{start:2,len:4,label:`Pad`},{start:6,len:2,label:`Stab`}]},{name:`Vox`,color:`var(--presence-soft)`,volume:72,pan:0,solo:!0,clips:[{start:1,len:3,label:`Verse`},{start:4,len:4,label:`Chorus`}]}],caption:`Four lanes on an 8-bar grid: bass is muted while the vocal is soloed for a focused listen.`},pianokeys:{title:`C major 7 chord`,icon:`play`,iconColor:`var(--presence)`,chordName:`Cmaj7`,startNote:`C4`,octaves:2,showLabels:!0,highlight:[{note:`C4`,role:`root`},{note:`E4`,role:`3rd`},{note:`G4`,role:`5th`},{note:`B4`,role:`7th`}],caption:`A major-7 stacks a major triad with a major 7th: C–E–G–B.`,footer:`The bright, jazzy colour comes from that major-7th interval (B over C) — a half-step belo…`},fretboardmap:{title:`A minor pentatonic`,icon:`sparkle`,iconColor:`var(--presence)`,scaleName:`A minor pentatonic`,strings:6,frets:12,tuning:[`E`,`A`,`D`,`G`,`B`],dots:[{string:6,fret:5,label:`R`,role:`root`},{string:6,fret:8,label:`b3`,role:`third`},{string:5,fret:5,label:`4`,role:`other`},{string:5,fret:7,label:`5`,role:`fifth`},{string:4,fret:5,label:`b7`,role:`other`}],caption:`The box-1 shape at the 5th fret — roots on the low E, D, and high E strings anchor the po…`},circleoffifths:{title:`Circle of fifths`,icon:`sparkle`,iconColor:`var(--insight)`,highlightKey:`G`,showMinors:!0,related:[`C`,`D`,`Em`],caption:`G major sits one sharp clockwise of C: its IV is C, its V is D, and Em is its relative mi…`},practicelog:{title:`Two weeks of piano practice`,icon:`clock`,iconColor:`var(--presence)`,instrument:`Piano`,sessions:[{date:`2026-06-19`,minutes:25,focus:`scales`,note:`Hanon exercises`},{date:`2026-06-20`,minutes:40,piece:`Clair de Lune`,note:`Started the arpeggio section`},{date:`2026-06-21`,minutes:30,piece:`Clair de Lune`},{date:`2026-06-22`,minutes:20,focus:`sight-reading`},{date:`2026-06-23`,minutes:45,piece:`Clair de Lune`,note:`Tempo still rushes in the climax`}]},gallery:{eyebrow:`Planet photos · from space telescopes`,items:[{label:`Earth, the blue marble`,source:`nasa.gov`,tag:`home`,h1:`#3a7bd5`,h2:`#16314f`},{label:`Mars, the red planet`,source:`nasa.gov`,tag:`rusty`,h1:`#c1440e`,h2:`#5e2207`},{label:`Jupiter & the Great Red Spot`,source:`esa.int`,tag:`biggest`,h1:`#d9a066`,h2:`#6e4a28`},{label:`Saturn and its rings`,source:`nasa.gov`,tag:`rings`,h1:`#e0c074`,h2:`#6b5826`},{label:`Neptune, deep blue`,source:`nasa.gov`,tag:`windy`,h1:`#2c5fb3`,h2:`#13284f`}],footer:`These are real pictures taken by spacecraft and telescopes. Pretty cool, right?`},togglegroup:{title:`Which planet has the most moons?`,icon:`moon`,iconColor:`var(--insight)`,mode:`single`,items:[{label:`Earth (1)`,title:`Earth has just our one Moon`},{label:`Mars (2)`,title:`Mars has two tiny potato-shaped moons`},{label:`Saturn (146)`,title:`Saturn is the moon champion!`,on:!0}],hint:`Tap a planet! Saturn wins with over 140 moons. Earth has just one, the one you see at nig…`,color:`var(--insight)`,footer:`Some moons have oceans hidden under ice. Scientists wonder what might live there!`},radiogroup:{title:`Quick quiz: which planet do we live on?`,icon:`spark`,iconColor:`var(--presence)`,layout:`card`,options:[{label:`Mars`,caption:`The red one with rovers`,icon:`globe`,value:`4th`},{label:`Earth`,caption:`The blue one with water and YOU`,icon:`check`,value:`✅ correct!`},{label:`Jupiter`,caption:`The giant gas one`,icon:`globe`,value:`5th`},{label:`The Sun`,caption:`Actually a star, not a planet!`,icon:`sun`,value:`tricky`}],selected:1,color:`var(--presence)`,footer:`You got it, Earth, the third planet from the Sun. The only home we’ve ever had.`},svgblock:{title:`The solar system, to (very rough) scale`,icon:`sparkle`,iconColor:`var(--warning)`,svg:`<svg viewBox="0 0 560 120" xmlns="http://www.w3.org/2000/svg">
1
+ import{n as e}from"./blockLabel-DAqaHKy3.js";import{n as t}from"./layout-BFQOzXtG.js";import{n}from"./catalog-BHjl-1uH.js";import{n as r,t as i}from"./catalog-DF7YTNju.js";import{n as a,t as o}from"./facts-BBTt3ImG.js";import{E as s,T as c,l,r as u,t as d,w as f}from"./providers-wzm7E8Pa.js";import{i as p,o as ee,t as te}from"./streamParse-DRgMHWye.js";import{ANNOTATABLE_TYPES as ne,liveSystemPrompt as re,t as m,validateLiveResponse as h}from"./liveSchema-DCL21WdS.js";import{n as g,t as ie}from"./screen-DLR7p_yP.js";import{C as _,E as v,O as ae,T as y,a as b,c as oe,d as se,f as x,g as ce,h as S,i as le,l as C,m as w,n as T,o as E,p as D,r as ue,t as de,x as O}from"./shapes-Cw7tCHIp.js";import{n as fe,t as pe}from"./speed-DwPw9KSv.js";import{t as k}from"./number-DXgzss0v.js";import{t as me}from"./now-C9-UAzTC.js";import{a as he,i as ge,n as A,o as _e,r as j,t as ve}from"./search-Be63DJkp.js";var M={insight:{title:`ARR crossed $5.4M, up 18% QoQ`,stat:`$5.4M`,delta:`+18%`,deltaDir:`up`,conf:`strong`,summary:`Net-new ARR of $824k, the best quarter on record, led by the Enterprise tier.`,sources:[{file:`Stripe · Q2.csv`}]},scorecard:{title:`The quarter at a glance`,icon:`spark`,iconColor:`var(--insight)`,cols:4,tiles:[{icon:`chart`,label:`ARR`,value:`$5.4M`,delta:`+18%`,deltaDir:`up`,color:`var(--insight)`,detail:`Net-new $824k; Enterprise drove 61% of it.`},{icon:`arrowUp`,label:`Net new logos`,value:`47`,delta:`+11`,deltaDir:`up`,color:`var(--presence)`,detail:`47 new customers, 9 in Enterprise.`},{icon:`spark`,label:`NRR`,value:`116%`,delta:`+6pt`,deltaDir:`up`,color:`var(--insight)`,detail:`Gross retention 94%; expansion +22pt.`},{icon:`alert`,label:`Logo churn`,value:`2.1%`,delta:`+0.4pt`,deltaDir:`up`,color:`var(--warning)`,detail:`Concentrated in self-serve Starter accounts.`},{icon:`cart`,label:`CAC payback`,value:`14 mo`,delta:`-3 mo`,deltaDir:`down`,color:`var(--presence)`,detail:`Improving as Enterprise deal size grows.`}],footer:`Eight headline metrics, all from the Q2 close.`},trendtile:{title:`Net-new ARR`,icon:`chart`,iconColor:`var(--insight)`,value:`$824k`,delta:`+27%`,deltaDir:`up`,color:`var(--insight)`,bars:[410,480,520,590,650],footer:`Six quarters of acceleration, Q2 is the steepest step yet.`},waterfall:{title:`ARR bridge · Q1 → Q2`,icon:`layers`,iconColor:`var(--presence)`,unit:`$k`,steps:[{label:`Q1 ARR`,value:4580,total:!0,color:`var(--text-muted)`},{label:`New`,value:712,color:`var(--insight)`},{label:`Expansion`,value:386,color:`var(--presence)`},{label:`Reactivation`,value:64,color:`var(--presence-soft)`},{label:`Contraction`,value:-148,color:`var(--warning)`}],footer:`Gross adds of <b>$1.16M</b> against <b>$338k</b> of churn + contraction, a healthy 3.4× r…`},funnel:{title:`Sales funnel · Q2`,icon:`cart`,iconColor:`var(--insight)`,unit:` deals`,stages:[{label:`Leads`,value:2840,color:`var(--presence-soft)`},{label:`Qualified (MQL)`,value:980,color:`var(--presence)`},{label:`Opportunity`,value:412,color:`var(--insight)`},{label:`Proposal`,value:168,color:`var(--insight)`},{label:`Closed-won`,value:47,color:`var(--insight)`}],footer:`Lead→won at <b>1.7%</b>; the proposal→won step is the cleanest it has been.`},flightchart:{title:`Marketing media flights · Q2`,icon:`clock`,iconColor:`var(--presence)`,currency:`USD`,channels:[{name:`Paid Search`,color:`var(--presence)`},{name:`Paid Social`,color:`var(--insight)`},{name:`Display`,color:`var(--warning)`},{name:`Email`,color:`var(--presence-soft)`}],flights:[{channel:`Paid Search`,start:0,span:13,budget:86e3},{channel:`Paid Social`,start:0,span:6,budget:42e3},{channel:`Paid Social`,start:8,span:5,budget:34e3},{channel:`Display`,start:2,span:4,budget:21e3},{channel:`Display`,start:9,span:3,budget:15e3}],totalBudget:207e3,footer:`Search stays always-on; Social paused weeks 7-8 to swap creative before relaunching.`},deltacascade:{title:`New bookings, built up`,icon:`spark`,iconColor:`var(--insight)`,prefix:`$`,suffix:`k`,steps:[{label:`Pipeline created`,delta:3200,isBase:!0,detail:`Sourced from inbound + outbound + partner.`},{label:`Stage slippage`,delta:-940,detail:`Deals pushed to Q3.`},{label:`No-decision losses`,delta:-560},{label:`Competitive losses`,delta:-188,detail:`Two to the incumbent on price.`},{label:`Discount given`,delta:-136}],footer:`Win-rate held at <b>28%</b> even as deal sizes grew.`},bulletkpi:{title:`Quarter targets vs actuals`,icon:`check`,iconColor:`var(--insight)`,rows:[{label:`Net-new ARR`,value:824,target:750,max:1e3,display:`$824k`,color:`var(--insight)`},{label:`New logos`,value:47,target:45,max:60,display:`47`,color:`var(--insight)`},{label:`Pipeline ($M)`,value:3.2,target:3.6,max:5,display:`$3.2M`,color:`var(--warning)`},{label:`NRR`,value:116,target:110,max:130,display:`116%`,color:`var(--insight)`},{label:`NPS`,value:52,target:55,max:80,display:`52`,color:`var(--warning)`}],footer:`Three of five beat target, pipeline and NPS are the watch items.`},bulletchart:{title:`Unit economics vs goal`,icon:`shield`,iconColor:`var(--presence)`,rows:[{label:`Gross margin`,value:82,target:80,max:100,bands:[60,75,90],unit:`%`,color:`var(--insight)`},{label:`LTV : CAC`,value:4.1,target:3,max:6,bands:[2,3,5],unit:`×`,color:`var(--insight)`},{label:`CAC payback`,value:14,target:18,max:30,bands:[12,18,24],unit:` mo`,color:`var(--presence)`},{label:`Magic number`,value:1.2,target:1,max:2,bands:[.5,1,1.5],unit:``,color:`var(--insight)`}],footer:`Every efficiency metric is in the strong band, payback beats goal by 4 months.`},comparebars:{title:`Us vs the two competitors we lose to`,icon:`layers`,iconColor:`var(--insight)`,series:[{name:`Atlas (us)`,color:`var(--insight)`},{name:`Northgate`,color:`var(--presence-soft)`},{name:`Beacon`,color:`var(--text-muted)`}],rows:[{label:`Win rate`,values:[28,22,19],unit:`%`,higherBetter:!0},{label:`ACV`,values:[29,41,24],unit:`k`,higherBetter:!0},{label:`Time to value`,values:[9,21,16],unit:` d`,higherBetter:!1},{label:`G2 rating`,values:[4.6,4.2,4.4],unit:`★`,higherBetter:!0},{label:`NRR`,values:[116,104,109],unit:`%`,higherBetter:!0}],highlight:0,footer:`We win on speed-to-value and retention; Northgate still beats us on deal size.`},bcgmatrix:{title:`Product-line portfolio · Q2`,icon:`layers`,iconColor:`var(--presence)`,unit:`k`,items:[{label:`Core Platform`,growth:9,share:2.6,revenue:3200,note:`The flagship — still the category leader, growth has plateaued.`},{label:`Analytics Add-on`,growth:46,share:1.4,revenue:640,note:`Fastest-growing upsell, closing in on the category leader.`},{label:`Workflow Automation`,growth:22,share:1.1,revenue:520},{label:`Mobile App`,growth:68,share:.35,revenue:260,note:`High growth, still building share against two incumbents.`},{label:`API Marketplace`,growth:74,share:.22,revenue:150}],footer:`Analytics is the one bet to fund harder; Legacy On-Prem is the one to wind down on schedu…`},pivot:{title:`Revenue by region × segment`,icon:`globe`,iconColor:`var(--presence)`,rowGroup:`Region`,colHeaders:[`SMB`,`Mid-market`,`Enterprise`],measures:[{key:`arr`,label:`ARR`,prefix:`$`,unit:`k`},{key:`logos`,label:`Logos`},{key:`nrr`,label:`NRR`,unit:`%`}],rows:[{label:`North America`,cells:[{values:{arr:980,logos:210,nrr:112}},{values:{arr:1640,logos:96,nrr:118}},{values:{arr:1320,logos:22,nrr:124}}]},{label:`EMEA`,cells:[{values:{arr:360,logos:88,nrr:108}},{values:{arr:540,logos:41,nrr:114}},{values:{arr:280,logos:6,nrr:121}}]},{label:`APAC`,cells:[{values:{arr:120,logos:34,nrr:105}},{values:{arr:190,logos:18,nrr:110}},{values:{arr:64,logos:3,nrr:116}}]}],measure:0,accent:`var(--insight)`,footer:`NA Mid-market is the single biggest cell; APAC Enterprise is the whitespace.`},groupedbars:{title:`Net-new ARR by quarter × tier`,icon:`chart`,iconColor:`var(--insight)`,unit:`$k`,groups:[`Q3`,`Q4`,`Q1`,`Q2`],series:[{name:`SMB`,color:`var(--presence-soft)`,data:[120,140,150,168]},{name:`Mid-market`,color:`var(--presence)`,data:[210,250,280,348]},{name:`Enterprise`,color:`var(--insight)`,data:[180,230,270,308]}],footer:`Enterprise is now nearly even with mid-market on net-new, the mix is shifting up.`},leaderboard:{title:`Sales leaderboard · Q2`,icon:`spark`,iconColor:`var(--insight)`,metrics:[{key:`acv`,label:`New ACV`,unit:`k`},{key:`quota`,label:`Quota`,unit:`%`},{key:`deals`,label:`Deals`}],rows:[{name:`Priya Nair`,sub:`Enterprise · West`,values:{acv:412,quota:137,deals:6},move:2},{name:`Marcus Hale`,sub:`Enterprise · East`,values:{acv:388,quota:129,deals:7},move:-1},{name:`Dana Liu`,sub:`Mid-market`,values:{acv:246,quota:118,deals:11},move:1},{name:`Tom Okafor`,sub:`Mid-market`,values:{acv:198,quota:102,deals:9},move:0},{name:`Sofia Reyes`,sub:`SMB · velocity`,values:{acv:142,quota:96,deals:14},move:3}],metric:0,accent:`var(--insight)`,footer:`Top two reps closed 53% of new ACV, bus-factor risk worth noting.`},datatable:{title:`Largest expansions this quarter`,icon:`table`,iconColor:`var(--presence)`,columns:[{key:`account`,label:`Account`,align:`left`},{key:`tier`,label:`Tier`,align:`left`},{key:`arr`,label:`ARR`,align:`right`,numeric:!0,color:`var(--insight)`},{key:`delta`,label:`Δ QoQ`,align:`right`},{key:`health`,label:`Health`,align:`left`}],rows:[{account:`Meridian Logistics`,tier:`Enterprise`,arr:`$284k`,delta:`+62k`,health:`Healthy`},{account:`Cobalt Health`,tier:`Enterprise`,arr:`$241k`,delta:`+44k`,health:`Healthy`},{account:`Foundry Labs`,tier:`Mid-market`,arr:`$96k`,delta:`+38k`,health:`Champion`},{account:`Lumen Retail`,tier:`Mid-market`,arr:`$88k`,delta:`+21k`,health:`Watch`},{account:`Drift Studios`,tier:`Mid-market`,arr:`$74k`,delta:`+19k`,health:`Healthy`}],sortKey:`arr`,sortDir:`desc`,searchable:!0,searchPlaceholder:`Filter accounts…`,footer:`Pelham contracted on a seat reduction, flagged for a QBR before renewal.`},roadmap:{title:`Product roadmap · next 4 quarters`,icon:`layers`,iconColor:`var(--insight)`,quarters:[`Q2`,`Q3`,`Q4`,`Q1`],lanes:[{name:`Platform`,accent:`var(--insight)`,items:[{label:`SSO + SCIM`,startQ:0,spanQ:1,status:`done`,detail:`Shipped, unblocked 3 Enterprise deals.`},{label:`Audit log API`,startQ:1,spanQ:1,status:`active`},{label:`Data residency (EU)`,startQ:2,spanQ:2,status:`todo`,detail:`Required for EMEA Enterprise.`}]},{name:`Growth`,accent:`var(--presence)`,items:[{label:`Usage-based billing`,startQ:0,spanQ:2,status:`active`},{label:`In-product onboarding`,startQ:2,spanQ:1,status:`todo`}]},{name:`AI`,accent:`var(--warning)`,items:[{label:`Copilot beta`,startQ:1,spanQ:2,status:`risk`,detail:`Eval quality is the gating item.`},{label:`Auto-insights GA`,startQ:3,spanQ:1,status:`todo`}]}],footer:`SSO already paid for itself; usage-based billing is the Q3 revenue lever.`},gantt:{title:`Usage-based billing launch plan`,icon:`clock`,iconColor:`var(--presence)`,cols:[`W1`,`W2`,`W3`,`W4`,`W5`],tasks:[{name:`Metering pipeline`,lane:`Eng`,start:0,span:3,pct:100,color:`var(--insight)`,detail:`Event ingestion + aggregation.`},{name:`Pricing model`,lane:`Finance`,start:0,span:2,pct:100,color:`var(--presence)`},{name:`Billing integration`,lane:`Eng`,start:2,span:3,pct:60,color:`var(--insight)`,dependsOn:0},{name:`Self-serve UI`,lane:`Product`,start:3,span:3,pct:35,color:`var(--presence-soft)`,dependsOn:2},{name:`Beta with 8 accounts`,lane:`GTM`,start:5,span:2,pct:0,color:`var(--warning)`,dependsOn:3}],footer:`On track for an end-of-W8 GA; the billing integration is the critical path.`},kanban:{title:`Current sprint board`,icon:`edit`,iconColor:`var(--presence)`,stages:[{name:`Todo`,accent:`var(--text-muted)`,cards:[{id:`k1`,title:`Audit log retention policy`,tag:`Platform`,tagColor:`var(--insight)`,assignee:`JK`,points:3},{id:`k2`,title:`Onboarding empty states`,tag:`Growth`,tagColor:`var(--presence)`,assignee:`AM`,points:2}]},{name:`In progress`,accent:`var(--insight)`,cards:[{id:`k3`,title:`Billing integration`,tag:`Billing`,tagColor:`var(--warning)`,assignee:`RP`,points:5},{id:`k4`,title:`Copilot eval harness`,tag:`AI`,tagColor:`var(--warning)`,assignee:`SL`,points:8}]},{name:`Review`,accent:`var(--presence-soft)`,cards:[{id:`k5`,title:`SCIM edge cases`,tag:`Platform`,tagColor:`var(--insight)`,assignee:`DV`,points:3}]},{name:`Done`,accent:`var(--presence)`,cards:[{id:`k6`,title:`Metering pipeline`,tag:`Billing`,tagColor:`var(--warning)`,assignee:`RP`,points:5},{id:`k7`,title:`SSO GA`,tag:`Platform`,tagColor:`var(--insight)`,assignee:`DV`,points:5}]}],footer:`23 points committed, 10 done, pace is on track for the sprint goal.`},plandag:{title:`Series B readiness plan`,icon:`share`,iconColor:`var(--insight)`,nodes:[{id:`n1`,label:`Close Q2 books`,col:0,row:1,status:`done`,meta:`Finance`},{id:`n2`,label:`Data room`,col:1,row:0,status:`active`,meta:`Finance`},{id:`n3`,label:`Metrics deck`,col:1,row:2,status:`active`,meta:`Ops`},{id:`n4`,label:`Reference calls`,col:2,row:0,status:`todo`,meta:`CEO`},{id:`n5`,label:`Model + scenarios`,col:2,row:2,status:`risk`,meta:`Finance`}],edges:[{from:`n1`,to:`n2`},{from:`n1`,to:`n3`},{from:`n2`,to:`n4`},{from:`n3`,to:`n5`},{from:`n4`,to:`n6`}],footer:`The financial model is the one at-risk node, it gates partner meetings.`},milestones:{title:`Company milestones`,icon:`check`,iconColor:`var(--insight)`,milestones:[{label:`$5M ARR`,date:`May 2026`,status:`done`,detail:`Crossed three weeks ahead of plan.`,owner:`Company`},{label:`First $1M+ logo`,date:`Jun 2026`,status:`done`,detail:`Meridian renewed + expanded to $284k.`,owner:`Sales`},{label:`SOC 2 Type II`,date:`Aug 2026`,status:`active`,detail:`Audit window opens next month.`,owner:`Security`},{label:`EU data residency`,date:`Q4 2026`,status:`todo`,detail:`Unlocks EMEA Enterprise pipeline.`,owner:`Platform`},{label:`Series B close`,date:`Q1 2027`,status:`todo`,detail:`Targeting on strength, not need.`,owner:`CEO`}],footer:`Two hit this quarter; SOC 2 is the next gate for Enterprise.`},progressbar:{title:`Annual plan progress`,icon:`chart`,iconColor:`var(--presence)`,caption:`58% of the $1.45M net-new ARR plan`,segments:[{label:`Q1`,value:650,color:`var(--presence)`,done:!0,detail:`Q1 net-new $650k (delivered).`},{label:`Q2`,value:824,color:`var(--insight)`,done:!0,detail:`Q2 net-new $824k (delivered).`},{label:`Q3 plan`,value:880,color:`var(--presence-soft)`,detail:`Usage-based billing is the lever.`},{label:`Q4 plan`,value:940,color:`var(--text-muted)`,detail:`EU residency unlocks EMEA Enterprise.`}],footer:`Halfway through the year, you are <b>tracking ahead</b> of the full-year plan.`},statustimeline:{title:`Operating cadence · this quarter`,icon:`clock`,iconColor:`var(--presence)`,events:[{time:`Apr 3`,label:`Q2 kickoff + targets set`,status:`done`,detail:`Board approved the $750k net-new target.`},{time:`Apr 18`,label:`SSO + SCIM shipped`,status:`done`,detail:`Unblocked three Enterprise deals.`},{time:`May 9`,label:`Pricing v2 launched`,status:`done`,detail:`Cut sales cycle by 6 days.`},{time:`May 27`,label:`Crossed $5M ARR`,status:`done`},{time:`Jun 12`,label:`Usage-based billing beta`,status:`progress`,detail:`8 design-partner accounts onboarding.`}],footer:`Four shipped, two in flight, one at risk, the Copilot gate needs a call.`},healthgrid:{title:`System & business health`,icon:`shield`,iconColor:`var(--insight)`,cols:4,cells:[{label:`API uptime`,level:`ok`,value:`99.98%`,detail:`30-day rolling; SLA is 99.9%.`},{label:`p95 latency`,level:`ok`,value:`212 ms`,detail:`Steady quarter-over-quarter.`},{label:`Error rate`,level:`ok`,value:`0.04%`,detail:`Well under the 0.1% budget.`},{label:`APAC region`,level:`warn`,value:`99.4%`,detail:`One 38-min partial outage in June.`},{label:`Support SLA`,level:`ok`,value:`94%`,detail:`First response under 2h, 94% of tickets.`}],footer:`Green where it counts; the three amber cells are this quarter’s focus list.`},kpidashboard:{title:`Q2 board metrics`,icon:`chart`,iconColor:`var(--presence)`,caption:`Trailing 6 months · refreshed nightly from the data warehouse`,tiles:[{label:`MRR`,value:`$182.4k`,delta:`+6.8%`,deltaDir:`up`,spark:[142,148,153,161,167],conf:`MoM`},{label:`Net revenue retention`,value:118,unit:`%`,delta:`+3 pts`,deltaDir:`up`,spark:[109,111,112,114,115],conf:`cohort-weighted`},{label:`Gross churn`,value:2.1,unit:`%/mo`,delta:`−0.6 pts`,deltaDir:`good`,spark:[3.4,3.1,2.9,2.7,2.5],conf:`logo churn`},{label:`CAC`,value:`$1,240`,delta:`+9.2%`,deltaDir:`down`,spark:[980,1010,1055,1080,1120],conf:`blended`},{label:`CAC payback`,value:11,unit:`mo`,delta:`−1 mo`,deltaDir:`good`,spark:[14,13.5,13,12.5,12],conf:`gross-margin adj.`}],footer:`NRR above 115% and falling churn are funding the runway draw — <strong>CAC creep</strong>…`},issuetree:{title:`Why is Q3 pipeline coverage short of target?`,icon:`share`,iconColor:`var(--warning)`,rootQuestion:`Pipeline coverage is 2.6×, below the 3× target for Q3`,nodes:[{id:`volume`,label:`Not enough pipeline created`,children:[`inbound`,`outbound`]},{id:`inbound`,label:`Inbound leads`,isLeaf:!0,finding:`On plan: 2,840 leads, flat QoQ.`},{id:`outbound`,label:`Outbound + partner`,isLeaf:!0,finding:`Down 18%, two SDR seats sat open all quarter.`},{id:`conversion`,label:`Deals not converting`,children:[`qual`,`competitive`]},{id:`qual`,label:`Lead → qualified rate`,isLeaf:!0,finding:`Steady at 34%, in line with Q1.`}],footer:`The SDR gap and the Northgate losses explain most of the shortfall, not a demand problem.`},meetingnotes:{title:`Notes from the review`,icon:`doc`,iconColor:`var(--presence)`,meetingDate:`Q2 business review · Jul 8`,attendees:[`Priya (CEO)`,`Marcus (CFO)`,`Dana (VP Sales)`,`Wei (VP Eng)`],discussionPoints:[`ARR crossed $5.4M, up 18% QoQ, ahead of plan`,`Pipeline coverage is at 2.6×, below the 3× target for Q3`,`CAC crept up 9.2% — mostly paid channels, not organic`],decisions:[`Hold headcount flat in Sales until pipeline coverage recovers`,`Shift 20% of the paid budget to the channels with the best CAC payback`],actionItems:[{task:`Rebuild the Q3 pipeline plan with the new coverage target`,owner:`Dana`,dueDate:`Jul 15`,done:!1},{task:`Audit paid channel spend by CAC payback`,owner:`Marcus`,dueDate:`Jul 12`,done:!0},{task:`Share the runway model with the board`,owner:`Priya`,dueDate:`Jul 10`,done:!1}],footer:`Next review: Oct 8. Dana owns the pipeline rebuild before then.`},sparkstat:{title:`Resting heart rate`,icon:`spark`,iconColor:`var(--presence)`,value:`54 bpm`,unit:`avg last 7 days`,delta:`-4 bpm`,deltaDir:`down`,color:`var(--presence)`,points:[{v:61,label:`Mar`},{v:60,label:`wk 1`},{v:59,label:`wk 2`},{v:58,label:`wk 3`},{v:57,label:`wk 4`}],footer:`Lower is fitter, a 4-bpm drop in 90 days tracks your rising aerobic base.`},counter:{title:`Steps today`,icon:`arrowUp`,iconColor:`var(--insight)`,value:11420,label:`steps · 84% of goal beaten on 5 of 7 days`,delta:`+2.1k vs avg`,deltaDir:`up`,color:`var(--insight)`,footer:`Your 10k goal is now the floor, not the ceiling.`},herostat:{title:`VO₂ max`,icon:`sparkle`,iconColor:`var(--presence)`,value:`48.6`,unit:`mL/kg/min`,narrative:`Estimated from your runs, <b>“excellent”</b> for your age band.`,trend:`+1.9 this quarter`,trendDir:`up`,detail:`Up from 46.7 in February. Most of the gain came from two threshold runs a week.`,color:`var(--presence)`,footer:`A reliable long-run predictor of cardiovascular health.`},streamgraph:{title:`Where your active minutes go`,icon:`chart`,iconColor:`var(--insight)`,unit:`min/wk`,ticks:[`Wk 1`,`Wk 2`,`Wk 3`,`Wk 4`,`Wk 5`],series:[{label:`Running`,color:`var(--presence)`,values:[90,110,105,130,120]},{label:`Strength`,color:`var(--insight)`,values:[60,60,75,70,80]},{label:`Cycling`,color:`var(--presence-soft)`,values:[40,50,45,60,55]},{label:`Mobility`,color:`var(--warning)`,values:[20,25,20,30,35]}],footer:`Total load is up ~45% over the block, but the <mark>mix stayed balanced</mark>, that prot…`},scorebadge:{title:`Recovery readiness`,icon:`shield`,iconColor:`var(--presence)`,score:82,grade:`A-`,caption:`Primed to train hard today`,color:`var(--presence)`,components:[{label:`HRV`,value:88,color:`var(--presence)`},{label:`Sleep`,value:84,color:`var(--insight)`},{label:`Resting HR`,value:86,color:`var(--presence-soft)`},{label:`Prior strain`,value:71,color:`var(--warning)`}],footer:`Whoop blends four signals into one go/no-go number.`},radar:{title:`Your fitness shape vs your age band`,icon:`spark`,iconColor:`var(--insight)`,axes:[`Endurance`,`Strength`,`Mobility`,`Power`,`Sleep`],max:100,series:[{label:`You`,color:`var(--presence)`,values:[88,72,58,64,81]},{label:`Age-band median`,color:`var(--text-muted)`,values:[60,62,55,58,64]}],footer:`Endurance and recovery lead; <mark>mobility</mark> is the clear place to invest next.`},smallmultiples:{title:`Every vital, last 8 weeks`,icon:`layers`,iconColor:`var(--presence-soft)`,kind:`line`,cols:2,panels:[{label:`HRV (ms)`,series:[52,55,54,58,60],stat:`65 ms`,delta:`+13`,deltaDir:`up`,color:`var(--presence)`},{label:`Resting HR`,series:[60,59,59,57,56],stat:`54 bpm`,delta:`-6`,deltaDir:`down`,color:`var(--insight)`},{label:`Sleep (h)`,series:[6.6,6.8,6.7,7,7.1],stat:`7.4 h`,delta:`+0.8`,deltaDir:`up`,color:`var(--presence-soft)`},{label:`Body weight`,series:[178,177,177,176,176],stat:`174 lb`,delta:`-4`,deltaDir:`down`,color:`var(--warning)`}],footer:`Same scale per metric, every line is pointing the way you want.`},arearange:{title:`Nightly sleep, with your typical range`,icon:`moon`,iconColor:`var(--insight)`,unit:`h`,color:`var(--insight)`,points:[{label:`Mon`,value:7.1,lo:6.4,hi:7.8},{label:`Tue`,value:7.4,lo:6.6,hi:8},{label:`Wed`,value:6.9,lo:6.2,hi:7.6},{label:`Thu`,value:7.6,lo:6.9,hi:8.2},{label:`Fri`,value:7.2,lo:6.5,hi:7.9}],footer:`The band is your 30-day p25–p75, you stayed inside it all week, weekends running high.`},waffle:{title:`Body composition`,icon:`layers`,iconColor:`var(--presence-soft)`,cats:[{name:`Lean mass`,pct:62,color:`var(--presence)`},{name:`Water`,pct:20,color:`var(--presence-soft)`},{name:`Body fat`,pct:15,color:`var(--warning)`},{name:`Bone`,pct:3,color:`var(--text-muted)`}],footer:`15% body fat, athletic range. Each square is one percent.`},histogram:{title:`Your fasting glucose readings`,icon:`chart`,iconColor:`var(--insight)`,unit:`mg/dL`,color:`var(--insight)`,marker:89,markerLabel:`your mean · 89`,bins:[{x0:78,x1:82,count:2},{x0:82,x1:86,count:7},{x0:86,x1:90,count:14},{x0:90,x1:94,count:11},{x0:94,x1:98,count:5}],footer:`41 morning readings cluster comfortably below the 100 mg/dL line, no spikes.`},boxplot:{title:`Blood pressure by time of day`,icon:`spark`,iconColor:`var(--presence)`,unit:`mmHg`,domain:[60,140],groups:[{label:`Morning`,min:108,q1:114,median:118,q3:123,max:129,color:`var(--presence)`},{label:`Afternoon`,min:110,q1:116,median:121,q3:126,max:134,outliers:[138],color:`var(--insight)`},{label:`Evening`,min:105,q1:112,median:116,q3:121,max:128,color:`var(--presence-soft)`},{label:`Post-workout`,min:118,q1:124,median:129,q3:135,max:141,outliers:[148],color:`var(--warning)`}],footer:`Systolic sits in the healthy band all day, the post-workout bump is expected and resolves…`},sparktable:{title:`Full blood panel · 12-month trend`,icon:`table`,iconColor:`var(--insight)`,valueLabel:`Latest`,trendLabel:`12-mo trend`,rows:[{name:`LDL cholesterol`,value:`138 mg/dL`,delta:`+11`,deltaDir:`up`,color:`var(--warning)`,series:[121,124,119,127,131]},{name:`HDL cholesterol`,value:`58 mg/dL`,delta:`+5`,deltaDir:`up`,color:`var(--presence)`,series:[49,51,52,54,56]},{name:`Triglycerides`,value:`92 mg/dL`,delta:`-18`,deltaDir:`down`,color:`var(--presence)`,series:[128,120,115,106,99]},{name:`HbA1c`,value:`5.2 %`,delta:`-0.2`,deltaDir:`down`,color:`var(--presence)`,series:[5.5,5.5,5.4,5.4,5.3]},{name:`Vitamin D`,value:`41 ng/mL`,delta:`+14`,deltaDir:`up`,color:`var(--insight)`,series:[22,26,29,33,37]}],footer:`Six of seven markers improving, LDL is the only one drifting up.`},percentilebar:{title:`Your VO₂ max vs everyone your age`,icon:`spark`,iconColor:`var(--presence)`,percentile:91,value:`48.6 mL/kg/min`,unit:`cardio fitness`,lowLabel:`sedentary`,highLabel:`elite`,color:`var(--presence)`,footer:`You're fitter than <mark>91%</mark> of people in your age band.`},statpair:{title:`Calories: in vs out`,icon:`sparkle`,iconColor:`var(--insight)`,left:{label:`Intake`,value:`2,240`,weight:2240,color:`var(--insight)`,sub:`avg / day`},right:{label:`Burned`,value:`2,610`,weight:2610,color:`var(--presence)`,sub:`BMR + activity`},connector:`→`,ratioLabel:`daily deficit ≈ 370 kcal`,footer:`A modest, sustainable deficit, consistent with your 4-lb drop.`},calibration:{title:`How well the sleep-stage model is calibrated`,icon:`shield`,iconColor:`var(--insight)`,color:`var(--insight)`,ece:`0.03`,bins:[{predicted:.1,actual:.08,count:120},{predicted:.3,actual:.31,count:240},{predicted:.5,actual:.52,count:310},{predicted:.7,actual:.68,count:280},{predicted:.9,actual:.91,count:190}],footer:`When the model says “deep sleep,” it’s right about that often, <mark>ECE 0.03</mark> mean…`},ratinginput:{title:`This week’s habit consistency`,icon:`check`,iconColor:`var(--presence)`,shape:`star`,max:5,value:4,caption:`4 of 5, your strongest week yet`,color:`var(--presence)`,facets:[{label:`Hydration`,value:5},{label:`Protein target`,value:4},{label:`Lights out by 11`,value:4},{label:`Mobility 10 min`,value:2},{label:`No alcohol`,value:5}],footer:`Mobility is the habit dragging the score, the same gap your radar flagged.`},sliderinput:{title:`Set your daily step goal`,icon:`arrowUp`,iconColor:`var(--insight)`,prompt:`Drag to set a target, Mavéa estimates the weekly calorie burn.`,min:6e3,max:16e3,step:500,value:11e3,suffix:` steps`,marks:[{at:8e3,label:`baseline`},{at:1e4,label:`guideline`},{at:14e3,label:`stretch`}],outputLabel:`Est. weekly burn`,outputFactor:.28,outputPrefix:``,outputSuffix:` kcal`,color:`var(--insight)`,footer:`Each extra 1,000 steps adds roughly 40 kcal a day for you.`},segmented:{title:`Activity rings by window`,icon:`sun`,iconColor:`var(--presence)`,selected:1,color:`var(--presence)`,options:[{label:`Today`,icon:`clock`,value:`94%`,caption:`Move ring nearly closed, <b>1 short walk</b> to finish.`},{label:`This week`,icon:`chart`,value:`6 / 7`,caption:`Closed all three rings on <b>6 of 7</b> days.`},{label:`This month`,icon:`spark`,value:`24 / 30`,caption:`A perfect streak from the 4th to the 19th.`}],footer:`Switch the window to see how the rings held up.`},rangefilter:{title:`Filter workouts by effort`,icon:`spark`,iconColor:`var(--warning)`,min:60,max:190,step:5,low:130,high:175,suffix:` bpm`,unitLabel:`workouts`,color:`var(--warning)`,items:[{label:`Easy recovery jog`,value:118,display:`118 bpm avg`,meta:`Mon · 32 min`},{label:`Tempo run`,value:162,display:`162 bpm avg`,meta:`Tue · 28 min`},{label:`Strength circuit`,value:138,display:`138 bpm avg`,meta:`Wed · 45 min`},{label:`Threshold intervals`,value:171,display:`171 bpm avg`,meta:`Thu · 38 min`},{label:`Zone-2 cycle`,value:134,display:`134 bpm avg`,meta:`Fri · 60 min`}],footer:`Drag the handles to see which sessions land in your target heart-rate band.`},stepindicator:{title:`Your half-marathon plan`,icon:`check`,iconColor:`var(--presence)`,orientation:`vertical`,color:`var(--presence)`,steps:[{label:`Base building`,sub:`Weeks 1–4`,state:`done`,icon:`check`,detail:`Easy mileage banked, aerobic base is set.`},{label:`Build phase`,sub:`Weeks 5–8`,state:`done`,icon:`arrowUp`,detail:`Tempo + threshold work added. VO₂ max climbed 1.9.`},{label:`Peak`,sub:`Weeks 9–10`,state:`active`,icon:`spark`,detail:`Highest load of the block, recovery readiness says you’re primed for it.`},{label:`Taper`,sub:`Week 11`,state:`locked`,icon:`moon`,detail:`Cut volume 40%, keep intensity. Sleep does the rest.`},{label:`Race day`,sub:`Week 12`,state:`locked`,icon:`sparkle`,detail:`Target 1:42, your fitness markers support it.`}],footer:`You’re on schedule and trending ahead of your goal pace.`},pregnancyweek:{title:`This week`,icon:`clock`,week:20,trimester:2,fruitSize:`banana`,lengthCm:25.6,weightG:300,milestones:[`Halfway there — the anatomy scan usually happens around now.`,`Baby can hear your voice and may respond to sound.`,`Taste buds are forming and swallowing practice has begun.`,`You may start to feel distinct kicks and flutters.`]},cycletrack:{title:`Cycle overview`,icon:`clock`,cycleLength:28,periodDays:5,currentDay:8,fertileWindow:[11,16],ovulationDay:14,caption:`Day 8 of 28 — fertile window opens in 3 days.`},contractiontimer:{title:`Contraction log`,icon:`clock`,rule:`5-1-1`,contractions:[{start:`1:42 PM`,durationSec:45,intervalMin:8},{start:`1:50 PM`,durationSec:50,intervalMin:7},{start:`1:57 PM`,durationSec:55,intervalMin:6},{start:`2:03 PM`,durationSec:58,intervalMin:6},{start:`2:09 PM`,durationSec:62}],caption:`About 6 min apart, ~55s each — closing in on the 5-1-1 rule.`},reasoning:{title:`How I worked the question`,icon:`spark`,iconColor:`var(--insight)`,steps:[{label:`Decompose`,summary:`Split into efficacy, durability, safety, and population impact.`,detail:`Each sub-question needs a <b>different evidence bar</b>, RCTs for efficacy, real-world cl…`,tag:`frame`,tagColor:`var(--insight)`},{label:`Source`,summary:`Prioritize Phase 3 RCTs and guideline bodies over press coverage.`,detail:`Ranked 38 candidates by study design, sample size, and recency; demoted anything secondar…`,tag:`rank`,tagColor:`var(--presence-soft)`},{label:`Cross-check`,summary:`Require two independent sources before stating a number as fact.`,detail:`A single trial sets a hypothesis; a <mark>replication or meta-analysis</mark> promotes it…`,tag:`verify`,tagColor:`var(--presence)`},{label:`Caveat`,summary:`Separate trial-population results from real-world adherence.`,tag:`temper`,tagColor:`var(--warning)`}],conclusion:`Efficacy is <b>strongly</b> supported; population impact is <b>plausible but unproven</b>…`,footer:`Reasoning is shown so you can audit the chain, not just the answer.`},routing:{title:`Where I routed the question`,icon:`share`,iconColor:`var(--presence-soft)`,query:`did GLP-1 drugs cure obesity?`,classifier:`intent · medical-evidence`,choices:[{label:`Evidence synthesis`,sub:`RCTs + meta-analyses`,score:.91,taken:!0,reason:`Asks a <b>causal medical claim</b>, needs graded trial evidence, not opinion.`,color:`var(--insight)`},{label:`News summary`,sub:`recent coverage`,score:.38,reason:`Too shallow for a causal claim.`,color:`var(--text-muted)`},{label:`Market analysis`,sub:`Lilly / Novo revenue`,score:.21,color:`var(--text-muted)`}],footer:`High-stakes health queries route to the evidence pipeline by default.`},agenttrace:{title:`The search agent's decisions`,icon:`layers`,iconColor:`var(--insight)`,nodes:[{step:`01`,decision:`Which databases to query first?`,branches:[{label:`PubMed + Cochrane`,note:`Peer-reviewed, gradeable`,chosen:!0,score:.94,color:`var(--insight)`},{label:`Open web`,note:`Fast but noisy`,score:.42,color:`var(--text-muted)`}]},{step:`02`,decision:`How to handle conflicting weight-loss numbers?`,branches:[{label:`Anchor on largest RCT`,note:`STEP 1, n=1,961`,chosen:!0,score:.88,color:`var(--presence)`},{label:`Average all studies`,note:`Mixes drugs + doses`,score:.31,color:`var(--text-muted)`}]},{step:`03`,decision:`Can I claim a population-level cure?`,branches:[{label:`No, flag as premature`,note:`Adherence + access gaps`,chosen:!0,score:.86,color:`var(--warning)`},{label:`Yes, trials are decisive`,note:`Conflates efficacy with reach`,score:.19,color:`var(--danger)`}]}],footer:`Each fork shows the path taken and the value of the road not travelled.`},toolcalls:{title:`Tools I called`,icon:`globe`,iconColor:`var(--presence)`,calls:[{name:`pubmed.search`,verb:`GET`,request:`{ q: "semaglutide weight loss RCT", years: "2021-2026" }`,response:`38 results · 11 Phase 3 trials`,status:`ok`,ms:412},{name:`fetch.pdf`,verb:`GET`,request:`{ url: "nejm.org/STEP1", pages: "1-12" }`,response:`parsed 11 pages · Table 2 extracted`,status:`ok`,ms:1840},{name:`claims.query`,verb:`POST`,request:`{ cohort: "GLP1_2024", metric: "persistence_12mo" }`,response:`{ persistence: 0.331, n: 24117 }`,status:`ok`,ms:690},{name:`fetch.pdf`,verb:`GET`,request:`{ url: "fda.gov/wegovy-label" }`,response:`timeout, retried via cache`,status:`error`,ms:5001}],footer:`Four calls, one retried, the cached label still resolved.`},retrieval:{title:`Top retrieved chunks`,icon:`doc`,iconColor:`var(--insight)`,query:`mean percent body-weight change at 68 weeks`,chunks:[{source:`STEP 1 · NEJM`,score:.94,snippet:`Mean change in body weight was −14.9% with semaglutide.`,tag:`anchor`,tagColor:`var(--insight)`,used:!0,body:`Participants in the <mark>semaglutide group</mark> lost a mean of 14.9% of body weight vs…`},{source:`SURMOUNT-1 · NEJM`,score:.91,snippet:`Tirzepatide 15 mg produced −20.9% at 72 weeks.`,tag:`support`,tagColor:`var(--presence)`,used:!0},{source:`SELECT · NEJM`,score:.87,snippet:`20% relative reduction in MACE in cardiovascular patients.`,tag:`outcomes`,tagColor:`var(--presence-soft)`,used:!0},{source:`Health blog`,score:.41,snippet:`"I lost 30 pounds", anecdote, not graded`,tag:`dropped`,tagColor:`var(--text-muted)`,used:!1}],footer:`Re-ranked by cosine score; the anecdote scored low and was dropped.`},embedmap:{title:`The evidence, embedded`,icon:`layers`,iconColor:`var(--presence-soft)`,clusters:[{name:`Efficacy RCTs`,color:`var(--insight)`},{name:`Safety / side-effects`,color:`var(--warning)`},{name:`Real-world adherence`,color:`var(--presence)`},{name:`Off-topic / weak`,color:`var(--text-muted)`}],points:[{x:.22,y:.3,label:`STEP 1`,cluster:0},{x:.28,y:.24,label:`STEP 4`,cluster:0},{x:.18,y:.38,label:`SURMOUNT-1`,cluster:0},{x:.31,y:.34,label:`the question`,cluster:0,query:!0},{x:.7,y:.28,label:`GI events`,cluster:1}],footer:`The question lands inside the efficacy cluster, that's what it's really asking.`},tokenstream:{title:`Drafting the verdict, token by token`,icon:`sparkle`,iconColor:`var(--insight)`,prefix:`The evidence shows GLP-1 therapy is `,tokens:[{text:`highly`,p:.88,alts:[{t:`very`,p:.07},{t:`broadly`,p:.03}]},{text:` effective`,p:.95},{text:` for`,p:.91},{text:` weight`,p:.97},{text:` loss`,p:.98}],footer:`Low-confidence tokens are where the hedging lives, hover to see what I almost said.`},modelcompare:{title:`Three models, one prompt`,icon:`chart`,iconColor:`var(--presence-soft)`,prompt:`Did GLP-1 drugs cure the obesity epidemic? Answer with evidence.`,outputs:[{model:`Mavéa Research`,badge:`graded`,color:`var(--insight)`,best:!0,text:`No "cure," but a <mark>genuine inflection</mark>: ~15% weight loss in trials, modest popu…`,meta:[{k:`citations`,v:`11`},{k:`hallucinations`,v:`0`},{k:`hedged`,v:`yes`}]},{model:`Generic Large`,badge:`baseline`,color:`var(--text-muted)`,text:`GLP-1 drugs have <mark>largely solved</mark> obesity for those who take them, reversing d…`,meta:[{k:`citations`,v:`2`},{k:`hallucinations`,v:`1`},{k:`hedged`,v:`no`}]},{model:`Fast Mini`,badge:`cheap`,color:`var(--warning)`,text:`Yes, semaglutide and tirzepatide are <mark>effective cures</mark> with few downsides.`,meta:[{k:`citations`,v:`0`},{k:`hallucinations`,v:`2`},{k:`hedged`,v:`no`}]}],footer:`The graded pipeline is the only one that refused the word "cure", and cited why.`},whatchanged:{title:`What changed after I read the payer data`,icon:`edit`,iconColor:`var(--warning)`,beforeLabel:`First draft`,afterLabel:`Revised`,before:`GLP-1 drugs are reversing the obesity epidemic at population scale.`,after:`GLP-1 drugs work powerfully per-patient, but population impact is gated by adherence and …`,diff:[{t:`del`,c:`GLP-1 drugs are <b>reversing the obesity epidemic at population scale</b>.`},{t:`add`,c:`GLP-1 drugs work powerfully <b>per-patient</b>,`},{t:`add`,c:`but population impact is <b>gated by adherence and access</b>.`},{t:`ctx`,c:`Trigger: 12-month persistence in claims data was only 33%.`}],footer:`The real-world number forced a more honest claim, the edit is the work.`},factcheck:{title:`The load-bearing claims, checked`,icon:`proof`,iconColor:`var(--presence)`,claims:[{claim:`Semaglutide produces ~15% mean weight loss at 68 weeks.`,verdict:`true`,confidence:96,sources:[`nejm.org`,`cochrane.org`],detail:`STEP 1 reported <mark>−14.9%</mark>; the Cochrane synthesis corroborates within 1pt.`},{claim:`Tirzepatide outperforms semaglutide on weight loss.`,verdict:`partly`,confidence:74,sources:[`nejm.org`,`jama.com`],detail:`SURMOUNT-1 (−20.9%) vs STEP 1 (−14.9%), but no head-to-head at matched doses yet.`},{claim:`GLP-1 drugs have cured the obesity epidemic.`,verdict:`false`,confidence:91,sources:[`cdc.gov`,`claims data`],detail:`Population obesity prevalence has not meaningfully fallen; reach is ~2% of eligible adult…`},{claim:`Therapy reduces major cardiovascular events.`,verdict:`true`,confidence:89,sources:[`nejm.org`],detail:`SELECT showed a <mark>20% relative MACE reduction</mark> in overweight CV patients.`}],footer:`Each verdict expands to its sources, green is replicated, amber is single-study.`},confidencemeter:{title:`Confidence in the headline number`,icon:`shield`,iconColor:`var(--insight)`,claim:`<b>~15% weight loss</b> at 68 weeks on semaglutide 2.4mg`,overall:94,segments:[{label:`RCT design`,weight:38,band:`strong`,basis:`Randomized, double-blind, placebo-controlled Phase 3.`},{label:`Replication`,weight:30,band:`strong`,basis:`Reproduced across STEP 1–4 and a Cochrane meta-analysis.`},{label:`Sample size`,weight:18,band:`strong`,basis:`n=1,961 in the anchor trial alone.`},{label:`Generalizability`,weight:14,band:`partial`,basis:`Trial adherence far exceeds real-world persistence.`}],footer:`The only soft segment is generalizing trial results to everyday use.`},citationchain:{title:`Claim → source → sub-evidence`,icon:`link`,iconColor:`var(--presence-soft)`,root:{label:`<b>Semaglutide drives ~15% weight loss</b> at 68 weeks`,cite:`synthesis`,color:`var(--insight)`,strength:`strong`,children:[{label:`STEP 1 randomized trial`,cite:`nejm.org`,color:`var(--presence)`,strength:`strong`,children:[{label:`Table 2, mean change −14.9%`,cite:`p. 994`,strength:`strong`},{label:`Pre-registered endpoint`,cite:`NCT03548935`,strength:`strong`}]},{label:`Cochrane meta-analysis`,cite:`cochrane.org`,color:`var(--presence-soft)`,strength:`strong`,children:[{label:`Pooled across 11 RCTs`,cite:`2024`,strength:`strong`},{label:`Low heterogeneity (I²=22%)`,cite:`forest plot`,strength:`partial`}]}]},footer:`Every node traces to a primary document, expand to walk the chain.`},sourcelist:{title:`Sources I kept`,icon:`doc`,iconColor:`var(--insight)`,sources:[{domain:`nejm.org`,titleText:`STEP 1: Once-Weekly Semaglutide in Adults with Overweight`,relevance:98,glyph:`N`,color:`var(--insight)`,date:`2021`,snippet:`The anchor efficacy RCT, <mark>−14.9%</mark> mean weight change.`},{domain:`nejm.org`,titleText:`SURMOUNT-1: Tirzepatide for Obesity`,relevance:95,glyph:`N`,color:`var(--insight)`,date:`2022`,snippet:`−20.9% at the 15mg dose over 72 weeks.`},{domain:`nejm.org`,titleText:`SELECT: Semaglutide and Cardiovascular Outcomes`,relevance:92,glyph:`N`,color:`var(--presence)`,date:`2023`,snippet:`20% relative reduction in major adverse CV events.`},{domain:`cochrane.org`,titleText:`GLP-1 agonists for weight management (review)`,relevance:90,glyph:`C`,color:`var(--presence-soft)`,date:`2024`},{domain:`cdc.gov`,titleText:`Adult Obesity Prevalence Maps`,relevance:78,glyph:`C`,color:`var(--text-muted)`,date:`2025`}],footer:`Ranked by relevance, three NEJM RCTs carry the efficacy claim.`},claimgrid:{title:`Claims × evidence, who backs what`,icon:`table`,iconColor:`var(--presence-soft)`,columns:[`STEP 1`,`SURMOUNT-1`,`SELECT`,`Cochrane`,`Claims data`],rows:[{claim:`~15% weight loss`,cells:[{state:`yes`,note:`−14.9% primary endpoint`},{state:`yes`,note:`Exceeds it (−20.9%)`},{state:`partial`,note:`Secondary outcome`},{state:`yes`,note:`Pooled confirmation`},{state:`na`}]},{claim:`Cardiovascular benefit`,cells:[{state:`na`},{state:`na`},{state:`yes`,note:`−20% MACE`},{state:`partial`,note:`Noted, not pooled`},{state:`na`}]},{claim:`Durable in real life`,cells:[{state:`partial`,note:`Only to 68 weeks`},{state:`partial`},{state:`na`},{state:`no`,note:`Trials ≠ adherence`},{state:`no`,note:`33% persist at 1yr`}]},{claim:`Cured obesity epidemic`,cells:[{state:`no`},{state:`no`},{state:`no`},{state:`no`},{state:`no`,note:`Prevalence flat`}]}],footer:`The bottom row is empty of green, which is exactly the headline.`},highlightsnippet:{title:`The sentence everything hangs on`,icon:`quote`,iconColor:`var(--insight)`,quote:`The mean change in body weight from baseline to week 68 was −14.9% in the semaglutide gro…`,phrase:`−14.9% in the semaglutide group`,source:`NEJM · STEP 1`,locator:`p. 994`,color:`var(--insight)`,footer:`Pulled verbatim, this is the primary endpoint, not a press summary.`},redline:{title:`How the abstract's claim was tightened`,icon:`edit`,iconColor:`var(--warning)`,docName:`Draft conclusion · v3 → v4`,tokens:[{text:`Semaglutide `},{del:`cures obesity`,by:`AM`},{ins:`produces clinically meaningful weight loss`,by:`AM`},{text:` and `},{del:`eliminates`,by:`ED`}],footer:`2 deletions · 2 insertions, softening "cure" to "clinically meaningful."`},annotateddoc:{title:`The trial abstract, annotated`,icon:`doc`,iconColor:`var(--presence)`,docName:`STEP 1 · NEJM 2021 · abstract`,paragraphs:[`In this 68-week, double-blind trial, we randomly assigned 1,961 adults with a body-mass i…`,`The mean change in body weight from baseline to week 68 was −14.9% in the semaglutide gro…`,`Nausea and diarrhea were the most common adverse events; they were typically transient an…`],highlights:[{phrase:`1,961 adults`,note:`Large, adequately powered sample for a Phase 3 obesity RCT.`,color:`var(--insight)`,author:`Sample`},{phrase:`−14.9%`,note:`The headline efficacy figure, replicated downstream in STEP 2–4.`,color:`var(--presence)`,author:`Endpoint`},{phrase:`Nausea and diarrhea`,note:`Real but tolerable, drives much of the early discontinuation.`,color:`var(--warning)`,author:`Safety`}],footer:`Click a highlight to read why it matters to the verdict.`},docoutline:{title:`How the report is structured`,icon:`layers`,iconColor:`var(--insight)`,docName:`GLP-1 evidence review`,activeIndex:1,sections:[{heading:`1 · The question`,loc:`p.1`,weight:6},{heading:`2 · Efficacy evidence`,loc:`p.2`,weight:40,children:[{heading:`2.1 Anchor RCT (STEP 1)`,loc:`p.2`,weight:16},{heading:`2.2 Tirzepatide comparison`,loc:`p.4`,weight:14},{heading:`2.3 Meta-analysis`,loc:`p.5`,weight:10}]},{heading:`3 · Real-world impact`,loc:`p.6`,weight:28,children:[{heading:`3.1 Adherence & persistence`,loc:`p.6`,weight:16},{heading:`3.2 Access & cost`,loc:`p.7`,weight:12}]},{heading:`4 · Verdict & caveats`,loc:`p.8`,weight:14}],footer:`The efficacy section carries the most weight, and the strongest evidence.`},network:{title:`How the trials cite each other`,icon:`share`,iconColor:`var(--presence-soft)`,layout:`circle`,nodes:[{id:`step1`,label:`STEP 1`,group:0,weight:9,color:`var(--insight)`},{id:`step2`,label:`STEP 2`,group:0,weight:6,color:`var(--insight)`},{id:`step4`,label:`STEP 4`,group:0,weight:5,color:`var(--insight)`},{id:`surmount`,label:`SURMOUNT-1`,group:1,weight:7,color:`var(--presence)`},{id:`select`,label:`SELECT`,group:2,weight:8,color:`var(--presence-soft)`}],edges:[{source:`cochrane`,target:`step1`,weight:3},{source:`cochrane`,target:`step2`,weight:2},{source:`cochrane`,target:`step4`,weight:2},{source:`cochrane`,target:`surmount`,weight:2},{source:`surmount`,target:`step1`,weight:2}],footer:`STEP 1 and the Cochrane review are the hubs, everything leans on them.`},sunburst:{title:`Where the research time went`,icon:`chart`,iconColor:`var(--insight)`,unit:`min`,root:{label:`Research`,value:100,children:[{label:`Reading`,value:52,color:`var(--insight)`,children:[{label:`RCTs`,value:30},{label:`Meta-analyses`,value:14},{label:`Guidelines`,value:8}]},{label:`Verifying`,value:30,color:`var(--presence)`,children:[{label:`Cross-check`,value:18},{label:`Claims data`,value:12}]},{label:`Writing`,value:18,color:`var(--presence-soft)`,children:[{label:`Synthesis`,value:12},{label:`Caveats`,value:6}]}]},footer:`More than half the time was reading, and nearly a third was checking.`},researchsummary:{title:`GLP-1 agonists, evidence summary`,question:`Are GLP-1 receptor agonists effective and safe for long-term weight management in adults …`,method:`Cochrane systematic review + meta-analysis of 14 RCTs`,sampleSize:`~18,000 participants, follow-up 52–208 weeks`,year:`2023`,findings:[`Semaglutide 2.4 mg achieved mean body-weight reduction of 12–15% vs 2–3% for placebo.`,`All GLP-1 agonists outperformed placebo on the primary weight outcome (high certainty).`,`Cardiovascular event rates fell significantly in high-risk populations (SELECT trial).`,`Gastrointestinal side-effects (nausea, vomiting) are common but typically transient.`],conclusion:`GLP-1 agonists are the most effective pharmacotherapy for obesity currently available. Lo…`,limitations:`Most trials exclude people with prior GI surgery; long-term safety beyond 5 years is not …`,source:`Iepsen et al. · Cochrane Database Syst Rev · 2023`},hypothesiscard:{title:`SELECT trial, primary hypothesis`,icon:`proof`,iconColor:`var(--presence)`,h0:`Semaglutide 2.4 mg does not reduce the rate of major adverse cardiovascular events (MACE)…`,h1:`Semaglutide 2.4 mg reduces the rate of MACE versus placebo in this population.`,direction:`two-tailed`,alpha:.05,variables:{iv:`Treatment arm, semaglutide 2.4 mg vs placebo`,dv:`Time to first MACE (CV death, non-fatal MI, non-fatal stroke)`},rejected:!0,footer:`HR 0.80 (95% CI 0.72&ndash;0.90), p &lt; 0.001 &mdash; a highly significant reduction in …`},dotplot:{title:`Weight Loss Distribution, STEP 1 Trial`,values:[3,5,7,8,9],label:`% body weight lost at 68 weeks`,color:`var(--presence)`,note:`Most participants lost 10–16%; the long right tail shows a subgroup exceeding 20%.`},controlchart:{title:`Adherence Rate, 8-Week Titration`,yLabel:`% on therapy`,centerLine:82,ucl:92,lcl:72,points:[{label:`W1`,value:98},{label:`W2`,value:94},{label:`W3`,value:88},{label:`W4`,value:84},{label:`W5`,value:79}],note:`Week 6 dipped below the lower control limit, GI side-effects drove early discontinuation.`},errorbars:{title:`HbA1c Reduction by Semaglutide Dose (SUSTAIN-7)`,yLabel:`HbA1c change (%)`,unit:`%`,groups:[{label:`Placebo`,mean:-.1,ci:.12,color:`var(--text-muted)`},{label:`0.5 mg`,mean:-1.5,ci:.13,color:`var(--insight)`},{label:`1.0 mg`,mean:-1.8,ci:.13,color:`var(--presence)`}],reference:{value:0,label:`no change`},bracket:{from:0,to:2,label:`p < 0.0001`},footer:`Both doses cut HbA1c far more than placebo, and the two confidence intervals barely overl…`},kpi:{title:`Run at a glance`,icon:`spark`,iconColor:`var(--presence)`,kpis:[{val:`2.4M`,label:`cells`},{val:`3h 12m`,label:`wall-time`},{val:`64`,label:`cores`},{val:`7.8×`,label:`speedup`,color:`var(--insight)`}],footer:`Strong scaling held to 64 cores; past that, halo exchange dominates.`},plot:{title:`Residual convergence`,icon:`chart`,iconColor:`var(--presence)`,xLabel:`iteration`,yLabel:`residual (×10⁻³)`,xDomain:[0,1900],yDomain:[0,10],origin:!0,curves:[{label:`continuity residual`,color:`var(--presence)`,points:[{x:0,y:9.5},{x:200,y:5},{x:400,y:2.6},{x:600,y:1.4},{x:800,y:.8}]}],markers:[{x:1840,y:.05,label:`tol 5e-5`,color:`var(--insight)`}],footer:`Clean exponential decay after the first ~300 iterations, the scheme is stable here.`},matrix:{title:`The discretized operator`,icon:`table`,iconColor:`var(--presence)`,caption:`A, 5-point Laplacian stencil (4×4 of a 2.4M² sparse system)`,bracket:!0,rows:[{cells:[{v:4,hot:!0},{v:-1},{v:0},{v:-1}]},{cells:[{v:-1},{v:4,hot:!0},{v:-1},{v:0}]},{cells:[{v:0},{v:-1},{v:4,hot:!0},{v:-1}]},{cells:[{v:-1},{v:0},{v:-1},{v:4,hot:!0}]}],footer:`Each row is one cell’s 5-point stencil; the solver inverts this banded, diagonally-domina…`},diagram:{title:`The domain & boundary conditions`,icon:`image`,iconColor:`var(--presence)`,ratio:2.1,shapes:[{kind:`rect`,x:10,y:8,w:82,h:32,color:`var(--text-muted)`},{kind:`circle`,cx:36,cy:24,r:6,color:`var(--presence)`,fill:`var(--presence-soft)`},{kind:`line`,x1:1,y1:24,x2:9,y2:24,color:`var(--insight)`,arrow:!0},{kind:`line`,x1:92,y1:24,x2:99,y2:24,color:`var(--warning)`,arrow:!0}],labels:[{x:5,y:24,text:`inlet`,side:`bottom`,color:`var(--insight)`},{x:95,y:24,text:`outlet`,side:`bottom`,color:`var(--warning)`},{x:51,y:8,text:`no-slip wall`,side:`top`,color:`var(--text-muted)`},{x:36,y:24,text:`obstacle`,side:`right`,color:`var(--presence)`}],footer:`Uniform inflow left, pressure outlet right, no-slip on the walls and the obstacle.`},diagramflow:{title:`The solver loop`,icon:`layers`,iconColor:`var(--presence)`,layout:`cycle`,nodes:[{id:`init`,label:`Initialize field`,kind:`start`},{id:`assemble`,label:`Assemble system`,sub:`discretize PDE`},{id:`solve`,label:`Solve linear system`,kind:`accent`},{id:`check`,label:`Residual < tol?`,kind:`muted`},{id:`done`,label:`Converged`,kind:`good`}],edges:[{from:`init`,to:`assemble`},{from:`assemble`,to:`solve`},{from:`solve`,to:`check`},{from:`check`,to:`assemble`,label:`no`,kind:`warn`,dashed:!0},{from:`check`,to:`done`,label:`yes`,kind:`good`}],footer:`Each iteration re-assembles and re-solves until the residual falls below tolerance.`},docview:{title:`The method paper, the scheme I used`,icon:`doc`,iconColor:`var(--presence)`,source:`Hoffmann et al. · uploaded · 22 pp`,page:{n:7,of:22},blocks:[{kind:`h2`,text:`§4.1, Pressure-velocity coupling`},{kind:`p`,text:`We use a collocated finite-volume discretization with Rhie–Chow interpolation to suppress…`},{kind:`p`,text:`Stability requires the under-relaxation factors to satisfy α_p + α_u ≤ 1 on stretched mes…`,spot:!0},{kind:`eq`,text:`α_p = 0.3 , α_u = 0.7 ⇒ α_p + α_u = 1.0`},{kind:`p`,text:`Outside this bound the continuity residual stalls rather than decays, the failure mode in…`}],note:`This is the line your run 043 violated (you had α_u = 0.85). Run 044 sits exactly on the …`,footer:`I pulled the stability condition straight from the paper and tied it to why 043 stalled a…`},pdfreader:{title:`The reference, in full`,icon:`doc`,iconColor:`var(--text-muted)`,source:`NASA CR, A First Course in CFD · public domain`,file:`/demo-assets/pdf/cfd-primer.pdf`,footer:`The actual report, embedded, scroll the real PDF for the derivations behind the scheme.`},datastructure:{title:`Binary search tree — searching for 40`,icon:`share`,iconColor:`var(--presence)`,kind:`bst`,nodes:[{id:`a`,value:50,left:`b`,right:`c`},{id:`b`,value:30,left:`d`,right:`e`},{id:`c`,value:70,left:`f`,right:`g`},{id:`d`,value:20},{id:`e`,value:40}],highlight:`e`,footer:`Search visits <b>50 → 30 → 40</b>: 40 &lt; 50 go left, 40 &gt; 30 go right, match. Three …`},bigo:{title:`How algorithm cost grows with input`,icon:`chart`,iconColor:`var(--presence)`,classes:[`o-1`,`o-logn`,`o-n`,`o-nlogn`,`o-n2`],maxN:16,highlight:`o-nlogn`,algorithm:{name:`merge sort`,complexity:`o-nlogn`},xLabel:`input size (n)`,yLabel:`operations`,footer:`Binary search hugs the floor at O(log n), merge sort scales gracefully at O(n log n), but…`},complexitysummary:{title:`Same lookup, three approaches`,icon:`clock`,iconColor:`var(--presence)`,approaches:[{name:`Linear scan`,timeComplexity:`O(n)`,spaceComplexity:`O(1)`,notes:`No setup cost — fine for a one-off search over unsorted data.`},{name:`Binary search`,timeComplexity:`O(log n)`,spaceComplexity:`O(1)`,notes:`Needs the array sorted first; free here since merge sort already sorted it.`},{name:`Merge sort + binary search`,timeComplexity:`O(n log n)`,spaceComplexity:`O(n)`,notes:`Pays off once the same array is searched many times, not for a single query.`}],footer:`For a single lookup, linear scan wins on simplicity; sort once and binary search pays for…`},confusionmatrix:{title:`Classifier results on the held-out test set`,icon:`table`,iconColor:`var(--presence)`,classes:[`Setosa`,`Versicolor`,`Virginica`],matrix:[[50,0,0],[0,47,3],[0,4,46]],showTotals:!0,readout:`perclass`,countLabel:`samples`,footer:`Setosa separates cleanly; the only confusion is between Versicolor and Virginica, where t…`},protocolstack:{title:`The TCP/IP stack: how a request travels down`,icon:`layers`,iconColor:`var(--presence)`,layers:[{name:`Application`,role:`Your request lives here — the actual message a program speaks.`,protocols:[`HTTP`,`DNS`,`TLS`,`SMTP`]},{name:`Transport`,role:`Splits the message into segments and guarantees order & delivery.`,protocols:[`TCP`,`UDP`]},{name:`Internet`,role:`Wraps each segment in a packet and routes it across networks by IP address.`,protocols:[`IP`,`ICMP`]},{name:`Link`,role:`Frames the packet for the local wire and addresses the next hop by MAC.`,protocols:[`Ethernet`,`Wi-Fi`,`ARP`]}],packet:[{header:`Ethernet`,layer:`Link`},{header:`IP`,layer:`Internet`},{header:`TCP`,layer:`Transport`},{header:`HTTP`,layer:`Application`},{header:`Your request`,layer:`Application`}],caption:`Each layer adds its own header on the way down, then the receiver peels them off in rever…`},logicgates:{title:`Half Adder`,icon:`share`,iconColor:`var(--presence)`,inputs:[{id:`A`,label:`A`,value:1},{id:`B`,label:`B`,value:0}],gates:[{id:`sum`,kind:`XOR`,inputs:[`A`,`B`]},{id:`carry`,kind:`AND`,inputs:[`A`,`B`]}],output:{from:`sum`,label:`Sum`},truth:[{row:[0,0],out:0},{row:[0,1],out:1},{row:[1,0],out:1},{row:[1,1],out:0}],caption:`A half adder sums two bits: the XOR gate produces the sum, the AND gate produces the carr…`,footer:`The truth table row matching the live inputs is highlighted; flip A or B in your head and…`},algorithmtrace:{title:`Bubble Sort — First Pass`,icon:`layers`,iconColor:`var(--presence)`,values:[5,1,4,2,8],steps:[{caption:`Start the pass: compare the first adjacent pair, 5 and 1.`,compare:[0,1],pointer:{i:0,j:1}},{caption:`5 > 1, so swap them — the larger value bubbles right.`,swapped:[0,1],pointer:{i:0,j:1}},{caption:`Advance the window and compare 5 and 4.`,compare:[1,2],pointer:{i:1,j:2}},{caption:`5 > 4, swap again.`,swapped:[1,2],pointer:{i:1,j:2}},{caption:`Compare 5 and 2.`,compare:[2,3],pointer:{i:2,j:3}}],caption:`Step through one full pass: each comparison either holds or swaps, walking the largest re…`,footer:`After this pass the maximum (8) is locked in its final position; bubble sort repeats over…`},sortingviz:{title:`Bubble Sort step-by-step`,algorithm:`Bubble Sort`,complexity:`o-n2`,values:[5,3,8,1,6],steps:[{caption:`Pass 1: compare 5 and 3.`,values:[5,3,8,1,6],compared:[0,1]},{caption:`5 > 3 → swap.`,values:[3,5,8,1,6],swapped:[0,1]},{caption:`Compare 5 and 8. No swap.`,values:[3,5,8,1,6],compared:[1,2]},{caption:`Compare 8 and 1.`,values:[3,5,8,1,6],compared:[2,3]},{caption:`8 > 1 → swap.`,values:[3,5,1,8,6],swapped:[2,3]}],footer:`Bubble sort: O(n²) time. Each pass bubbles the largest unsorted element to its final posi…`},graphtrace:{title:`BFS Graph Traversal`,algorithm:`bfs`,nodes:[{id:`A`,label:`A`,x:50,y:10},{id:`B`,label:`B`,x:20,y:40},{id:`C`,label:`C`,x:80,y:40},{id:`D`,label:`D`,x:10,y:75},{id:`E`,label:`E`,x:40,y:75}],edges:[{from:`A`,to:`B`},{from:`A`,to:`C`},{from:`B`,to:`D`},{from:`B`,to:`E`},{from:`C`,to:`F`}],steps:[{caption:`Start BFS at A. Add A to queue.`,current:`A`,frontier:[`A`],visited:[]},{caption:`Dequeue A. Enqueue neighbors B and C.`,current:`A`,visited:[`A`],frontier:[`B`,`C`]},{caption:`Dequeue B. Enqueue neighbors D and E.`,current:`B`,visited:[`A`,`B`],frontier:[`C`,`D`,`E`]},{caption:`Dequeue C. Enqueue neighbor F.`,current:`C`,visited:[`A`,`B`,`C`],frontier:[`D`,`E`,`F`]},{caption:`Dequeue D. No unvisited neighbors.`,current:`D`,visited:[`A`,`B`,`C`,`D`],frontier:[`E`,`F`]}],footer:`BFS visits nodes level-by-level (breadth-first). Queue is FIFO. Time: O(V+E). Contrast wi…`},binarytree:{title:`BST Search — find 7`,nodes:[{id:`n10`,value:10,left:`n5`,right:`n15`},{id:`n5`,value:5,left:`n3`,right:`n7`},{id:`n15`,value:15},{id:`n3`,value:3},{id:`n7`,value:7}],root:`n10`,steps:[{caption:`Start at root: 10. Is 7 == 10?`,states:{n10:`visiting`}},{caption:`7 < 10 → go left to 5.`,states:{n10:`visited`,n5:`visiting`}},{caption:`7 > 5 → go right to 7.`,states:{n10:`visited`,n5:`visited`,n7:`visiting`}},{caption:`7 == 7 → Found! 3 comparisons.`,states:{n10:`visited`,n5:`visited`,n7:`found`}}],footer:`BST search: O(h) time where h is tree height — O(log n) balanced, O(n) worst case. Each c…`},dptable:{title:`LCS — Longest Common Subsequence: "ABCB" vs "BCAB"`,recurrence:`dp[i][j] = dp[i-1][j-1]+1 if s[i]=t[j], else max(dp[i-1][j], dp[i][j-1])`,cols:[`ε`,`B`,`C`,`A`,`B`],rows:[`ε`,`A`,`B`,`C`,`B`],cells:[[0,0,0,0,0],[0,0,0,1,1],[0,1,1,1,2],[0,1,2,2,2],[0,1,2,2,3]],path:[[1,3],[2,4],[3,2],[4,4]],steps:[{caption:`Base case: row 0 and col 0 are all 0 — empty string has LCS 0 with anything.`,current:[0,0],deps:[]},{caption:`dp[1][3]: A matches A → dp[0][2]+1 = 1. First character matched.`,current:[1,3],deps:[[0,2]]},{caption:`dp[2][4]: B matches B → dp[1][3]+1 = 2. Two-character match.`,current:[2,4],deps:[[1,3]]},{caption:`dp[3][2]: C matches C → dp[2][1]+1 = 2.`,current:[3,2],deps:[[2,1]]},{caption:`dp[4][4]: B matches B → dp[3][3]+1 = 3. Final answer: LCS = "BCB" (length 3).`,current:[4,4],deps:[[3,3]]}],footer:`LCS is <b>"BCB"</b> (length 3). Backtrack from dp[4][4]=3 via diagonal match cells. Class…`},hashtable:{title:`Hash table — separate chaining, h(k) = k mod 7`,size:7,hashFn:`h(k) = k mod 7`,entries:[{key:14,value:`Alice`},{key:21,value:`Bob`},{key:7,value:`Carol`},{key:3,value:`Dan`},{key:10,value:`Eve`}],highlight:10,footer:`Keys 7, 14 and 21 hash to bucket 0 (all divisible by 7). Key 10 hashes to bucket 3, colli…`},trie:{title:`Prefix tree (Trie) — autocomplete words`,words:[`apple`,`app`,`apt`,`apply`,`bat`],highlight:`apply`,footer:`Trie lookup: O(m) where m = word length, regardless of dictionary size. Each edge is one …`},gridtrace:{title:`BFS Shortest Path on a Grid`,algorithm:`BFS`,steps:[{caption:`Find shortest path S→E. Walls (#) block movement.`,grid:[[{state:`start`},{state:`empty`},{state:`wall`},{state:`empty`}],[{state:`empty`},{state:`empty`},{state:`empty`},{state:`empty`}],[{state:`empty`},{state:`empty`},{state:`empty`},{state:`end`}]]},{caption:`BFS expands: S visited, neighbors queued.`,grid:[[{state:`visited`},{state:`queued`},{state:`wall`},{state:`empty`}],[{state:`queued`},{state:`empty`},{state:`empty`},{state:`empty`}],[{state:`empty`},{state:`empty`},{state:`empty`},{state:`end`}]]},{caption:`Wave reaches E. Shortest path length = 5.`,grid:[[{state:`path`},{state:`visited`},{state:`wall`},{state:`visited`}],[{state:`path`},{state:`path`},{state:`path`},{state:`visited`}],[{state:`visited`},{state:`visited`},{state:`visited`},{state:`end`}]]}],footer:`BFS guarantees shortest path in unweighted grids. O(rows×cols). Classic FAANG: islands (L…`},sysarchdiagram:{title:`Whiteboard: a URL shortener at scale`,icon:`share`,iconColor:`var(--presence)`,nodes:[{id:`client`,label:`Client`,kind:`client`},{id:`cdn`,label:`CDN`,kind:`cdn`,sub:`static assets`},{id:`lb`,label:`Load Balancer`,kind:`loadbalancer`},{id:`api`,label:`API Service`,kind:`service`,sub:`×12 instances`},{id:`cache`,label:`Redis Cache`,kind:`cache`,sub:`hot slugs`}],edges:[{from:`client`,to:`cdn`,protocol:`HTTPS`},{from:`client`,to:`gw`,protocol:`HTTPS`},{from:`gw`,to:`lb`},{from:`lb`,to:`api`,protocol:`HTTP/2`},{from:`api`,to:`cache`,label:`read-through`}],footer:`Reads hit the cache first (sub-ms for hot slugs); writes go through the queue so Postgres…`},recursiontree:{title:`Naive Recursive fib(4)`,icon:`spark`,iconColor:`var(--presence)`,root:{call:`fib(4)`,result:3,children:[{call:`fib(3)`,result:2,children:[{call:`fib(2)`,result:1,children:[{call:`fib(1)`,result:1},{call:`fib(0)`,result:0}]},{call:`fib(1)`,result:1}]},{call:`fib(2)`,result:1,children:[{call:`fib(1)`,result:1},{call:`fib(0)`,result:0}]}]},footer:`fib(2) is recomputed twice here and the redundant subtree only grows with n — O(2ⁿ) calls…`},sequencealign:{title:`The LCS problem, on real reads`,icon:`layers`,iconColor:`var(--presence)`,kind:`dna`,sequences:[{label:`Reference`,chars:`ATGGCTAACGTTAGC`},{label:`Read 1`,chars:`ATGGCTAAAGTTAGC`},{label:`Read 2`,chars:`ATGGCTA--GTTAGC`}],consensus:`Consensus`,highlightMismatches:!0,footer:`Read 1 carries a single-base substitution (C→A); Read 2 has a 2-base deletion right where…`},compare:{eyebrow:`Differential, what else fits, and why not`,options:[{name:`Pneumonia (CAP)`,sub:`working dx`,pick:!0},{name:`CHF exacerbation`},{name:`Pulmonary embolism`}],criteria:[{label:`Imaging`,cells:[{v:`Focal consolidation`,win:!0},{v:`Bilateral, vascular`},{v:`Often normal CXR`}]},{label:`Fever / CRP↑`,cells:[{v:`Yes`,win:!0},{v:`No`},{v:`Low-grade`}]},{label:`Onset`,cells:[{v:`Days`,win:!0},{v:`Days–weeks`},{v:`Sudden`}]},{label:`D-dimer / risk`,cells:[{v:`n/a`},{v:`BNP↑`},{v:`Wells low`,win:!1}]}],recommendation:`<b>CAP fits this picture best.</b> No orthopnea/edema and a normal BNP argue against CHF;…`},timeline:{eyebrow:`Course so far`,events:[{time:`Day −3`,title:`Productive cough, malaise`,color:`var(--text-muted)`},{time:`Day 0 · 02:10`,title:`ED: T 39.4°, SpO₂ 90%`,tag:`admit`,color:`var(--warning)`},{time:`Day 0 · 03:00`,title:`First antibiotic dose`,tag:`started`,color:`var(--insight)`},{time:`Day 1`,title:`Fever breaking, O₂ weaning`,color:`var(--insight)`}]},clinicaltimeline:{title:`Admission timeline, Mr. Alvarez`,events:[{date:`48h ago`,type:`symptom`,label:`Fever 39.1°C, productive cough, dyspnoea on exertion`},{date:`36h ago`,type:`visit`,label:`ED presentation, SpO₂ 91% on room air`},{date:`34h ago`,type:`test`,label:`CXR ordered, right lower lobe infiltrate`},{date:`34h ago`,type:`test`,label:`Blood cultures × 2, CBC, CRP, procalcitonin`},{date:`30h ago`,type:`result`,label:`WBC 14.2, CRP 187, procalcitonin 2.1, bacterial picture`}]},medicationschedule:{title:`Current medication orders`,medications:[{name:`Amoxicillin-clavulanate`,dose:`1.2g IV`,frequency:`every 8 hours`,times:[`6:00 AM`,`2:00 PM`,`10:00 PM`],withFood:!1,notes:`Switch to oral when tolerating`},{name:`Paracetamol`,dose:`1g IV/oral`,frequency:`every 6 hours PRN`,times:[`6:00 AM`,`12:00 PM`,`6:00 PM`,`12:00 AM`],withFood:!1,notes:`For fever > 38.5°C only`}]},clearancematrix:{title:`Common over-the-counter combos`,icon:`shield`,iconColor:`var(--insight)`,rows:[`Ibuprofen`,`Acetaminophen`,`Aspirin`,`Antihistamine`],columns:[`With alcohol`,`On an empty stomach`,`During pregnancy`,`With a blood thinner`],cells:[{row:`Ibuprofen`,col:`With alcohol`,level:`caution`,reason:`Both irritate the stomach lining — space them out.`},{row:`Ibuprofen`,col:`On an empty stomach`,level:`caution`,reason:`Take with food to limit stomach upset.`},{row:`Ibuprofen`,col:`During pregnancy`,level:`avoid`,reason:`Not advised in the third trimester.`},{row:`Ibuprofen`,col:`With a blood thinner`,level:`avoid`,reason:`Raises bleeding risk markedly.`},{row:`Acetaminophen`,col:`With alcohol`,level:`caution`,reason:`Heavy drinking strains the liver — keep doses low.`}],footer:`General guidance, not medical advice — unrated pairings read “check a pro,” and your phar…`},anatomyfigure:{title:`Anatomy of the heart`,icon:`spark`,iconColor:`var(--danger)`,organ:`heart`,view:`anterior`,pins:[{x:33,y:40,label:`Right atrium`,note:`Receives deoxygenated blood from the body via the venae cavae.`},{x:67,y:40,label:`Left atrium`,note:`Receives oxygen-rich blood returning from the lungs.`},{x:36,y:66,label:`Right ventricle`,note:`Pumps blood to the lungs through the pulmonary artery.`},{x:63,y:66,label:`Left ventricle`,note:`The thickest chamber — drives blood out to the whole body.`},{x:50,y:18,label:`Aorta`,note:`The main artery carrying oxygenated blood from the left ventricle.`}],caption:`The four chambers and the great vessels, viewed from the front.`},odontogram:{title:`Adult dental chart`,icon:`doc`,iconColor:`var(--presence)`,system:`universal`,teeth:[{n:3,status:`filling`,surface:`O`},{n:14,status:`filling`,surface:`MOD`},{n:19,status:`crown`,note:`porcelain-fused-to-metal`},{n:30,status:`missing`},{n:31,status:`implant`,note:`titanium fixture, placed 2024`}],caption:`Universal numbering: teeth 1–16 across the upper arch, 17–32 across the lower.`},ecgstrip:{title:`Rhythm strip · lead II`,iconColor:`var(--danger)`,rateBpm:72,rhythm:`Normal sinus rhythm`,gridMs:40,intervals:[{label:`PR`,fromMs:125,toMs:285},{label:`QRS`,fromMs:300,toMs:390},{label:`QT`,fromMs:300,toMs:700}],caption:`Regular, narrow-complex, every P followed by a QRS — sinus at 72. PR 160 ms, QRS 90 ms, Q…`},vitalstrip:{title:`Bedside monitor`,iconColor:`var(--presence)`,windowLabel:`last 30 min`,channels:[{label:`HR`,unit:`bpm`,normal:[60,100],series:[108,104,99,96,94]},{label:`BP (sys)`,unit:`mmHg`,normal:[90,140],series:[126,124,122,121,120]},{label:`SpO₂`,unit:`%`,color:`var(--warning)`,normal:[94,100],series:[96,95,95,94,93]},{label:`RR`,unit:`/min`,normal:[12,20],series:[22,21,21,20,20]}],caption:`SpO₂ has slipped to 91% on 2 L — below the 94–100% band and flagged. HR settling back int…`},careplan:{title:`Care plan — day 1 post-op`,icon:`shield`,iconColor:`var(--presence)`,caption:`Med-surg · evening shift handoff`,entries:[{assessment:`Rates pain 7/10 at the incision, guarding on movement`,diagnosis:`Acute pain related to surgical incision`,goal:`Pain reported ≤ 3/10 within 24 hours`,interventions:[`Give scheduled analgesia and assess effect at 30 min`,`Reposition and support the incision before activity`,`Reassess pain score every 4 hours`],rationale:`Multimodal, scheduled analgesia controls pain better than PRN-only dosing and supports ea…`,status:`partial`},{assessment:`Clean, dry surgical wound; indwelling IV and urinary catheter in place`,diagnosis:`Risk for infection related to surgical wound and invasive lines`,goal:`Remains afebrile with no signs of wound or line infection`,interventions:[`Hand hygiene and aseptic technique at every contact`,`Inspect wound and line sites each shift for redness or drainage`,`Remove the urinary catheter as soon as clinically appropriate`],rationale:`Early line removal and daily site checks catch infection before it spreads and shorten ex…`,status:`ongoing`},{assessment:`Steady on standby-assist; lungs clear, encouraged to walk`,diagnosis:`Risk for impaired mobility related to post-operative pain`,goal:`Walks the hallway with standby assist by day 2`,interventions:[`Pre-medicate for pain 30 min before ambulation`,`Assist out of bed three times daily`,`Coach incentive spirometry hourly while awake`],rationale:`Early ambulation lowers the risk of pneumonia and venous thromboembolism.`,status:`met`}],footer:`Reassess each goal at the next shift and update the status as outcomes are met.`},triageboard:{title:`Meanwhile, down in the ED`,icon:`alert`,iconColor:`var(--danger)`,patients:[{chiefComplaint:`Crushing chest pain, radiating to left arm`,esiLevel:1,vitals:[{label:`HR`,value:`118`,abnormal:!0},{label:`BP`,value:`88/56`,abnormal:!0},{label:`SpO₂`,value:`91%`,abnormal:!0}],waitTime:`being seen`},{chiefComplaint:`Fall from ladder, deformed forearm`,esiLevel:2,vitals:[{label:`HR`,value:`96`},{label:`Pain`,value:`8/10`,abnormal:!0}],waitTime:`6 min`},{chiefComplaint:`Fever and cough, 3 days`,esiLevel:3,vitals:[{label:`Temp`,value:`38.9°C`,abnormal:!0}],waitTime:`42 min`},{chiefComplaint:`Twisted ankle playing soccer`,esiLevel:4,waitTime:`1h 10m`},{chiefComplaint:`Refill request, ran out of a maintenance medication`,esiLevel:5,waitTime:`1h 45m`}],footer:`The chest-pain patient jumped the queue the moment they walked in, everyone else holds th…`},mentalhealthscreen:{title:`Routine screen on admission — Mr. Alvarez`,icon:`chat`,iconColor:`var(--presence)`,instrument:`PHQ-9`,items:[{prompt:`Little interest or pleasure in doing things`,score:1,anchor:`Several days`},{prompt:`Feeling down, depressed, or hopeless`,score:1,anchor:`Several days`},{prompt:`Trouble falling or staying asleep, or sleeping too much`,score:2,anchor:`More than half the days`},{prompt:`Feeling tired or having little energy`,score:2,anchor:`More than half the days`},{prompt:`Poor appetite or overeating`,score:1,anchor:`Several days`}],total:8,maxTotal:27,bands:[{label:`Minimal`,range:[0,4],tone:`ok`},{label:`Mild`,range:[5,9],tone:`mild`},{label:`Moderate`,range:[10,14],tone:`moderate`},{label:`Mod. severe`,range:[15,19],tone:`moderate`},{label:`Severe`,range:[20,27],tone:`severe`}],footer:`Sleep and fatigue are likely the acute admission talking, not a standalone mood concern, …`},callout:{title:`Recommendation`,icon:`shield`,iconColor:`var(--warning)`,tone:`warn`,kicker:`Before signing`,body:`Sign-ready <b>after three redlines</b> to §8.2 and the liability cap. The economics are f…`,points:[`Redline §8.2: notice 90 → 30 days; consider deleting auto-renew entirely.`,`Raise the liability cap from 1× to 12× annual fees (data processor).`,`Either way, <b>calendar the Nov 30 2027 notice deadline now</b>.`],footer:`Want me to draft the redline markup and a one-paragraph cover note to their counsel?`},casebrief:{title:`The precedent behind that redline`,icon:`proof`,iconColor:`var(--presence)`,citation:`812 F. Supp. 2d 501 (D. Del. 2019)`,parties:{plaintiff:`Bell Fabrication, Inc.`,defendant:`Meridian Systems, LLC`},facts:`Bell signed a 24-month services agreement with a silent auto-renewal clause requiring 90 …`,issue:`Whether a 90-day auto-renewal notice window, buried in a boilerplate term clause, is enfo…`,holding:`Enforceable, but only narrowly — the clause was conspicuously formatted and the buyer had…`,reasoning:`The court weighed three things: whether the term was buried or set apart, whether the buy…`,footer:`The takeaway for §8.2: a 90-day window is defensible, but only barely, negotiating it dow…`},discoverytracker:{title:`Meanwhile: Meridian's discovery requests`,icon:`doc`,iconColor:`var(--presence)`,requests:[{num:1,description:`All communications regarding the Acme MSA renewal terms`,requestingParty:`Meridian Systems`,status:`produced`,batesRange:`ACME-000412–000488`,dueDate:`Apr 3, 2026`},{num:2,description:`Board minutes discussing the 2025 vendor consolidation`,requestingParty:`Meridian Systems`,status:`objected`,dueDate:`Apr 3, 2026`},{num:3,description:`Outside counsel's memo on liability-cap exposure`,requestingParty:`Meridian Systems`,status:`privileged`,privilegeBasis:`attorney-client privilege`,dueDate:`Apr 3, 2026`},{num:4,description:`All Order Forms executed under the MSA since 2024`,requestingParty:`Meridian Systems`,status:`outstanding`,dueDate:`Apr 17, 2026`},{num:5,description:`Internal escalation emails re: the 90-day notice miss`,requestingParty:`Meridian Systems`,status:`outstanding`,dueDate:`Apr 17, 2026`}],footer:`Same file, a different matter — Meridian is compelling production on the renewal dispute.…`},patentclaimchart:{title:`One more diligence check: Acme's sync engine against a live patent`,icon:`table`,iconColor:`var(--presence)`,claimElements:[{id:`1.1`,text:`receiving, at a server, a stream of shipment-location updates from a plurality of mobile …`},{id:`1.2`,text:`storing each location update in a distributed ledger replicated across at least three nod…`},{id:`1.3`,text:`detecting a conflict between two location updates for the same shipment received within a…`},{id:`1.4`,text:`automatically resolving the conflict using a timestamp-priority rule without human interv…`},{id:`1.5`,text:`pushing the resolved location to a customer-facing dashboard in real time`}],references:[`Acme's platform (accused)`,`US 9,112,233 (prior art)`],cells:[[{state:`disclosed`,quote:`Edge devices stream GPS pings to the ingest cluster every 4 seconds.`},{state:`disclosed`,quote:`Sensor readings are logged to a central event bus polled by field units.`}],[{state:`disclosed`,quote:`Every update is written to a 3-node Raft-replicated ledger before ack.`},{state:`disclosed`,quote:`Readings are mirrored to a backup store for durability.`}],[{state:`disputed`,quote:`Acme’s docs describe "duplicate suppression," which may or may not be the claimed conflic…`},{state:`not-disclosed`}],[{state:`not-disclosed`},{state:`not-disclosed`}],[{state:`disclosed`,quote:`Resolved coordinates post to the live tracking map within 400ms.`},{state:`not-disclosed`}]],footer:`Acme's platform is missing element 1.4 — conflicts get flagged for manual review, not aut…`},litigationtimeline:{title:`If the renewal dispute escalates`,icon:`proof`,iconColor:`var(--presence)`,events:[{date:`2026-08-03`,kind:`filing`,court:`D. Del.`,party:`Plaintiff`,urgency:`routine`,detail:`Complaint for breach of contract, if the 90-day notice window gets missed.`},{date:`2026-08-24`,kind:`motion`,court:`D. Del.`,party:`Defendant`,urgency:`soon`,detail:`Motion to dismiss, citing Bell v. Meridian on the notice-window question.`},{date:`2026-09-14`,kind:`hearing`,court:`D. Del.`,urgency:`soon`,detail:`Oral argument on the motion to dismiss.`},{date:`2026-09-28`,kind:`deadline`,urgency:`critical`,detail:`Last day to file non-renewal notice before the term silently rolls another year.`},{date:`2026-10-19`,kind:`order`,court:`D. Del.`,urgency:`routine`,detail:`Ruling expected on the motion to dismiss.`}],footer:`The track record Bell v. Meridian sets, worth avoiding by redlining §8.2 now.`},billtracker:{title:`The bill that could reshape this MSA`,icon:`chart`,iconColor:`var(--insight)`,bill:`S. 1189 — Data Broker Registration Act`,stages:[{name:`Introduced`,status:`done`},{name:`Committee`,status:`done`,voteTally:{yea:14,nay:6}},{name:`Floor Vote`,status:`done`,voteTally:{yea:62,nay:38}},{name:`Other Chamber`,status:`current`},{name:`Signed`,status:`pending`}],footer:`If it passes, data processors like Acme pick up new registration duties, worth its own cl…`},immigrationcase:{title:`Case status — employment-based petition`,icon:`globe`,iconColor:`var(--presence)`,visaCategory:`EB-2 · I-140 Immigrant Petition`,priorityDate:`Mar 15, 2024`,rfeDeadline:`2026-07-20`,stages:[{name:`I-140 filed`,status:`done`,date:`Mar 15, 2024`},{name:`Biometrics`,status:`done`,date:`May 2, 2024`},{name:`Request for Evidence issued`,status:`current`,date:`Jun 10, 2026`},{name:`Decision`,status:`pending`}],footer:`The RFE asks for updated proof of the employer’s ability to pay, gather the last two year…`},caseload:{title:`Open cases`,icon:`shield`,iconColor:`var(--presence)`,cases:[{clientRef:`J.M.-0192`,status:`Active · in-home visits`,nextContact:`Overdue since Thu`,riskLevel:`high`,note:`Housing instability, follow-up on shelter placement.`},{clientRef:`R.K.-0207`,status:`Active · monthly check-in`,nextContact:`Fri`,riskLevel:`high`,note:`Recently reunified; monitoring the transition closely.`},{clientRef:`A.T.-0118`,status:`Active · biweekly check-in`,nextContact:`Mon`,riskLevel:`medium`},{clientRef:`S.D.-0224`,status:`Active · monthly check-in`,nextContact:`Jun 30`,riskLevel:`low`},{clientRef:`M.P.-0055`,status:`Pending intake review`,nextContact:`Jul 3`}],footer:`J.M.-0192 is the one to move today — overdue and high-risk is the combination that matter…`},verdictcard:{title:`The call`,stance:`caution`,label:`Ship it, carefully`,verdict:`Build the search rewrite first, behind a flag, and gate the quarter on its p95.`,reason:`Four of five headline features ride on the new index, derisk it before anything leans on …`,caveat:`If the index migration slips two weeks, cut Polish from Q3, not the search hardening.`,confidence:`medium`,footer:`The roadmap below holds either way, this only changes what ships <strong>last</strong>.`},scenarioset:{title:`How the search rewrite could land`,icon:`chart`,iconColor:`var(--insight)`,metric:`Search p95 at end of quarter (target 400ms)`,scenarios:[{kind:`best`,value:`~320ms`,detail:`Index migration lands on time; cache hit-rate holds.`,points:[`All five features ship`,`Polish keeps its Q3 slot`]},{kind:`likely`,value:`~480ms`,detail:`A two-week migration slip, recovered with cache tuning.`,points:[`Four features ship on time`,`Polish slips ~2 weeks`]},{kind:`worst`,value:`~900ms`,detail:`Index rewrite stalls; fall back to the old path.`,points:[`Search-dependent features held`,`Quarter re-planned`]}],footer:`A range, not a promise, we revisit at the mid-quarter checkpoint.`},divider:{title:`The roadmap`,eyebrow:`Section 01`,heading:`The roadmap`,sub:`Three releases across the quarter, each one unblocks the next.`,badge:`Q2 → Q3`,badgeColor:`var(--insight)`,icon:`layers`,iconColor:`var(--insight)`,chips:[{label:`Foundation`,color:`var(--presence)`},{label:`Search`,color:`var(--insight)`},{label:`Polish`,color:`var(--warning)`}]},wizard:{title:`Release plan · four gates`,icon:`check`,iconColor:`var(--presence-soft)`,activeStep:1,steps:[{label:`Foundation`,caption:`Weeks 1–3`,status:`done`,body:`Stand up the typed core and the migration shim. Dual-write the legacy stores.`,bullets:[`Typed core service live`,`Dual-write shim shipped`,`Read traffic still on legacy`]},{label:`Search index`,caption:`Weeks 4–7`,status:`active`,body:`Build and backfill the new inverted index; shadow-read against legacy for parity.`,bullets:[`Backfill 41M docs`,`Shadow-read parity ≥ 99.5%`,`Cut over behind a flag`]},{label:`Surface features`,caption:`Weeks 8–10`,status:`todo`,body:`Ship saved views, instant filters, and the command bar on top of the new index.`,bullets:[`Saved views`,`Instant filters`,`Command-K`]},{label:`Polish + GA`,caption:`Weeks 11–12`,status:`todo`,body:`Performance pass, decommission legacy reads, and open the gate to GA.`,bullets:[`Kill legacy reads`,`p95 budget check`,`GA flag flip`]}],footer:`We are mid-gate two, the search backfill is the critical path.`},goaltree:{title:`The quarter in OKRs`,icon:`spark`,iconColor:`var(--insight)`,objectives:[{name:`Make Atlas feel instant`,owner:`Priya`,progress:58,keyResults:[{label:`Search p95 < 400ms`,progress:40,target:`400ms`,color:`var(--insight)`},{label:`Cold load < 1.2s`,progress:72,target:`1.2s`,color:`var(--presence)`},{label:`Zero 5xx on cutover`,progress:62,target:`0`,color:`var(--warning)`}]},{name:`One platform, not three`,owner:`Marco`,progress:71,keyResults:[{label:`Services collapsed`,progress:66,target:`3→1`,color:`var(--presence-soft)`},{label:`Legacy reads retired`,progress:35,target:`100%`,color:`var(--danger)`}]}],footer:`On track for "instant"; the platform collapse trails on legacy read retirement.`},candlestick:{title:`Search latency p95 · weekly (ms)`,icon:`chart`,iconColor:`var(--warning)`,unit:`ms`,candles:[{label:`W1`,o:1980,h:2100,l:1900,c:1940,vol:41},{label:`W2`,o:1940,h:1980,l:1610,c:1680,vol:44},{label:`W3`,o:1680,h:1720,l:1180,c:1240,vol:47},{label:`W4`,o:1240,h:1300,l:820,c:880,vol:52},{label:`W5`,o:880,h:940,l:540,c:610,vol:55}],footer:`Each backfill batch drags the floor down. The 400ms target is one batch away.`},lollipop:{title:`Effort left by workstream`,icon:`layers`,iconColor:`var(--presence-soft)`,unit:` pts`,rows:[{label:`Search index`,value:34,color:`var(--insight)`,sub:`critical path`},{label:`Command bar`,value:21,color:`var(--presence)`,sub:`depends on index`},{label:`Saved views`,value:18,color:`var(--presence-soft)`},{label:`Migration shim`,value:9,color:`var(--warning)`,sub:`almost done`},{label:`Docs + GA`,value:6,color:`var(--text-muted)`}],footer:`88 points remain, over a third sit on the search index alone.`},decisiontree:{title:`RFC-114 · how we chose the search engine`,icon:`shield`,iconColor:`var(--insight)`,rootId:`scale`,nodes:[{id:`scale`,question:`Will the corpus pass 40M docs in a year?`,detail:`Current 41M, growing ~9%/qtr.`,yes:`latency`,no:`managed`},{id:`latency`,question:`Is sub-400ms p95 a hard requirement?`,detail:`It is, search gates four features.`,yes:`self`,no:`managed`},{id:`self`,question:`Can we staff index ops in-house?`,detail:`Two infra engineers committed.`,yes:`own`,no:`cloud`},{id:`own`,question:``,outcome:`Self-host the new index on our cluster`,outcomeColor:`var(--presence)`},{id:`cloud`,question:``,outcome:`Managed search with a latency SLA`,outcomeColor:`var(--insight)`}],footer:`We landed on self-host, the only path that hits the latency budget at our scale.`},slopegraph:{title:`Before → after the re-platform`,icon:`arrowDown`,iconColor:`var(--insight)`,beforeLabel:`v2 today`,afterLabel:`v3 target`,unit:``,rows:[{label:`Deploy time (min)`,before:28,after:6,color:`var(--insight)`},{label:`Services to page`,before:11,after:4,color:`var(--presence)`},{label:`p95 search (s)`,before:1.9,after:.4,color:`var(--warning)`},{label:`On-call alerts/wk`,before:37,after:12,color:`var(--danger)`}],footer:`Every operational line moves the right direction, fewer moving parts pays compounding int…`},dumbbell:{title:`Build estimate vs. actual · by epic`,icon:`clock`,iconColor:`var(--warning)`,unit:` days`,startLabel:`estimate`,endLabel:`actual`,startColor:`var(--text-muted)`,endColor:`var(--insight)`,domain:[0,30],rows:[{label:`Typed core`,start:8,end:10,tag:`shipped`},{label:`Migration shim`,start:5,end:6,tag:`shipped`},{label:`Index backfill`,start:12,end:19,tag:`over`},{label:`Shadow-read parity`,start:6,end:7,tag:`in flight`},{label:`Command bar`,start:9,end:9,tag:`planned`}],footer:`The index backfill ran 7 days long, the source of most schedule pressure this quarter.`},powersample:{title:`Command bar test · sample size`,icon:`chart`,iconColor:`var(--presence)`,effectSize:.1,alpha:.05,power:.8,curve:[{n:400,power:.29},{n:800,power:.52},{n:1200,power:.69},{n:1600,power:.81},{n:2400,power:.93}],footer:`We pre-registered for a conservative 5-point lift; the real effect turned out much bigger…`},abtestresult:{title:`Command bar A/B test · search completion`,icon:`chart`,iconColor:`var(--presence)`,control:{name:`Old search bar`,n:8412,conversionRate:.612},variant:{name:`New command bar`,n:8350,conversionRate:.724},pValue:8e-4,confidenceInterval:[9.2,26.4],footer:`The command bar shipped to 50% for two weeks; the interval sits well clear of zero, so th…`},orgchart:{title:`Who owns what`,icon:`share`,iconColor:`var(--presence-soft)`,rootId:`lead`,nodes:[{id:`lead`,name:`Dana R.`,role:`Eng lead · Atlas`,accent:`var(--presence)`,children:[`search`,`platform`,`surface`]},{id:`search`,name:`Priya M.`,role:`Search squad`,accent:`var(--insight)`,children:[`s1`,`s2`]},{id:`platform`,name:`Marco V.`,role:`Platform squad`,accent:`var(--presence-soft)`,children:[`p1`]},{id:`surface`,name:`Lena K.`,role:`Surface squad`,accent:`var(--warning)`,children:[`u1`]},{id:`s1`,name:`Index + backfill`,role:`2 engineers`,accent:`var(--insight)`}],footer:`Eight engineers across three squads, with the search squad on the critical path.`},treemap:{title:`Where the codebase mass sits`,icon:`doc`,iconColor:`var(--insight)`,unit:` kLOC`,root:{label:`Atlas`,value:0,children:[{label:`core`,value:0,color:`var(--presence)`,children:[{label:`typed-core`,value:48,color:`var(--presence)`},{label:`migration`,value:22,color:`var(--presence-soft)`}]},{label:`search`,value:0,color:`var(--insight)`,children:[{label:`index`,value:39,color:`var(--insight)`},{label:`relevance`,value:17,color:`var(--insight-soft)`}]},{label:`surface`,value:0,color:`var(--warning)`,children:[{label:`web app`,value:64,color:`var(--warning)`},{label:`command bar`,value:12,color:`var(--warning-soft)`}]},{label:`shared`,value:28,color:`var(--text-muted)`}]},footer:`The web surface is still the heaviest module, search is catching up fast.`},processflow:{title:`A search query, end to end`,icon:`spark`,iconColor:`var(--insight)`,steps:[{label:`Edge`,detail:`TLS + auth at the edge`,icon:`lock`},{label:`Gateway`,detail:`Rate-limit, route, trace`,icon:`share`,branch:`cache hit → return in <20ms`},{label:`Query planner`,detail:`Parse + expand the query`,icon:`edit`},{label:`Index`,detail:`Inverted index lookup`,icon:`table`},{label:`Ranker`,detail:`Relevance + personalization`,icon:`chart`}],footer:`The planner → index → ranker hop is where the latency budget is won or lost.`},journeymap:{title:`What a developer feels adopting the new SDK`,icon:`chat`,iconColor:`var(--presence-soft)`,persona:`Integrating partner engineer`,stages:[{name:`Discover`,action:`Finds the v3 SDK in the docs`,emotion:1,touchpoints:[`Docs site`,`Changelog`],opportunity:`Lead with a 5-line quickstart`},{name:`Install`,action:`Adds the package, runs init`,emotion:1,touchpoints:[`npm`,`CLI`],opportunity:`Auto-detect the legacy config`},{name:`Migrate`,action:`Rewrites legacy search calls`,emotion:-2,touchpoints:[`Migration guide`,`Codemod`],opportunity:`Ship a codemod, this is the cliff`},{name:`Verify`,action:`Diffs results vs. v2`,emotion:0,touchpoints:[`Shadow mode`,`Parity report`],opportunity:`Surface a parity score inline`},{name:`Ship`,action:`Flips the flag in prod`,emotion:2,touchpoints:[`Dashboard`,`Alerts`],opportunity:`Celebrate + capture a quote`}],footer:`Migration is the emotional low, a codemod turns the cliff into a step.`},userpersona:{title:`Who the migration journey is for`,icon:`eye`,iconColor:`var(--presence-soft)`,name:`Priya Nandakumar`,role:`Integrating partner engineer`,quote:`I don't want to learn your whole platform, I just want my search calls to work.`,goals:[`Ship the v3 migration without a multi-week detour reading docs`,`Verify parity against v2 before flipping the flag in prod`,`Keep the integration boring, no surprise breaking changes later`],frustrations:[`The migration guide assumes she already knows our internal terms`,`No single command tells her how far the codemod actually got`,`Shadow-mode parity results are buried in a log, not surfaced inline`],behaviors:[`Skims docs for code samples first`,`Copies from the changelog, not the guide`],footer:`Priya is why the codemod and an inline parity score outrank more docs.`},swimlane:{title:`Cutover week · who does what, when`,icon:`clock`,iconColor:`var(--warning)`,ticks:[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`],lanes:[{actor:`Search squad`,sub:`Priya`,events:[{at:0,span:.35,label:`Final backfill`,detail:`Drain the last batch`,color:`var(--insight)`},{at:.4,label:`Parity sign-off`,detail:`≥99.5% match`,color:`var(--presence)`}]},{actor:`Platform`,sub:`Marco`,events:[{at:.2,span:.3,label:`Flag wiring`,detail:`Gradual ramp 1→100%`,color:`var(--presence-soft)`},{at:.75,label:`Kill legacy reads`,detail:`Decommission`,color:`var(--danger)`}]},{actor:`Surface`,sub:`Lena`,events:[{at:.5,span:.25,label:`UI smoke pass`,detail:`Command bar + views`,color:`var(--warning)`}]},{actor:`On-call`,sub:`rotation`,events:[{at:.55,span:.4,label:`Heightened watch`,detail:`5xx + p95 dashboards`,color:`var(--text-muted)`}]}],footer:`The ramp starts Tuesday; legacy reads die Thursday once parity holds.`},bubble:{title:`Feature bets · reach × effort, sized by lift`,icon:`spark`,iconColor:`var(--insight)`,xLabel:`Effort (eng-weeks)`,yLabel:`Reach (% of users)`,xDomain:[0,14],yDomain:[0,100],categories:[{name:`Must ship`,color:`var(--insight)`},{name:`Fast follow`,color:`var(--presence)`},{name:`Later`,color:`var(--text-muted)`}],points:[{label:`Search rewrite`,x:11,y:92,size:60,cat:`Must ship`},{label:`Command bar`,x:5,y:74,size:38,cat:`Must ship`},{label:`Saved views`,x:4,y:61,size:30,cat:`Fast follow`},{label:`Instant filters`,x:3,y:58,size:26,cat:`Fast follow`},{label:`Theming`,x:6,y:22,size:14,cat:`Later`}],footer:`Top-left is the sweet spot, the command bar is the best reach-per-week after search.`},matrixgrid:{title:`Dependency matrix · who blocks whom`,icon:`layers`,iconColor:`var(--warning)`,rowLabels:[`Core`,`Index`,`Ranker`,`Cmd bar`,`Views`],colLabels:[`Core`,`Index`,`Rank`,`Cmd`,`View`],cells:[[0,0,0,0,0],[3,0,0,0,0],[1,3,0,0,0],[0,3,2,0,0],[1,2,0,0,0]],min:0,max:3,accent:`var(--warning)`,unit:``,legend:[`no dep`,`hard dep`],footer:`Read down a column to see what it unblocks, the index unblocks almost everything.`},treetable:{title:`Issue backlog by area`,icon:`table`,iconColor:`var(--insight)`,valueLabel:`Open`,accent:`var(--insight)`,nodes:[{label:`Search`,value:`108`,pct:.44,tag:`critical`,color:`var(--insight)`,open:!0,children:[{label:`Index + backfill`,value:`61`,pct:.25,color:`var(--insight)`},{label:`Relevance tuning`,value:`29`,pct:.12,color:`var(--insight-soft)`},{label:`Shadow parity`,value:`18`,pct:.07,color:`var(--presence-soft)`}]},{label:`Platform`,value:`74`,pct:.3,color:`var(--presence-soft)`,children:[{label:`Migration shim`,value:`40`,pct:.16,color:`var(--presence-soft)`},{label:`Observability`,value:`34`,pct:.14,color:`var(--text-muted)`}]},{label:`Surface`,value:`66`,pct:.26,color:`var(--warning)`,children:[{label:`Command bar`,value:`38`,pct:.15,color:`var(--warning)`},{label:`Saved views`,value:`28`,pct:.11,color:`var(--warning-soft)`}]}],footer:`248 open issues, search carries nearly half, concentrated in the backfill.`},footnotetable:{title:`Release readiness scorecard`,icon:`check`,iconColor:`var(--presence-soft)`,columns:[`Workstream`,`Status`,`Confidence`,`Gate`],rows:[{cells:[{v:`Typed core`},{v:`Shipped`,color:`var(--presence)`},{v:`High`},{v:`Passed`}]},{cells:[{v:`Search index`},{v:`In flight`,color:`var(--insight)`,note:1},{v:`Medium`,note:2},{v:`W7`}]},{cells:[{v:`Command bar`},{v:`Not started`,color:`var(--text-muted)`},{v:`Medium`},{v:`W10`}]},{cells:[{v:`Legacy retire`},{v:`Blocked`,color:`var(--danger)`,note:3},{v:`Low`},{v:`W11`}]}],notes:[`Backfill is <b>88% complete</b>; the final batch lands in W6.`,`Confidence is gated on the <mark>shadow-read parity</mark> result, expected ≥99.5%.`,`Blocked until cutover, we cannot retire legacy reads before the flag flips.`],footer:`Two greens, one in flight, one blocked behind cutover. No surprises.`},tabs:{title:`The detail, by lens`,icon:`doc`,iconColor:`var(--insight)`,accent:`var(--insight)`,defaultTab:0,tabs:[{label:`Scope`,icon:`layers`,badge:5,body:`<b>In:</b> typed core, new search index, command bar, saved views, instant filters. <b>Ou…`},{label:`Risks`,icon:`alert`,badge:3,body:`The <mark>backfill</mark> is the top risk and already 7 days long. Secondary risks: relev…`},{label:`Metrics`,icon:`chart`,body:`Headline: search <b>p95 < 400ms</b>, cold load <b>< 1.2s</b>, <b>zero 5xx</b> on cutover,…`},{label:`Rollout`,icon:`send`,body:`Flag-gated ramp 1% → 100% across cutover week, shadow-read parity as the go/no-go gate, i…`}],footer:`Tap a lens, same plan, four angles.`},deflist:{title:`Glossary`,icon:`quote`,iconColor:`var(--text-muted)`,placeholder:`Filter terms…`,items:[{term:`Dual-write`,def:`Writing every change to <b>both</b> the legacy and new stores during migration so we can …`,tag:`migration`,color:`var(--presence-soft)`},{term:`Shadow read`,def:`Running the new index <mark>silently</mark> alongside legacy and diffing results to measu…`,tag:`search`,color:`var(--insight)`},{term:`Backfill`,def:`Indexing the existing 41M documents into the new structure before cutover.`,tag:`search`,color:`var(--insight)`},{term:`p95`,def:`The latency the <b>95th-percentile</b> request stays under, our headline speed metric.`,tag:`metrics`,color:`var(--warning)`},{term:`Cutover`,def:`The moment we flip read traffic from legacy to the new index.`,tag:`rollout`,color:`var(--danger)`}],footer:`Five terms that show up in every standup.`},faq:{title:`Questions the team keeps asking`,icon:`chat`,iconColor:`var(--presence-soft)`,defaultOpen:0,multi:!1,items:[{q:`Why re-platform instead of patching v2?`,a:`Three services with diverging schemas made every search change a three-way migration. One…`,tag:`strategy`},{q:`What happens if the backfill slips again?`,a:`The flag stays at 0% and we ship the command bar against the <mark>legacy</mark> index as…`,tag:`risk`},{q:`Can partners stay on the old SDK?`,a:`Yes, the v2 SDK is supported through the end of next quarter. A codemod migrates 90% of c…`,tag:`sdk`},{q:`How do we roll back during cutover?`,a:`The flag flips read traffic back to legacy in seconds. We keep legacy reads warm until W1…`,tag:`rollout`}],footer:`If your question is not here, drop it in #atlas-v3 and we will add it.`},accordion:{title:`The rollout plan, section by section`,icon:`layers`,iconColor:`var(--presence)`,defaultOpen:0,multi:!1,sections:[{label:`Phase 1, Typed core behind a flag`,icon:`shield`,meta:`Weeks 1–4`,tag:`foundation`,body:`Stand up the single typed search core, dark-shipped at <b>0%</b> traffic. Every read stil…`},{label:`Phase 2, Backfill & shadow reads`,icon:`clock`,meta:`Weeks 5–8`,tag:`migration`,tagColor:`var(--warning)`,body:`Backfill the historical index and ramp shadow reads to 100%. The gate to advance is a <ma…`},{label:`Phase 3, Cutover to GA`,icon:`check`,meta:`Weeks 9–11`,tag:`launch`,tagColor:`var(--insight)`,body:`Flip read traffic over in steps (5 → 25 → 100%), keeping legacy reads warm the whole time…`}],footer:`Each phase is independently reversible, the flag is the safety net at every step.`},riskmatrix:{title:`Launch risk matrix`,icon:`shield`,size:5,caption:`Likelihood × impact, scored 1–5`,risks:[{label:`Onboarding drop-off`,likelihood:4,impact:4,owner:`Growth`,mitigation:`Ship the 3-step guided setup and instrument each step before GA.`},{label:`Scaling spikes`,likelihood:3,impact:5,owner:`Platform`,mitigation:`Load-test to 5× peak; add autoscaling and a read-replica fallback.`},{label:`Pricing confusion`,likelihood:3,impact:2,owner:`GTM`,mitigation:`Simplify to three tiers; add an in-app plan comparison.`},{label:`Data migration errors`,likelihood:2,impact:4,owner:`Data`,mitigation:`Dry-run on a shadow copy; reconcile row counts before cutover.`},{label:`Support backlog`,likelihood:2,impact:2,owner:`Support`,mitigation:`Pre-write a help-center launch FAQ and staff a launch-week rota.`}],footer:`<b>Onboarding drop-off</b> and <b>scaling spikes</b> sit in the red band — gate GA on bot…`},threatmodel:{title:`Threat model — the Atlas v3 search path`,icon:`shield`,iconColor:`var(--danger)`,assets:[{id:`client`,name:`Web / mobile client`,kind:`external-entity`},{id:`gateway`,name:`API Gateway`,kind:`process`},{id:`search`,name:`Search Service`,kind:`process`},{id:`auth`,name:`Auth Service`,kind:`process`},{id:`userdb`,name:`User DB`,kind:`datastore`}],boundaries:[{label:`Public internet`,contains:[`client`]},{label:`Application tier`,contains:[`gateway`,`search`,`auth`]},{label:`Data tier`,contains:[`userdb`,`index`]}],threats:[{assetId:`gateway`,stride:`spoofing`,mitigation:`mTLS + signed JWT on every internal hop.`,status:`mitigated`},{assetId:`gateway`,stride:`repudiation`,mitigation:`Structured audit log per request.`,status:`mitigated`},{assetId:`auth`,stride:`tampering`,mitigation:`Request signing lands with RFC-114 phase 2.`,status:`open`},{assetId:`search`,stride:`info-disclosure`,mitigation:`Field-level redaction on index responses.`,status:`mitigated`},{assetId:`index`,stride:`dos`,mitigation:`Rate limiting at the gateway.`,status:`mitigated`}],footer:`Two threats are still open — request signing on Auth ships with RFC-114 phase 2, and the …`},pricingtable:{title:`Simplified to three tiers`,icon:`cart`,iconColor:`var(--presence)`,caption:`Resolves the "pricing confusion" risk above.`,plans:[{name:`Starter`,price:`$29`,period:`/mo`,tagline:`Solo + small teams`},{name:`Growth`,price:`$79`,period:`/mo`,tagline:`Most teams start here`,ctaLabel:`Recommended`,highlighted:!0},{name:`Scale`,price:`Custom`,tagline:`Org-wide rollout`,ctaLabel:`Talk to sales`}],features:[{label:`Seats`,values:[`Up to 5`,`Up to 25`,`Unlimited`]},{label:`Atlas search`,values:[!0,!0,!0]},{label:`Guided onboarding`,values:[!1,!0,!0]},{label:`Autoscaling`,values:[!1,!0,!0]},{label:`Migration support`,values:[!1,`Self-serve`,`White-glove`]}],footer:`Down from five overlapping tiers today, one plan per team size instead of per feature.`},raci:{title:`Who owns the launch`,icon:`table`,iconColor:`var(--presence)`,tasks:[`Search rewrite`,`Data migration`,`Onboarding redesign`,`Autoscaling rollout`,`Launch comms`],roles:[`Engineering`,`Product`,`Design`,`GTM`,`Support`],cells:[{task:`Search rewrite`,role:`Engineering`,rating:`R`},{task:`Search rewrite`,role:`Product`,rating:`A`},{task:`Search rewrite`,role:`Design`,rating:`C`},{task:`Search rewrite`,role:`GTM`,rating:`I`},{task:`Search rewrite`,role:`Support`,rating:`I`}],footer:`<b>Product is Accountable</b> on every workstream but the two engineering-only builds — t…`},dimensiondrawing:{title:`Mounting bracket — shop drawing`,icon:`edit`,iconColor:`var(--presence)`,outline:[{x:0,y:0},{x:60,y:0},{x:60,y:18},{x:18,y:18},{x:18,y:50}],dimensions:[{from:[0,0],to:[60,0],label:`60`},{from:[0,0],to:[0,50],label:`50`},{from:[0,0],to:[18,0],label:`18`},{from:[60,0],to:[60,18],label:`18`}],tolerance:`±0.1 unless noted`,titleBlock:{part:`BRK-204`,scale:`1:1`,units:`mm`},caption:`L-bracket profile with overall envelope and flange dimensions called out.`,footer:`The dimension lines read the <b>true profile</b> — the drawing auto-fits to scale, so the…`},explodedview:{title:`Flat-pack stool — exploded view`,icon:`layers`,iconColor:`var(--presence)`,axis:`vertical`,parts:[{n:1,name:`Seat panel`,qty:1},{n:2,name:`Tapered leg`,qty:4},{n:3,name:`M6 hex bolt`,qty:8},{n:4,name:`Cam lock`,qty:4},{n:5,name:`Allen wrench`,qty:1}],caption:`Five distinct part types thread onto the centerline in assembly order.`,footer:`Eighteen pieces, <b>five part types</b> — the balloon numbers match the parts list so you…`},weldsymbol:{title:`Bracket-to-base weld callout`,icon:`edit`,iconColor:`var(--warning)`,joint:`fillet`,side:`arrow`,size:`6`,length:`50`,pitch:`100`,process:`GMAW`,caption:`A 6&nbsp;mm fillet on the arrow side, welded intermittently 50&nbsp;long every 100.`,footer:`The glyph below the reference line means <b>arrow-side</b>; <b>50-100</b> reads “50&nbsp;…`},cutlist:{title:`Bookcase — plywood cut list`,icon:`layers`,iconColor:`var(--insight)`,unit:`mm`,stock:{w:2440,h:1220,label:`18mm birch ply — 8×4 sheet`},parts:[{label:`Side`,w:1180,h:360,qty:2},{label:`Shelf`,w:780,h:340,qty:3},{label:`Top`,w:1180,h:340,qty:1},{label:`Base`,w:1180,h:340,qty:1}],caption:`Seven parts nested onto one sheet; the leftover strip is the offcut.`,footer:`All seven parts nest from a <b>single 8×4 sheet</b> at <b>82% yield</b> — one trip to the…`},linebalance:{title:`Bookcase assembly line — station balance`,icon:`chart`,iconColor:`var(--presence)`,takt:90,unit:`s`,stations:[{name:`Panel cut + edge-band`,cycleTime:74},{name:`Dowel + glue-up`,cycleTime:82},{name:`Clamp + cure`,cycleTime:68},{name:`Hardware install`,cycleTime:101,bottleneck:!0},{name:`Inspect + pack`,cycleTime:58}],footer:`Demand sets a <b>90s takt</b>; hardware install runs 101s and is the one station pulling …`},moodboard:{title:`The mood`,icon:`image`,iconColor:`var(--presence)`,tiles:[{kind:`image`,span:2,rows:2,from:`var(--presence-deep)`,to:`var(--presence-soft)`,label:`Sete Cidades · twin lakes from the rim`,src:`/demo-assets/images/sete-cidades.jpg`},{kind:`text`,span:2,text:`Calm, vast, green. Let the landscape be the loud thing.`},{kind:`color`,swatch:`var(--presence)`,hex:`#2f9e7a`,label:`Caldera green`},{kind:`image`,from:`var(--text-muted)`,to:`var(--presence-soft)`,label:`Green coast · hydrangeas`,src:`/demo-assets/images/green-coast.jpg`},{kind:`color`,swatch:`var(--insight)`,hex:`#6ea8ff`,label:`Atlantic grey-blue`}],footer:`Eight tiles pulled straight from your folder, drag to re-rank what leads.`},palette:{title:`The colorway`,icon:`sparkle`,iconColor:`var(--insight)`,swatches:[{name:`Caldera`,hex:`#1d6b4f`,contrast:`AAA`},{name:`Moss`,hex:`#2f9e7a`,contrast:`AA`},{name:`Atlantic`,hex:`#3f6f9c`,contrast:`AAA`},{name:`Mist`,hex:`#cdd8d4`,contrast:`fail`,light:!0},{name:`Ochre`,hex:`#e8b04b`,contrast:`fail`,light:!0}],footer:`Grade every shot toward these, Mist and Ochre stay accents only.`},photo:{title:`Mood frame`,src:`/demo-assets/images/capelinhos.jpg`,alt:`Capelinhos lighthouse on the volcanic ashfield, Faial`,caption:`Reference frame, match the grade and light to this.`},geomap:{title:`The route, mapped`,icon:`share`,iconColor:`var(--presence)`,markers:[{lat:37.7412,lng:-25.6756,name:`Ponta Delgada`,detail:`Base · fly in, two nights to settle.`,color:`var(--text-muted)`},{lat:37.8607,lng:-25.7936,name:`Sete Cidades`,detail:`Day 2 · twin lakes, shoot the rim at first light.`,color:`var(--presence)`},{lat:37.8217,lng:-25.4036,name:`Gorreana tea`,detail:`Day 4 · Europe's only tea estate, green terraces.`,color:`var(--warning)`},{lat:37.7726,lng:-25.3094,name:`Furnas`,detail:`Day 5 · steam vents + the hot-spring gardens.`,color:`var(--insight)`},{lat:37.8297,lng:-25.1456,name:`Nordeste`,detail:`Day 6 · cliff viewpoints, the quiet east.`,color:`var(--presence-soft)`}],footer:`Tap a pin for the why, golden hours are pinned to each stop.`},bars:{title:`Days per region`,icon:`globe`,iconColor:`var(--insight)`,unit:` days`,bars:[{label:`West · Sete Cidades`,value:2},{label:`Central · Ponta Delgada`,value:2},{label:`East · Furnas & Nordeste`,value:3,hot:!0}],footer:`The green east gets the most time, it earns it.`},storystrip:{title:`The arc of the film`,icon:`play`,iconColor:`var(--presence)`,panels:[{heading:`Arrival`,icon:`globe`,body:`Land in the grey. Wet cobbles, low cloud, set the calm.`,color:`var(--text-muted)`,caption:`Day 1`},{heading:`The rim`,icon:`image`,body:`Climb to Sete Cidades. The green opens up. This is the breath.`,color:`var(--presence)`,caption:`Day 2`},{heading:`The work`,icon:`spark`,body:`Tea terraces and steam. People in the landscape, hands, not faces.`,color:`var(--warning)`,caption:`Day 4–5`},{heading:`The edge`,icon:`share`,body:`Nordeste cliffs. The vastness pays off. Let a shot run long.`,color:`var(--insight)`,caption:`Day 6`},{heading:`Leaving`,icon:`send`,body:`Back to grey, but changed. End on still water.`,color:`var(--presence-soft)`,caption:`Day 7`}],footer:`Five beats, calm, breath, work, edge, return.`},carousel:{title:`Hero-shot candidates`,icon:`image`,iconColor:`var(--insight)`,start:0,slides:[{label:`Lakes from the rim`,caption:`The poster frame, wide, symmetrical.`,from:`var(--presence-deep)`,to:`var(--presence-soft)`,tag:`open`,src:`/demo-assets/images/sete-cidades.jpg`},{label:`Green coast`,caption:`Lead line through the hydrangeas.`,from:`var(--insight)`,to:`var(--presence)`,tag:`transition`,src:`/demo-assets/images/green-coast.jpg`},{label:`Furnas lake`,caption:`Still, mood-heavy, the mid.`,from:`var(--text-muted)`,to:`var(--warning)`,tag:`mid`,src:`/demo-assets/images/furnas-lake.jpg`},{label:`Basalt cliffs`,caption:`The held wide, the close.`,from:`var(--presence)`,to:`var(--insight)`,tag:`close`,src:`/demo-assets/images/basalt-cliffs.jpg`}],footer:`Swipe through the four anchor frames the cut hangs on.`},lightbox:{title:`Shot list · the grid`,icon:`layers`,iconColor:`var(--presence)`,items:[{label:`Ponta Delgada · arrival`,caption:`Day 1 · 35mm · grey`,from:`var(--text-muted)`,to:`var(--presence-deep)`,src:`/demo-assets/images/ponta-delgada.jpg`},{label:`Twin lakes · wide`,caption:`Day 2 · 24mm · golden`,from:`var(--presence-deep)`,to:`var(--presence-soft)`,src:`/demo-assets/images/sete-cidades.jpg`},{label:`Patchwork fields · detail`,caption:`Day 4 · 85mm · interior`,from:`var(--warning)`,to:`var(--presence)`,src:`/demo-assets/images/patchwork-fields.jpg`},{label:`Furnas lake · mood`,caption:`Day 5 · 50mm · still`,from:`var(--insight)`,to:`var(--text-muted)`,src:`/demo-assets/images/furnas-lake.jpg`},{label:`Cliff edge · held`,caption:`Day 6 · 24mm · vast`,from:`var(--presence)`,to:`var(--insight)`,src:`/demo-assets/images/cliff-fields.jpg`}],footer:`Click any tile to open it full-frame.`},beforeafter:{title:`The grade`,icon:`sparkle`,iconColor:`var(--warning)`,before:{label:`RAW`,from:`var(--text-muted)`,to:`var(--presence-deep)`,caption:`Flat, cool, true to sensor`,src:`/demo-assets/images/overcast-coast.jpg`},after:{label:`Graded`,from:`var(--presence)`,to:`var(--insight)`,caption:`Greens lifted, mist warmed`,src:`/demo-assets/images/green-coast.jpg`},position:46,footer:`Drag the divider, the look is a soft green lift with crushed basalt shadows.`},imagecallouts:{title:`Composing the rim shot`,icon:`eye`,iconColor:`var(--insight)`,image:{from:`var(--presence-deep)`,to:`var(--presence-soft)`,label:`Sete Cidades · the wide`,src:`/demo-assets/images/sete-cidades.jpg`},callouts:[{x:50,y:24,label:`Horizon high`,detail:`Sky to the top third, land is the subject.`,color:`var(--presence)`},{x:22,y:60,label:`Blue lake`,detail:`Anchor the left third with the deeper water.`,color:`var(--insight)`},{x:74,y:62,label:`Green lake`,detail:`Balance with the warm green on the right.`,color:`var(--warning)`},{x:50,y:86,label:`Foreground rim`,detail:`A sliver of basalt grounds the frame.`,color:`var(--text-muted)`}],footer:`Four pins for the one frame everything else supports.`},annotcallouts:{title:`Contact sheet · notes`,icon:`doc`,iconColor:`var(--presence)`,caption:`Day 2 selects, what made the cut and why.`,ratio:1.7777777777777777,callouts:[{x:20,y:30,label:`01 · keep`,note:`Cleanest horizon line of the morning, <b>this is the poster</b>.`,color:`var(--presence)`},{x:56,y:26,label:`02 · maybe`,note:`Nice light, but a tourist on the path. <mark>Clone-out or cut.</mark>`,color:`var(--warning)`},{x:38,y:70,label:`03 · cut`,note:`Cloud went flat here, no separation in the greens.`,color:`var(--danger)`},{x:80,y:64,label:`04 · keep`,note:`The transition frame for the hydrangea road.`,color:`var(--insight)`}],footer:`Pins map to the selects in your edit folder.`},videoembed:{title:`The 90-second cut`,icon:`play`,iconColor:`var(--presence)`,thumb:{from:`var(--presence-deep)`,to:`var(--insight)`,label:`São Miguel · a quiet film`},video:`/demo-assets/video/azores-film.mp4`,poster:`/demo-assets/images/basalt-cliffs.jpg`,durationLabel:`1:32`,active:1,chapters:[{time:`0:00`,at:0,title:`Cold open · the grey`},{time:`0:18`,at:20,title:`The rim opens up`},{time:`0:44`,at:48,title:`Tea, steam, hands`},{time:`1:06`,at:72,title:`Nordeste · the held wide`},{time:`1:24`,at:91,title:`Still water · out`}],footer:`Chapters line up with the five-beat arc above.`},waveform:{title:`Scratch track`,icon:`speaker`,iconColor:`var(--insight)`,durationLabel:`1:32`,color:`var(--presence)`,position:22,bars:[.12,.2,.16,.3,.42],markers:[{at:20,label:`swell in`},{at:48,label:`rhythm`},{at:91,label:`tail out`}],footer:`Ambient piano under field-recorded wind, builds with the arc.`},sankey:{title:`How the seven days flow`,icon:`chart`,iconColor:`var(--presence)`,unit:` days`,nodes:[{id:`trip`,label:`7 days`,layer:0,color:`var(--presence)`},{id:`west`,label:`West coast`,layer:1,color:`var(--insight)`},{id:`east`,label:`East coast`,layer:1,color:`var(--warning)`},{id:`base`,label:`Base · PDL`,layer:1,color:`var(--text-muted)`},{id:`shoot`,label:`Shoot days`,layer:2,color:`var(--presence-soft)`}],links:[{source:`trip`,target:`west`,value:2},{source:`trip`,target:`east`,value:3},{source:`trip`,target:`base`,value:2},{source:`west`,target:`shoot`,value:2},{source:`east`,target:`shoot`,value:2}],footer:`Five real shoot days, two to scout and breathe.`},proscons:{title:`Drone, pack it?`,icon:`layers`,iconColor:`var(--insight)`,prosLabel:`Bring it`,consLabel:`Leave it`,pros:[{text:`The rim wides are <b>made</b> for the air`,weight:5,note:`Sete Cidades from above is the signature frame.`},{text:`Cliff scale at Nordeste`,weight:4},{text:`Light to carry`,weight:2}],cons:[{text:`Azores wind is <mark>relentless</mark>`,weight:4,note:`Gusts over the calderas are no joke.`},{text:`No-fly near Furnas park`,weight:3},{text:`One more battery system`,weight:2}],verdict:`Pack it, but plan air shots for the <b>calm dawn windows only</b>.`,footer:`Weighted on the frames you actually need.`},casestudy:{title:`A reference that worked`,icon:`spark`,iconColor:`var(--warning)`,subject:`How a 3-day Faroe Islands edit hit a calm, vast feel`,defaultStage:`result`,setup:{body:`Same brief, different rock: <b>calm, green, vast</b>, and the same grey-light problem.`},action:{body:`They shot almost entirely at the <mark>edges of the day</mark> and graded toward two colo…`,metric:`2-color grade`},result:{body:`The film felt like one breath. It traveled, picked up by three travel outlets in a week.`,metric:`1.2M views`},lesson:{body:`Constraint is the look. Fewer colors, fewer hours, more patience.`},footer:`We're borrowing the two-color discipline, moss + slate.`},pullquote:{title:`The line we shoot to`,icon:`quote`,iconColor:`var(--presence)`,quote:`Let the landscape be the loud thing, and stand still long enough to hear it.`,author:`Your brief`,role:`"calm, green, vast"`,tone:`success`,variants:[{quote:`No fast cuts. The island has one speed; match it.`,author:`Edit note`},{quote:`Hands in the frame, never faces, let it stay a place, not a portrait.`,author:`Shot rule`}],footer:`Pinned above the timeline for the whole edit.`},takeaways:{title:`The brief in five`,icon:`check`,iconColor:`var(--insight)`,heading:`What to remember on the island`,items:[{text:`Shoot the <b>edges of the day</b>, grey midday is for scouting.`,color:`var(--presence)`,detail:`Golden + blue hour are pinned per stop.`},{text:`Grade toward <b>moss + slate</b>; ochre is an accent only.`,color:`var(--warning)`},{text:`Hold the wides <b>long</b>, let vastness breathe.`,color:`var(--insight)`,detail:`Min 8 seconds on the cliff and rim shots.`},{text:`Keep <b>Day 2 & 3 open</b> for the one clear rim morning.`,color:`var(--text-muted)`},{text:`Hands, not faces, keep it a place.`,color:`var(--presence-soft)`}],footer:`Tap each as you bag it.`},skeleton:{title:`Pulling 12 more refs`,icon:`image`,iconColor:`var(--text-muted)`,variant:`media`,rows:4,loadedLabel:`Show what loaded`,footer:`Importing the rest of your saved pins, the board grows as they land.`},emptystate:{title:`Soundtrack`,icon:`speaker`,iconColor:`var(--insight)`,art:`spark`,headline:`No licensed track yet`,copy:`The cut is running on a scratch piano. Pick a final track and I'll <b>re-time the chapter…`,action:`Browse calm scores`,actionIcon:`play`,secondary:`Keep the scratch`,color:`var(--presence)`,footer:`One missing piece before this film is shareable.`},mediacard:{title:`Reference film to study before the cut`,icon:`play`,iconColor:`var(--presence)`,cover:{src:`/demo-assets/images/sete-cidades.jpg`,from:`var(--presence-deep)`,to:`var(--presence-soft)`},year:`2018`,runtime:`1h 32m`,rating:`TV-PG`,score:88,genres:[`Travel`,`Documentary`,`Slow cinema`],logline:`A patient, near-wordless portrait of a volcanic island in the Atlantic — mist over calder…`,providers:[`Mubi`,`Criterion`,`Vimeo`],footer:`Watch the first ten minutes for pacing, then mirror its wide-to-still rhythm.`},voicestyle:{title:`Your Writing Voice`,icon:`spark`,iconColor:`var(--presence)`,traits:[{trait:`Short, punchy sentences`,example:`Ship it. Then iterate.`},{trait:`Dry, understated humour`},{trait:`Leads with the verb`},{trait:`Skips the warm-up`,example:`No "I hope this finds you well."`}],sample:{generic:`I wanted to reach out to let you know that we have completed the project and it is now re…`,inYourVoice:`Project's done. Ready for your eyes whenever.`},footer:`Learned from <b>40 of your messages</b> — I'll keep this on for drafts.`},exposuretriangle:{title:`Portrait exposure`,icon:`image`,iconColor:`var(--presence)`,aperture:`f/2.8`,shutter:`1/250`,iso:200,ev:`EV 11`,effects:[{axis:`aperture`,note:`Shallow depth of field — soft, blurred background.`},{axis:`shutter`,note:`Fast enough to freeze a small head turn.`},{axis:`iso`,note:`Low ISO keeps skin tones clean and noise-free.`}],caption:`A classic available-light portrait: wide aperture to isolate the subject, low ISO for cle…`},colorwheel:{title:`Triadic color scheme`,icon:`spark`,iconColor:`var(--presence)`,baseHue:210,harmony:`triad`,swatches:[{hue:210,hex:`#2f80ed`,role:`base`},{hue:330,hex:`#e84393`,role:`accent`},{hue:90,hex:`#8cc63f`,role:`accent`}],caption:`Three hues spaced 120° apart — vivid and balanced, with one dominant and two supporting.`},artanalysis:{title:`Reading the composition`,icon:`image`,iconColor:`var(--presence)`,overlay:`thirds`,regions:[{x:56,y:22,w:32,h:46,label:`Subject`},{x:8,y:58,w:30,h:30,label:`Foreground`}],palette:[{hex:`#e8c39e`,role:`highlight`},{hex:`#b5723a`,role:`midtone`},{hex:`#2e2117`,role:`shadow`}],notes:[{label:`Composition`,text:`The subject sits on the right vertical third — the eye lands there first.`},{label:`Light`,text:`Warm key light from frame-left rakes across the form, deep shadow on the right.`},{label:`Style`,text:`A restrained earth palette gives a quiet, classical feel.`}],caption:`A rule-of-thirds read: the focal subject anchored on the right intersection.`},shotlist:{title:`Opening scene — shot breakdown`,icon:`play`,iconColor:`var(--warning)`,shots:[{n:1,size:`WS`,movement:`Slow push-in`,lens:`24mm`,duration:`6s`,action:`Establish the empty studio at dawn; light bleeds across the floor as she steps into frame.`},{n:2,size:`MS`,movement:`Static`,lens:`50mm`,duration:`4s`,action:`She sets the camera down and exhales, reading the room.`,dialogue:`Okay. One more time, from the top.`},{n:3,size:`CU`,movement:`Slight rack focus`,lens:`85mm`,duration:`3s`,action:`Her hands frame the shot on the small monitor; focus pulls from fingers to screen.`},{n:4,size:`OTS`,movement:`Handheld drift`,lens:`35mm`,duration:`5s`,action:`From behind her shoulder we see the playback begin — the take she has been chasing.`,dialogue:`There it is.`}],caption:`Wide to establish, then tighten with each beat so the room shrinks to a single decisive m…`},runofshow:{title:`Coastal shoot day — run of show`,icon:`clock`,iconColor:`var(--presence)`,eventDate:`Day 3 · Ponta da Ferraria`,cues:[{time:`5:40 AM`,cue:`Crew call, load the van`,owner:`Mara`,state:`done`},{time:`6:15 AM`,cue:`Sunrise coastline wides`,owner:`Mara`,duration:`25 min`,state:`done`},{time:`7:10 AM`,cue:`Drone pass, north cliffs`,owner:`Dev`,duration:`20 min`,state:`live`},{time:`8:00 AM`,cue:`Interview setup, hot spring overlook`,owner:`Théo`,duration:`15 min`,state:`next`},{time:`8:30 AM`,cue:`Interview take`,owner:`Mara`,duration:`30 min`}],footer:`The drone window closes once wind picks up after 7:30 — Dev is racing it now.`},beatsheet:{title:`Beat sheet`,icon:`edit`,iconColor:`var(--presence)`,framework:`Save the Cat`,beats:[{name:`Opening Image`,at:`1%`,line:`A snapshot of the flawed world before anything changes.`},{name:`Catalyst`,at:`10%`,line:`The call that breaks the routine and forces a choice.`},{name:`Break into Two`,at:`20%`,line:`The hero commits and crosses into the new world.`},{name:`Midpoint`,at:`50%`,line:`A false victory (or defeat) raises the stakes for real.`},{name:`All Is Lost`,at:`75%`,line:`The lowest point — the old way clearly fails.`}],tension:[1,2,3,5,8],caption:`Tension climbs to the Midpoint, dips at the false low, then spikes through the Finale.`},craftchart:{title:`Cross-stitch heart motif`,icon:`edit`,iconColor:`var(--insight)`,craft:`crossstitch`,rows:12,cols:12,cells:[{r:1,c:2,color:`var(--danger)`,symbol:`×`},{r:1,c:3,color:`var(--danger)`,symbol:`×`},{r:1,c:8,color:`var(--danger)`,symbol:`×`},{r:1,c:9,color:`var(--danger)`,symbol:`×`},{r:2,c:1,color:`var(--danger)`,symbol:`×`}],legend:[{symbol:`×`,color:`var(--danger)`,meaning:`DMC 321 — red (full cross-stitch)`},{symbol:`o`,color:`var(--warning-soft)`,meaning:`DMC 819 — pale pink (highlight glint)`},{meaning:`Blank — leave the fabric unworked`}],caption:`Work each ×: bring the needle up at the bottom-left of the square and down at the top-rig…`},patternpiece:{title:`Simple tote bag — cutting layout`,icon:`edit`,iconColor:`var(--presence)`,fabric:{w:90,h:70,label:`90 × 70 cm cotton canvas (folded)`},pieces:[{label:`Body panel`,w:38,h:42,x:0,y:4,fold:!0,qty:1},{label:`Lining panel`,w:38,h:42,x:44,y:4,fold:!0,qty:1},{label:`Strap`,w:70,h:8,x:4,y:52,qty:2}],unit:`cm`,caption:`Body and lining are cut on the fold; the two carry straps nest along the bottom.`},storyarc:{title:`Short-Film Arc — Freytag`,icon:`layers`,iconColor:`var(--presence)`,framework:`freytag`,beats:[{stage:`Rising Action`,label:`The storm rolls in`},{stage:`Climax`,label:`The lighthouse fails`},{stage:`Falling Action`,label:`Dawn rescue`}]},castmap:{title:`Cast Map — The Keeper`,icon:`share`,iconColor:`var(--presence)`,nodes:[{id:`elara`,name:`Elara`,role:`The lighthouse keeper`,faction:`The Island`},{id:`mira`,name:`Mira`,role:`A runaway she shelters`,faction:`The Island`},{id:`bram`,name:`Old Bram`,role:`The keeper before her`,faction:`The Island`},{id:`davo`,name:`Captain Davo`,role:`Master of the Wrenn`,faction:`The Sea`},{id:`tomas`,name:`Tomas`,role:`Davo's first mate`,faction:`The Sea`}],links:[{from:`elara`,to:`mira`,kind:`ally`,label:`shelters`},{from:`bram`,to:`elara`,kind:`mentor`,label:`taught the light`},{from:`davo`,to:`mira`,kind:`family`,label:`her father`},{from:`elara`,to:`davo`,kind:`ally`,label:`saves the Wrenn`},{from:`warden`,to:`mira`,kind:`rival`,label:`hunts`}],caption:`Who protects whom — and who is hunting the runaway.`,footer:`The hidden <strong>father</strong> and the first mate’s <strong>betrayal</strong> are the…`},devicemark:{title:`Literary Devices — Opening Line`,text:`The lighthouse stood like a silent sentinel, its beam sweeping the hungry dark with the p…`,marks:[{phrase:`like a silent sentinel`,device:`simile`,note:`compares the lighthouse to a guard`},{phrase:`hungry dark`,device:`personification`,note:`darkness described as if it consumes`},{phrase:`patience of the tide`,device:`metaphor`,note:`slow, inevitable rhythm`}]},creativetest:{title:`Two launch posts for the film`,icon:`image`,iconColor:`var(--presence)`,variants:[{label:`Variant A · wide rim shot`,src:`/demo-assets/images/sete-cidades.jpg`,headline:`Seven days. One quiet island.`,metrics:[{label:`CTR`,value:`2.1%`},{label:`Saves`,value:`340`},{label:`Watch-through`,value:`38%`}]},{label:`Variant B · crater at dusk`,src:`/demo-assets/images/crater-panorama.jpg`,headline:`The film I almost didn't make.`,metrics:[{label:`CTR`,value:`3.4%`,delta:`+1.3pp`,deltaDir:`good`},{label:`Saves`,value:`812`,delta:`+472`,deltaDir:`good`},{label:`Watch-through`,value:`61%`,delta:`+23pp`,deltaDir:`good`}]}],winner:1,footer:`Variant B wins on every metric, the confessional hook out-pulls pure scenery.`},brandguide:{title:`The São Miguel story kit`,icon:`doc`,iconColor:`var(--insight)`,colors:[{name:`Caldera`,hex:`#1d6b4f`,contrast:`AAA`},{name:`Moss`,hex:`#2f9e7a`,contrast:`AA`},{name:`Atlantic`,hex:`#3f6f9c`,contrast:`AAA`},{name:`Mist`,hex:`#cdd8d4`,contrast:`fail`,light:!0},{name:`Ochre`,hex:`#e8b04b`,contrast:`fail`,light:!0}],typography:[{name:`Display`,sample:`'Iowan Old Style', Georgia, serif`,weight:`600`},{name:`Caption`,sample:`ui-sans-serif, system-ui, sans-serif`,weight:`500`},{name:`Overlay numerals`,sample:`ui-monospace, 'JetBrains Mono', monospace`,weight:`600`}],voiceNotes:[`Short sentences, let the landscape do the talking.`,`One plain claim per caption, no exclamation points.`,`Always name the place, never just "the island."`],footer:`Apply this to every caption and thumbnail before it ships.`},musicstaff:{title:`C major scale (treble clef)`,icon:`sparkle`,iconColor:`var(--presence)`,clef:`treble`,timeSignature:`4/4`,tempo:120,notes:[{pitch:`C4`,duration:`quarter`},{pitch:`D4`,duration:`quarter`},{pitch:`E4`,duration:`quarter`},{pitch:`F4`,duration:`quarter`},{pitch:`G4`,duration:`quarter`}],footer:`C major uses only white keys, no sharps or flats. Every other major scale is this same pa…`},flashcard:{title:`Interval ear-training deck`,icon:`spark`,iconColor:`var(--warning)`,cards:[{front:`Perfect 5th (C → G)`,back:`Sounds like: "Twinkle Twinkle" opening. 7 semitones. The power chord of classical harmony.`},{front:`Major 3rd (C → E)`,back:`Sounds like: "When the Saints Go Marching In." 4 semitones. Defines a major chord.`},{front:`Minor 3rd (A → C)`,back:`Sounds like: "Smoke on the Water" riff. 3 semitones. Defines a minor chord, darker colour.`},{front:`Octave (C4 → C5)`,back:`Sounds like: "Somewhere Over the Rainbow" opening leap. 12 semitones. Same note, doubled …`},{front:`Tritone (C → F#)`,back:`The Devil's interval, 6 semitones, right in the middle of the octave. Unstable; resolves …`}],footer:`Flip each card after singing the interval. Aim for instant recognition, the goal is heari…`},chronologicaltimeline:{title:`Staff notation through the centuries`,icon:`clock`,iconColor:`var(--presence)`,startLabel:`900 AD`,endLabel:`1800s`,events:[{at:0,date:`~900 AD`,title:`Neumes`,detail:`Earliest written notation, squiggles above text hinting at melodic contour, no pitch prec…`},{at:18,date:`1025`,title:`Guido of Arezzo`,detail:`Invented the four-line staff and the sol-fa syllable system (ut re mi fa sol la). First r…`,color:`var(--presence)`},{at:34,date:`1200s`,title:`Mensural notation`,detail:`Rhythm encoded for the first time via note shapes, unlocks polyphony (multiple independen…`},{at:55,date:`1450s`,title:`Music printing press`,detail:`Ottaviano Petrucci's moveable-type music printing spreads sheet music across Europe.`,color:`var(--insight)`},{at:73,date:`1600s`,title:`Baroque conventions`,detail:`Five-line treble and bass staves standardised; figured bass shorthand speeds up harmonisa…`}],footer:`Western notation is ~1,000 years old. Non-Western traditions (Indian raga, Arabic maqam, …`},chorddiagram:{title:`G Major chord`,chordName:`G`,instrument:`Guitar`,frets:[3,2,0,0,0],fingers:[2,1,null,null,null],notes:[`G`,`B`,`G`,`D`,`G`]},mixerboard:{title:`Track arrangement`,icon:`sliders`,iconColor:`var(--presence)`,bars:8,tracks:[{name:`Drums`,color:`var(--presence)`,volume:86,pan:0,clips:[{start:0,len:8,label:`Beat`}]},{name:`Bass`,color:`var(--insight)`,volume:78,pan:-12,mute:!0,clips:[{start:0,len:6,label:`Groove`}]},{name:`Keys`,color:`var(--warning)`,volume:64,pan:28,clips:[{start:2,len:4,label:`Pad`},{start:6,len:2,label:`Stab`}]},{name:`Vox`,color:`var(--presence-soft)`,volume:72,pan:0,solo:!0,clips:[{start:1,len:3,label:`Verse`},{start:4,len:4,label:`Chorus`}]}],caption:`Four lanes on an 8-bar grid: bass is muted while the vocal is soloed for a focused listen.`},pianokeys:{title:`C major 7 chord`,icon:`play`,iconColor:`var(--presence)`,chordName:`Cmaj7`,startNote:`C4`,octaves:2,showLabels:!0,highlight:[{note:`C4`,role:`root`},{note:`E4`,role:`3rd`},{note:`G4`,role:`5th`},{note:`B4`,role:`7th`}],caption:`A major-7 stacks a major triad with a major 7th: C–E–G–B.`,footer:`The bright, jazzy colour comes from that major-7th interval (B over C) — a half-step belo…`},fretboardmap:{title:`A minor pentatonic`,icon:`sparkle`,iconColor:`var(--presence)`,scaleName:`A minor pentatonic`,strings:6,frets:12,tuning:[`E`,`A`,`D`,`G`,`B`],dots:[{string:6,fret:5,label:`R`,role:`root`},{string:6,fret:8,label:`b3`,role:`third`},{string:5,fret:5,label:`4`,role:`other`},{string:5,fret:7,label:`5`,role:`fifth`},{string:4,fret:5,label:`b7`,role:`other`}],caption:`The box-1 shape at the 5th fret — roots on the low E, D, and high E strings anchor the po…`},circleoffifths:{title:`Circle of fifths`,icon:`sparkle`,iconColor:`var(--insight)`,highlightKey:`G`,showMinors:!0,related:[`C`,`D`,`Em`],caption:`G major sits one sharp clockwise of C: its IV is C, its V is D, and Em is its relative mi…`},practicelog:{title:`Two weeks of piano practice`,icon:`clock`,iconColor:`var(--presence)`,instrument:`Piano`,sessions:[{date:`2026-06-19`,minutes:25,focus:`scales`,note:`Hanon exercises`},{date:`2026-06-20`,minutes:40,piece:`Clair de Lune`,note:`Started the arpeggio section`},{date:`2026-06-21`,minutes:30,piece:`Clair de Lune`},{date:`2026-06-22`,minutes:20,focus:`sight-reading`},{date:`2026-06-23`,minutes:45,piece:`Clair de Lune`,note:`Tempo still rushes in the climax`}]},gallery:{eyebrow:`Planet photos · from space telescopes`,items:[{label:`Earth, the blue marble`,source:`nasa.gov`,tag:`home`,h1:`#3a7bd5`,h2:`#16314f`},{label:`Mars, the red planet`,source:`nasa.gov`,tag:`rusty`,h1:`#c1440e`,h2:`#5e2207`},{label:`Jupiter & the Great Red Spot`,source:`esa.int`,tag:`biggest`,h1:`#d9a066`,h2:`#6e4a28`},{label:`Saturn and its rings`,source:`nasa.gov`,tag:`rings`,h1:`#e0c074`,h2:`#6b5826`},{label:`Neptune, deep blue`,source:`nasa.gov`,tag:`windy`,h1:`#2c5fb3`,h2:`#13284f`}],footer:`These are real pictures taken by spacecraft and telescopes. Pretty cool, right?`},togglegroup:{title:`Which planet has the most moons?`,icon:`moon`,iconColor:`var(--insight)`,mode:`single`,items:[{label:`Earth (1)`,title:`Earth has just our one Moon`},{label:`Mars (2)`,title:`Mars has two tiny potato-shaped moons`},{label:`Saturn (146)`,title:`Saturn is the moon champion!`,on:!0}],hint:`Tap a planet! Saturn wins with over 140 moons. Earth has just one, the one you see at nig…`,color:`var(--insight)`,footer:`Some moons have oceans hidden under ice. Scientists wonder what might live there!`},radiogroup:{title:`Quick quiz: which planet do we live on?`,icon:`spark`,iconColor:`var(--presence)`,layout:`card`,options:[{label:`Mars`,caption:`The red one with rovers`,icon:`globe`,value:`4th`},{label:`Earth`,caption:`The blue one with water and YOU`,icon:`check`,value:`✅ correct!`},{label:`Jupiter`,caption:`The giant gas one`,icon:`globe`,value:`5th`},{label:`The Sun`,caption:`Actually a star, not a planet!`,icon:`sun`,value:`tricky`}],selected:1,color:`var(--presence)`,footer:`You got it, Earth, the third planet from the Sun. The only home we’ve ever had.`},svgblock:{title:`The solar system, to (very rough) scale`,icon:`sparkle`,iconColor:`var(--warning)`,svg:`<svg viewBox="0 0 560 120" xmlns="http://www.w3.org/2000/svg">
2
2
  <defs>
3
3
  <radialGradie…`,caption:`Sizes are roughly proportional; distances are heavily compressed, real gaps are millions …`,footer:`Jupiter alone contains more mass than all other planets combined. Saturn’s rings are 99.9…`},scalefelt:{title:`How Big Is It, Really?`,icon:`layers`,iconColor:`var(--presence)`,value:`6.5`,unit:`metres across (primary mirror)`,comparisons:[{to:`a tall adult giraffe`,howMany:1.2,note:`Webb's mirror would slightly out-reach the tallest land animal.`},{to:`stacked dinner plates edge to edge`,howMany:24,note:`Each gold-coated hexagon segment is about a metre wide.`},{to:`Hubble mirrors by light-collecting area`,howMany:6,note:`Roughly six times Hubble's gathering power, in infrared.`},{to:`a school bus, in folded launch width`,howMany:`about one`,note:`It folded origami-style to fit inside the Ariane 5 fairing.`}],footer:`Figures from NASA. Equivalences are approximate, for a feel of the scale.`},moonphase:{title:`The Moon tonight`,icon:`moon`,iconColor:`var(--presence)`,illumination:.72,waxing:!0,phaseName:`Waxing Gibbous`,date:`Jun 20, 2026`,upcoming:[{date:`Sat 21`,illumination:.81},{date:`Sun 22`,illumination:.89},{date:`Mon 23`,illumination:.95},{date:`Tue 24`,illumination:.99}],caption:`Brightening toward the full Moon on the 25th — good light for landscapes, tougher for fai…`},skychart:{title:`The Summer Triangle, overhead`,icon:`sparkle`,iconColor:`var(--presence)`,stars:[{x:.5,y:.32,mag:.03,name:`Vega`},{x:.64,y:.58,mag:.77,name:`Altair`},{x:.36,y:.55,mag:1.25,name:`Deneb`},{x:.46,y:.46,mag:3.2},{x:.57,y:.44,mag:2.9}],constellations:[{name:`Summer Triangle`,lines:[[0,1],[1,2],[2,0]]},{name:`Lyra`,lines:[[0,3],[3,4]]}],planets:[{name:`Saturn`,x:.74,y:.5}],caption:`Three first-magnitude stars across three constellations — the anchor of the northern summ…`},orbitdiagram:{title:`The inner solar system`,icon:`globe`,iconColor:`var(--warning)`,center:`Sun`,toScale:!1,bodies:[{name:`Mercury`,orbitRadius:.39,size:1,distance:`0.39 AU`,period:`88 days`,color:`var(--text-muted)`},{name:`Venus`,orbitRadius:.72,size:2,distance:`0.72 AU`,period:`225 days`,color:`var(--warning)`},{name:`Earth`,orbitRadius:1,size:2,distance:`1.00 AU`,period:`365 days`,color:`var(--presence)`},{name:`Mars`,orbitRadius:1.52,size:1,distance:`1.52 AU`,period:`687 days`,color:`var(--danger)`}],caption:`Orbit spacing is compressed so all four fit; periods grow with distance (Kepler’s third l…`},sizecompare:{title:`Line them up: shapes to scale`,icon:`layers`,iconColor:`var(--insight)`,unit:`m`,subjects:[{label:`You (a kid)`,length:1.4,shape:`human`},{label:`School bus`,length:12,shape:`bus`},{label:`T. rex`,length:12,shape:`generic`},{label:`Argentinosaurus`,length:37,shape:`generic`}],footer:`Same shapes, same real scale, one shared ground line.`},donut:{title:`What did dinosaurs eat?`,icon:`chart`,iconColor:`var(--presence-soft)`,rows:[{label:`Plant-eaters`,pct:65,color:`var(--insight)`},{label:`Meat-eaters`,pct:28,color:`var(--danger)`},{label:`Ate both`,pct:7,color:`var(--warning)`}],footer:`Most dinosaurs were gentle plant-eaters, only some were scary hunters.`},foodweb:{title:`Who ate whom in the Cretaceous`,icon:`globe`,iconColor:`var(--insight)`,tiers:[`Plants`,`Plant-eaters`,`Hunters`,`Top predator`],organisms:[{id:`ferns`,tier:0,label:`Ferns & cycads`},{id:`conifers`,tier:0,label:`Conifers`},{id:`tric`,tier:1,label:`Triceratops`},{id:`edmont`,tier:1,label:`Edmontosaurus`},{id:`ankyl`,tier:1,label:`Ankylosaurus`}],links:[{from:`ferns`,to:`tric`},{from:`conifers`,to:`edmont`},{from:`ferns`,to:`ankyl`},{from:`conifers`,to:`tric`},{from:`tric`,to:`dromae`}],footer:`T. rex sat at the top, but it likely scavenged just as often as it hunted.`},taxonrank:{title:`Where T. rex fits in the tree of life`,icon:`layers`,iconColor:`var(--warning)`,scientificName:`Tyrannosaurus rex`,ranks:[{level:`Kingdom`,name:`Animalia`},{level:`Phylum`,name:`Chordata`},{level:`Class`,name:`Reptilia`},{level:`Order`,name:`Saurischia`},{level:`Family`,name:`Tyrannosauridae`}],footer:`Every rung down the ladder gets more specific — "Animalia" fits every animal ever, "T. re…`},list:{title:`5 things to tell your friends`,icon:`check`,iconColor:`var(--presence-soft)`,items:[`<b>Dinosaurs ruled for 165 million years</b>, way longer than people have been around.`,`<b>Argentinosaurus</b> was the heaviest, as long as 3 school buses.`,`<b>T. rex</b> had the strongest bite of any land animal ever.`,`<b>Birds are living dinosaurs</b>, look at a chicken and say hi to a dino cousin!`,`A <b>giant asteroid</b> ended their reign 66 million years ago.`]},speciescard:{title:`Field guide: backyard bird`,icon:`globe`,iconColor:`var(--presence)`,commonName:`American Robin`,scientificName:`Turdus migratorius`,image:{from:`var(--presence-deep)`,to:`var(--insight-soft)`},status:`Least concern`,caption:`A thrush — and a living dinosaur! Every bird is descended from feathered theropods.`,marks:[{label:`Size`,value:`23–28 cm long, robin-sized`},{label:`Colour`,value:`Rusty-orange breast, dark grey back, white eye-ring`},{label:`Habitat`,value:`Lawns, parks, woodland edges — hops on open grass`},{label:`Range`,value:`Across North America; many migrate south in winter`},{label:`Song`,value:`Cheery rolling "cheerily, cheer-up, cheerio"`}],lookalikes:[`Spotted Towhee`,`Eastern Towhee`,`Varied Thrush`],footer:`Tip: a tugging robin on the lawn is <b>listening</b> for worms, not just looking.`},scoreboard:{title:`Tonight around the league`,icon:`chart`,iconColor:`var(--presence)`,games:[{away:`LAL`,home:`GSW`,as:`102`,hs:`108`,status:`Q4 · 4:12`,hot:!0},{away:`BOS`,home:`NYK`,as:`99`,hs:`94`,status:`Q4 · 2:38`},{away:`DEN`,home:`MIN`,as:`88`,hs:`91`,status:`Q3 · 5:01`},{away:`MIL`,home:`PHI`,as:`116`,hs:`112`,status:`Final`},{away:`PHX`,home:`DAL`,as:`71`,hs:`69`,status:`Half`}],footer:`Your game is the close one, Warriors by 6 and pulling away.`},ring:{title:`Steph's night, by the numbers`,icon:`sparkle`,iconColor:`var(--insight)`,rings:[{pct:.62,display:`8/13`,unit:``,label:`From three`,color:`var(--insight)`},{pct:.71,display:`12/17`,unit:``,label:`Field goals`,color:`var(--presence)`},{pct:1,display:`6/6`,unit:``,label:`Free throws`,color:`var(--presence-soft)`}],footer:`62% from deep on 13 attempts, this is a heat check that never cooled off.`},standings:{title:`Western Conference`,icon:`table`,iconColor:`var(--presence-soft)`,rows:[{team:`Thunder`,rec:`41–9`,gb:`-`},{team:`Nuggets`,rec:`36–14`,gb:`5.0`},{team:`Warriors`,rec:`34–16`,gb:`7.0`},{team:`Timberwolves`,rec:`33–17`,gb:`8.0`},{team:`Lakers`,rec:`31–19`,gb:`10.0`}],footer:`A win tonight moves the Warriors within a game of Denver for the 2-seed.`},bump:{title:`West seeding race · by month`,icon:`chart`,iconColor:`var(--presence)`,periods:[`Nov`,`Dec`,`Jan`,`Feb`,`Mar`],series:[{label:`Thunder`,color:`var(--presence)`,ranks:[2,1,1,1,1]},{label:`Nuggets`,color:`var(--insight)`,ranks:[1,2,2,3,2]},{label:`Warriors`,color:`var(--warning)`,ranks:[5,4,4,2,3]},{label:`Wolves`,color:`var(--presence-soft)`,ranks:[3,3,3,4,4]},{label:`Lakers`,color:`var(--text-muted)`,ranks:[4,5,6,5,5]}],footer:`The Thunder seized the top seed in December and never let go; the Warriors’ February surg…`},scoutingreport:{title:`Up next: scouting Thursday's Nuggets`,icon:`chart`,iconColor:`var(--presence)`,opponent:`Denver Nuggets`,tendencies:[`Run their offense almost entirely through Jokić at the elbow, he's averaging 9 assists a …`,`Switch aggressively on the perimeter, which has bothered Golden State's off-ball movement…`,`Struggle to defend in transition, allowing the 4th-most fast-break points in the league.`,`Lean heavily on their bench trio in the second quarter, often their most vulnerable defen…`],matchupNotes:[{label:`Pace`,note:`Denver plays slower than Golden State prefers; expect the Warriors to push tempo early ra…`},{label:`Rebounding`,note:`The Nuggets crash the offensive glass hard, Golden State needs to box out or risk giving …`},{label:`3-point defense`,note:`Denver ranks middle-of-the-pack defending the arc, exactly where Golden State's offense l…`}],keyPlayers:[{name:`Nikola Jokić`,role:`C`,note:`Reigning MVP-caliber center who doubles as their point guard from the elbow. He's a step …`},{name:`Jamal Murray`,role:`PG`,note:`Streaky scorer who heats up in isolation late in games; live with early clock jumpers rat…`},{name:`Aaron Gordon`,role:`PF`,note:`Their best transition finisher, get back on makes and misses alike.`}],footer:`A win Thursday pulls the Warriors within one game of Denver for the 2-seed, exactly the m…`},tournamentbracket:{title:`Your projected playoff bracket`,icon:`share`,iconColor:`var(--presence)`,rounds:[`Wild Card`,`Semifinal`,`Final`],matchups:[{id:`wc-1`,round:0,slot:0,a:`Dynasty Dave`,winner:`a`},{id:`wc-2`,round:0,slot:1,a:`You · Gridiron`,winner:`a`},{id:`wc-3`,round:0,slot:2,a:`The Karens`,b:`Bottom Feeders`},{id:`wc-4`,round:0,slot:3,a:`Brady Bunch`,b:`Waiver Warriors`},{id:`sf-1`,round:1,slot:0,a:`Dynasty Dave`}],footer:`Dynasty Dave and you both clinch a Wild Card bye with a win this week, everyone else play…`},banner:{title:`Please read first`,tone:`warning`,bannerIcon:`shield`,iconColor:`var(--warning)`,message:`I’m Mavéa, not a doctor, this is general information, <b>not a diagnosis</b>.`,detail:`Use it to feel calmer and more prepared, then trust your gut. If anything worries you, ca…`,action:`I understand`,dismissible:!1,footer:`When in doubt, a real clinician who can see your child wins over any guide.`},checklist:{title:`Comfort measures for tonight`,icon:`check`,iconColor:`var(--presence)`,rows:[{t:`Offer small sips often, water, milk, breastmilk, or an oral rehydration drink`,st:`doing`},{t:`Dress in one light layer; a too-warm room makes a fever feel worse`,st:`doing`},{t:`Rest and cuddles, let them sleep; don’t force food, do keep fluids up`,st:`todo`},{t:`A lukewarm (not cold) sponge or bath if they’re uncomfortable`,st:`todo`},{t:`Check on them overnight; note the time and temp of each reading`,st:`todo`}],footer:`Standard pediatric guidance (AAP, NHS), not a prescription. Goal is comfort, not chasing …`},epicurve:{title:`Local flu + RSV activity this season`,icon:`chart`,iconColor:`var(--presence-soft)`,cases:[{period:`Wk 1`,count:40,classification:`confirmed`},{period:`Wk 1`,count:22,classification:`probable`},{period:`Wk 2`,count:58,classification:`confirmed`},{period:`Wk 2`,count:30,classification:`probable`},{period:`Wk 3`,count:86,classification:`confirmed`}],threshold:{value:100,label:`Elevated-activity threshold`},phases:[{label:`School break`,period:`Wk 5`}],footer:`This season peaked right at the elevated-activity line, then eased once school let out fo…`},web:{title:`Where this comes from`,live:!0,results:[{domain:`healthychildren.org`,path:` · AAP`,color:`var(--insight)`,title:`Fever and Your Child`,excerpt:`The American Academy of Pediatrics: focus on <mark>comfort and behavior</mark>, not the e…`},{domain:`mayoclinic.org`,color:`var(--presence)`,title:`Fever in children, first aid`,excerpt:`When to seek care, and how to <mark>safely lower a fever</mark> at home.`},{domain:`nhs.uk`,color:`var(--presence-soft)`,title:`High temperature (fever) in children`,excerpt:`The NHS guide, including the <mark>glass test</mark> for a rash that doesn’t fade.`}]},positioncard:{title:`How worried should you be tonight?`,icon:`alert`,levels:[{label:`Usually fine`,tone:`good`,detail:`Alert between spikes, drinking, wetting diapers — a fever the body is handling.`},{label:`Watch closely`,tone:`caution`,detail:`Clingy and drained but still responsive; recheck in a few hours.`},{label:`Call tonight`,tone:`bad`,detail:`Hard to rouse, breathing fast, or under 3 months with any fever.`}],atLevel:0,marker:`From what you described`,reason:`A playful-between-spikes, drinking child sits at the reassuring end — how they look matte…`,watchFor:[`Under 3 months with any fever`,`A stiff neck, a rash that does not fade under a glass, or trouble breathing`,`No wet diaper in 8 hours, or no tears when crying`],caveat:`This places the situation, it does not diagnose it — your read of your child wins.`},differential:{title:`What is usually behind a fever like this`,icon:`eye`,causes:[{name:`A common viral infection`,likelihood:`common`,tell:`Runny nose or cough, comes and goes over a few days`,pointsAway:`A fever lasting past day 5 with no other symptoms`},{name:`Ear or throat infection`,likelihood:`common`,tell:`Tugging at an ear, pain swallowing, or fussier lying down`,pointsAway:`No ear or throat complaints at all`},{name:`A urinary infection`,likelihood:`less-common`,tell:`Fever with no cold symptoms, especially in younger kids`,pointsAway:`An obvious cold already explaining it`},{name:`A serious bacterial infection`,likelihood:`rare`,serious:!0,tell:`Very drowsy, stiff neck, or a non-fading rash`,pointsAway:`Alert and interactive between spikes`}],prompt:`Look for the tell-tale signs above — a cough or runny nose usually points to the common, …`,caveat:`These are possibilities with honest odds, not a diagnosis; a clinician can examine and co…`},growthcurve:{title:`Weight-for-age · boys, 0–12 months`,iconColor:`var(--presence)`,metric:`weight`,unit:`kg`,ageUnit:`months`,percentiles:[{p:3,points:[{age:0,value:2.5},{age:2,value:4.4},{age:4,value:5.6},{age:6,value:6.4},{age:9,value:7.1}]},{p:15,points:[{age:0,value:2.9},{age:2,value:5},{age:4,value:6.2},{age:6,value:7.1},{age:9,value:7.9}]},{p:50,points:[{age:0,value:3.3},{age:2,value:5.6},{age:4,value:7},{age:6,value:7.9},{age:9,value:8.9}]},{p:85,points:[{age:0,value:3.9},{age:2,value:6.3},{age:4,value:7.8},{age:6,value:8.8},{age:9,value:9.9}]},{p:97,points:[{age:0,value:4.4},{age:2,value:7},{age:4,value:8.6},{age:6,value:9.7},{age:9,value:11}]}],plotted:[{age:0,value:3.4},{age:2,value:5.7},{age:4,value:7.1},{age:6,value:8},{age:9,value:9}],caption:`Every measurement lands right on the 50th-percentile curve — steady tracking along one ba…`},painscale:{title:`How bad is the pain right now?`,icon:`sparkle`,iconColor:`var(--warning)`,kind:`faces`,value:6,caption:`Moderate — interferes with focus`,anchors:[`No pain`,`Worst imaginable`],footer:`Six or higher is worth flagging to a clinician if it persists past a few days.`},badgeset:{title:`Tonight's categories`,icon:`layers`,iconColor:`var(--presence-soft)`,badges:[{label:`Animals`,variant:`solid`,color:`var(--presence)`,icon:`spark`},{label:`Space`,variant:`soft`,color:`var(--insight)`,icon:`moon`},{label:`Movies`,variant:`soft`,color:`var(--presence-soft)`,icon:`play`},{label:`Food`,variant:`outline`,color:`var(--warning)`,icon:`cart`},{label:`Geography`,variant:`dot`,color:`var(--text-muted)`,icon:`globe`}],countIcon:`bell`,count:3,countColor:`var(--warning)`,footer:`Three questions queued. Tap the bell when the room is ready.`},livescore:{title:`Keep score yourself`,icon:`spark`,unit:`pts`,step:1,entries:[{name:`The Martins`,score:9,color:`var(--presence)`},{name:`Gomez crew`,score:7,color:`var(--warning)`},{name:`Kid Squad`,score:6,color:`var(--insight)`}],footer:`Tap +/- as each round lands — the ranking updates as you go.`},gameboard:{title:`Ruy López — the opening position`,icon:`layers`,iconColor:`var(--presence)`,board:`chess`,size:8,pieces:[{row:7,col:4,glyph:`♔`,side:`a`},{row:7,col:5,glyph:`♗`,side:`a`},{row:7,col:6,glyph:`♘`,side:`a`},{row:4,col:4,glyph:`♙`,side:`a`},{row:6,col:4,glyph:`♟`,side:`b`}],highlights:[{row:5,col:2},{row:3,col:1}],moves:[{from:[7,5],to:[3,1]},{from:[7,6],to:[5,5]}],caption:`After 1.e4 e5 2.Nf3 Nc6 3.Bb5, White’s bishop pressures the c6 knight — the Ruy López.`},boardgamescore:{title:`Wingspan, the side table`,icon:`table`,iconColor:`var(--insight)`,game:`Wingspan`,players:[{name:`Dana`,roundScores:[8,11,14,9],total:42},{name:`Marco`,roundScores:[10,9,15,12],total:46},{name:`Priya`,roundScores:[7,10,12,10],total:39}],footer:`Round 4 bird-cards bonus still to add once everyone reveals their hand.`},tierlist:{title:`Category tier list, by how the room did`,icon:`layers`,iconColor:`var(--warning)`,caption:`Ranked by tonight's hit rate, not difficulty on paper.`,rows:[{tier:`S`,color:`var(--danger)`,items:[`Movie quotes`,`90s cartoons`]},{tier:`A`,color:`var(--warning)`,items:[`World capitals`,`Music trivia`]},{tier:`B`,color:`var(--insight)`,items:[`Sports history`]},{tier:`C`,color:`var(--text-muted)`,items:[]}],footer:`Nobody touched a C-tier question tonight — maybe next round.`},seatingchart:{title:`Table assignments`,icon:`table`,iconColor:`var(--presence)`,venue:`O'Malley's back room`,tables:[{id:`t1`,label:`Team Martin`,seats:4,shape:`round`},{id:`t2`,label:`Gomez Crew`,seats:4,shape:`round`},{id:`t3`,label:`The Aunties`,seats:4,shape:`round`},{id:`t4`,label:`Kid Squad`,seats:6,shape:`rect`}],assignments:[{tableId:`t1`,seatIndex:0,guest:`Dana Martin`},{tableId:`t1`,seatIndex:1,guest:`Rob Martin`},{tableId:`t1`,seatIndex:2,guest:`Pepper (the dog)`},{tableId:`t2`,seatIndex:0,guest:`Elena Gomez`},{tableId:`t2`,seatIndex:1,guest:`Marco Gomez`}],footer:`A few open seats left at Team Martin and Kid Squad — send stragglers there.`},checkboxgroup:{title:`Ingredients checklist`,icon:`cart`,iconColor:`var(--insight)`,allLabel:`Tick everything as you gather it`,items:[{label:`4 mini pizza bases (or English muffins)`,caption:`Pre-made = the easy mode`,checked:!0},{label:`1 cup pizza or pasta sauce`,caption:`Smooth, mild, kid-approved`,checked:!0},{label:`1½ cups shredded mozzarella`,caption:`The big handful of cheese`,checked:!0},{label:`Cherry tomatoes, halved`,caption:`Grown-up does the halving`},{label:`Sweetcorn + a little ham or pepperoni`,caption:`Pick your favourites`}],footer:`Six things, most are probably already in your fridge.`},numberstepper:{title:`How many little chefs?`,icon:`plus`,iconColor:`var(--warning)`,label:`Pizzas to make`,value:4,min:1,max:12,step:1,suffix:`pizzas`,caption:`At <b>4 pizzas</b>: 1 cup sauce · 1½ cups cheese · 4 bases. Tap <b>+</b> and I’ll scale e…`,color:`var(--warning)`},picturesequence:{title:`How to make a sandwich — put the steps in order`,icon:`layers`,iconColor:`var(--warning)`,panels:[{label:`Get two slices of bread`,marker:`first`,caption:`Lay them flat on the plate.`},{label:`Spread the filling`,marker:`then`,caption:`Butter, jam, or peanut butter — your pick.`},{label:`Add what you like`,marker:`next`,caption:`Cheese, banana slices, or a little honey.`},{label:`Press the slices together and cut`,marker:`last`,caption:`Triangles or squares — then take a bite!`}],caption:`Read it left to right: first, then, next, last.`},vaxschedule:{title:`Shot series, on the age axis`,icon:`shield`,iconColor:`var(--insight)`,doses:[{vaccine:`DHPP · 1st`,dueAt:`8 weeks`,status:`done`},{vaccine:`Deworming`,dueAt:`8 weeks`,status:`done`},{vaccine:`DHPP · 2nd`,dueAt:`12 weeks`,status:`due`,note:`Book the booster now to hold the slot.`},{vaccine:`Bordetella`,dueAt:`12 weeks`,status:`due`},{vaccine:`DHPP · 3rd`,dueAt:`16 weeks`,status:`due`}],footer:`Same series as above, laid out by when each shot actually falls due.`},vetpatientchart:{title:`Biscuit's first wellness exam`,icon:`doc`,iconColor:`var(--presence)`,species:`Canine`,name:`Biscuit`,breed:`Golden Retriever`,sex:`Male`,weightKg:5,vitals:[{label:`Temperature`,value:101.8,unit:`°F`},{label:`Heart rate`,value:150,unit:`bpm`},{label:`Respiratory rate`,value:24,unit:`bpm`},{label:`Body condition score`,value:`5/9`},{label:`Gum color`,value:`Pink`}],problems:[`Transient loose stool — post-adoption stress, monitoring`],footer:`All vitals normal for a 9-week Golden. The loose stool is expected from the move; call Ma…`},stickerchart:{title:`Potty training chart`,icon:`sparkle`,iconColor:`var(--warning)`,behavior:`Went potty outside`,days:[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`],marks:[{day:`Mon`,earned:!0},{day:`Tue`,earned:!0},{day:`Wed`,earned:!1},{day:`Thu`,earned:!0},{day:`Fri`,earned:!0}],rewardAt:20,footer:`5 stars this week — 15 to go before the new chew toy.`},avatar:{title:`<Avatar />`,icon:`eye`,iconColor:`var(--presence-soft)`,name:`Maya Chen`,initials:`MC`,size:`lg`,status:`online`,ring:!0,color:`var(--presence)`,role:`Design Systems Lead`,footer:`Falls back: image → initials → glyph. Presence dot is a single prop.`},avatargroup:{title:`<AvatarGroup />`,icon:`share`,iconColor:`var(--insight)`,max:5,size:`md`,members:[{name:`Maya Chen`,initials:`MC`,color:`var(--presence)`,status:`online`,role:`Systems Lead`},{name:`Dev Patel`,initials:`DP`,color:`var(--insight)`,status:`busy`,role:`Engineer`},{name:`Lena Ortiz`,initials:`LO`,color:`var(--presence-soft)`,status:`online`,role:`Designer`},{name:`Sam Okafor`,initials:`SO`,color:`var(--warning)`,status:`away`,role:`PM`},{name:`Ivy Brooks`,initials:`IB`,color:`var(--insight)`,status:`offline`,role:`Engineer`}],caption:`<b>12 contributors</b> on Aria Core this quarter`,footer:`Hover to spread the stack and name a face; overflow collapses to “+N”.`},chipset:{title:`<Chip />, filter the registry`,icon:`table`,iconColor:`var(--insight)`,mode:`multi`,color:`var(--presence)`,chips:[{label:`Inputs`,icon:`edit`,color:`var(--presence)`,selected:!0},{label:`Overlays`,icon:`layers`,color:`var(--insight)`,selected:!0},{label:`Data viz`,icon:`chart`,color:`var(--presence-soft)`},{label:`Layout`,icon:`screen`,color:`var(--text-muted)`,removable:!0},{label:`Feedback`,icon:`bell`,color:`var(--warning)`,removable:!0}],summary:`Showing <b>2 categories</b>, toggle to filter, × to remove.`,footer:`Single or multi-select; chips can carry a leading icon or avatar.`},kbd:{title:`Docs keyboard shortcuts`,icon:`screen`,iconColor:`var(--presence-soft)`,active:0,color:`var(--presence)`,shortcuts:[{keys:[`⌘`,`K`],label:`Search the component registry`,icon:`spark`},{keys:[`⌘`,`⇧`,`C`],label:`Copy the import statement`,icon:`doc`},{keys:[`[`],label:`Toggle the props panel`,icon:`table`},{keys:[`G`,`T`],label:`Jump to tokens`,icon:`layers`},{keys:[`?`],label:`Show all shortcuts`,icon:`eye`}],footer:`Hover a row to highlight its key-caps, same kbd primitive used in ⌘K.`},codeblock:{title:`Usage, <Button />`,icon:`doc`,iconColor:`var(--insight)`,lang:`tsx`,filename:`CheckoutCard.tsx`,lineNumbers:!0,highlight:[5],code:`import { Button } from 'aria-ui';
4
4