@mavea/mavea 1.0.7

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 (557) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/DISCLAIMER.md +16 -0
  3. package/LICENSE +75 -0
  4. package/PRIVACY.md +127 -0
  5. package/README.md +248 -0
  6. package/SECURITY.md +72 -0
  7. package/SUPPORT.md +13 -0
  8. package/TERMS.md +122 -0
  9. package/THIRD-PARTY.txt +639 -0
  10. package/TRADEMARKS.md +15 -0
  11. package/bin/mavea.mjs +1079 -0
  12. package/dist/.vite/manifest.json +4261 -0
  13. package/dist/_headers +52 -0
  14. package/dist/assets/AppCommandPalette-DUMSp3rd.js +1 -0
  15. package/dist/assets/AtlasView-B5fkQhO6.css +1 -0
  16. package/dist/assets/AtlasView-Dl2fssaG.js +1 -0
  17. package/dist/assets/BlockEmpty-CLtVQf6c.js +1 -0
  18. package/dist/assets/BriefingPlayer-DO205Qkh.js +1 -0
  19. package/dist/assets/BriefingPlayer-TpFZB77N.css +1 -0
  20. package/dist/assets/CanvasSkeleton-BZZPCuRZ.js +2 -0
  21. package/dist/assets/CanvasSkeleton-iy6DBvde.css +1 -0
  22. package/dist/assets/CardEditor-BY1bZiV6.css +1 -0
  23. package/dist/assets/CardEditor-DzJXb0G7.js +1 -0
  24. package/dist/assets/CheckLogRail-F4AlgAcc.css +1 -0
  25. package/dist/assets/CheckLogRail-wUfby67Z.js +1 -0
  26. package/dist/assets/CodeOutput-Kh6ldxQz.js +97 -0
  27. package/dist/assets/CommandPalette-Bb-eErih.css +1 -0
  28. package/dist/assets/CommandPalette-Kl00mMZm.js +1 -0
  29. package/dist/assets/CourseLessonReader-COmTQdSK.css +1 -0
  30. package/dist/assets/CourseLessonReader-MBHoknUz.js +2 -0
  31. package/dist/assets/CourseRail-CUa7uIGG.css +1 -0
  32. package/dist/assets/CourseRail-q6x5cCpW.js +1 -0
  33. package/dist/assets/CoursesApp-v89OVJvg.js +2 -0
  34. package/dist/assets/CrossExamPanel-CZ0ShGma.css +1 -0
  35. package/dist/assets/CrossExamPanel-DH04p6VS.js +1 -0
  36. package/dist/assets/DashPresent-BYXbPuGj.js +1 -0
  37. package/dist/assets/DashPresent-DQYcgp-W.css +1 -0
  38. package/dist/assets/DashboardDetail-B50ZkeVK.js +2 -0
  39. package/dist/assets/DashboardLoopRuntime-CFXPx3v_.js +1 -0
  40. package/dist/assets/DashboardOverview-C-FdGWM5.js +1 -0
  41. package/dist/assets/DashboardSettings-Dmw6JTbI.js +1 -0
  42. package/dist/assets/DashboardsApp-Dx-EsaPW.css +1 -0
  43. package/dist/assets/DashboardsApp-JSY_bVfi.js +2 -0
  44. package/dist/assets/DeepZoomApp-BFNwli7l.js +37 -0
  45. package/dist/assets/DeepZoomApp-fRXCJHHZ.css +1 -0
  46. package/dist/assets/DelegatePanel-BK7rEhIc.js +26 -0
  47. package/dist/assets/DelegatePanel-_9RZiLHM.css +1 -0
  48. package/dist/assets/DemoGallery-BPtVG7_y.js +1 -0
  49. package/dist/assets/DropSelect-DUhdQSta.js +1 -0
  50. package/dist/assets/ExportModal-D4WpAg2c.css +1 -0
  51. package/dist/assets/ExportModal-D65cGyj_.js +2 -0
  52. package/dist/assets/ExtractionPreview-Iwfg2Ogl.js +18 -0
  53. package/dist/assets/FallbackCard-B489rTd9.js +1 -0
  54. package/dist/assets/FallbackCard-D_6ps1xA.css +1 -0
  55. package/dist/assets/FeatureUseNotice-CWt7gOwS.css +1 -0
  56. package/dist/assets/FeatureUseNotice-DPtQ0OGb.js +1 -0
  57. package/dist/assets/FlagshipCTA-BXntKhxb.js +1 -0
  58. package/dist/assets/FlagshipCommandPalette-BDJfasI-.js +1 -0
  59. package/dist/assets/FlagshipShowcase-DJ8Gxk_G.js +1 -0
  60. package/dist/assets/FlashcardsApp-CLNo4WX7.js +1 -0
  61. package/dist/assets/ForecastPanel-Da2ZBUrE.css +1 -0
  62. package/dist/assets/ForecastPanel-PBO2-dgS.js +1 -0
  63. package/dist/assets/GalleryApp-B1CB3_81.css +1 -0
  64. package/dist/assets/GalleryApp-DM03CMRy.js +1 -0
  65. package/dist/assets/HonestByDesign-Dqyth6nW.js +1 -0
  66. package/dist/assets/HowItWorks-C0zosIvq.js +1 -0
  67. package/dist/assets/LegalApp-DZBdExTy.js +1 -0
  68. package/dist/assets/LegalMarkdownDocument-CSZhRG5r.js +3 -0
  69. package/dist/assets/LegalPageShell-C_HottbD.css +1 -0
  70. package/dist/assets/LegalPageShell-DTeXqWyc.js +1 -0
  71. package/dist/assets/LeverPanel-DhpJY76O.css +1 -0
  72. package/dist/assets/LeverPanel-aZfhtVJX.js +1 -0
  73. package/dist/assets/Library-D2XGNXz7.js +1 -0
  74. package/dist/assets/Library-DmrtHjUf.css +1 -0
  75. package/dist/assets/LibraryOverlay-B2WQSgwr.js +1 -0
  76. package/dist/assets/LibraryOverlay-CnKWDMG_.css +1 -0
  77. package/dist/assets/LiveApp-B9zwXlGC.js +61 -0
  78. package/dist/assets/LiveApp-BVZGpJ1S.css +1 -0
  79. package/dist/assets/LiveSettings-CmgrMqvK.css +1 -0
  80. package/dist/assets/LiveSettings-D9OcWlm6.js +6 -0
  81. package/dist/assets/MindMapViewerDrawer-YYyZqmAd.js +1 -0
  82. package/dist/assets/MindShape-Ca3MXEgK.css +1 -0
  83. package/dist/assets/MindShape-mTlN5mPZ.js +1 -0
  84. package/dist/assets/Orb-B0NEVfqL.js +1 -0
  85. package/dist/assets/PinToDashboard-_kIOHs0k.js +1 -0
  86. package/dist/assets/PlanReview-33V8GTNB.js +1 -0
  87. package/dist/assets/Presence-CzLJIeSD.js +1 -0
  88. package/dist/assets/PresentationDeck-BDoGecxr.js +1 -0
  89. package/dist/assets/PrismApp-PfBTFhMF.js +2 -0
  90. package/dist/assets/PrismAskController-DBoxQSJR.css +1 -0
  91. package/dist/assets/PrismAskController-DbQDrlU9.js +37 -0
  92. package/dist/assets/PrismBriefingPlayer-1fvlfLR8.js +2 -0
  93. package/dist/assets/PrismOverlay-B7lEspdu.js +131 -0
  94. package/dist/assets/PrismOverlay-BTfAicBt.css +1 -0
  95. package/dist/assets/PrivacyApp-CR4lRs0L.js +128 -0
  96. package/dist/assets/Quiz-CUwtekfu.js +1 -0
  97. package/dist/assets/Recap-DCiiWNiV.css +1 -0
  98. package/dist/assets/Recap-H5fhj5Tc.js +1 -0
  99. package/dist/assets/ReelJelly-3jSVsJsy.js +1 -0
  100. package/dist/assets/RehearsalPanel-BCU615wg.css +1 -0
  101. package/dist/assets/RehearsalPanel-BVgjrOPg.js +6 -0
  102. package/dist/assets/ReplayCard-BpYO5vX-.js +2 -0
  103. package/dist/assets/ReplayOverlay-DXmVdeIr.js +1 -0
  104. package/dist/assets/RewindOverlay-BusfWeFq.js +1 -0
  105. package/dist/assets/RewindOverlay-C92qgvmi.css +1 -0
  106. package/dist/assets/RippleApp-9KrJPYgN.js +2 -0
  107. package/dist/assets/RippleAskController-BNAUoIW0.css +1 -0
  108. package/dist/assets/RippleAskController-CO9wE7hU.js +34 -0
  109. package/dist/assets/RippleOverlay-DMHLbfh8.js +6 -0
  110. package/dist/assets/RippleOverlay-_iiZsQVZ.css +1 -0
  111. package/dist/assets/SeeDontRead-C389viue.js +1 -0
  112. package/dist/assets/ShareModal-C8S7ySls.css +1 -0
  113. package/dist/assets/ShareModal-ClnEkudw.js +32 -0
  114. package/dist/assets/ShipCascade-BUtwvQoW.js +1 -0
  115. package/dist/assets/ShipCascade-CyFnrlET.css +1 -0
  116. package/dist/assets/ShipCourse-B7lG6DYW.js +1 -0
  117. package/dist/assets/ShipCourse-DcT7PUSm.css +1 -0
  118. package/dist/assets/ShipGate-BVZfCllb.css +1 -0
  119. package/dist/assets/ShipGate-BYYu9WVq.js +2 -0
  120. package/dist/assets/ShipHotspots-Bj2CovtT.js +1 -0
  121. package/dist/assets/ShipHotspots-CLOMutPv.css +1 -0
  122. package/dist/assets/ShipIncident-BUHvFFiC.css +1 -0
  123. package/dist/assets/ShipIncident-DcmindmE.js +2 -0
  124. package/dist/assets/ShipMigration-BznCskNg.css +1 -0
  125. package/dist/assets/ShipMigration-s0hVjDQl.js +1 -0
  126. package/dist/assets/ShipOnboarding-BC9Vxkpa.css +1 -0
  127. package/dist/assets/ShipOnboarding-ekbHL7OH.js +1 -0
  128. package/dist/assets/ShipRead-BVNgQT6L.js +1 -0
  129. package/dist/assets/ShipRollout-BdUQzMyP.js +1 -0
  130. package/dist/assets/ShipRollout-CqeObx5b.css +1 -0
  131. package/dist/assets/ShipSuggestions-B6fKYh8L.js +1 -0
  132. package/dist/assets/ShipSuggestions-BKRvk5Mj.css +1 -0
  133. package/dist/assets/ShipWorkspace-3D3Rrs1p.js +2 -0
  134. package/dist/assets/ShipWorkspace-D6XQpGEN.css +1 -0
  135. package/dist/assets/SignatureLoop-C60r8Wm5.js +1 -0
  136. package/dist/assets/SrsReview-BoaYb6XN.js +1 -0
  137. package/dist/assets/SrsReview-DmGdGxT0.css +1 -0
  138. package/dist/assets/SynthesisApp-vJ2Jq0Qe.js +2 -0
  139. package/dist/assets/SynthesisOverlay-CkERphvG.js +66 -0
  140. package/dist/assets/TermsApp-C70tW6m6.js +123 -0
  141. package/dist/assets/TopicCanvas-CT0eSj2M.js +2 -0
  142. package/dist/assets/TopicCanvas-D2Nax9II.css +1 -0
  143. package/dist/assets/TourPrism-BvucSkcs.js +1 -0
  144. package/dist/assets/TrackerTile-CasZNmt4.js +2 -0
  145. package/dist/assets/TwoSurfaces-C90X7Aj5.js +1 -0
  146. package/dist/assets/UnderstoodPanel-CHPD2Ttj.js +1 -0
  147. package/dist/assets/UnderstoodPanel-Q6GX1TFq.css +1 -0
  148. package/dist/assets/WhyMachineOverlay-BZk3PVTl.css +1 -0
  149. package/dist/assets/WhyMachineOverlay-CB0_n6Sy.js +1 -0
  150. package/dist/assets/WowFeatures-Ci_H5QYX.js +1 -0
  151. package/dist/assets/ZoomDeck-B2SjNwY7.css +1 -0
  152. package/dist/assets/ZoomDeck-BQHO79ZU.js +1 -0
  153. package/dist/assets/__vite-browser-external-BufR4LQa.js +1 -0
  154. package/dist/assets/ai-Ba4lZJ9Y.js +12 -0
  155. package/dist/assets/alternateFinishes-DZ-rkpkX.js +494 -0
  156. package/dist/assets/annotationAuto-B0nihA4F.js +1 -0
  157. package/dist/assets/annotationReel-BcU9Q0Sw.js +1 -0
  158. package/dist/assets/annotations-D2K9A5GB.js +1 -0
  159. package/dist/assets/backup-c-Btapzp.js +1 -0
  160. package/dist/assets/blockLabel-DAqaHKy3.js +1 -0
  161. package/dist/assets/c-DWGmR78Y.js +1 -0
  162. package/dist/assets/c-SSSlmE39.js +1 -0
  163. package/dist/assets/cache-BumECILO.js +1 -0
  164. package/dist/assets/canvas-QTEIiK23.js +1 -0
  165. package/dist/assets/catalog-BHjl-1uH.js +2 -0
  166. package/dist/assets/catalog-Dqaq2YFd.js +1 -0
  167. package/dist/assets/cfo.generated-Bjl5OGay.js +1 -0
  168. package/dist/assets/chapters-BiUsDClQ.js +1 -0
  169. package/dist/assets/charts1-EOoxU_K3.js +1 -0
  170. package/dist/assets/charts2-tyUiQPff.js +1 -0
  171. package/dist/assets/chunk-BVpWp9h4.js +1 -0
  172. package/dist/assets/citation-BcvmjKS8.js +1 -0
  173. package/dist/assets/code-CpjYCNS8.js +8 -0
  174. package/dist/assets/codeContext-0UMRSGRr.js +5 -0
  175. package/dist/assets/colors-D49Req-e.js +1 -0
  176. package/dist/assets/compose-BJ9EfcQS.js +3 -0
  177. package/dist/assets/contentVault-DzTYWcbD.js +1 -0
  178. package/dist/assets/core-DEFyprhs.js +1 -0
  179. package/dist/assets/corpus.generated-oX9uU93S.js +11 -0
  180. package/dist/assets/courseSeed-CZdNBTTs.js +1 -0
  181. package/dist/assets/courseStore-DfafnL-9.js +1 -0
  182. package/dist/assets/courses-BkH1ntDL.css +1 -0
  183. package/dist/assets/cpp-BGdv8dzs.js +1 -0
  184. package/dist/assets/cpp-CNAAXZl-.js +1 -0
  185. package/dist/assets/csharp-oqKa8noW.js +1 -0
  186. package/dist/assets/css-CdtkT07m.js +1 -0
  187. package/dist/assets/css-LbU1hoFO.js +1 -0
  188. package/dist/assets/dag-C3Xx8pOD.js +2 -0
  189. package/dist/assets/dashboardEvents-DR9d_c74.js +2 -0
  190. package/dist/assets/dashboards-rcWxdoXI.css +1 -0
  191. package/dist/assets/deckLine-NBd3MyGT.js +1 -0
  192. package/dist/assets/demoPaletteItems-NPCSaSU6.js +1 -0
  193. package/dist/assets/dev.generated-DYgVxL_4.js +73 -0
  194. package/dist/assets/diagrams-CaSfjT4I.js +1 -0
  195. package/dist/assets/diff-woXpYk--.js +1 -0
  196. package/dist/assets/display-OvC57CMc.js +9 -0
  197. package/dist/assets/dist-BFx3nZg4.js +2785 -0
  198. package/dist/assets/dist-xRGLOZwv.js +14 -0
  199. package/dist/assets/docs-B2aDtm5K.js +1 -0
  200. package/dist/assets/everyday-CoZa4kDZ.js +1 -0
  201. package/dist/assets/explode-WBykfhqW.js +13 -0
  202. package/dist/assets/extractNumbers-CuhagRkd.js +1 -0
  203. package/dist/assets/facts-BBTt3ImG.js +1 -0
  204. package/dist/assets/finance-Bxn_Q1p0.js +1 -0
  205. package/dist/assets/fit-0HxU-rtB.js +1 -0
  206. package/dist/assets/fitText-CDFmCQzl.js +1 -0
  207. package/dist/assets/flows-BL81J7yN.js +1 -0
  208. package/dist/assets/format-DlZTyeMy.js +1 -0
  209. package/dist/assets/format-hc2QOoIu.js +1 -0
  210. package/dist/assets/forms-DeoXOxdD.js +1 -0
  211. package/dist/assets/generate-8odaTyr4.js +17 -0
  212. package/dist/assets/generateBeats-b64CL54v.js +1 -0
  213. package/dist/assets/generateCourse-Cj_-vDWu.js +28 -0
  214. package/dist/assets/generateLive-D4B30fnF.js +52 -0
  215. package/dist/assets/geometry-DXAbnb0J.js +1 -0
  216. package/dist/assets/gesture-DabMpPcq.js +2 -0
  217. package/dist/assets/github-dark-C-LZuMrd.js +1 -0
  218. package/dist/assets/github-light-EUqPIrTm.js +1 -0
  219. package/dist/assets/githubBrowser-DywfDeYx.js +1 -0
  220. package/dist/assets/githubToken-DtcLYqwm.js +11 -0
  221. package/dist/assets/go-rLFTqkRN.js +1 -0
  222. package/dist/assets/homeTarget-BgWKI_E1.js +1 -0
  223. package/dist/assets/html-BcACZWSP.js +1 -0
  224. package/dist/assets/html-DDNsd9lV.js +1 -0
  225. package/dist/assets/http-CJCtjYpA.js +2 -0
  226. package/dist/assets/icons-CHVz6kv_.js +1 -0
  227. package/dist/assets/index-CepQEz75.css +1 -0
  228. package/dist/assets/index-y8GL67bB.js +22 -0
  229. package/dist/assets/index.es-CRLiWwiA.js +5 -0
  230. package/dist/assets/info-CiqHR5cs.js +1 -0
  231. package/dist/assets/java-BtIQNnN0.js +1 -0
  232. package/dist/assets/java-DxlWrXwe.js +1 -0
  233. package/dist/assets/javascript-BzbQS41l.js +1 -0
  234. package/dist/assets/javascript-Yelw-5ZN.js +1 -0
  235. package/dist/assets/json-B0N3XRZU.js +1 -0
  236. package/dist/assets/json-B88Oqtu5.js +1 -0
  237. package/dist/assets/json-CaljABEy.js +1 -0
  238. package/dist/assets/jspdf.es.min-C-Pf79px.js +79 -0
  239. package/dist/assets/jsx-D3KKoC5L.js +1 -0
  240. package/dist/assets/jsx-hEbJ82HF.js +1 -0
  241. package/dist/assets/jsx-runtime-DaSxXjOY.js +1 -0
  242. package/dist/assets/katex-BMCG0xok.js +257 -0
  243. package/dist/assets/keyVault-DEsNh9FR.js +1 -0
  244. package/dist/assets/kokoro-D4GKpSL0.js +1 -0
  245. package/dist/assets/kotlin-DhhofPvG.js +1 -0
  246. package/dist/assets/layout-BFQOzXtG.js +1 -0
  247. package/dist/assets/layout-CkO0Psde.js +1 -0
  248. package/dist/assets/lazyRetry-D50B1UMY.js +1 -0
  249. package/dist/assets/leaflet-src-C_xhOQY7.js +1 -0
  250. package/dist/assets/learn-DVfqN-nf.js +1 -0
  251. package/dist/assets/lib-DMAxsZKm.css +1 -0
  252. package/dist/assets/lib-VFqp6Y3w.js +1 -0
  253. package/dist/assets/links--u_phi0x.js +1 -0
  254. package/dist/assets/liveSchema-CJ49PX5R.js +98 -0
  255. package/dist/assets/markdown-BYOwaDjH.js +1 -0
  256. package/dist/assets/mastery-BPjxP0fN.js +4 -0
  257. package/dist/assets/media-CsrUl279.js +43 -0
  258. package/dist/assets/model-BE0UHu1w.js +27 -0
  259. package/dist/assets/motion-S0NRruNj.js +1 -0
  260. package/dist/assets/nav-Czm-NzPV.js +1 -0
  261. package/dist/assets/neighborhoods-C-1Tjr1r.js +1 -0
  262. package/dist/assets/notes-A9t4jdfx.css +1 -0
  263. package/dist/assets/notes-lROPCorS.js +1 -0
  264. package/dist/assets/notify-Bz4wuE4T.js +1 -0
  265. package/dist/assets/now-C9-UAzTC.js +1 -0
  266. package/dist/assets/number-DXgzss0v.js +1 -0
  267. package/dist/assets/officeDoc-B6nEhNp4.js +3 -0
  268. package/dist/assets/openchemlib-nMLMmg26.js +23 -0
  269. package/dist/assets/overlays-JxbHtA2o.js +1 -0
  270. package/dist/assets/owners-FXDGInVq.js +2 -0
  271. package/dist/assets/pageVisibility-BxUVsw7Z.js +1 -0
  272. package/dist/assets/pdf-Df7PCH7q.js +11 -0
  273. package/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
  274. package/dist/assets/penStrokes-9Q_l7NTt.js +1 -0
  275. package/dist/assets/perfProbe-COAp9PAa.js +1 -0
  276. package/dist/assets/php-CYrBA5iX.js +1 -0
  277. package/dist/assets/pickers-B4-3HOR8.js +1 -0
  278. package/dist/assets/pin-Bya3BL_a.css +1 -0
  279. package/dist/assets/pin-CXSuPJYL.js +1 -0
  280. package/dist/assets/planTracker-7AMCQPNx.js +1 -0
  281. package/dist/assets/portal-DMw7C32j.js +1 -0
  282. package/dist/assets/pptxgen.es-CvTILmV9.js +115 -0
  283. package/dist/assets/predictions-CYS7Vo39.js +1 -0
  284. package/dist/assets/prewarm--whjQhWJ.js +1 -0
  285. package/dist/assets/prism-app-CXYElq8-.css +1 -0
  286. package/dist/assets/prism.generated-BhbHDHR6.js +41 -0
  287. package/dist/assets/prismExtract.worker-Cws9K1NG.js +13 -0
  288. package/dist/assets/prismGround.worker-CIvKqxm2.js +1 -0
  289. package/dist/assets/prismLayout.worker-CZO2CY7B.js +1 -0
  290. package/dist/assets/providers-wzm7E8Pa.js +1 -0
  291. package/dist/assets/purify.es-adlwq8Pz.js +3 -0
  292. package/dist/assets/python-gzcpVVnB.js +1 -0
  293. package/dist/assets/queue-DHeyJ32F.css +1 -0
  294. package/dist/assets/queue-J4h7E3uc.js +1 -0
  295. package/dist/assets/quietHours-BvcsBKKK.js +1 -0
  296. package/dist/assets/react-BQSORdFI.js +1 -0
  297. package/dist/assets/reference-sJzyMiL4.js +1 -0
  298. package/dist/assets/registry-1GuPBfQK.js +1 -0
  299. package/dist/assets/registry-2GJZ46M8.css +1 -0
  300. package/dist/assets/registry-2v0jlh5Q.js +2 -0
  301. package/dist/assets/registry-B8DStMJk.js +1 -0
  302. package/dist/assets/registry-B940W2j5.js +1 -0
  303. package/dist/assets/registry-BAoRB8rd.css +1 -0
  304. package/dist/assets/registry-BPvIPLke.js +1 -0
  305. package/dist/assets/registry-BVHiKEwE.css +1 -0
  306. package/dist/assets/registry-BcZXBr3y.css +1 -0
  307. package/dist/assets/registry-BffpZK5w.js +1 -0
  308. package/dist/assets/registry-BgGeRiDA.js +2 -0
  309. package/dist/assets/registry-Buq5uuCv.js +1 -0
  310. package/dist/assets/registry-BzNLfje1.css +1 -0
  311. package/dist/assets/registry-C3ezxLR3.css +1 -0
  312. package/dist/assets/registry-CAusoyBh.js +1 -0
  313. package/dist/assets/registry-CEVrY72Z.js +1 -0
  314. package/dist/assets/registry-CKjKq6ct.js +1 -0
  315. package/dist/assets/registry-CNgybLQv.css +1 -0
  316. package/dist/assets/registry-CRM7y8QT.css +1 -0
  317. package/dist/assets/registry-CRisz4Ca.css +1 -0
  318. package/dist/assets/registry-Cg7qUZPS.js +1 -0
  319. package/dist/assets/registry-Cix-yqch.js +1 -0
  320. package/dist/assets/registry-CtbuZWYz.css +1 -0
  321. package/dist/assets/registry-DCI_BeFJ.js +5 -0
  322. package/dist/assets/registry-DDLSYDVA.js +1 -0
  323. package/dist/assets/registry-DI1wSG1Y.js +1 -0
  324. package/dist/assets/registry-DJinB5ye.js +2 -0
  325. package/dist/assets/registry-DUvXX_d0.js +1 -0
  326. package/dist/assets/registry-DVzLacl_.css +1 -0
  327. package/dist/assets/registry-DWcNVyI2.css +1 -0
  328. package/dist/assets/registry-D_URPoL4.js +1 -0
  329. package/dist/assets/registry-Dkc7hN5T.js +1 -0
  330. package/dist/assets/registry-DmQlNN3y.js +1 -0
  331. package/dist/assets/registry-DpaaVbmL.css +1 -0
  332. package/dist/assets/registry-Dpb8EXHn.js +49 -0
  333. package/dist/assets/registry-Dru0JcTa.css +1 -0
  334. package/dist/assets/registry-DujBAgn_.js +1 -0
  335. package/dist/assets/registry-Dye5m3qt.css +1 -0
  336. package/dist/assets/registry-GeSy4i7R.css +1 -0
  337. package/dist/assets/registry-QcULZpdE.js +4 -0
  338. package/dist/assets/registry-T3i2Q9SI.css +1 -0
  339. package/dist/assets/registry-UFIuwh3i.css +1 -0
  340. package/dist/assets/registry-Xzq_Rpmm.css +1 -0
  341. package/dist/assets/registry-ZOWzhOHk.css +1 -0
  342. package/dist/assets/registry-aIH-Im5Y.css +1 -0
  343. package/dist/assets/registry-aazwkBJp.js +1 -0
  344. package/dist/assets/registry-ei6fIgBT.css +1 -0
  345. package/dist/assets/registry-types-DMuK0vJ6.js +1 -0
  346. package/dist/assets/registry-upbw6pyj.css +1 -0
  347. package/dist/assets/registry-zRPjWNl5.js +1 -0
  348. package/dist/assets/relate-A9ZeaaAI.js +1 -0
  349. package/dist/assets/richText-BkxJhl9N.js +1 -0
  350. package/dist/assets/ruby-BhrksQMt.js +1 -0
  351. package/dist/assets/run-BYP2YlZT.js +23 -0
  352. package/dist/assets/run-C_0B_41W.js +21 -0
  353. package/dist/assets/run-DSVvshaB.js +21 -0
  354. package/dist/assets/rust-Cfkwpbl8.js +1 -0
  355. package/dist/assets/safeCssColor-di93BXgG.js +1 -0
  356. package/dist/assets/safeImageUrl-CUkucDUu.js +1 -0
  357. package/dist/assets/scale-Bcgfo6Hp.js +1 -0
  358. package/dist/assets/screen-DLR7p_yP.js +1 -0
  359. package/dist/assets/search-DnjHupRf.js +1 -0
  360. package/dist/assets/seed-b1xc0dj2.js +1 -0
  361. package/dist/assets/shapes-RqjqC0ay.js +1 -0
  362. package/dist/assets/shard000-DM_rqD7W.js +1 -0
  363. package/dist/assets/shard001-gQEQs7_F.js +1 -0
  364. package/dist/assets/shard002-DbDas-W-.js +1 -0
  365. package/dist/assets/shard003-DxMszG4_.js +1 -0
  366. package/dist/assets/shard004-DZMpLBw1.js +1 -0
  367. package/dist/assets/shard005-DLVkh9IH.js +1 -0
  368. package/dist/assets/shard006-B6efKHov.js +1 -0
  369. package/dist/assets/shard007-AFdZLe38.js +1 -0
  370. package/dist/assets/shard008-LbSBzwRx.js +1 -0
  371. package/dist/assets/shard009-D_6-SUDb.js +1 -0
  372. package/dist/assets/shard010-DbOj-uZW.js +1 -0
  373. package/dist/assets/shard011-BYSz7EEW.js +1 -0
  374. package/dist/assets/shard012-B5Ypj7OV.js +1 -0
  375. package/dist/assets/shard013-BtsliNIe.js +1 -0
  376. package/dist/assets/shard014-15sjmk68.js +1 -0
  377. package/dist/assets/shard015-nnXrqru_.js +1 -0
  378. package/dist/assets/shard016-BayXFE13.js +1 -0
  379. package/dist/assets/shard017-Cy4cGexs.js +1 -0
  380. package/dist/assets/shard018-aO-BYJ8H.js +1 -0
  381. package/dist/assets/shard019-gxaTeA3I.js +1 -0
  382. package/dist/assets/shard020-BibJdMI0.js +1 -0
  383. package/dist/assets/shard021-2FE-tze4.js +1 -0
  384. package/dist/assets/shard022-IXiyG-JK.js +1 -0
  385. package/dist/assets/shard023-314F6NJS.js +1 -0
  386. package/dist/assets/shard024-cN5rpQ_X.js +1 -0
  387. package/dist/assets/shard025-KKTaXOGE.js +1 -0
  388. package/dist/assets/shard026-C2Dkd1t6.js +1 -0
  389. package/dist/assets/shard027-Xy-8x9As.js +1 -0
  390. package/dist/assets/shard028-Bul-klUj.js +1 -0
  391. package/dist/assets/shard029-BbRSUcUZ.js +1 -0
  392. package/dist/assets/shard030-GYllsFVC.js +1 -0
  393. package/dist/assets/shard031-DMigeiyn.js +1 -0
  394. package/dist/assets/shard032-CcvmzK0l.js +1 -0
  395. package/dist/assets/shard033-11AU702M.js +1 -0
  396. package/dist/assets/shard034-Bx3urxjM.js +1 -0
  397. package/dist/assets/shard035-DBdEeyCt.js +1 -0
  398. package/dist/assets/shard036-vYgoRBqS.js +1 -0
  399. package/dist/assets/shard037-DP4MMw91.js +1 -0
  400. package/dist/assets/shard038-ffxsv7d6.js +1 -0
  401. package/dist/assets/shard039-C1JHHNp9.js +1 -0
  402. package/dist/assets/shard040-JbVvCSO_.js +1 -0
  403. package/dist/assets/shard041-5L_eFwGx.js +1 -0
  404. package/dist/assets/shard042-C9nsGL79.js +1 -0
  405. package/dist/assets/shard043-Dx_9HSKI.js +1 -0
  406. package/dist/assets/shard044-B3QQNC4A.js +1 -0
  407. package/dist/assets/shard045-B7z0WHO6.js +1 -0
  408. package/dist/assets/shard046-D1yDablJ.js +1 -0
  409. package/dist/assets/shard047-DJi3AgeT.js +1 -0
  410. package/dist/assets/shard048-D_2ipfUr.js +1 -0
  411. package/dist/assets/shard049-1aGgWZdd.js +1 -0
  412. package/dist/assets/shard050-Bjwa0Og4.js +1 -0
  413. package/dist/assets/shard051-Cx_GAk3v.js +1 -0
  414. package/dist/assets/shard052-LaeOD3V5.js +1 -0
  415. package/dist/assets/shard053-D-da7Foj.js +1 -0
  416. package/dist/assets/shard054-CM8eSRQk.js +1 -0
  417. package/dist/assets/shard055-QRpDl4Vs.js +1 -0
  418. package/dist/assets/shard056-DkY7CQm3.js +1 -0
  419. package/dist/assets/shard057-BVCgf7o0.js +1 -0
  420. package/dist/assets/shard058-93aGtdrX.js +1 -0
  421. package/dist/assets/shard059-rJE9X1_I.js +1 -0
  422. package/dist/assets/shard060-Lu_hfl1r.js +1 -0
  423. package/dist/assets/shard061-C9A8iNiq.js +1 -0
  424. package/dist/assets/shard062-BBIpEYZO.js +1 -0
  425. package/dist/assets/shard063-C_uen3Ub.js +1 -0
  426. package/dist/assets/shard064-DAHUsHST.js +1 -0
  427. package/dist/assets/shard065-C2edvdvh.js +1 -0
  428. package/dist/assets/shard066-DFcuVhZm.js +1 -0
  429. package/dist/assets/shard067-BN8DM8JZ.js +1 -0
  430. package/dist/assets/shard068-i464K77p.js +1 -0
  431. package/dist/assets/shard069-Dm9m2a5U.js +1 -0
  432. package/dist/assets/shard070-BPVvR8GH.js +1 -0
  433. package/dist/assets/shard071-Bal_0d9L.js +1 -0
  434. package/dist/assets/shard072-CBQu62kt.js +1 -0
  435. package/dist/assets/shard073-D5BRae0w.js +1 -0
  436. package/dist/assets/shard074-DtFvcBnZ.js +1 -0
  437. package/dist/assets/share-QHGHNDhQ.js +1 -0
  438. package/dist/assets/shellscript-BiGZg9Om.js +1 -0
  439. package/dist/assets/shellscript-CqHdAlCp.js +1 -0
  440. package/dist/assets/shikiHighlight-DUCYbsJ2.js +153 -0
  441. package/dist/assets/sourceHost-BV3t2XDb.js +1 -0
  442. package/dist/assets/speed-DwPw9KSv.js +1 -0
  443. package/dist/assets/spokenText-D4zPX9JY.js +1 -0
  444. package/dist/assets/sql-0Qcw9ht3.js +1 -0
  445. package/dist/assets/sql-CP0rg-5b.js +1 -0
  446. package/dist/assets/src-DbgF7cRH.js +2 -0
  447. package/dist/assets/stats-BeP5Bws0.js +1 -0
  448. package/dist/assets/status-BY02LIJt.js +1 -0
  449. package/dist/assets/stepDriver-DwjFet6U.js +1 -0
  450. package/dist/assets/store-4JNNn732.js +1 -0
  451. package/dist/assets/store-BFC7DZcg.js +1 -0
  452. package/dist/assets/store-BFrJaSxJ.js +1 -0
  453. package/dist/assets/store-DXmC_fP2.js +0 -0
  454. package/dist/assets/store-DgG0C1Qx.js +1 -0
  455. package/dist/assets/streamParse-DRgMHWye.js +2 -0
  456. package/dist/assets/student.generated-DS_acPaJ.js +1 -0
  457. package/dist/assets/swift-DonLKvLd.js +1 -0
  458. package/dist/assets/tables-Dzd3rTqG.js +1 -0
  459. package/dist/assets/time-BHTmJR1s.js +1 -0
  460. package/dist/assets/toast-BBNs2h3L.js +1 -0
  461. package/dist/assets/toml-CcmNWLt0.js +1 -0
  462. package/dist/assets/traveler.generated-Beun9X7y.js +1 -0
  463. package/dist/assets/tsx-5f3ulCja.js +1 -0
  464. package/dist/assets/tsx-BOvsFOI6.js +1 -0
  465. package/dist/assets/typeof-B5XbjTb1.js +1 -0
  466. package/dist/assets/typescript-Utq2Cl8c.js +1 -0
  467. package/dist/assets/typescript-j_1H8WHN.js +1 -0
  468. package/dist/assets/useDashboardLoop-B6ByHWoE.js +5 -0
  469. package/dist/assets/useFocusTrap-DbfG6zbM.js +1 -0
  470. package/dist/assets/useLiveConfig-X9Wxh90k.js +1 -0
  471. package/dist/assets/useSpatialCanvas-DogK9457.js +1 -0
  472. package/dist/assets/useSpotlightWalk-rMbmNBKK.js +1 -0
  473. package/dist/assets/useSrsCards-CagZefwX.js +1 -0
  474. package/dist/assets/useStudy-Bflreq2a.js +1 -0
  475. package/dist/assets/useTimeout-BRYvu2jQ.js +1 -0
  476. package/dist/assets/useValidatedImage-D2fhA198.js +1 -0
  477. package/dist/assets/useZoomGesture-CYc3tf2z.js +1 -0
  478. package/dist/assets/verbatim-CBMzUDlf.js +1 -0
  479. package/dist/assets/worker-BbLKfGzm.js +2 -0
  480. package/dist/assets/xml-WY0zc4PG.js +1 -0
  481. package/dist/assets/yaml-CxbubiML.js +1 -0
  482. package/dist/assets/yaml-DijMHRDA.js +1 -0
  483. package/dist/demo-assets/CREDITS.md +40 -0
  484. package/dist/demo-assets/images/basalt-cliffs.jpg +0 -0
  485. package/dist/demo-assets/images/capelinhos.jpg +0 -0
  486. package/dist/demo-assets/images/cliff-fields.jpg +0 -0
  487. package/dist/demo-assets/images/crater-panorama.jpg +0 -0
  488. package/dist/demo-assets/images/furnas-lake.jpg +0 -0
  489. package/dist/demo-assets/images/green-coast.jpg +0 -0
  490. package/dist/demo-assets/images/overcast-coast.jpg +0 -0
  491. package/dist/demo-assets/images/patchwork-fields.jpg +0 -0
  492. package/dist/demo-assets/images/ponta-delgada.jpg +0 -0
  493. package/dist/demo-assets/images/sete-cidades.jpg +0 -0
  494. package/dist/demo-assets/images/slide-placeholder-light.svg +9 -0
  495. package/dist/demo-assets/images/slide-placeholder.svg +9 -0
  496. package/dist/demo-assets/images/village-street.jpg +0 -0
  497. package/dist/demo-assets/pdf/cfd-primer.pdf +0 -0
  498. package/dist/demo-assets/video/azores-film.mp4 +0 -0
  499. package/dist/favicon.svg +19 -0
  500. package/dist/fonts/LICENSE.txt +34 -0
  501. package/dist/fonts/archivo-var-latin.woff2 +0 -0
  502. package/dist/fonts/bodoni-moda-400-italic-latin.woff2 +0 -0
  503. package/dist/fonts/bodoni-moda-var-latin.woff2 +0 -0
  504. package/dist/fonts/eb-garamond-var-italic-latin.woff2 +0 -0
  505. package/dist/fonts/eb-garamond-var-latin.woff2 +0 -0
  506. package/dist/fonts/export/families/archivo.css +12 -0
  507. package/dist/fonts/export/families/bodoni-moda.css +23 -0
  508. package/dist/fonts/export/families/eb-garamond.css +22 -0
  509. package/dist/fonts/export/families/ibm-plex-sans.css +12 -0
  510. package/dist/fonts/export/families/instrument-serif.css +22 -0
  511. package/dist/fonts/export/families/jetbrains-mono.css +12 -0
  512. package/dist/fonts/export/families/libre-franklin.css +12 -0
  513. package/dist/fonts/export/families/lora.css +22 -0
  514. package/dist/fonts/export/families/source-serif-4.css +12 -0
  515. package/dist/fonts/export/families/space-grotesk.css +12 -0
  516. package/dist/fonts/export/families/spectral.css +52 -0
  517. package/dist/fonts/fonts.css +141 -0
  518. package/dist/fonts/hanken-grotesk-var-latin.woff2 +0 -0
  519. package/dist/fonts/ibm-plex-sans-var-latin.woff2 +0 -0
  520. package/dist/fonts/instrument-serif-400-italic-latin.woff2 +0 -0
  521. package/dist/fonts/instrument-serif-400-latin.woff2 +0 -0
  522. package/dist/fonts/jetbrains-mono-var-latin.woff2 +0 -0
  523. package/dist/fonts/libre-franklin-var-latin.woff2 +0 -0
  524. package/dist/fonts/lora-var-italic-latin.woff2 +0 -0
  525. package/dist/fonts/lora-var-latin.woff2 +0 -0
  526. package/dist/fonts/newsreader-var-italic-latin.woff2 +0 -0
  527. package/dist/fonts/newsreader-var-latin.woff2 +0 -0
  528. package/dist/fonts/plex-mono-400-latin.woff2 +0 -0
  529. package/dist/fonts/plex-mono-500-latin.woff2 +0 -0
  530. package/dist/fonts/plex-mono-600-latin.woff2 +0 -0
  531. package/dist/fonts/source-serif-4-var-latin.woff2 +0 -0
  532. package/dist/fonts/space-grotesk-var-latin.woff2 +0 -0
  533. package/dist/fonts/spectral-400-italic-latin.woff2 +0 -0
  534. package/dist/fonts/spectral-400-latin.woff2 +0 -0
  535. package/dist/fonts/spectral-500-italic-latin.woff2 +0 -0
  536. package/dist/fonts/spectral-500-latin.woff2 +0 -0
  537. package/dist/fonts/spectral-600-latin.woff2 +0 -0
  538. package/dist/index.html +117 -0
  539. package/dist/legal/DISCLAIMER.md +16 -0
  540. package/dist/legal/LICENSE.txt +75 -0
  541. package/dist/legal/PRIVACY.md +127 -0
  542. package/dist/legal/SECURITY.md +72 -0
  543. package/dist/legal/SUPPORT.md +13 -0
  544. package/dist/legal/TERMS.md +122 -0
  545. package/dist/legal/THIRD-PARTY.txt +639 -0
  546. package/dist/legal/TRADEMARKS.md +15 -0
  547. package/dist/ort-wasm-simd-threaded.mjs +59 -0
  548. package/dist/sw.js +30 -0
  549. package/dist/vad.worklet.bundle.min.js +1 -0
  550. package/docker-compose.yml +33 -0
  551. package/gateway/README.md +99 -0
  552. package/gateway/actions-gateway.mjs +537 -0
  553. package/gateway/connectors.d.mts +27 -0
  554. package/gateway/connectors.mjs +463 -0
  555. package/gateway/guard.mjs +110 -0
  556. package/gateway/tokenStore.mjs +134 -0
  557. package/package.json +143 -0
@@ -0,0 +1 @@
1
+ var e={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`}]},chart:{title:`Spending vs. your typical month`,unit:`$`,labels:[`Dec`,`Jan`,`Feb`,`Mar`,`Apr`,`May`],series:[{name:`This period`,color:`var(--presence)`,data:[4200,4500,4300,4800,5200,6480]},{name:`Your typical month`,color:`var(--text-muted)`,data:[4400,4350,4400,4500,4650,4800],area:!1}],footer:`Up 18% over three months, May travel was the spike, not a new habit.`},breakdown:{title:`True yearly value`,icon:`table`,rows:[{name:`Base salary`,val:`Brightline $112k`,pct:93},{name:`Bonus (target)`,val:`$14k`,pct:78,tag:`swing`},{name:`401k match`,val:`$5.6k`,pct:40},{name:`Commute cost`,val:`āˆ’$2.4k`,pct:20,hot:!0}]},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)`}]},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.`]},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; low Wells + no sudden hypoxia make PE unlikely — the overnight plan holds the CTPA unless the picture changes.`},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.`},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.`},stack:{title:`Where it went Ā· May`,total:`$6,480`,segments:[{label:`Groceries`,value:1840,display:`$1,840`,color:`var(--presence)`},{label:`Travel`,value:1460,display:`$1,460`,color:`var(--warning)`},{label:`Dining`,value:1120,display:`$1,120`,color:`var(--presence-soft)`},{label:`Bills & utilities`,value:980,display:`$980`,color:`var(--text-muted)`},{label:`Other`,value:866,display:`$866`,color:`var(--presence-deep)`},{label:`Subscriptions`,value:214,display:`$214`,color:`var(--insight)`}],footer:`Travel was the one-off, strip it and you're flat month to month.`},scatter:{title:`Late screens vs. when you fell asleep`,iconColor:`var(--warning)`,xLabel:`Phone off (pm)`,yLabel:`Asleep (pm)`,xDomain:[10,12.2],yDomain:[10.4,12.8],points:[{x:10.5,y:11},{x:10.4,y:10.9},{x:10.7,y:11.2},{x:11,y:11.6},{x:11.3,y:12.1,hot:!0},{x:11.8,y:12.5,hot:!0},{x:11.9,y:12.6,hot:!0},{x:10.2,y:10.8}],trend:[[10.2,10.7],[12,12.6]],footer:`Each hour later on the phone tracks with ~40 more minutes to fall asleep.`},heat:{title:`Training calendar Ā· 6 weeks`,icon:`chart`,levelColor:`var(--presence)`,cols:[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],rows:[{label:`Wk 1`,cells:[1,0,2,0,1,0,2]},{label:`Wk 2`,cells:[1,0,2,0,1,0,2]},{label:`Wk 3`,cells:[1,0,3,0,1,0,2]},{label:`Wk 4`,cells:[2,0,3,0,1,0,3]},{label:`Wk 5`,cells:[2,0,3,0,2,0,3]},{label:`Wk 6`,cells:[2,0,3,0,2,0,{lvl:3,mark:`ā˜…`}]}],legend:[`Rest`,`Hard`],footer:`Easy days, one hard session a week, long run on Sundays, the shape that sticks.`},flow:{title:`The loop, in four beats`,icon:`sparkle`,steps:[{title:`You add money`,sub:`Say $200 this month.`,color:`var(--presence)`},{title:`It earns interest`,sub:`A small % is added on top.`,color:`var(--presence-soft)`},{title:`Interest joins the pile`,sub:`Now your balance is bigger.`,color:`var(--insight)`},{title:`Next round earns more`,sub:`Same %, bigger base, repeat.`,color:`var(--insight)`}],footer:`Nothing fancy, the same loop, running quietly for years.`},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 exact temperature.`},{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.`}]},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`},{label:`The Sun, our star`,source:`nasa.gov`,tag:`star`,h1:`#ffb347`,h2:`#8a4b10`}],footer:`These are real pictures taken by spacecraft and telescopes. Pretty cool, right?`},codemap:{title:`Blast radius, what this touches`,center:`ThemeContext.tsx`,nodes:[{label:`SettingsPage.tsx`,hot:!0,note:`edited`},{label:`useTheme.ts`,hot:!0,note:`edited`},{label:`tokens.css`,hot:!0,note:`+dark vars`},{label:`App.tsx`,note:`imports, safe`},{label:`Navbar.tsx`,note:`reads theme`}],footer:`12 call sites read the theme, none of their signatures change.`},diff:{title:`The diff`,file:`src/theme/ThemeContext.tsx`,add:14,del:3,lines:[{t:`ctx`,c:`<span class="k">import</span> { useColorScheme } <span class="k">from</span> <span class="s">"react-native"</span>;`},{t:`ctx`,c:``},{t:`ctx`,c:`<span class="k">export function</span> ThemeProvider({ children }) {`},{t:`del`,c:` <span class="k">const</span> theme = lightTheme;`},{t:`add`,c:` <span class="k">const</span> scheme = useColorScheme();`},{t:`add`,c:` <span class="k">const</span> theme = scheme === <span class="s">"dark"</span> ? darkTheme : lightTheme;`},{t:`ctx`,c:` <span class="k">return</span> (`},{t:`ctx`,c:` <ThemeCtx.Provider value={theme}>`},{t:`add`,c:` {<span class="c">/* persists the user override */</span>}`},{t:`ctx`,c:` {children}`},{t:`ctx`,c:` </ThemeCtx.Provider>`},{t:`ctx`,c:` );`}],footer:`Reads the OS setting, with a manual override you already store in Settings.`},checks:{title:`Tests after the change`,summary:`23 passed Ā· 1 needs updating Ā· ran in 8.2s`,items:[{name:`ThemeContext.test`,status:`pass`,note:`6 passed`},{name:`SettingsPage.test`,status:`pass`,note:`4 passed`},{name:`useTheme.test`,status:`pass`,note:`3 passed`},{name:`Navbar.snapshot`,status:`fail`,note:`old colors`},{name:`a11y Ā· contrast`,status:`pass`,note:`AA in both`}]},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.`},gauge:{title:`Which one wins`,icon:`spark`,iconColor:`var(--insight)`,value:64,max:100,band:`Brightline`,color:`var(--insight)`,driver:`Tilted by <b>total comp + a 35-min shorter commute</b>.`,footer:`Northwind only pulls ahead on base pay and three vacation days.`},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.`},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`},{team:`Clippers`,rec:`30–20`,gb:`11.0`}],footer:`A win tonight moves the Warriors within a game of Denver for the 2-seed.`},pipeline:{title:`By stage Ā· weighted`,icon:`layers`,iconColor:`var(--presence-soft)`,headline:`$21.6M`,sub:`weighted pipeline`,unit:`$`,suffix:`M`,stages:[{k:`Discovery`,v:8.2},{k:`Evaluation`,v:6.1},{k:`Proposal`,v:4.4},{k:`Commit`,v:2.9}],footer:`A healthy funnel, narrowing cleanly toward Commit.`},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.`},quotes:{title:`In their words`,icon:`quote`,iconColor:`var(--presence-soft)`,quotes:[{text:`The analytics rebuild is genuinely best-in-class now.`,who:`Enterprise admin`,tone:`pos`},{text:`Price jump felt abrupt, no warning, no grandfathering.`,who:`SMB founder`,tone:`neg`},{text:`Support got back to me in minutes. Big improvement.`,who:`Mid-market ops`,tone:`pos`},{text:`Migrating billing was confusing for our finance team.`,who:`SMB admin`,tone:`warn`}],footer:`The praise is product; the pain is pricing and billing.`},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 a ā€œnormalā€ number — a calm, hydrated child is the win.`},understand:{title:`What I learned about your studio`,conf:`strong`,items:[{text:`You're a <b>branding & web design studio</b> selling to other businesses.`,source:`/about`},{text:`You work in <b>projects with stages</b>, pitch, active, delivered.`,source:`/work`},{text:`Leads come in through a <b>contact form</b> and referrals.`,source:`/contact`},{text:`You bill <b>per project</b>, not hourly.`,source:`/pricing`}]},schema:{title:`The data model I'll build`,entities:[{name:`Company`,color:`var(--presence)`,badge:`B2B`,fields:[{name:`name`,type:`text`,key:!0},{name:`industry`,type:`text`},{name:`website`,type:`url`}]},{name:`Contact`,color:`var(--insight)`,fields:[{name:`name`,type:`text`,key:!0},{name:`email`,type:`email`},{name:`company`,type:`→ Company`}]},{name:`Project`,color:`var(--warning)`,fields:[{name:`title`,type:`text`,key:!0},{name:`stage`,type:`enum`},{name:`value`,type:`money`}]},{name:`Activity`,color:`var(--presence-soft)`,fields:[{name:`type`,type:`enum`},{name:`note`,type:`text`},{name:`contact`,type:`→ Contact`}]}],relations:[{from:`Company`,label:`has many`,to:`Contacts`},{from:`Contact`,label:`has many`,to:`Projects`},{from:`Project`,label:`logs`,to:`Activities`}],footer:`Mirrors how you already work, projects with stages, not generic ā€œdeals.ā€`},screenmap:{title:`The screens this shell wraps`,screens:[{name:`Overview`,kind:`dashboard`},{name:`Reports`,kind:`table`},{name:`Pipelines`,kind:`board`},{name:`Report detail`,kind:`detail`},{name:`Alerts`,kind:`list`}],footer:`Same chrome, five layouts, the navigation makes them feel like one product.`},buildprog:{title:`Building it`,steps:[{label:`Created the data model`,sub:`4 tables, relationships wired`,status:`done`},{label:`Generated 5 screens`,sub:`from your stages + fields`,status:`done`},{label:`Imported sample data`,sub:`8 leads pulled from your site`,status:`active`},{label:`Connect your contact form`,sub:`needs your permission`,status:`todo`}],footer:`Everything's a draft on your private workspace until you say go.`},preview:{app:`Studio CRM`,seededFrom:`Seeded from studio-aria.com`,nav:[{label:`Dashboard`,view:`dashboard`},{label:`Contacts`,view:`table`},{label:`Pipeline`,view:`board`},{label:`Companies`,view:`group`},{label:`Activity`,view:`activity`}],stages:[{key:`Pitch`,kind:`lead`,color:`var(--presence)`},{key:`Active`,kind:`warm`,color:`var(--warning)`},{key:`Delivered`,kind:`won`,color:`var(--insight)`}],rows:[{name:`Maya Okafor`,group:`Northwind Co`,stage:`Active`,amt:18e3,value:`$18k`,color:`var(--insight)`},{name:`Leo Park`,group:`Tasc Labs`,stage:`Pitch`,amt:9e3,value:`$9k`,color:`var(--presence)`},{name:`Ruth Adler`,group:`Bloom & Co`,stage:`Active`,amt:15e3,value:`$15k`,color:`var(--warning)`},{name:`Sam Cole`,group:`Northwind Co`,stage:`Delivered`,amt:22e3,value:`$22k`,color:`var(--danger)`},{name:`Ivy Chen`,group:`Forma`,stage:`Pitch`,amt:7e3,value:`$7k`,color:`var(--insight-soft)`}],kpis:[{v:`8`,k:`Open leads`},{v:`3`,k:`Active projects`},{v:`$42k`,k:`In pipeline`}],columns:[`Contact`,`Company`,`Stage`,`Value`],groupColumns:[`Company`,`Contacts`,`Pipeline`],pipelineLabel:`Pipeline by stage`,agg:`money`,createdNote:`created this CRM with MavĆ©a`,activities:[{who:`Maya Okafor`,what:`moved to Active`,when:`2h ago`,color:`var(--insight)`},{who:`Leo Park`,what:`added from contact form`,when:`today`,color:`var(--presence)`},{who:`Ruth Adler`,what:`sent a proposal`,when:`yesterday`,color:`var(--warning)`}],footer:`A real, working CRM, seeded from your site. Click around the dashboard; it all works.`}};export{e as default};
@@ -0,0 +1,11 @@
1
+ var e=1,t=1783000082821,n=`gemini-3.1-flash-lite`,r=[{id:`money`,domain:`Money`,emoji:`šŸ’°`,question:`Chart how a $10,000 investment grows at 7% a year for 30 years — show the year-by-year total and break down principal vs. interest earned.`,frames:[{question:`Chart how a $10,000 investment grows at 7% a year for 30 years — show the year-by-year total and break down principal vs. interest earned.`,narration:`Investing ten thousand dollars at a seven percent annual return transforms your money over thirty years. You'll see the principal stay steady while the interest compounds into a total of over seventy-six thousand dollars.`,mode:`replace`,tour:[],spec:{id:`live`,workspace:`Live`,title:`Investment Growth: $10,000 at 7%`,sub:`30-year projection with annual compounding.`,opener:`Investing ten thousand dollars at a seven percent annual return transforms your money over thirty years. You'll see the principal stay steady while the interest compounds into a total of over seventy-six thousand dollars.`,context:[],blocks:[{type:`insight`,col:4,delay:0,id:`live-1`,num:`1`,props:{title:`Total after 30 years`,summary:`Your initial $10,000 grows by more than 7.6x through the power of compounding interest.`,stat:`$76,123`},note:`This is your final balance after three decades of steady seven percent growth.`},{type:`plot`,col:8,delay:70,props:{title:`Growth trajectory`,curves:[{label:`Total Value`,color:`var(--insight)`,points:[{x:0,y:1e4},{x:10,y:19671},{x:20,y:38696},{x:30,y:76123}]}],xLabel:`Year`,yLabel:`Total Value ($)`,xDomain:[0,30],yDomain:[0,8e4],origin:!0,footer:`The curve steepens significantly after year 20 due to compounding.`},id:`live-2`,note:`The chart shows how your money accelerates over time, with the steepest gains occurring in the final decade.`},{type:`stack`,col:12,delay:140,props:{title:`Principal vs. Interest`,segments:[{value:1e4,label:`Principal`,display:`$10k`,color:`var(--text-muted)`},{value:66123,label:`Interest Earned`,display:`$66.1k`,color:`var(--insight)`}],total:`$76,123`},id:`live-3`,note:`Interest accounts for nearly 87% of your final total, showing why time is your greatest asset.`},{type:`breakdown`,col:12,delay:210,props:{title:`Milestone values`,rows:[{name:`Year 5`,val:`$14,025`,pct:9},{name:`Year 10`,val:`$19,671`,pct:13},{name:`Year 20`,val:`$38,696`,pct:26},{name:`Year 30`,val:`$76,123`,pct:52,hot:!0}]},id:`live-4`,note:`Your money doubles roughly every ten years at a seven percent return rate.`}],proof:null,topic:`Finance`,bend:{blockId:`live-1`,label:`Initial Investment`,param:{value:1e4,min:1e3,max:5e4,step:1e3,unit:`$`},outputs:[{label:`Final Total`,formula:`x*7.6123`,unit:`$`}]},extras:{},group:`home`,suggests:[{label:`How does inflation affect this growth?`,icon:`chat`,route:`How does inflation affect this growth?`},{label:`What if I added $500 monthly?`,icon:`chat`,route:`What if I added $500 monthly?`},{label:`How do taxes impact these returns?`,icon:`chat`,route:`How do taxes impact these returns?`},{label:`Best low-cost index funds?`,icon:`chat`,route:`Best low-cost index funds?`}],keywords:[]},at:1782928938795}],history:[{role:`user`,content:`Chart how a $10,000 investment grows at 7% a year for 30 years — show the year-by-year total and break down principal vs. interest earned.`},{role:`assistant`,content:`Investing ten thousand dollars at a seven percent annual return transforms your money over thirty years. You'll see the principal stay steady while the interest compounds into a total of over seventy-six thousand dollars.`}]},{id:`monthly`,domain:`Money`,emoji:`šŸ’°`,question:`Starting from a $10,000 investment growing at 7% a year for 30 years — what if I also added $500 every month? Chart both paths side by side and show how much of the final total comes from the monthly contributions.`,frames:[{question:`Starting from a $10,000 investment growing at 7% a year for 30 years — what if I also added $500 every month? Chart both paths side by side and show how much of the final total comes from the monthly contributions.`,narration:`Adding just $500/mo to your initial $10,000 investment transforms your outcome over 30 years. You'll see how that consistent monthly habit builds a much larger final nest egg than the initial sum alone.`,mode:`replace`,tour:[],spec:{id:`live`,workspace:`Live`,title:`Investment Growth: Lump Sum vs. Monthly Contributions`,sub:`Comparing a $10,000 start with and without $500 monthly additions over 30 years at 7% annual return.`,opener:`Adding just $500/mo to your initial $10,000 investment transforms your outcome over 30 years. You'll see how that consistent monthly habit builds a much larger final nest egg than the initial sum alone.`,context:[],blocks:[{type:`insight`,col:4,delay:0,id:`live-1`,num:`1`,props:{title:`The power of consistency`,summary:`Adding $500 monthly turns a $10,000 seed into a significant portfolio over three decades.`,stat:`$655,000+`,delta:`vs. $76,000`,deltaDir:`up`},note:`The total difference is massive: your $10,000 alone grows to about $76,000, but adding $500 monthly pushes your total past $655,000.`},{type:`chart`,col:8,delay:70,props:{title:`Growth over 30 years at 7% return`,labels:[`Year 0`,`Year 5`,`Year 10`,`Year 15`,`Year 20`,`Year 25`,`Year 30`],series:[{name:`Lump Sum Only`,color:`var(--text-muted)`,data:[1e4,14025,19671,27590,38704,54304,76122]},{name:`With $500/mo`,color:`var(--insight)`,data:[1e4,51360,107600,185600,294e3,445e3,655e3]}],unit:`$`,footer:`The gap widens exponentially as time passes.`},id:`live-2`,note:`This chart shows the lump sum growing steadily, while the monthly contribution path accelerates rapidly due to compounding.`},{type:`stack`,col:12,delay:140,props:{title:`Composition of the $655,000 total`,segments:[{value:1e4,label:`Initial Investment`,display:`1.5%`,color:`var(--text-muted)`},{value:18e4,label:`Total Contributions`,display:`27.5%`,color:`var(--presence-soft)`},{value:465e3,label:`Compound Interest`,display:`71%`,color:`var(--insight)`}],total:`$655,000`},id:`live-3`,note:`Over 30 years, your $180,000 in total contributions is dwarfed by the $465,000 earned in interest, showing the real engine of your growth.`},{type:`kpi`,col:12,delay:210,props:{title:`30-Year Summary`,kpis:[{val:`$190,000`,label:`Total Principal`},{val:`$465,000`,label:`Total Interest`},{val:`$655,000`,label:`Final Balance`}]},id:`live-4`,note:`Your total principal includes the initial $10,000 plus $180,000 in monthly additions, resulting in a final balance of over $655,000.`}],proof:null,topic:`Finance`,track:{score:85,reason:`Personal investment growth tracking`},bend:{blockId:`live-2`,label:`Monthly Contribution`,param:{value:500,min:0,max:2e3,step:50,unit:`$`},outputs:[{label:`Total Principal`,formula:`10000+(x*12*30)`},{label:`Estimated Final`,formula:`(10000*7.61)+(x*1213)`}]},extras:{},group:`home`,suggests:[{label:`How does inflation affect these returns?`,icon:`chat`,route:`How does inflation affect these returns?`},{label:`What if I increase contributions over time?`,icon:`chat`,route:`What if I increase contributions over time?`},{label:`How do taxes impact this growth?`,icon:`chat`,route:`How do taxes impact this growth?`}],keywords:[]},at:1783000082818}],history:[{role:`user`,content:`Starting from a $10,000 investment growing at 7% a year for 30 years — what if I also added $500 every month? Chart both paths side by side and show how much of the final total comes from the monthly contributions.`},{role:`assistant`,content:`Adding just $500/mo to your initial $10,000 investment transforms your outcome over 30 years. You'll see how that consistent monthly habit builds a much larger final nest egg than the initial sum alone.`}]},{id:`space`,domain:`Science`,emoji:`šŸ”­`,question:`Explain how a black hole bends light around it`,frames:[{question:`Explain how a black hole bends light around it`,narration:`Black holes are so dense they warp the very fabric of space, forcing light to follow curved paths instead of traveling in a straight line. This effect, called gravitational lensing, creates the iconic glowing ring you see in images of black holes.`,mode:`replace`,tour:[],spec:{id:`live`,workspace:`Live`,title:`Gravitational Lensing: How Black Holes Bend Light`,sub:`General relativity in action: mass curves spacetime.`,opener:`Black holes are so dense they warp the very fabric of space, forcing light to follow curved paths instead of traveling in a straight line. This effect, called gravitational lensing, creates the iconic glowing ring you see in images of black holes.`,context:[],blocks:[{type:`insight`,col:5,delay:0,id:`live-1`,num:`1`,props:{title:`The core principle`,summary:`Massive objects like black holes create a 'gravity well' that curves spacetime. Light, which always follows the shortest path, must follow these curves, resulting in bent trajectories.`,conf:`strong`},note:`Light doesn't actually 'bend' because of gravity's pull on the photons themselves; it follows the curvature of space created by the black hole's immense mass.`,section:`The Mechanism`,order:1},{type:`vectorfield`,col:7,delay:70,props:{title:`Spacetime curvature near a singularity`,samples:[{x:-2,y:-2,slope:1},{x:0,y:-2,slope:0},{x:2,y:-2,slope:-1},{x:-2,y:0,slope:0},{x:2,y:0,slope:0},{x:-2,y:2,slope:-1},{x:0,y:2,slope:0},{x:2,y:2,slope:1}],curves:[{label:`Light path (photon sphere)`,color:`var(--insight)`,points:[{x:-2,y:.5},{x:-1,y:.2},{x:0,y:.1},{x:1,y:.2},{x:2,y:.5}]}],footer:`The arrows represent the slope of spacetime; light follows the path of least resistance through this warped grid.`},id:`live-2`,note:`This vector field shows how space is distorted near a massive object, forcing light to deviate from a straight line.`,section:`The Mechanism`,order:1,depth:2,facet:`derivation`},{type:`etymtree`,col:12,delay:140,props:{word:`Lensing`,roots:[{form:`lens`,lang:`Latin`,gloss:`lentil (shape similarity)`}],descendants:[{form:`Gravitational Lensing`,lang:`Astrophysics`,gloss:`Bending of light by gravity`}],note:`The term 'lens' comes from the Latin word for lentil, describing the shape of glass lenses that also bend light.`},id:`live-3`,note:`The term 'lens' comes from the Latin word for lentil, describing the shape of glass lenses that also bend light.`,section:`Terminology`,order:2},{type:`evidencetrace`,col:12,delay:210,props:{title:`Observational Proof`,claim:`Light from distant stars is visibly bent by massive objects.`,items:[{text:`1919 Solar Eclipse: Eddington confirmed starlight shifted position near the Sun.`,source:`Arthur Eddington`,when:`1919`},{text:`Event Horizon Telescope: Captured the 'shadow' of M87* with a bright photon ring.`,source:`EHT Collaboration`,when:`2019`}]},id:`live-4`,note:`We don't just theorize this; we have observed it directly during solar eclipses and through modern radio telescopes.`,section:`Observational Proof`,order:3}],proof:null,topic:`Physics`,extras:{},group:`home`,suggests:[{label:`What is the Event Horizon?`,icon:`chat`,route:`What is the Event Horizon?`},{label:`Can light escape a black hole?`,icon:`chat`,route:`Can light escape a black hole?`},{label:`How do we detect black holes?`,icon:`chat`,route:`How do we detect black holes?`}],keywords:[]},at:1782928850936}],history:[{role:`user`,content:`Explain how a black hole bends light around it`},{role:`assistant`,content:`Black holes are so dense they warp the very fabric of space, forcing light to follow curved paths instead of traveling in a straight line. This effect, called gravitational lensing, creates the iconic glowing ring you see in images of black holes.`}]},{id:`travel`,domain:`Travel`,emoji:`šŸ—¾`,question:`Plan a 5-day first-timer trip to Japan`,frames:[{question:`Plan a 5-day first-timer trip to Japan`,narration:`Welcome to Japan! For a five-day first trip, focus on Tokyo—it's the perfect mix of neon energy and quiet tradition. This plan balances the must-see sights with enough breathing room to actually enjoy the culture.`,mode:`replace`,tour:[{index:0,say:`First, keep it simple: stay in Tokyo for all five days. It's a massive city, and you won't run out of things to see.`,mark:{kind:`highlight`,at:`Tokyo as your base`}},{index:3,say:`Here is your flow: start with the neon energy of Shibuya, move to the traditional temples, and take a day trip to Hakone for nature.`,mark:{kind:`circle`,at:`Day 1`},marks:[{kind:`circle`,at:`Day 1`},{kind:`circle`,at:`Day 2`},{kind:`circle`,at:`Day 4`}]},{index:5,say:`And remember, the train system is your best friend. Just tap your phone and go.`,mark:{kind:`underline`,at:`Suica or Pasmo card`}}],spec:{id:`live`,workspace:`Live`,title:`Tokyo: The 5-Day First-Timer's Guide`,sub:`A balanced mix of neon, tradition, and nature.`,opener:`Welcome to Japan! For a five-day first trip, focus on Tokyo—it's the perfect mix of neon energy and quiet tradition. This plan balances the must-see sights with enough breathing room to actually enjoy the culture.`,context:[],blocks:[{type:`insight`,col:5,delay:0,id:`live-1`,num:`1`,props:{title:`The Strategy: Tokyo as your base`,summary:`Five days is short. Don't try to do Kyoto and Tokyo. Stay in Tokyo, explore its distinct neighborhoods, and take one day trip to see Mt. Fuji.`,stat:`5 Days`,conf:`inferred`},note:`Focusing on one city lets you actually experience it rather than spending your whole trip on a bullet train.`},{type:`factsheet`,col:7,delay:70,props:{title:`Japan Essentials`,subject:`Quick Prep`,facts:[{label:`Connectivity`,value:`eSIM (Airalo/Ubigi)`,note:`Essential for Google Maps navigation.`},{label:`Payment`,value:`Cash is still king`,note:`Carry yen for small shops and temples.`},{label:`Transport`,value:`Suica/Pasmo card`,note:`Add to your Apple/Google Wallet.`}]},id:`live-2`,note:`Get these three things sorted before you land, and your trip will be ten times smoother.`},{type:`maproute`,col:12,delay:140,props:{waypoints:[{lat:35.6595,lng:139.7005,label:`Shibuya Crossing`,leg:`Start Ā· The world's busiest intersection`},{lat:35.6695,lng:139.7005,label:`Harajuku (Takeshita St)`,leg:`1.5 km Ā· 20 min Ā· Youth culture & crepes`},{lat:35.6938,lng:139.7034,label:`Shinjuku Omoide Yokocho`,leg:`2.5 km Ā· 35 min Ā· Yakitori alley dinner`}],title:`Day 1: The Neon Heart (Shibuya & Shinjuku)`,icon:`walk`,iconColor:`var(--presence)`,distanceKm:4,elevationGainM:20,caption:`A flat, high-energy walk through Tokyo's most iconic districts.`},id:`live-3`,note:`This route hits the famous crossing, the quirky fashion streets, and ends in a classic, smoky alleyway for dinner.`},{type:`timeline`,col:12,delay:210,props:{events:[{time:`Day 1`,title:`Shibuya & Shinjuku`,detail:`The neon lights, the crossing, and yakitori alleys.`},{time:`Day 2`,title:`Asakusa & Ueno`,detail:`Senso-ji Temple, traditional markets, and park strolls.`},{time:`Day 3`,title:`Meiji Shrine & Omotesando`,detail:`Forest serenity followed by high-end architecture.`},{time:`Day 4`,title:`Hakone Day Trip`,detail:`Hot springs, pirate ship cruise, and Mt. Fuji views.`},{time:`Day 5`,title:`Akihabara & Departure`,detail:`Electronics, anime culture, and last-minute gifts.`}],eyebrow:`Your 5-Day Itinerary`},id:`live-4`,note:`This flow moves from the modern city to traditional roots, then out to nature, and finally back for pop culture.`},{type:`carousel`,col:12,delay:280,props:{title:`Visual Highlights`,slides:[{label:`Shibuya Crossing`,caption:`The iconic scramble at night.`,from:`var(--presence-deep)`,to:`var(--presence)`,src:`https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Shibuya_crossing_at_night.jpg/960px-Shibuya_crossing_at_night.jpg`},{label:`Senso-ji Temple`,caption:`The red lantern gate in Asakusa.`,from:`var(--warning)`,to:`var(--warning-soft)`,src:`https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Lantern_of_Kaminarimon_Gate.JPG/960px-Lantern_of_Kaminarimon_Gate.JPG`},{label:`Mt. Fuji from Hakone`,caption:`The classic view across Lake Ashi.`,from:`var(--insight)`,to:`var(--presence)`,src:`https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/View_of_Mount_Fuji_from_Lake_Ashi.jpg/960px-View_of_Mount_Fuji_from_Lake_Ashi.jpg`}],icon:`image`,iconColor:`var(--insight)`},id:`live-5`,note:`These are the frames you'll want to capture—the crossing, the temple, and the mountain.`},{type:`talktrack`,col:12,delay:350,props:{title:`How to handle the trains`,lines:[{say:`Don't stress about the train maps; they look like spaghetti, but they're logical.`,beat:`warm, steady`,note:`The system is complex but very well-signed.`},{say:`Just add a Suica or Pasmo card to your phone's wallet. Tap in, tap out, and you're done.`,beat:`pause here`,note:`This is the single most important tip for getting around.`},{say:`If you get lost, just look for the station staff—they are incredibly helpful, even if your Japanese is zero.`,beat:`reassuring`,note:`Don't be afraid to ask for help.`}],icon:`mic`,totalTime:`~45s`},id:`live-6`,note:`The train system is the lifeblood of Tokyo—mastering the tap-and-go card makes you a local instantly.`},{type:`kpi`,col:12,delay:420,props:{title:`Daily Budget Estimate (per person)`,kpis:[{val:`$120`,label:`Mid-range Hotel`},{val:`$60`,label:`Food & Drink`},{val:`$30`,label:`Transport & Entry`}]},id:`live-7`,note:`Expect to spend around $210 a day for a comfortable, mid-range experience.`},{type:`list`,col:12,delay:490,props:{title:`Immediate First Steps`,items:[`Book your flights to Narita (NRT) or Haneda (HND).`,`Reserve a hotel in Shinjuku or Shibuya for easy access.`,`Download Google Maps and Google Translate.`,`Check if you need a Japan Rail Pass (likely not for just Tokyo/Hakone).`]},id:`live-8`,note:`Start with the flights and hotel—everything else can be figured out once you're on the ground.`}],proof:null,topic:`Travel`,extras:{},group:`home`,suggests:[{label:`Best neighborhoods to stay in?`,icon:`chat`,route:`Best neighborhoods to stay in?`},{label:`What to pack for Japan?`,icon:`chat`,route:`What to pack for Japan?`},{label:`Is the JR Pass worth it?`,icon:`chat`,route:`Is the JR Pass worth it?`},{label:`Must-try foods for beginners?`,icon:`chat`,route:`Must-try foods for beginners?`}],keywords:[]},at:1782928867093}],history:[{role:`user`,content:`Plan a 5-day first-timer trip to Japan`},{role:`assistant`,content:`Welcome to Japan! For a five-day first trip, focus on Tokyo—it's the perfect mix of neon energy and quiet tradition. This plan balances the must-see sights with enough breathing room to actually enjoy the culture.`}]},{id:`fitness`,domain:`Health`,emoji:`šŸ‹ļø`,question:`Design a beginner 3-day-a-week strength routine`,frames:[{question:`Design a beginner 3-day-a-week strength routine`,narration:`Building strength as a beginner is all about consistency. This three-day full-body routine hits every major muscle group, giving you forty-eight hours of recovery between sessions to let your muscles grow.`,mode:`replace`,tour:[],spec:{id:`live`,workspace:`Live`,title:`3-Day Beginner Strength Routine`,sub:`Full-body focus for maximum efficiency and recovery.`,opener:`Building strength as a beginner is all about consistency. This three-day full-body routine hits every major muscle group, giving you forty-eight hours of recovery between sessions to let your muscles grow.`,context:[],blocks:[{type:`insight`,col:12,delay:0,id:`live-1`,num:`1`,props:{title:`The Golden Rule`,summary:`Focus on compound movements like squats and presses. They build the most strength in the least amount of time, perfect for a beginner's 3-day split.`,stat:`3 Days/Week`},note:`Three days is the sweet spot for beginners, allowing for maximum recovery between full-body sessions.`,section:`The Routine`,order:1},{type:`plangrid`,col:12,delay:70,props:{title:`Your Weekly Schedule`,columns:[`Mon`,`Wed`,`Fri`],rows:[{slot:`Routine`,cells:[{col:`Mon`,label:`Full Body A`,sub:`45 min`},{col:`Wed`,label:`Full Body B`,sub:`45 min`},{col:`Fri`,label:`Full Body A`,sub:`45 min`}]}]},id:`live-2`,note:`A classic Monday-Wednesday-Friday split gives you rest days in between to recover fully.`,section:`The Routine`,order:1},{type:`datatable`,col:12,delay:140,props:{title:`Full Body A: The Foundation`,columns:[{key:`move`,label:`Movement`,align:`left`},{key:`sets`,label:`Sets`,align:`left`},{key:`reps`,label:`Reps`,align:`left`}],rows:[{move:`Goblet Squats`,sets:`3`,reps:`8-10`},{move:`Push-ups`,sets:`3`,reps:`Failure`},{move:`Dumbbell Rows`,sets:`3`,reps:`10-12`},{move:`Plank`,sets:`3`,reps:`45 sec`}]},id:`live-3`,note:`This session targets your quads, chest, and back, creating a solid base for future progress.`,section:`The Routine`,order:1},{type:`datatable`,col:12,delay:210,props:{title:`Full Body B: Adding Variety`,columns:[{key:`move`,label:`Movement`,align:`left`},{key:`sets`,label:`Sets`,align:`left`},{key:`reps`,label:`Reps`,align:`left`}],rows:[{move:`Deadlifts`,sets:`3`,reps:`6-8`},{move:`Overhead Press`,sets:`3`,reps:`8-10`},{move:`Lat Pulldowns`,sets:`3`,reps:`10-12`},{move:`Lunges`,sets:`3`,reps:`10/side`}]},id:`live-4`,note:`Session B shifts focus to your posterior chain and shoulders, ensuring no muscle group is left behind.`,section:`The Routine`,order:1},{type:`radar`,col:12,delay:280,props:{title:`Muscle Group Focus`,axes:[`Upper Push`,`Upper Pull`,`Lower Body`,`Core`],series:[{label:`Full Body Routine`,color:`var(--insight)`,values:[8,8,9,7]}],max:10},id:`live-5`,note:`This routine provides a balanced load, hitting all primary movement patterns equally.`,section:`The Science`,order:2,depth:2,facet:`analogy`}],proof:null,topic:`Sports`,extras:{},group:`home`,suggests:[{label:`How do I track my progress?`,icon:`chat`,route:`How do I track my progress?`},{label:`What if I miss a day?`,icon:`chat`,route:`What if I miss a day?`},{label:`How to warm up properly?`,icon:`chat`,route:`How to warm up properly?`},{label:`Should I take supplements?`,icon:`chat`,route:`Should I take supplements?`}],keywords:[]},at:1782928878224}],history:[{role:`user`,content:`Design a beginner 3-day-a-week strength routine`},{role:`assistant`,content:`Building strength as a beginner is all about consistency. This three-day full-body routine hits every major muscle group, giving you forty-eight hours of recovery between sessions to let your muscles grow.`}]},{id:`code`,domain:`Engineering`,emoji:`šŸ”`,question:`Explain how OAuth login works, step by step`,frames:[{question:`Explain how OAuth login works, step by step`,narration:`OAuth is the standard way apps let you log in using another service, like Google or GitHub, without ever sharing your actual password. It works by trading temporary digital keys, keeping your credentials safe behind the scenes.`,mode:`replace`,tour:[{index:0,say:`OAuth is all about tokens, not passwords. It's the secure way to let apps verify your identity without ever seeing your credentials.`,mark:{kind:`highlight`,at:`tokens`}},{index:1,say:`The flow is a five-step handshake. The app asks for permission, you log in with the provider, and the app gets a code to trade for a token.`,mark:{kind:`underline`,at:`Authorization Code`},marks:[{kind:`underline`,at:`Authorization Code`},{kind:`underline`,at:`Access Token`}]},{index:2,say:`This is what that exchange looks like in code: the app sends the code and its secret, and the provider hands back the access token.`,mark:{kind:`circle`,at:`access_token`}}],spec:{id:`live`,workspace:`Live`,title:`OAuth 2.0: How it Works`,sub:`The secure handshake between your app, the user, and the identity provider.`,opener:`OAuth is the standard way apps let you log in using another service, like Google or GitHub, without ever sharing your actual password. It works by trading temporary digital keys, keeping your credentials safe behind the scenes.`,context:[],blocks:[{type:`insight`,col:5,delay:0,id:`live-1`,num:`1`,props:{title:`The Core Concept`,summary:`OAuth 2.0 uses 'tokens' instead of passwords. The app asks the identity provider (like Google) for permission, and the provider gives a temporary key that the app uses to prove who you are.`,conf:`strong`},note:`Think of it like a hotel key card: you don't get the master key to the whole building, just a temporary pass that lets you into your specific room.`},{type:`howtosteps`,col:7,delay:70,props:{title:`The OAuth Authorization Code Flow`,steps:[{action:`User clicks 'Login with Google'`,detail:`The app redirects your browser to the identity provider's login page.`},{action:`User authenticates`,detail:`You enter your credentials directly on the provider's site, not the app's.`},{action:`Provider issues an Authorization Code`,detail:`The provider sends a short-lived code back to the app's redirect URL.`},{action:`App exchanges code for Access Token`,detail:`The app sends the code + its secret key to the provider's server.`},{action:`Provider validates and returns Token`,detail:`The provider verifies the app and code, then issues an Access Token.`}],icon:`share`,iconColor:`var(--presence)`},id:`live-2`,note:`This five-step dance ensures the app never sees your password, only the token the provider gives them.`},{type:`terminal`,col:12,delay:140,props:{lines:[{kind:`comment`,text:`App sends the auth code to the provider to get the token`},{kind:`command`,text:`POST /token?code=xyz123&client_id=my-app&client_secret=secret`},{kind:`comment`,text:`Provider responds with the access token`},{kind:`command`,text:`HTTP 200 OK
2
+ { "access_token": "eyJhbGci...", "token_type": "Bearer" }`}],title:`The Token Exchange (Behind the Scenes)`,prompt:`app-server $`},id:`live-3`,note:`This is the critical moment: the app trades the temporary code for a secure token that acts as your digital ID.`},{type:`checklist`,col:12,delay:210,props:{rows:[{t:`Client ID: Public identifier for the app`,st:`done`},{t:`Client Secret: Private key known only to app and provider`,st:`done`},{t:`Redirect URI: Where the provider sends the user back`,st:`done`},{t:`Access Token: The temporary key used for API calls`,st:`done`}],title:`Key Security Components`},id:`live-4`,note:`These four pieces are the building blocks of every secure OAuth connection.`}],proof:null,topic:`Technology`,extras:{},group:`home`,suggests:[{label:`What is an OpenID Connect?`,icon:`chat`,route:`What is an OpenID Connect?`},{label:`How do refresh tokens work?`,icon:`chat`,route:`How do refresh tokens work?`},{label:`OAuth vs SAML: What's the difference?`,icon:`chat`,route:`OAuth vs SAML: What's the difference?`},{label:`How to secure an OAuth implementation?`,icon:`chat`,route:`How to secure an OAuth implementation?`}],keywords:[]},at:1782928888986}],history:[{role:`user`,content:`Explain how OAuth login works, step by step`},{role:`assistant`,content:`OAuth is the standard way apps let you log in using another service, like Google or GitHub, without ever sharing your actual password. It works by trading temporary digital keys, keeping your credentials safe behind the scenes.`}]},{id:`food`,domain:`Everyday`,emoji:`šŸ`,question:`A fast weeknight pasta from pantry staples`,frames:[{question:`A fast weeknight pasta from pantry staples`,narration:`A quick, comforting weeknight pasta is all about pantry staples. My go-to is a simple aglio e olio — it's ready in fifteen minutes and relies on things you likely have on hand right now.`,mode:`replace`,tour:[{index:1,say:`Start with these staples: spaghetti, plenty of garlic, and good olive oil.`,mark:{kind:`circle`,at:`Spaghetti`},marks:[{kind:`circle`,at:`Spaghetti`},{kind:`circle`,at:`Garlic (thinly sliced)`}]},{index:2,say:`The magic happens in the last five minutes when you emulsify the pasta water with the oil.`,mark:{kind:`highlight`,at:`Emulsify and serve`}}],spec:{id:`live`,workspace:`Live`,title:`Pantry Pasta: Aglio e Olio`,sub:`A 15-minute classic using garlic, oil, and red pepper.`,opener:`A quick, comforting weeknight pasta is all about pantry staples. My go-to is a simple aglio e olio — it's ready in fifteen minutes and relies on things you likely have on hand right now.`,context:[],blocks:[{type:`insight`,col:6,delay:0,id:`live-1`,num:`1`,props:{title:`The 15-minute pantry hero`,summary:`This classic Italian dish relies on high-quality olive oil, plenty of garlic, and a kick of heat. It's the ultimate 'I have nothing to eat' meal.`,stat:`15 min`},note:`This is the essence of pantry cooking: minimal ingredients, maximum flavor, and ready in the time it takes to boil water.`},{type:`breakdown`,col:6,delay:70,props:{title:`Ingredients for 2 servings`,rows:[{name:`Spaghetti`,val:`200g`,pct:50},{name:`Garlic (thinly sliced)`,val:`4 cloves`,pct:10},{name:`Extra virgin olive oil`,val:`1/4 cup`,pct:20},{name:`Red pepper flakes`,val:`1 tsp`,pct:5},{name:`Parsley & Parmesan`,val:`to taste`,pct:15}]},id:`live-2`,note:`These five items are all you need; the quality of your olive oil and the thinness of your garlic slices make the biggest difference.`},{type:`timeline`,col:12,delay:140,props:{events:[{time:`0-10 min`,title:`Boil the pasta`,detail:`Cook spaghetti in heavily salted water until just al dente.`},{time:`5-10 min`,title:`Infuse the oil`,detail:`While pasta cooks, gently sautĆ© garlic and pepper flakes in olive oil until golden.`},{time:`10-15 min`,title:`Emulsify and serve`,detail:`Toss pasta directly into the oil with a splash of pasta water to create a silky sauce.`}],title:`Step-by-step preparation`},id:`live-3`,note:`The secret is the pasta water; that starchy liquid is what turns your oil into a creamy, clinging sauce.`},{type:`pullquote`,col:12,delay:210,props:{title:`The golden rule`,quote:`Don't burn the garlic. It should be pale gold and fragrant, not dark brown and bitter.`,author:`Chef's Tip`},id:`live-4`,note:`Garlic is the star here, so treat it gently — if it turns dark brown, it will ruin the whole dish.`}],proof:null,topic:`Cooking`,extras:{},group:`home`,suggests:[{label:`How to make it creamier?`,icon:`chat`,route:`How to make it creamier?`},{label:`What other pantry pastas can I make?`,icon:`chat`,route:`What other pantry pastas can I make?`},{label:`How to store leftover garlic?`,icon:`chat`,route:`How to store leftover garlic?`}],keywords:[]},at:1782928899181}],history:[{role:`user`,content:`A fast weeknight pasta from pantry staples`},{role:`assistant`,content:`A quick, comforting weeknight pasta is all about pantry staples. My go-to is a simple aglio e olio — it's ready in fifteen minutes and relies on things you likely have on hand right now.`}]},{id:`ev`,domain:`Compare`,emoji:`šŸš—`,question:`Compare the top 5 electric cars on range, price, and charging speed in a decision table`,frames:[{question:`Compare the top 5 electric cars on range, price, and charging speed in a decision table`,narration:`I don't have live access to today's real-time market prices or specific software versions, but I can compare five leading electric vehicles based on their core performance specs. Here is how they stack up on range, price, and charging speed.`,mode:`replace`,tour:[],spec:{id:`live`,workspace:`Live`,title:`Electric Vehicle Comparison`,sub:`Top 5 models evaluated on range, price, and charging efficiency.`,opener:`I don't have live access to today's real-time market prices or specific software versions, but I can compare five leading electric vehicles based on their core performance specs. Here is how they stack up on range, price, and charging speed.`,context:[],blocks:[{type:`comparematrix`,col:12,delay:0,props:{title:`EV Performance Comparison`,cols:[`Tesla Model 3`,`Hyundai Ioniq 6`,`Ford Mustang Mach-E`,`Lucid Air`,`Kia EV6`],rows:[{label:`Est. Range (miles)`,cells:[{value:`341`},{value:`361`},{value:`320`},{value:`516`},{value:`310`}]},{label:`Starting Price`,cells:[{value:`$42,490`},{value:`$42,450`},{value:`$43,995`},{value:`$69,900`},{value:`$45,950`}]},{label:`Charge (10-80%)`,cells:[{value:`25 min`},{value:`18 min`},{value:`35 min`},{value:`20 min`},{value:`18 min`}]}],footer:`Prices are base MSRP estimates; range varies by trim and driving conditions.`},id:`live-1`,note:`This matrix highlights the trade-offs between range, cost, and charging speed across five popular electric models.`},{type:`insight`,col:12,delay:70,id:`live-2`,num:`1`,props:{title:`Market Data Disclaimer`,summary:`I do not have live access to current dealer pricing or inventory. These figures represent standard manufacturer base MSRPs as of mid-2026.`,stat:`Inferred`},note:`Since I cannot access live dealership inventory, these figures are based on standard manufacturer data and should be verified locally.`},{type:`proscons`,col:12,delay:140,props:{title:`Choosing Your EV`,pros:[{text:`High efficiency and charging speed`,weight:5},{text:`Lower total cost of ownership`,weight:4}],cons:[{text:`Charging infrastructure gaps`,weight:4},{text:`Higher upfront purchase price`,weight:3}],prosLabel:`Why choose these`,consLabel:`Key trade-offs`,verdict:`Choose based on your daily commute distance and access to home charging.`},id:`live-3`,note:`The decision often comes down to balancing your daily range needs against the convenience of fast-charging speeds.`}],proof:null,topic:`Technology`,extras:{},group:`home`,suggests:[{label:`How do I find local charging stations?`,icon:`chat`,route:`How do I find local charging stations?`},{label:`What are the federal tax credit rules?`,icon:`chat`,route:`What are the federal tax credit rules?`},{label:`How does cold weather affect EV range?`,icon:`chat`,route:`How does cold weather affect EV range?`},{label:`Leasing vs. buying an electric car`,icon:`chat`,route:`Leasing vs. buying an electric car`}],keywords:[]},at:1782930501233}],history:[{role:`user`,content:`Compare the top 5 electric cars on range, price, and charging speed in a decision table`},{role:`assistant`,content:`I don't have live access to today's real-time market prices or specific software versions, but I can compare five leading electric vehicles based on their core performance specs. Here is how they stack up on range, price, and charging speed.`}]},{id:`budget`,domain:`Money`,emoji:`šŸ›ļø`,question:`Break down where the US federal budget is spent, by category, as a flow`,frames:[{question:`Break down where the US federal budget is spent, by category, as a flow`,narration:`The federal budget is a massive flow of funds, primarily directed toward mandatory programs like Social Security and Medicare, followed by discretionary spending on defense and other government services.`,mode:`replace`,tour:[{index:1,say:`The budget flows through three main channels: mandatory programs, discretionary spending, and interest on the national debt.`,mark:{kind:`underline`,at:`Mandatory`},marks:[{kind:`underline`,at:`Mandatory`},{kind:`underline`,at:`Discretionary`},{kind:`underline`,at:`Interest`}]},{index:3,say:`Mandatory spending is dominated by Social Security and Medicare, which together account for over sixty percent of that category.`,mark:{kind:`circle`,at:`Social Security`},marks:[{kind:`circle`,at:`Social Security`},{kind:`circle`,at:`Medicare`}]},{index:4,say:`In discretionary spending, defense is the clear leader, consuming more than half of the annual congressional allocation.`,mark:{kind:`highlight`,at:`Defense`,color:`key`}}],spec:{id:`live`,workspace:`Live`,title:`U.S. Federal Budget Flow`,sub:`Mandatory, discretionary, and interest spending for fiscal year 2025.`,opener:`The federal budget is a massive flow of funds, primarily directed toward mandatory programs like Social Security and Medicare, followed by discretionary spending on defense and other government services.`,context:[],blocks:[{type:`insight`,col:4,delay:0,id:`live-1`,num:`1`,props:{title:`Total Federal Outlays`,summary:`The total projected spending for the 2025 fiscal year, covering all mandatory, discretionary, and interest obligations.`,stat:`$6.75 trillion`},note:`This is the total pie — six point seven five trillion dollars — that the federal government plans to spend this year.`,section:`Budget Overview`,order:1},{type:`pipeline`,col:8,delay:70,props:{stages:[{k:`Mandatory`,v:4.2},{k:`Discretionary`,v:1.7},{k:`Interest`,v:.85}],title:`Spending Flow by Category`,headline:`$6.75T`,sub:`Total federal outlays`,unit:`$`,suffix:`T`},id:`live-2`,note:`Mandatory spending is the largest chunk at four point two trillion, followed by discretionary at one point seven, and interest payments at zero point eight five trillion.`,section:`Budget Overview`,order:1},{type:`bridge`,col:12,delay:140,props:{title:`Why Spending Has Changed`,start:6100,end:6750,steps:[{label:`Social Security growth`,delta:250},{label:`Higher interest rates`,delta:150},{label:`Defense adjustments`,delta:100},{label:`Other mandatory growth`,delta:150}],footer:`Rising interest costs and mandatory entitlement growth are the primary drivers of the year-over-year increase.`},id:`live-3`,note:`This bridge shows how we moved from last year's spending to this year's, with interest and mandatory programs driving the bulk of the growth.`,section:`Budget Dynamics`,order:2},{type:`breakdown`,col:6,delay:210,props:{title:`Mandatory Spending Detail`,rows:[{name:`Social Security`,val:`$1.55T`,pct:37},{name:`Medicare`,val:`$1.05T`,pct:25},{name:`Medicaid`,val:`$650B`,pct:15},{name:`Income Security`,val:`$500B`,pct:12},{name:`Other`,val:`$450B`,pct:11}]},id:`live-4`,note:`Social Security and Medicare make up the vast majority of mandatory spending, reflecting the aging population and existing benefit structures.`,section:`Budget Dynamics`,order:2},{type:`breakdown`,col:6,delay:280,props:{title:`Discretionary Spending Detail`,rows:[{name:`Defense`,val:`$900B`,pct:53},{name:`Education`,val:`$200B`,pct:12},{name:`Health/Human Services`,val:`$150B`,pct:9},{name:`Transportation`,val:`$150B`,pct:9},{name:`Other`,val:`$300B`,pct:17}]},id:`live-5`,note:`Defense spending accounts for over half of all discretionary outlays, which are the parts of the budget Congress sets annually.`,section:`Budget Dynamics`,order:2}],proof:null,topic:`Economics`,extras:{},group:`home`,suggests:[{label:`How is the federal budget funded?`,icon:`chat`,route:`How is the federal budget funded?`},{label:`What is the difference between mandatory and discretionary?`,icon:`chat`,route:`What is the difference between mandatory and discretionary?`},{label:`How does the national debt impact interest payments?`,icon:`chat`,route:`How does the national debt impact interest payments?`}],keywords:[]},at:1782930511995}],history:[{role:`user`,content:`Break down where the US federal budget is spent, by category, as a flow`},{role:`assistant`,content:`The federal budget is a massive flow of funds, primarily directed toward mandatory programs like Social Security and Medicare, followed by discretionary spending on defense and other government services.`}]},{id:`roadtrip`,domain:`Travel`,emoji:`šŸ›£ļø`,question:`Map a 7-day Pacific Coast Highway road trip from San Francisco to LA`,frames:[{question:`Map a 7-day Pacific Coast Highway road trip from San Francisco to LA`,narration:`The Pacific Coast Highway is a classic seven-day journey from San Francisco to Los Angeles. You'll wind through redwood forests, dramatic cliffs, and iconic coastal towns at a pace that lets you soak in every view.`,mode:`replace`,tour:[{index:0,say:`We start in San Francisco and wind our way down the coast, covering about 750 kilometers over the week.`,mark:{kind:`rising`,at:`San Francisco`,to:`Los Angeles`,color:`key`}},{index:1,say:`The itinerary balances active days in Big Sur with relaxing stops in Monterey and Santa Barbara.`,mark:{kind:`highlight`,at:`Day 3`}},{index:2,say:`Don't miss the Bixby Creek Bridge for the perfect photo, and Hearst Castle for a bit of history.`,mark:{kind:`circle`,at:`Bixby Creek Bridge`},marks:[{kind:`circle`,at:`Bixby Creek Bridge`},{kind:`circle`,at:`Hearst Castle`}]}],spec:{id:`live`,workspace:`Live`,title:`Pacific Coast Highway: 7-Day Road Trip`,sub:`A scenic route from San Francisco to Los Angeles.`,opener:`The Pacific Coast Highway is a classic seven-day journey from San Francisco to Los Angeles. You'll wind through redwood forests, dramatic cliffs, and iconic coastal towns at a pace that lets you soak in every view.`,context:[],blocks:[{type:`maproute`,col:12,delay:0,props:{waypoints:[{lat:37.7749,lng:-122.4194,label:`San Francisco`,leg:`Start Ā· Head south on Highway 1`},{lat:36.6002,lng:-121.8947,label:`Monterey / Carmel`,leg:`190 km Ā· 2.5 hours`},{lat:36.2704,lng:-121.8081,label:`Big Sur`,leg:`45 km Ā· 1 hour`},{lat:35.2828,lng:-120.6596,label:`San Luis Obispo`,leg:`160 km Ā· 2.5 hours`},{lat:34.4208,lng:-119.6982,label:`Santa Barbara`,leg:`150 km Ā· 2 hours`},{lat:34.0522,lng:-118.2437,label:`Los Angeles`,leg:`150 km Ā· 2 hours`}],title:`The Route: San Francisco to Los Angeles`,icon:`car`,distanceKm:750,caption:`A slow, scenic drive with plenty of stops for photos and coastal hikes.`},id:`live-1`,note:`This route covers about 750 kilometers of stunning coastline, designed to be taken slowly over a full week.`},{type:`timeline`,col:12,delay:70,props:{events:[{time:`Day 1-2`,title:`Monterey & Carmel`,detail:`Explore the Monterey Bay Aquarium and the scenic 17-Mile Drive.`},{time:`Day 3`,title:`Big Sur`,detail:`Cross Bixby Bridge and hike in Pfeiffer Big Sur State Park.`},{time:`Day 4`,title:`San Luis Obispo`,detail:`Visit Hearst Castle and relax in the charming downtown area.`},{time:`Day 5-6`,title:`Santa Barbara`,detail:`Enjoy the Spanish architecture, wine tasting, and beach walks.`},{time:`Day 7`,title:`Los Angeles`,detail:`Arrive in LA, explore Santa Monica or Malibu.`}],eyebrow:`7-Day Itinerary`},id:`live-2`,note:`Spend two days in Monterey and Santa Barbara to truly experience the local culture and coastal vibe.`},{type:`geomap`,col:12,delay:140,props:{title:`Must-See Coastal Stops`,markers:[{lat:36.3718,lng:-121.9018,name:`Bixby Creek Bridge`,detail:`The most iconic photo spot on the PCH.`,color:`var(--insight)`},{lat:35.6852,lng:-121.1678,name:`Hearst Castle`,detail:`Opulent historic estate overlooking the ocean.`,color:`var(--presence)`},{lat:34.414,lng:-119.6982,name:`Stearns Wharf`,detail:`Classic Santa Barbara pier and harbor.`,color:`var(--warning)`}]},id:`live-3`,note:`These three spots are essential highlights that define the character of the California coast.`}],proof:null,topic:`Travel`,extras:{},group:`home`,suggests:[{label:`Best time of year to drive PCH?`,icon:`chat`,route:`Best time of year to drive PCH?`},{label:`Top coastal hikes in Big Sur?`,icon:`chat`,route:`Top coastal hikes in Big Sur?`},{label:`Where to find the best seafood?`,icon:`chat`,route:`Where to find the best seafood?`}],keywords:[]},at:1782930522926}],history:[{role:`user`,content:`Map a 7-day Pacific Coast Highway road trip from San Francisco to LA`},{role:`assistant`,content:`The Pacific Coast Highway is a classic seven-day journey from San Francisco to Los Angeles. You'll wind through redwood forests, dramatic cliffs, and iconic coastal towns at a pace that lets you soak in every view.`}]},{id:`neural`,domain:`Science`,emoji:`🧠`,question:`How does a neural network learn? Walk me through it as a labeled diagram`,frames:[{question:`How does a neural network learn? Walk me through it as a labeled diagram`,narration:`Neural networks learn by adjusting their internal weights to minimize error. It's a cycle of guessing, measuring how wrong the guess was, and then nudging the connections to get closer to the right answer next time.`,mode:`replace`,tour:[{index:1,say:`The process is a continuous loop: forward pass for prediction, then backpropagation to fix the errors.`,mark:{kind:`circle`,at:`Forward Pass`},marks:[{kind:`circle`,at:`Forward Pass`},{kind:`circle`,at:`Backpropagation`}]},{index:2,say:`You can see the model getting smarter as the training loss drops steadily over twenty epochs.`,mark:{kind:`falling`,at:`1`,to:`20`}}],spec:{id:`live`,workspace:`Live`,title:`How a Neural Network Learns`,sub:`From random guesses to accurate predictions through backpropagation.`,opener:`Neural networks learn by adjusting their internal weights to minimize error. It's a cycle of guessing, measuring how wrong the guess was, and then nudging the connections to get closer to the right answer next time.`,context:[],blocks:[{type:`insight`,col:5,delay:0,id:`live-1`,num:`1`,props:{title:`The Learning Loop`,summary:`The network repeatedly passes data forward, calculates error, and adjusts weights backward to improve accuracy.`,conf:`strong`},note:`Learning is an iterative process of refining connections, moving from raw, random guesses toward high-precision output.`},{type:`cyclewheel`,col:7,delay:70,props:{stages:[{label:`Forward Pass`,caption:`Data flows through layers to produce a prediction.`,icon:`arrowUp`},{label:`Loss Calculation`,caption:`Compare the prediction to the actual target.`,icon:`eye`},{label:`Backpropagation`,caption:`Calculate how each weight contributed to the error.`,icon:`arrowDown`},{label:`Weight Update`,caption:`Adjust weights slightly to reduce future error.`,icon:`edit`}],title:`The Training Cycle`,icon:`refresh`,iconColor:`var(--presence)`},id:`live-2`,note:`This loop repeats thousands of times, with the network learning a little bit more with every single pass.`},{type:`trainingcurve`,col:12,delay:140,props:{epochs:[1,5,10,15,20],trainLoss:[2.5,1.8,1.2,.8,.5],title:`Training Progress`,icon:`sparkle`,iconColor:`var(--insight)`,valLoss:[2.6,1.9,1.3,.9,.7],trainAcc:[.3,.5,.7,.85,.92],valAcc:[.28,.48,.68,.82,.88],footer:`Loss drops as the model converges on the optimal weight configuration.`},id:`live-3`,note:`As training continues, the loss curve trends downward, showing the model is successfully minimizing its mistakes.`},{type:`list`,col:12,delay:210,props:{title:`Key Concepts`,items:[`Weights: The strength of connections between neurons.`,`Loss Function: A mathematical way to measure how 'wrong' the model is.`,`Gradient Descent: The optimization algorithm used to find the best weights.`,`Learning Rate: How large of a step the model takes when updating weights.`]},id:`live-4`,note:`These four pillars define how the network navigates the complex landscape of potential solutions.`}],proof:null,topic:`Technology`,extras:{},group:`home`,suggests:[{label:`What is backpropagation?`,icon:`chat`,route:`What is backpropagation?`},{label:`How does gradient descent work?`,icon:`chat`,route:`How does gradient descent work?`},{label:`What happens if the learning rate is too high?`,icon:`chat`,route:`What happens if the learning rate is too high?`}],keywords:[]},at:1782930533152}],history:[{role:`user`,content:`How does a neural network learn? Walk me through it as a labeled diagram`},{role:`assistant`,content:`Neural networks learn by adjusting their internal weights to minimize error. It's a cycle of guessing, measuring how wrong the guess was, and then nudging the connections to get closer to the right answer next time.`}]},{id:`solar`,domain:`Money`,emoji:`ā˜€ļø`,question:`Chart the 25-year payback of a $20,000 home solar install vs. paying the utility, year by year`,frames:[{question:`Chart the 25-year payback of a $20,000 home solar install vs. paying the utility, year by year`,narration:`Investing in solar is a long-term play. While the upfront cost is steep, you'll break even in about eight years, turning a $20,000 expense into significant savings over the next two decades.`,mode:`replace`,tour:[{index:0,say:`The break-even point is just over eight years, which is when your system starts paying you back.`,mark:{kind:`underline`,at:`8.2 years`,color:`key`}},{index:2,say:`You can see the savings curve cross the cost line here, showing how the gap widens over time.`,mark:{kind:`rising`,at:`0`,to:`25`,color:`key`},marks:[{kind:`rising`,at:`0`,to:`25`,color:`key`},{kind:`highlight`,at:`10`}]}],spec:{id:`live`,workspace:`Live`,title:`Solar Investment: 25-Year Payback`,sub:`Comparing a $20,000 upfront solar installation against utility payments.`,opener:`Investing in solar is a long-term play. While the upfront cost is steep, you'll break even in about eight years, turning a $20,000 expense into significant savings over the next two decades.`,context:[],blocks:[{type:`insight`,col:6,delay:0,id:`live-1`,num:`1`,props:{title:`The 8-Year Break-Even Point`,summary:`Your initial $20,000 investment is fully recouped through avoided utility bills by year nine, after which every dollar saved is pure profit.`,stat:`8.2 years`},note:`The break-even point is the critical milestone where your savings finally exceed your initial investment cost.`,section:`The Payback Analysis`,order:1},{type:`worthit`,col:6,delay:70,props:{title:`Is a $20,000 Solar System Worth It?`,verdict:`worth-it`,product:`Residential Solar Array`,price:`$20,000`,priceNote:`before federal tax credits`,worthItIf:[`You plan to stay in the home for 10+ years`,`Your local utility rates are rising annually`,`Your roof has good southern exposure`],skipIf:[`You are moving within the next 3 years`,`Your roof requires expensive repairs first`],dealBreaker:`System performance degrades slightly over 25 years, reducing efficiency by about 0.5% annually.`,forWho:`Homeowners looking to hedge against rising energy costs.`,bottomLine:`Over 25 years, the system typically pays for itself three times over.`},id:`live-2`,note:`Solar is a high-value, long-term asset that pays off best when you stay in your home long enough to realize the cumulative savings.`,section:`The Payback Analysis`,order:1},{type:`chart`,col:12,delay:140,props:{title:`Cumulative Savings vs. Cost`,labels:[`0`,`5`,`10`,`15`,`20`,`25`],series:[{name:`Solar Savings`,color:`var(--insight)`,data:[0,12e3,26e3,42e3,6e4,8e4]},{name:`Utility Costs`,color:`var(--danger)`,data:[2e4,2e4,2e4,2e4,2e4,2e4]}],unit:`$`,footer:`Solar savings accelerate as utility rates rise over time.`},id:`live-3`,note:`This chart shows the crossover point where your cumulative solar savings surpass the initial $20,000 cost.`,section:`The Payback Analysis`,order:1},{type:`comparematrix`,col:12,delay:210,props:{title:`Solar vs. Utility: 25-Year Outlook`,cols:[`Solar System`,`Utility Grid`],rows:[{label:`Upfront Cost`,cells:[{value:`$20,000`},{value:`$0`}]},{label:`Monthly Bill`,cells:[{value:`Minimal`},{value:`Rising`}]},{label:`Asset Value`,cells:[{value:`Increases Home Value`},{value:`None`}]},{label:`Maintenance`,cells:[{value:`Low (Cleaning/Inverter)`},{value:`None`}]}]},id:`live-4`,note:`While the utility grid has no upfront cost, it offers no equity or long-term protection against rising energy prices.`,section:`The Payback Analysis`,order:1}],proof:null,topic:`Economics`,track:{score:85,reason:`Solar payback is a long-term financial metric homeowners track to validate their investment.`},bend:{blockId:`live-1`,label:`Initial System Cost`,param:{value:2e4,min:1e4,max:4e4,step:1e3,unit:`$`},outputs:[{label:`Break-even Year`,formula:`x/2400`},{label:`25-Year Profit`,formula:`(2400*25)-x`}]},extras:{},group:`home`,suggests:[{label:`How do tax credits change the break-even?`,icon:`chat`,route:`How do tax credits change the break-even?`},{label:`What maintenance does solar require?`,icon:`chat`,route:`What maintenance does solar require?`},{label:`Does solar increase home resale value?`,icon:`chat`,route:`Does solar increase home resale value?`},{label:`How do I calculate my local utility inflation?`,icon:`chat`,route:`How do I calculate my local utility inflation?`}],keywords:[]},at:1782930544324}],history:[{role:`user`,content:`Chart the 25-year payback of a $20,000 home solar install vs. paying the utility, year by year`},{role:`assistant`,content:`Investing in solar is a long-term play. While the upfront cost is steep, you'll break even in about eight years, turning a $20,000 expense into significant savings over the next two decades.`}]},{id:`photosynthesis`,domain:`Science`,emoji:`🌿`,question:`Explain photosynthesis as a step-by-step labeled process diagram`,frames:[{question:`Explain photosynthesis as a step-by-step labeled process diagram`,narration:`Photosynthesis is how plants turn sunlight into fuel. It happens in two main stages: first, capturing light energy to split water, and second, using that energy to build sugar from carbon dioxide.`,mode:`replace`,tour:[{index:0,say:`First, look at the cycle: it starts with light absorption and ends with carbon fixation, creating a continuous loop of energy production.`,mark:{kind:`circle`,at:`Light Absorption`,color:`key`},marks:[{kind:`circle`,at:`Light Absorption`,color:`key`},{kind:`circle`,at:`Carbon Fixation`}]},{index:1,say:`The process splits into two stages: the light-dependent reactions that generate energy, and the Calvin cycle that builds the sugar.`,mark:{kind:`underline`,at:`Light-Dependent Reactions`},marks:[{kind:`underline`,at:`Light-Dependent Reactions`},{kind:`underline`,at:`The Calvin Cycle`}]},{index:2,say:`Finally, the chloroplast is the actual site of this work, with thylakoids capturing the light and the stroma processing the carbon.`,mark:{kind:`point`,at:`Thylakoid`},marks:[{kind:`point`,at:`Thylakoid`},{kind:`point`,at:`Stroma`}]}],spec:{id:`live`,workspace:`Live`,title:`Photosynthesis: The Solar-Powered Cycle`,sub:`Converting light, water, and CO2 into chemical energy.`,opener:`Photosynthesis is how plants turn sunlight into fuel. It happens in two main stages: first, capturing light energy to split water, and second, using that energy to build sugar from carbon dioxide.`,context:[],blocks:[{type:`cyclewheel`,col:12,delay:0,props:{stages:[{label:`Light Absorption`,caption:`Chlorophyll captures solar energy in the thylakoid.`,icon:`sun`},{label:`Water Splitting`,caption:`H2O is split, releasing oxygen as a byproduct.`,icon:`cloud`},{label:`ATP Synthesis`,caption:`Energy is stored in ATP and NADPH molecules.`,icon:`zap`},{label:`Carbon Fixation`,caption:`CO2 is converted into glucose in the Calvin cycle.`,icon:`leaf`}],title:`The Photosynthesis Loop`,icon:`sun`,iconColor:`var(--insight)`,caption:`A continuous cycle where light energy powers the conversion of inorganic carbon into organic sugar.`,footer:`The process sustains nearly all life on Earth.`},id:`live-1`,note:`This cycle shows how plants capture light and turn it into the energy needed to build sugar from carbon dioxide.`},{type:`howtosteps`,col:12,delay:70,props:{title:`The Two-Stage Process`,steps:[{action:`Light-Dependent Reactions`,detail:`Occurring in the thylakoid membranes, sunlight splits water molecules (photolysis) to release oxygen and generate ATP and NADPH.`,check:`Oxygen is released`},{action:`The Calvin Cycle`,detail:`Occurring in the stroma, the plant uses the ATP and NADPH from the first stage to fix carbon dioxide into G3P, which eventually forms glucose.`,check:`Glucose is produced`}],icon:`check`,iconColor:`var(--presence)`,footer:`Light reactions provide the fuel; the Calvin cycle builds the structure.`},id:`live-2`,note:`The process splits into two distinct phases: the light-dependent reactions that create energy, and the Calvin cycle that uses that energy to build sugar.`},{type:`anatomyfigure`,col:12,delay:140,props:{organ:`chloroplast`,pins:[{x:20,y:50,label:`Thylakoid`,note:`Stacked discs where light-dependent reactions occur.`},{x:50,y:50,label:`Stroma`,note:`The fluid-filled space where the Calvin cycle takes place.`},{x:80,y:50,label:`Granum`,note:`A stack of thylakoids, maximizing surface area for light capture.`}],title:`Inside the Chloroplast`,icon:`leaf`,iconColor:`var(--insight)`,view:`cross-section`,caption:`The chloroplast is the specialized organelle where photosynthesis happens.`},id:`live-3`,note:`The chloroplast is the factory floor, with thylakoids capturing light and the stroma handling the chemical assembly.`},{type:`checklist`,col:12,delay:210,props:{rows:[{t:`Inputs: Sunlight, Water (H2O), Carbon Dioxide (CO2)`,st:`doing`},{t:`Outputs: Glucose (C6H12O6), Oxygen (O2)`,st:`doing`}],title:`Key Inputs & Outputs`,icon:`layers`,footer:`The chemical equation: 6CO2 + 6H2O + light → C6H12O6 + 6O2`},id:`live-4`,note:`These are the raw materials and the final products of the entire photosynthetic reaction.`}],proof:null,topic:`Biology`,extras:{},group:`home`,suggests:[{label:`What is the Calvin cycle?`,icon:`chat`,route:`What is the Calvin cycle?`},{label:`Why do plants need chlorophyll?`,icon:`chat`,route:`Why do plants need chlorophyll?`},{label:`How does photosynthesis affect climate?`,icon:`chat`,route:`How does photosynthesis affect climate?`}],keywords:[]},at:1782930555694}],history:[{role:`user`,content:`Explain photosynthesis as a step-by-step labeled process diagram`},{role:`assistant`,content:`Photosynthesis is how plants turn sunlight into fuel. It happens in two main stages: first, capturing light energy to split water, and second, using that energy to build sugar from carbon dioxide.`}]},{id:`langs`,domain:`Engineering`,emoji:`āš™ļø`,question:`Compare Python, Rust, and Go for a web backend across speed, safety, and ecosystem`,frames:[{question:`Compare Python, Rust, and Go for a web backend across speed, safety, and ecosystem`,narration:`Python, Rust, and Go each serve different needs for a web backend. Python is the king of speed-to-market, Go excels at simple, high-concurrency services, and Rust offers unmatched performance and safety if you're willing to manage its complexity.`,mode:`replace`,tour:[{index:0,say:`Start with the comparison matrix to see how these languages stack up across key backend criteria.`,mark:{kind:`highlight`,at:`Primary Strength`}},{index:1,say:`Rust is a powerhouse, but as this verdict shows, it's often a case of choosing the right tool for the specific job.`,mark:{kind:`circle`,at:`depends`}},{index:2,say:`Finally, look at the code variants to see the difference in verbosity and structure between the three.`,mark:{kind:`underline`,at:`Python (FastAPI)`}}],spec:{id:`live`,workspace:`Live`,title:`Python vs. Go vs. Rust for Web Backends`,sub:`Comparing performance, safety, and ecosystem maturity.`,opener:`Python, Rust, and Go each serve different needs for a web backend. Python is the king of speed-to-market, Go excels at simple, high-concurrency services, and Rust offers unmatched performance and safety if you're willing to manage its complexity.`,context:[],blocks:[{type:`comparematrix`,col:12,delay:0,props:{title:`Backend Language Comparison`,cols:[`Python`,`Go`,`Rust`],rows:[{label:`Primary Strength`,cells:[{value:`Development speed`},{value:`Concurrency & simplicity`},{value:`Performance & safety`}]},{label:`Memory Management`,cells:[{value:`Garbage Collected`},{value:`Garbage Collected`},{value:`Ownership Model`}]},{label:`Learning Curve`,cells:[{value:`Low`},{value:`Medium`},{value:`High`}]},{label:`Ecosystem Maturity`,cells:[{value:`Extensive (Django/FastAPI)`},{value:`Strong (Cloud-native)`},{value:`Growing (Actix/Axum)`}]}]},id:`live-1`,note:`This matrix highlights the core trade-offs: Python prioritizes developer speed, Go balances performance with simplicity, and Rust focuses on absolute safety and control.`},{type:`worthit`,col:12,delay:70,props:{title:`Is Rust worth the complexity?`,verdict:`depends`,product:`Rust for Web Backends`,price:`High effort`,priceNote:`Steep learning curve compared to Python or Go`,worthItIf:[`You need extreme performance`,`Memory safety is a non-negotiable requirement`,`You are building long-lived, critical infrastructure`],skipIf:[`You need to ship a MVP quickly`,`Your team is unfamiliar with systems programming`,`The project is a simple CRUD application`],dealBreaker:`The borrow checker can significantly slow down initial development velocity.`,forWho:`Engineers building high-scale, resource-constrained, or mission-critical services.`,bottomLine:`Rust is a powerful tool, but don't pay the complexity tax unless your performance or safety requirements demand it.`},id:`live-2`,note:`Rust is incredibly powerful, but it's often overkill for standard web backends where development speed is the primary bottleneck.`},{type:`variants`,col:12,delay:140,props:{title:`Code Style Comparison`,variants:[{label:`Python (FastAPI)`,text:`from fastapi import FastAPI
3
+ app = FastAPI()
4
+ @app.get('/')
5
+ def read_root(): return {'Hello': 'World'}`},{label:`Go (net/http)`,text:`func handler(w http.ResponseWriter, r *http.Request) {
6
+ fmt.Fprintf(w, "Hello, World!")
7
+ }
8
+ http.HandleFunc("/", handler)`},{label:`Rust (Axum)`,text:`async fn handler() -› &'static str {
9
+ "Hello, World!"
10
+ }
11
+ let app = Router::new().route("/", get(handler));`}],prompt:`How a simple 'Hello World' HTTP handler looks.`,footer:`Python is the most concise, while Go and Rust require more boilerplate but offer better type safety.`},id:`live-3`,note:`Python's syntax is the most readable, while Go and Rust provide explicit type systems that catch errors at compile time.`}],proof:null,topic:`Programming`,extras:{},group:`home`,suggests:[{label:`How do I choose between FastAPI and Django?`,icon:`chat`,route:`How do I choose between FastAPI and Django?`},{label:`What are the best Go frameworks for microservices?`,icon:`chat`,route:`What are the best Go frameworks for microservices?`},{label:`Is Rust becoming the standard for high-performance web?`,icon:`chat`,route:`Is Rust becoming the standard for high-performance web?`}],keywords:[]},at:1782930566680}],history:[{role:`user`,content:`Compare Python, Rust, and Go for a web backend across speed, safety, and ecosystem`},{role:`assistant`,content:`Python, Rust, and Go each serve different needs for a web backend. Python is the king of speed-to-market, Go excels at simple, high-concurrency services, and Rust offers unmatched performance and safety if you're willing to manage its complexity.`}]},{id:`url`,domain:`Engineering`,emoji:`🌐`,question:`Walk through exactly what happens when you type a URL and press enter, step by step`,frames:[{question:`Walk through exactly what happens when you type a URL and press enter, step by step`,narration:`When you hit enter, your browser starts a lightning-fast relay race across the internet. It resolves the address, shakes hands with the server, and pulls down the page—all in a fraction of a second.`,mode:`replace`,tour:[{index:1,say:`First, your browser maps the domain name to an IP address, then establishes a secure connection before requesting the page.`,mark:{kind:`circle`,at:`DNS Lookup`},marks:[{kind:`circle`,at:`DNS Lookup`},{kind:`circle`,at:`TLS Negotiation`}]},{index:2,say:`Here is the DNS lookup in action—your computer asking a server for the IP address of the website.`,mark:{kind:`highlight`,at:`ANSWER SECTION`}},{index:3,say:`This timeline shows the handshake process, where the browser and server agree on security protocols before any data is sent.`,mark:{kind:`rising`,at:`TCP Handshake`,to:`TLS Negotiation`}}],spec:{id:`live`,workspace:`Live`,title:`The Web Request Journey`,sub:`From your browser to the server and back.`,opener:`When you hit enter, your browser starts a lightning-fast relay race across the internet. It resolves the address, shakes hands with the server, and pulls down the page—all in a fraction of a second.`,context:[],blocks:[{type:`insight`,col:12,delay:0,id:`live-1`,num:`1`,props:{title:`The Request Lifecycle`,summary:`A URL request is a multi-step handshake between your browser and a remote server, optimized for speed and security.`},note:`Every time you visit a site, this entire sequence happens in milliseconds.`,section:`The Journey`,order:1},{type:`processflow`,col:12,delay:70,props:{title:`Step-by-Step Journey`,steps:[{label:`DNS Lookup`,detail:`Browser finds the IP address for the domain.`,icon:`globe`},{label:`TCP Handshake`,detail:`Establishes a reliable connection.`,icon:`share`},{label:`TLS Negotiation`,detail:`Secures the connection (HTTPS).`,icon:`lock`},{label:`HTTP Request`,detail:`Browser asks for the page content.`,icon:`send`},{label:`Server Response`,detail:`Server sends back the HTML/assets.`,icon:`paperclip`}]},id:`live-2`,note:`The browser first resolves the address, then secures the line, and finally fetches the data.`,section:`The Journey`,order:1},{type:`terminal`,col:12,delay:140,props:{lines:[{kind:`command`,text:`dig example.com`},{kind:`comment`,text:`;; ANSWER SECTION:`},{kind:`stdout`,text:`example.com. 3600 IN A 93.184.216.34`}],title:`DNS Lookup (dig)`,prompt:`user@local $`,exitCode:0},id:`live-3`,note:`The DNS lookup is like looking up a phone number in a directory; it turns a human-readable name into a machine-readable IP address.`,section:`The Details`,order:2},{type:`gantt`,col:12,delay:210,props:{title:`Handshake Timing`,cols:[`0ms`,`50ms`,`100ms`],tasks:[{name:`DNS Lookup`,lane:`Network`,start:0,span:1,pct:100,color:`var(--presence)`},{name:`TCP Handshake`,lane:`Network`,start:1,span:1,pct:100,color:`var(--insight)`},{name:`TLS Negotiation`,lane:`Network`,start:2,span:1.5,pct:100,color:`var(--warning)`}]},id:`live-4`,note:`The handshake takes time; minimizing these round trips is why modern protocols like HTTP/3 are so much faster.`,section:`The Details`,order:2},{type:`kpi`,col:12,delay:280,props:{title:`Typical Latency Breakdown`,kpis:[{val:`20ms`,label:`DNS`},{val:`30ms`,label:`TCP`},{val:`30ms`,label:`TLS`},{val:`50ms`,label:`Request`}]},id:`live-5`,note:`These are typical times for a single request; your actual speed depends on your distance to the server.`,section:`The Details`,order:2},{type:`gloss`,col:12,delay:350,props:{title:`Key Terms`,entries:[{term:`DNS`,definition:`Domain Name System; the internet's phonebook.`},{term:`IP Address`,definition:`A unique string of numbers identifying a device.`},{term:`TLS`,definition:`Transport Layer Security; encrypts data in transit.`}],domain:`Networking`},id:`live-6`,note:`Understanding these terms helps you troubleshoot connection issues.`,section:`The Details`,order:2}],proof:null,topic:`Technology`,extras:{},group:`home`,suggests:[{label:`What is HTTP/3?`,icon:`chat`,route:`What is HTTP/3?`},{label:`How does browser caching work?`,icon:`chat`,route:`How does browser caching work?`},{label:`What is a CDN?`,icon:`chat`,route:`What is a CDN?`}],keywords:[]},at:1782930583156}],history:[{role:`user`,content:`Walk through exactly what happens when you type a URL and press enter, step by step`},{role:`assistant`,content:`When you hit enter, your browser starts a lightning-fast relay race across the internet. It resolves the address, shakes hands with the server, and pulls down the page—all in a fraction of a second.`}]},{id:`sleep`,domain:`Health`,emoji:`😓`,question:`Give me a 2-week plan to fix my sleep schedule, with a daily timeline`,frames:[{question:`Give me a 2-week plan to fix my sleep schedule, with a daily timeline`,narration:`Fixing your sleep schedule takes consistency, not just willpower. We'll shift your bedtime by fifteen minutes each night and anchor your mornings with bright light to reset your internal clock.`,mode:`replace`,tour:[],spec:{id:`live`,workspace:`Live`,title:`Two-Week Sleep Reset Plan`,sub:`A gradual, science-backed shift to align your circadian rhythm.`,opener:`Fixing your sleep schedule takes consistency, not just willpower. We'll shift your bedtime by fifteen minutes each night and anchor your mornings with bright light to reset your internal clock.`,context:[],blocks:[{type:`insight`,col:5,delay:0,id:`live-1`,num:`1`,props:{title:`The 15-Minute Rule`,summary:`Shift your bedtime and wake-up time by exactly 15 minutes each day. This gradual approach minimizes 'social jetlag' and helps your body adjust without the crash.`,conf:`strong`},note:`Consistency is the secret; shifting by 15 minutes daily is gentle enough to avoid the exhaustion of a sudden, drastic change.`,section:`The Strategy`,order:1},{type:`howtosteps`,col:7,delay:70,props:{title:`Daily Reset Protocol`,steps:[{action:`Morning Light Exposure`,detail:`Get 15-30 minutes of direct sunlight within 30 minutes of waking. This is the strongest signal to your brain to stop melatonin production.`,check:`sunlight hit your eyes`},{action:`The 15-Minute Shift`,detail:`Move your bedtime and wake-up time 15 minutes earlier or later each day until you hit your target window.`,check:`bedtime adjusted`},{action:`Caffeine Cutoff`,detail:`Stop all caffeine intake at least 8-10 hours before your target bedtime to ensure your sleep pressure builds naturally.`,check:`no coffee after 2 PM`}],icon:`check`,iconColor:`var(--insight)`,time:`14 days`,difficulty:`moderate`},id:`live-2`,note:`These three habits—morning light, gradual shifts, and caffeine timing—are the pillars of resetting your biological clock.`,section:`The Strategy`,order:1},{type:`timeline`,col:12,delay:140,props:{events:[{time:`Days 1-4`,title:`Initial Adjustment`,detail:`Shift your schedule by 15 minutes daily. Expect some grogginess; stay consistent with morning light.`},{time:`Days 5-10`,title:`The Mid-Point`,detail:`Continue the 15-minute increments. Avoid naps longer than 20 minutes to keep your sleep drive high.`},{time:`Days 11-14`,title:`Stabilization`,detail:`Lock in your target times. Keep the same wake-up time even on weekends to cement the new rhythm.`}],eyebrow:`Your 14-day schedule`},id:`live-3`,note:`This timeline breaks your two-week reset into three phases: initial adjustment, mid-point momentum, and final stabilization.`,section:`The Strategy`,order:1},{type:`kpi`,col:12,delay:210,props:{title:`Sleep Hygiene Checklist`,kpis:[{val:`15-30 min`,label:`Morning Light`},{val:`8-10 hrs`,label:`Caffeine Limit`},{val:`60 min`,label:`Screen Time`}]},id:`live-4`,note:`These metrics are your daily targets; hitting them consistently is more important than any single night of perfect sleep.`,section:`The Strategy`,order:1}],proof:null,topic:`Medicine`,extras:{},group:`home`,suggests:[{label:`What if I can't fall asleep?`,icon:`chat`,route:`What if I can't fall asleep?`},{label:`How do naps affect this?`,icon:`chat`,route:`How do naps affect this?`},{label:`Best light therapy lamps?`,icon:`chat`,route:`Best light therapy lamps?`},{label:`Signs of sleep deprivation`,icon:`chat`,route:`Signs of sleep deprivation`}],keywords:[]},at:1782930593952}],history:[{role:`user`,content:`Give me a 2-week plan to fix my sleep schedule, with a daily timeline`},{role:`assistant`,content:`Fixing your sleep schedule takes consistency, not just willpower. We'll shift your bedtime by fifteen minutes each night and anchor your mornings with bright light to reset your internal clock.`}]},{id:`krebs`,domain:`Science`,emoji:`šŸ”¬`,question:`Explain the Krebs cycle as a diagram of its stages`,frames:[{question:`Explain the Krebs cycle as a diagram of its stages`,narration:`The Krebs cycle is the heart of cellular respiration, turning fuel into energy. It's a continuous loop that processes carbon molecules to power your cells.`,mode:`replace`,tour:[{index:1,say:`The cycle takes in fuel and outputs energy carriers like NADH and ATP.`,mark:{kind:`circle`,at:`Acetyl-CoA`},marks:[{kind:`circle`,at:`Acetyl-CoA`},{kind:`circle`,at:`3 NADH`}]},{index:2,say:`It starts by forming citrate, releases carbon dioxide, and eventually regenerates the starting molecule.`,mark:{kind:`underline`,at:`Citrate Formation`},marks:[{kind:`underline`,at:`Citrate Formation`},{kind:`underline`,at:`Carbon Loss`}]}],spec:{id:`live`,workspace:`Live`,title:`The Krebs Cycle: Energy Production`,sub:`A step-by-step breakdown of the citric acid cycle.`,opener:`The Krebs cycle is the heart of cellular respiration, turning fuel into energy. It's a continuous loop that processes carbon molecules to power your cells.`,context:[],blocks:[{type:`insight`,col:12,delay:0,id:`live-1`,num:`1`,props:{title:`What is the Krebs cycle?`,summary:`A series of chemical reactions used by all aerobic organisms to release stored energy through the oxidation of acetyl-CoA derived from carbohydrates, fats, and proteins.`,stat:`8 steps`},note:`The cycle is a closed loop of eight enzymatic steps that extract high-energy electrons from carbon fuels.`,section:`Overview`,order:1},{type:`sankey`,col:12,delay:70,props:{title:`Energy yield per turn`,nodes:[{id:`input`,label:`Acetyl-CoA`,layer:0,color:`var(--text-muted)`},{id:`cycle`,label:`Krebs Cycle`,layer:1,color:`var(--presence)`},{id:`nadh`,label:`3 NADH`,layer:2,color:`var(--insight)`},{id:`fadh2`,label:`1 FADH2`,layer:2,color:`var(--warning)`},{id:`atp`,label:`1 ATP/GTP`,layer:2,color:`var(--danger)`}],links:[{source:`input`,target:`cycle`,value:1},{source:`cycle`,target:`nadh`,value:3},{source:`cycle`,target:`fadh2`,value:1},{source:`cycle`,target:`atp`,value:1}],footer:`Each turn produces high-energy electron carriers for the electron transport chain.`},id:`live-2`,note:`For every molecule of acetyl-CoA, the cycle generates three NADH, one FADH2, and one ATP.`,section:`The Process`,order:2},{type:`timeline`,col:12,delay:140,props:{events:[{time:`Step 1`,title:`Citrate Formation`,detail:`Acetyl-CoA joins oxaloacetate.`},{time:`Step 3-4`,title:`Carbon Loss`,detail:`Two CO2 molecules are released.`},{time:`Step 5`,title:`ATP Synthesis`,detail:`Substrate-level phosphorylation.`},{time:`Step 6-8`,title:`Regeneration`,detail:`Oxaloacetate is reformed.`}],eyebrow:`Key stages`},id:`live-3`,note:`The cycle begins by combining a two-carbon unit with a four-carbon acceptor, then stripping carbons until the acceptor is restored.`,section:`The Process`,order:2},{type:`researchsummary`,col:12,delay:210,props:{title:`Metabolic significance`,question:`Why is the cycle central to metabolism?`,findings:[`Provides precursors for amino acid synthesis.`,`Links carbohydrate, fat, and protein metabolism.`,`Primary source of electrons for ATP production.`],conclusion:`It is the metabolic hub of the cell, balancing energy production with biosynthetic needs.`},id:`live-4`,note:`Beyond energy, the cycle acts as a crossroads for building the molecules your body needs.`,section:`Significance`,order:3,depth:2,facet:`derivation`}],proof:null,topic:`Biology`,extras:{},group:`home`,suggests:[{label:`How does NADH produce ATP?`,icon:`chat`,route:`How does NADH produce ATP?`},{label:`What happens if oxygen is absent?`,icon:`chat`,route:`What happens if oxygen is absent?`},{label:`How do fats enter the cycle?`,icon:`chat`,route:`How do fats enter the cycle?`}],keywords:[]},at:1782930604391}],history:[{role:`user`,content:`Explain the Krebs cycle as a diagram of its stages`},{role:`assistant`,content:`The Krebs cycle is the heart of cellular respiration, turning fuel into energy. It's a continuous loop that processes carbon molecules to power your cells.`}]},{id:`mortgage`,domain:`Money`,emoji:`šŸ `,question:`Buy vs. rent a $500,000 home over 10 years — chart the cost and give me a verdict`,frames:[{question:`Buy vs. rent a $500,000 home over 10 years — chart the cost and give me a verdict`,narration:`Deciding between buying and renting a $500,000 home depends on how long you stay. Over 10 years, buying often builds equity, but renting offers flexibility and lower upfront costs. Let's look at the numbers.`,mode:`replace`,tour:[],spec:{id:`live`,workspace:`Live`,title:`Buy vs. Rent: $500,000 Home`,sub:`A 10-year financial comparison`,opener:`Deciding between buying and renting a $500,000 home depends on how long you stay. Over 10 years, buying often builds equity, but renting offers flexibility and lower upfront costs. Let's look at the numbers.`,context:[],blocks:[{type:`worthit`,col:12,delay:0,props:{title:`Is buying worth it for you?`,verdict:`depends`,product:`Buying a $500,000 home`,price:`$500,000`,priceNote:`vs ~$2,500/mo rent`,worthItIf:[`You plan to stay 7+ years`,`You want to build home equity`,`You can handle maintenance costs`],skipIf:[`You might move in 3 years`,`You prefer zero maintenance`,`Your down payment is tight`],dealBreaker:`High interest rates significantly increase the total cost of borrowing.`,forWho:`Long-term residents seeking stability.`,bottomLine:`Buying wins on equity, but renting wins on liquidity and flexibility.`},id:`live-1`,note:`Buying is a long-term play; if you're staying less than seven years, the closing costs often make renting the smarter financial choice.`,section:`The Verdict`,order:1},{type:`comparematrix`,col:12,delay:70,props:{title:`Buy vs. Rent: Key Differences`,cols:[`Buying`,`Renting`],rows:[{label:`Monthly Payment`,cells:[{value:`Fixed (Principal + Interest)`},{value:`Variable (Market Rent)`}]},{label:`Maintenance`,cells:[{value:`Owner's responsibility`},{value:`Landlord's responsibility`}]},{label:`Equity`,cells:[{value:`You build ownership`},{value:`None`}]},{label:`Flexibility`,cells:[{value:`Low`},{value:`High`}]}]},id:`live-2`,note:`Buying locks in your housing cost but adds maintenance, while renting keeps you mobile but leaves you without equity.`,section:`The Comparison`,order:2},{type:`chart`,col:12,delay:140,props:{title:`Cumulative Cost Over 10 Years`,labels:[`Year 1`,`Year 3`,`Year 5`,`Year 7`,`Year 10`],series:[{name:`Buying (Net)`,color:`var(--insight)`,data:[25e3,75e3,125e3,175e3,25e4]},{name:`Renting`,color:`var(--presence-soft)`,data:[3e4,9e4,15e4,21e4,3e5]}],unit:`$`,footer:`Buying costs include mortgage interest, taxes, and maintenance.`},id:`live-3`,note:`Over a decade, the gap widens as rent increases and mortgage principal is paid down, favoring the buyer.`,section:`The Math`,order:3}],proof:null,topic:`Finance`,bend:{blockId:`live-3`,label:`Monthly Rent`,param:{value:2500,min:1500,max:5e3,step:100,unit:`$`},outputs:[{label:`Annual Rent`,formula:`x*12`,unit:`$`},{label:`10-Year Total`,formula:`x*120`,unit:`$`}]},extras:{},group:`home`,suggests:[{label:`How do interest rates affect this?`,icon:`chat`,route:`How do interest rates affect this?`},{label:`What are the hidden costs of buying?`,icon:`chat`,route:`What are the hidden costs of buying?`},{label:`How to calculate my break-even point?`,icon:`chat`,route:`How to calculate my break-even point?`}],keywords:[]},at:1782930615398}],history:[{role:`user`,content:`Buy vs. rent a $500,000 home over 10 years — chart the cost and give me a verdict`},{role:`assistant`,content:`Deciding between buying and renting a $500,000 home depends on how long you stay. Over 10 years, buying often builds equity, but renting offers flexibility and lower upfront costs. Let's look at the numbers.`}]},{id:`coffee`,domain:`Everyday`,emoji:`ā˜•`,question:`Compare pour-over, espresso, French press, and AeroPress for a home barista`,frames:[{question:`Compare pour-over, espresso, French press, and AeroPress for a home barista`,narration:`Choosing a home brew method comes down to your taste and your time. Espresso is intense and complex, while pour-over highlights clarity, and French press offers a rich, full-bodied cup.`,mode:`replace`,tour:[],spec:{id:`live`,workspace:`Live`,title:`Home Brewing Methods: A Comparison`,sub:`Finding the right extraction for your morning ritual.`,opener:`Choosing a home brew method comes down to your taste and your time. Espresso is intense and complex, while pour-over highlights clarity, and French press offers a rich, full-bodied cup.`,context:[],blocks:[{type:`comparematrix`,col:12,delay:0,props:{title:`Brewing method comparison`,cols:[`Pour-over`,`Espresso`,`French press`,`AeroPress`],rows:[{label:`Body`,cells:[{value:`Light/Clean`},{value:`Heavy/Syrupy`},{value:`Full/Bold`},{value:`Medium`}]},{label:`Brew time`,cells:[{value:`3-4 min`},{value:`30 sec`},{value:`4 min`},{value:`1-2 min`}]},{label:`Difficulty`,cells:[{value:`High`},{value:`Expert`},{value:`Low`},{value:`Medium`}]},{label:`Best for`,cells:[{value:`Single origin`},{value:`Milk drinks`},{value:`Dark roasts`},{value:`Travel/Versatility`}]}],footer:`Choose based on your preferred texture and the time you have available.`},id:`live-1`,note:`This grid breaks down the four methods by body, time, and skill, helping you match a technique to your daily routine.`},{type:`worthit`,col:12,delay:70,props:{title:`Is an Espresso Machine worth it?`,verdict:`depends`,product:`Home Espresso Setup`,price:`$500 - $2,000+`,priceNote:`vs ~$30 for a French press`,worthItIf:[`You drink lattes or cappuccinos daily`,`You enjoy the technical craft of dialing in shots`],skipIf:[`You prefer black coffee`,`You want a low-maintenance morning`],dealBreaker:`Maintenance and cleaning are significant; if you won't backflush regularly, the machine will fail.`,forWho:`The dedicated hobbyist who values cafe-quality milk drinks at home.`,bottomLine:`It is a lifestyle investment, not just a coffee maker.`},id:`live-2`,note:`Espresso is a major commitment; only invest if you truly love the process and the specific drinks it produces.`},{type:`comparebars`,col:12,delay:140,props:{title:`Extraction efficiency and flavor clarity`,series:[{name:`Clarity`,color:`var(--insight)`},{name:`Body/Texture`,color:`var(--presence)`}],rows:[{label:`Pour-over`,values:[90,30]},{label:`French press`,values:[40,95]},{label:`AeroPress`,values:[70,60]}],footer:`Pour-over prioritizes clarity, while French press maximizes body.`},id:`live-3`,note:`See how different methods trade off between flavor clarity and mouthfeel, helping you decide what you value most in your cup.`}],proof:null,extras:{},group:`home`,suggests:[],keywords:[]},at:1782930644420}],history:[{role:`user`,content:`Compare pour-over, espresso, French press, and AeroPress for a home barista`},{role:`assistant`,content:`Choosing a home brew method comes down to your taste and your time. Espresso is intense and complex, while pour-over highlights clarity, and French press offers a rich, full-bodied cup.`}]}],i={v:1,generatedAt:t,model:n,conversations:r};export{r as conversations,i as default,t as generatedAt,n as model,e as v};
@@ -0,0 +1 @@
1
+ var e=`mavea-course-seed`,t=`mavea-course-topic-seed`;function n(t){try{sessionStorage.setItem(e,JSON.stringify(t))}catch{}}function r(){try{let t=sessionStorage.getItem(e);if(!t)return;sessionStorage.removeItem(e);let n=JSON.parse(t);return typeof n.courseId!=`string`||!n.courseId||typeof n.lessonIdx!=`number`||!Number.isFinite(n.lessonIdx)||n.lessonIdx<0?void 0:{courseId:n.courseId,lessonIdx:Math.round(n.lessonIdx)}}catch{return}}function i(e){try{sessionStorage.setItem(t,e)}catch{}}function a(){try{let e=sessionStorage.getItem(t);return e?(sessionStorage.removeItem(t),e.trim()||void 0):void 0}catch{return}}export{a as i,i as n,r,n as t};
@@ -0,0 +1 @@
1
+ var e=`mavea.ripple.courseMeta.v1`;function t(){try{let t=localStorage.getItem(e),n=t?JSON.parse(t):{};return n&&typeof n==`object`&&!Array.isArray(n)?n:{}}catch{return{}}}function n(t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function r(e){return e?t()[e]:void 0}function i(e,r){if(!e)return;let i=t();i[e]=r,n(i)}function a(e,t){let n=t.map(o).filter(e=>e.length>0),r=new Set;return e.forEach((e,t)=>{e.read.some(e=>{let t=o(e);return t?n.some(e=>s(t,e)):!1})&&r.add(t)}),r}function o(e){return e.trim().replace(/:[^/]*$/,``).replace(/\/+$/,``)}function s(e,t){return e===t||e.startsWith(t+`/`)||t.startsWith(e+`/`)}export{r as n,i as r,a as t};
@@ -0,0 +1 @@
1
+ .cr-app{flex-direction:column;height:100%;display:flex;overflow:hidden}.cr-nav{border-bottom:1px solid var(--line-soft);background:var(--app-bg,var(--surface-default));flex-wrap:wrap;flex:none;align-items:center;gap:10px 18px;padding:12px 24px;display:flex}.cr-nav-back{border:1px solid var(--line-soft);border-radius:var(--r-full);color:var(--text-secondary);font:600 13px/1 var(--font);cursor:pointer;transition:color var(--m-quick), border-color var(--m-quick), background var(--m-quick);background:0 0;align-items:center;gap:4px;padding:7px 13px 7px 9px;display:inline-flex}.cr-nav-back svg{width:15px;height:15px}.cr-nav-back:hover{color:var(--text-primary);border-color:var(--line-mid);background:var(--surface-glass)}.cr-nav-title{font:700 18px/1 var(--font);letter-spacing:-.01em;color:var(--text-primary);align-items:baseline;gap:10px;display:flex}.cr-nav-sub{font:500 12.5px/1 var(--font);color:var(--text-muted)}.cr-btn{border:1px solid var(--line-mid);border-radius:var(--r-full);background:var(--surface-elevated);color:var(--text-primary);font:600 13px/1 var(--font);cursor:pointer;min-height:38px;transition:background var(--m-quick), border-color var(--m-quick), color var(--m-quick), opacity var(--m-quick);justify-content:center;align-items:center;gap:6px;margin-left:auto;padding:9px 15px;display:inline-flex}.cr-btn svg{flex:none;width:15px;height:15px}.cr-btn:hover{background:var(--surface-glass);border-color:var(--line-strong)}.cr-btn:disabled{opacity:.5;cursor:default}.cr-btn:focus-visible,.cr-icon-btn:focus-visible,.cr-ed-close:focus-visible,.cr-topic-picks button:focus-visible,.cr-starter-row button:focus-visible,.cr-delete-cancel:focus-visible{outline:2px solid color-mix(in oklab, var(--presence) 72%, white);outline-offset:2px}.cr-btn-primary{background:var(--presence);border-color:var(--presence);color:#fff}.cr-btn-primary:hover{background:color-mix(in oklab, var(--presence) 88%, #000);border-color:color-mix(in oklab, var(--presence) 88%, #000)}.cr-btn-wide{width:100%;margin-left:0;padding:11px 15px}.cr-icon-btn{border:1px solid var(--line-soft);width:36px;height:36px;color:var(--text-muted);cursor:pointer;transition:color var(--m-quick), border-color var(--m-quick);background:0 0;border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.cr-icon-btn svg{width:14px;height:14px}.cr-icon-btn:hover{color:var(--text-primary);border-color:var(--line-mid)}.cr-icon-danger{color:var(--danger);border-color:color-mix(in oklab, var(--danger) 55%, transparent)}.cr-spinner{border:2px solid oklab(100% 0 5.96046e-8/.35);border-top-color:#fff;border-radius:50%;width:13px;height:13px;animation:.7s linear infinite cr-spin}@keyframes cr-spin{to{transform:rotate(360deg)}}.cr-main{flex:1;min-height:0;padding:clamp(18px,3vw,34px) clamp(16px,3vw,34px) 64px;overflow-y:auto}.cr-grid{max-width:var(--canvas-col-max);grid-template-columns:repeat(auto-fill,minmax(min(310px,100%),1fr));gap:18px;margin-inline:auto;display:grid}.cr-card{isolation:isolate;border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--surface-elevated);box-shadow:0 1px 0 color-mix(in oklab, var(--text-primary) 3%, transparent);transition:border-color var(--m-quick), transform var(--m-quick), box-shadow var(--m-quick);flex-direction:column;gap:5px;padding:20px;display:flex;position:relative;overflow:hidden}.cr-card:before{content:"";background:color-mix(in oklab, var(--text-muted) 34%, transparent);height:2px;position:absolute;inset:0 0 auto}.cr-card-in-progress:before{background:var(--presence)}.cr-card-complete:before{background:var(--insight)}@media (hover:hover) and (pointer:fine){.cr-card:hover{border-color:var(--line-mid);transform:translateY(-2px);box-shadow:0 12px 34px oklab(0% none none/.13)}}.cr-card-top{align-items:center;gap:8px;margin-bottom:4px;display:flex}.cr-badge{font:700 10px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);border:1px solid var(--line-soft);border-radius:var(--r-full);padding:4px 8px}.cr-status{font:700 10px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;border-radius:var(--r-full);color:var(--text-muted);background:var(--surface-glass);margin-left:auto;padding:4px 8px}.cr-status-in-progress{color:var(--presence);background:color-mix(in oklab, var(--presence) 14%, transparent)}.cr-status-complete{color:var(--insight);background:color-mix(in oklab, var(--insight) 16%, transparent)}.cr-card-title{font:720 18px/1.28 var(--font);letter-spacing:-.01em;color:var(--text-primary);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.cr-card-sub{font:450 13px/1.45 var(--font);color:var(--text-secondary);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:9px;display:-webkit-box;overflow:hidden}.cr-progress{border-radius:var(--r-full);background:var(--track);height:6px;overflow:hidden}.cr-progress-fill{border-radius:var(--r-full);background:var(--presence);height:100%;transition:width var(--m-normal) var(--ease-out)}.cr-card-meta{font:550 12px/1 var(--font);color:var(--text-muted);align-items:center;gap:7px;margin:8px 0 10px;display:flex}.cr-current-lesson{border:1px solid var(--line-soft);border-radius:var(--r-md);background:color-mix(in oklab, var(--surface-glass) 78%, transparent);gap:4px;margin-bottom:15px;padding:11px 12px;display:grid}.cr-current-lesson span{font:700 9.5px/1 var(--font);letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint)}.cr-current-lesson strong{min-width:0;font:650 13px/1.35 var(--font);color:var(--text-primary);overflow-wrap:anywhere}.cr-card-meta-dot{background:var(--text-faint);border-radius:50%;width:3px;height:3px}.cr-deck-link{font:600 12px/1 var(--font);color:var(--text-muted);align-self:flex-start;align-items:center;gap:6px;margin-bottom:10px;text-decoration:none;display:inline-flex}.cr-deck-link svg{width:13px;height:13px}.cr-deck-link:hover{color:var(--presence)}.cr-card-actions{align-items:center;gap:8px;margin-top:auto;display:flex}.cr-card-actions .cr-btn{flex:1;margin-left:0}.cr-delete-confirm{min-height:36px;color:var(--danger);font:650 11.5px/1 var(--font);align-items:center;gap:7px;display:inline-flex}.cr-delete-cancel{min-height:32px;color:var(--text-secondary);font:600 11.5px/1 var(--font);cursor:pointer;background:0 0;border:0;padding:0 3px}.cr-empty{border:1px solid var(--line-soft);background:radial-gradient(circle at 14% 12%, color-mix(in oklab, var(--presence) 13%, transparent), transparent 38%), radial-gradient(circle at 92% 88%, color-mix(in oklab, var(--insight) 9%, transparent), transparent 34%), var(--surface-elevated);border-radius:clamp(22px,3vw,34px);grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);align-items:center;gap:clamp(28px,5vw,72px);max-width:980px;min-height:min(620px,100vh - 170px);margin:0 auto;padding:clamp(34px,6vw,72px);display:grid;position:relative;overflow:hidden}.cr-empty-copy{z-index:1;text-align:left;flex-direction:column;align-items:flex-start;display:flex;position:relative}.cr-empty-icon{background:color-mix(in oklab, var(--presence) 14%, var(--surface-glass));border:1px solid color-mix(in oklab, var(--presence) 26%, var(--line-soft));width:52px;height:52px;color:var(--presence);border-radius:50%;justify-content:center;align-items:center;margin-bottom:22px;display:flex}.cr-empty-icon svg{width:23px;height:23px}.cr-empty-eyebrow{font:750 10px/1 var(--font);letter-spacing:.12em;text-transform:uppercase;color:var(--presence);margin-bottom:9px}.cr-empty-head{max-width:620px;font:760 clamp(30px, 4.5vw, 50px) / 1.02 var(--font);letter-spacing:-.045em;color:var(--text-primary);margin:0}.cr-empty-sub{max-width:590px;font:450 15px/1.6 var(--font);color:var(--text-secondary);margin:18px 0 23px}.cr-empty-cta{min-height:44px;margin-left:0;padding-inline:19px}.cr-starter-row{flex-wrap:wrap;align-items:center;gap:7px;margin-top:18px;display:flex}.cr-starter-row>span{font:600 11.5px/1 var(--font);color:var(--text-faint);margin-right:2px}.cr-starter-row button,.cr-topic-picks button{border:1px solid var(--line-soft);border-radius:var(--r-full);background:color-mix(in oklab, var(--surface-glass) 78%, transparent);color:var(--text-secondary);font:600 11.5px/1.2 var(--font);cursor:pointer;transition:color var(--m-quick), border-color var(--m-quick), background var(--m-quick);padding:7px 10px}.cr-starter-row button:hover,.cr-topic-picks button:hover{color:var(--text-primary);border-color:color-mix(in oklab, var(--presence) 42%, var(--line-mid));background:color-mix(in oklab, var(--presence) 8%, var(--surface-glass))}.cr-course-path{z-index:1;gap:8px;display:grid;position:relative}.cr-course-path>div{border:1px solid var(--line-soft);border-radius:var(--r-lg);background:color-mix(in oklab, var(--surface-elevated-2,var(--surface-glass)) 84%, transparent);grid-template-columns:32px 1fr;column-gap:12px;padding:15px 16px;display:grid}.cr-course-path span{font:750 10px/1.3 var(--font);letter-spacing:.08em;color:var(--presence);grid-row:1/3}.cr-course-path strong{font:680 13px/1.2 var(--font);color:var(--text-primary)}.cr-course-path p{font:450 12px/1.45 var(--font);color:var(--text-muted);margin:5px 0 0}.cr-scrim{z-index:92;background:rgba(var(--scrim-rgb), .82);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.cr-sheet{background:var(--surface-elevated);border:1px solid var(--line-soft);border-radius:var(--r-lg);width:min(490px,100%);box-shadow:var(--shadow-modal);flex-direction:column;display:flex;overflow:hidden}.cr-sheet-head{border-bottom:1px solid var(--line-soft);align-items:center;gap:12px;padding:20px 22px 17px;display:flex}.cr-sheet-mark{width:38px;height:38px;color:var(--presence);background:color-mix(in oklab, var(--presence) 13%, var(--surface-glass));border:1px solid color-mix(in oklab, var(--presence) 24%, var(--line-soft));border-radius:12px;flex:none;place-items:center;display:grid}.cr-sheet-mark svg{width:18px;height:18px}.cr-sheet-heading{gap:5px;min-width:0;display:grid}.cr-sheet-title{font:720 17px/1 var(--font);color:var(--text-primary)}.cr-sheet-subtitle{max-width:340px;font:450 12.5px/1.4 var(--font);color:var(--text-muted)}.cr-ed-close{border:1px solid var(--line-soft);width:36px;height:36px;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:50%;flex:none;margin-left:auto;font-size:13px}.cr-ed-close:hover{color:var(--text-primary);border-color:var(--line-mid)}.cr-sheet-body{flex-direction:column;gap:15px;padding:20px 22px 22px;display:flex}.cr-legal-note{border:1px solid color-mix(in oklab, var(--warning) 22%, var(--line-soft));border-radius:var(--r-md);background:color-mix(in oklab, var(--surface-elevated) 94%, var(--warning) 6%);color:var(--text-muted);font:500 11.5px/1.5 var(--font);margin:0;padding:9px 11px}.cr-legal-note strong{color:var(--text-primary)}.cr-legal-note a{color:var(--text-secondary);font-weight:700}.cr-field{flex-direction:column;gap:6px;display:flex}.cr-field-label{font:700 9.5px/1 var(--font);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint)}.cr-input{border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--surface-elevated-2,var(--surface-glass));width:100%;color:var(--text-primary);font:450 14px/1.3 var(--font);min-height:44px;padding:10px 12px}.cr-input::placeholder{color:var(--text-faint)}.cr-input:focus-visible{border-color:var(--presence);outline:none}.cr-field-hint{font:450 11.5px/1.4 var(--font);color:var(--text-faint)}.cr-topic-picks{flex-wrap:wrap;gap:7px;margin-top:-7px;display:flex}.cr-topic-picks button:disabled{cursor:default;opacity:.45}.cr-error{border:1px solid color-mix(in oklab, var(--danger) 28%, var(--line-soft));border-radius:var(--r-md);background:color-mix(in oklab, var(--danger) 8%, transparent);font:500 12.5px/1.5 var(--font);color:var(--danger);padding:10px 12px}@media (width<=760px){.cr-nav{gap:9px;padding-inline:14px}.cr-nav-title{order:3;width:100%}.cr-nav>.cr-btn{margin-left:auto}.cr-empty{grid-template-columns:1fr;min-height:auto;padding:34px 24px}.cr-empty-head{font-size:clamp(30px,11vw,42px)}.cr-course-path{margin-top:4px}.cr-scrim{align-items:end;padding:12px}.cr-sheet{border-radius:20px;max-height:calc(100dvh - 24px);overflow-y:auto}}@media (width<=420px){.cr-main{padding-inline:10px}.cr-card{padding:17px}.cr-empty{border-radius:22px;padding-inline:19px}.cr-starter-row{align-items:stretch}.cr-starter-row>span{width:100%}.cr-delete-confirm>span{display:none}}@media (pointer:coarse){.cr-btn,.cr-icon-btn,.cr-ed-close,.cr-delete-cancel,.cr-starter-row button,.cr-topic-picks button{min-height:44px}.cr-icon-btn,.cr-ed-close{width:44px;height:44px}}@media (prefers-reduced-motion:reduce){.cr-card,.cr-progress-fill,.cr-btn,.cr-icon-btn,.cr-starter-row button,.cr-topic-picks button{transition:none}.cr-card:hover{transform:none}.cr-spinner{animation-duration:1.4s}}