@540deg/ds 0.0.0-stage → 0.1.0

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 (350) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +13 -0
  3. package/README.md +207 -2
  4. package/dist/assets/samples/captura.js +4 -0
  5. package/dist/assets/samples/charla-david.js +4 -0
  6. package/dist/assets/samples/charla-escultura.js +4 -0
  7. package/dist/assets/samples/charla-fachada.js +4 -0
  8. package/dist/assets/samples/charla-pintura.js +4 -0
  9. package/dist/assets/samples/charla-placa.js +4 -0
  10. package/dist/assets/samples/charla-teclado.js +4 -0
  11. package/dist/assets/samples/logo-540-claro.js +4 -0
  12. package/dist/assets/samples/logo-540-portada-claro.js +4 -0
  13. package/dist/assets/samples/logo-540-portada-oscuro.js +4 -0
  14. package/dist/assets/samples/logos/cliente-1.js +4 -0
  15. package/dist/assets/samples/logos/cliente-2.js +4 -0
  16. package/dist/assets/samples/logos/cliente-3.js +4 -0
  17. package/dist/assets/samples/logos/cliente-4.js +4 -0
  18. package/dist/assets/samples/logos/cliente-5.js +4 -0
  19. package/dist/assets/samples/logos/cliente-6.js +4 -0
  20. package/dist/assets/samples/logos/cliente-7.js +4 -0
  21. package/dist/assets/samples/logos/cliente-8.js +4 -0
  22. package/dist/assets/samples/logos/cliente-9.js +4 -0
  23. package/dist/assets/samples/retrato.js +4 -0
  24. package/dist/components/atoms/Bullets/Bullets.d.ts +6 -0
  25. package/dist/components/atoms/Bullets/Bullets.js +34 -0
  26. package/dist/components/atoms/Bullets/Bullets.module.js +13 -0
  27. package/dist/components/atoms/Bullets/index.d.ts +3 -0
  28. package/dist/components/atoms/Bullets/types.d.ts +23 -0
  29. package/dist/components/atoms/Bullets/types.js +9 -0
  30. package/dist/components/atoms/Button/Button.d.ts +6 -0
  31. package/dist/components/atoms/Button/Button.js +46 -0
  32. package/dist/components/atoms/Button/Button.module.js +24 -0
  33. package/dist/components/atoms/Button/index.d.ts +3 -0
  34. package/dist/components/atoms/Button/types.d.ts +38 -0
  35. package/dist/components/atoms/Button/types.js +14 -0
  36. package/dist/components/atoms/Count/Count.d.ts +6 -0
  37. package/dist/components/atoms/Count/Count.js +51 -0
  38. package/dist/components/atoms/Count/Count.module.js +9 -0
  39. package/dist/components/atoms/Count/index.d.ts +3 -0
  40. package/dist/components/atoms/Count/types.d.ts +17 -0
  41. package/dist/components/atoms/Count/types.js +8 -0
  42. package/dist/components/atoms/Image/Image.d.ts +6 -0
  43. package/dist/components/atoms/Image/Image.js +30 -0
  44. package/dist/components/atoms/Image/Image.module.js +11 -0
  45. package/dist/components/atoms/Image/index.d.ts +3 -0
  46. package/dist/components/atoms/Image/types.d.ts +16 -0
  47. package/dist/components/atoms/Image/types.js +13 -0
  48. package/dist/components/atoms/Logo/Logo.d.ts +6 -0
  49. package/dist/components/atoms/Logo/Logo.js +32 -0
  50. package/dist/components/atoms/Logo/Logo.module.js +10 -0
  51. package/dist/components/atoms/Logo/index.d.ts +3 -0
  52. package/dist/components/atoms/Logo/paths.d.ts +2 -0
  53. package/dist/components/atoms/Logo/paths.js +11 -0
  54. package/dist/components/atoms/Logo/types.d.ts +14 -0
  55. package/dist/components/atoms/Logo/types.js +12 -0
  56. package/dist/components/atoms/MenuItem/MenuItem.d.ts +6 -0
  57. package/dist/components/atoms/MenuItem/MenuItem.js +28 -0
  58. package/dist/components/atoms/MenuItem/MenuItem.module.js +19 -0
  59. package/dist/components/atoms/MenuItem/index.d.ts +3 -0
  60. package/dist/components/atoms/MenuItem/types.d.ts +18 -0
  61. package/dist/components/atoms/MenuItem/types.js +8 -0
  62. package/dist/components/atoms/SocialIcon/SocialIcon.d.ts +6 -0
  63. package/dist/components/atoms/SocialIcon/SocialIcon.js +26 -0
  64. package/dist/components/atoms/SocialIcon/SocialIcon.module.js +9 -0
  65. package/dist/components/atoms/SocialIcon/index.d.ts +3 -0
  66. package/dist/components/atoms/SocialIcon/paths.d.ts +7 -0
  67. package/dist/components/atoms/SocialIcon/paths.js +10 -0
  68. package/dist/components/atoms/SocialIcon/types.d.ts +15 -0
  69. package/dist/components/atoms/SocialIcon/types.js +11 -0
  70. package/dist/components/atoms/Text/Text.d.ts +6 -0
  71. package/dist/components/atoms/Text/Text.js +28 -0
  72. package/dist/components/atoms/Text/Text.module.js +32 -0
  73. package/dist/components/atoms/Text/index.d.ts +3 -0
  74. package/dist/components/atoms/Text/types.d.ts +39 -0
  75. package/dist/components/atoms/Text/types.js +54 -0
  76. package/dist/components/atoms/ThemeToggle/ThemeToggle.d.ts +6 -0
  77. package/dist/components/atoms/ThemeToggle/ThemeToggle.js +30 -0
  78. package/dist/components/atoms/ThemeToggle/ThemeToggle.module.js +17 -0
  79. package/dist/components/atoms/ThemeToggle/index.d.ts +3 -0
  80. package/dist/components/atoms/ThemeToggle/types.d.ts +13 -0
  81. package/dist/components/atoms/ThemeToggle/types.js +4 -0
  82. package/dist/components/molecules/Card/Card.d.ts +6 -0
  83. package/dist/components/molecules/Card/Card.js +82 -0
  84. package/dist/components/molecules/Card/Card.module.js +33 -0
  85. package/dist/components/molecules/Card/index.d.ts +3 -0
  86. package/dist/components/molecules/Card/types.d.ts +48 -0
  87. package/dist/components/molecules/Card/types.js +17 -0
  88. package/dist/components/molecules/Carousel/Carousel.d.ts +5 -0
  89. package/dist/components/molecules/Carousel/Carousel.js +148 -0
  90. package/dist/components/molecules/Carousel/Carousel.module.js +29 -0
  91. package/dist/components/molecules/Carousel/index.d.ts +3 -0
  92. package/dist/components/molecules/Carousel/types.d.ts +24 -0
  93. package/dist/components/molecules/Carousel/types.js +12 -0
  94. package/dist/components/molecules/CaseItem/CaseItem.d.ts +6 -0
  95. package/dist/components/molecules/CaseItem/CaseItem.js +54 -0
  96. package/dist/components/molecules/CaseItem/CaseItem.module.js +19 -0
  97. package/dist/components/molecules/CaseItem/index.d.ts +3 -0
  98. package/dist/components/molecules/CaseItem/types.d.ts +20 -0
  99. package/dist/components/molecules/CaseItem/types.js +7 -0
  100. package/dist/components/molecules/Dialog/Dialog.d.ts +6 -0
  101. package/dist/components/molecules/Dialog/Dialog.js +81 -0
  102. package/dist/components/molecules/Dialog/Dialog.module.js +19 -0
  103. package/dist/components/molecules/Dialog/index.d.ts +2 -0
  104. package/dist/components/molecules/Dialog/types.d.ts +22 -0
  105. package/dist/components/molecules/Field/Field.d.ts +6 -0
  106. package/dist/components/molecules/Field/Field.js +47 -0
  107. package/dist/components/molecules/Field/Field.module.js +15 -0
  108. package/dist/components/molecules/Field/index.d.ts +3 -0
  109. package/dist/components/molecules/Field/types.d.ts +24 -0
  110. package/dist/components/molecules/Field/types.js +5 -0
  111. package/dist/components/molecules/Footer/Footer.d.ts +6 -0
  112. package/dist/components/molecules/Footer/Footer.js +102 -0
  113. package/dist/components/molecules/Footer/Footer.module.js +33 -0
  114. package/dist/components/molecules/Footer/index.d.ts +3 -0
  115. package/dist/components/molecules/Footer/types.d.ts +46 -0
  116. package/dist/components/molecules/Footer/types.js +8 -0
  117. package/dist/components/molecules/Grid/Grid.d.ts +5 -0
  118. package/dist/components/molecules/Grid/Grid.js +32 -0
  119. package/dist/components/molecules/Grid/Grid.module.js +29 -0
  120. package/dist/components/molecules/Grid/index.d.ts +3 -0
  121. package/dist/components/molecules/Grid/types.d.ts +28 -0
  122. package/dist/components/molecules/Grid/types.js +14 -0
  123. package/dist/components/molecules/Lists/Lists.d.ts +7 -0
  124. package/dist/components/molecules/Lists/Lists.js +54 -0
  125. package/dist/components/molecules/Lists/Lists.module.js +15 -0
  126. package/dist/components/molecules/Lists/index.d.ts +2 -0
  127. package/dist/components/molecules/Lists/types.d.ts +22 -0
  128. package/dist/components/molecules/Menu/Menu.d.ts +6 -0
  129. package/dist/components/molecules/Menu/Menu.js +43 -0
  130. package/dist/components/molecules/Menu/Menu.module.js +13 -0
  131. package/dist/components/molecules/Menu/index.d.ts +3 -0
  132. package/dist/components/molecules/Menu/types.d.ts +27 -0
  133. package/dist/components/molecules/Menu/types.js +8 -0
  134. package/dist/components/molecules/Metric/Metric.d.ts +5 -0
  135. package/dist/components/molecules/Metric/Metric.js +40 -0
  136. package/dist/components/molecules/Metric/Metric.module.js +11 -0
  137. package/dist/components/molecules/Metric/index.d.ts +2 -0
  138. package/dist/components/molecules/Metric/types.d.ts +15 -0
  139. package/dist/components/molecules/NavMobile/NavMobile.d.ts +6 -0
  140. package/dist/components/molecules/NavMobile/NavMobile.js +95 -0
  141. package/dist/components/molecules/NavMobile/NavMobile.module.js +17 -0
  142. package/dist/components/molecules/NavMobile/index.d.ts +3 -0
  143. package/dist/components/molecules/NavMobile/types.d.ts +20 -0
  144. package/dist/components/molecules/NavMobile/types.js +8 -0
  145. package/dist/components/molecules/Question/Question.d.ts +3 -0
  146. package/dist/components/molecules/Question/Question.js +22 -0
  147. package/dist/components/molecules/Question/Question.module.js +5 -0
  148. package/dist/components/molecules/Question/index.d.ts +2 -0
  149. package/dist/components/molecules/Question/types.d.ts +8 -0
  150. package/dist/components/molecules/Screenshot/Screenshot.d.ts +3 -0
  151. package/dist/components/molecules/Screenshot/Screenshot.js +17 -0
  152. package/dist/components/molecules/Screenshot/Screenshot.module.js +5 -0
  153. package/dist/components/molecules/Screenshot/index.d.ts +2 -0
  154. package/dist/components/molecules/Screenshot/types.d.ts +12 -0
  155. package/dist/components/molecules/Section/Section.d.ts +6 -0
  156. package/dist/components/molecules/Section/Section.js +25 -0
  157. package/dist/components/molecules/Section/Section.module.js +11 -0
  158. package/dist/components/molecules/Section/index.d.ts +3 -0
  159. package/dist/components/molecules/Section/types.d.ts +13 -0
  160. package/dist/components/molecules/Section/types.js +5 -0
  161. package/dist/components/molecules/SectionHeader/SectionHeader.d.ts +6 -0
  162. package/dist/components/molecules/SectionHeader/SectionHeader.js +34 -0
  163. package/dist/components/molecules/SectionHeader/SectionHeader.module.js +9 -0
  164. package/dist/components/molecules/SectionHeader/index.d.ts +3 -0
  165. package/dist/components/molecules/SectionHeader/types.d.ts +22 -0
  166. package/dist/components/molecules/SectionHeader/types.js +14 -0
  167. package/dist/components/molecules/Stack/Stack.d.ts +6 -0
  168. package/dist/components/molecules/Stack/Stack.js +22 -0
  169. package/dist/components/molecules/Stack/Stack.module.js +12 -0
  170. package/dist/components/molecules/Stack/index.d.ts +3 -0
  171. package/dist/components/molecules/Stack/types.d.ts +18 -0
  172. package/dist/components/molecules/Stack/types.js +17 -0
  173. package/dist/components/molecules/TeamMember/TeamMember.d.ts +6 -0
  174. package/dist/components/molecules/TeamMember/TeamMember.js +55 -0
  175. package/dist/components/molecules/TeamMember/TeamMember.module.js +13 -0
  176. package/dist/components/molecules/TeamMember/index.d.ts +3 -0
  177. package/dist/components/molecules/TeamMember/types.d.ts +24 -0
  178. package/dist/components/molecules/TeamMember/types.js +8 -0
  179. package/dist/components/organisms/Bars/Bars.d.ts +6 -0
  180. package/dist/components/organisms/Bars/Bars.js +94 -0
  181. package/dist/components/organisms/Bars/Bars.module.js +26 -0
  182. package/dist/components/organisms/Bars/index.d.ts +3 -0
  183. package/dist/components/organisms/Bars/types.d.ts +43 -0
  184. package/dist/components/organisms/Bars/types.js +12 -0
  185. package/dist/components/organisms/Blobs/Blobs.d.ts +3 -0
  186. package/dist/components/organisms/Blobs/Blobs.js +14 -0
  187. package/dist/components/organisms/Blobs/Blobs.module.js +15 -0
  188. package/dist/components/organisms/Blobs/index.d.ts +2 -0
  189. package/dist/components/organisms/Blobs/types.d.ts +3 -0
  190. package/dist/components/organisms/BlockTitle/BlockTitle.d.ts +6 -0
  191. package/dist/components/organisms/BlockTitle/BlockTitle.js +46 -0
  192. package/dist/components/organisms/BlockTitle/BlockTitle.module.js +15 -0
  193. package/dist/components/organisms/BlockTitle/index.d.ts +2 -0
  194. package/dist/components/organisms/BlockTitle/types.d.ts +18 -0
  195. package/dist/components/organisms/CardList/CardList.d.ts +6 -0
  196. package/dist/components/organisms/CardList/CardList.js +15 -0
  197. package/dist/components/organisms/CardList/CardList.module.js +5 -0
  198. package/dist/components/organisms/CardList/index.d.ts +2 -0
  199. package/dist/components/organisms/CardList/types.d.ts +6 -0
  200. package/dist/components/organisms/Closing/Closing.d.ts +6 -0
  201. package/dist/components/organisms/Closing/Closing.js +42 -0
  202. package/dist/components/organisms/Closing/Closing.module.js +9 -0
  203. package/dist/components/organisms/Closing/index.d.ts +3 -0
  204. package/dist/components/organisms/Closing/types.d.ts +15 -0
  205. package/dist/components/organisms/Closing/types.js +4 -0
  206. package/dist/components/organisms/Cover/Cover.d.ts +6 -0
  207. package/dist/components/organisms/Cover/Cover.js +85 -0
  208. package/dist/components/organisms/Cover/Cover.module.js +21 -0
  209. package/dist/components/organisms/Cover/index.d.ts +3 -0
  210. package/dist/components/organisms/Cover/types.d.ts +33 -0
  211. package/dist/components/organisms/Cover/types.js +4 -0
  212. package/dist/components/organisms/Cycle/Cycle.d.ts +6 -0
  213. package/dist/components/organisms/Cycle/Cycle.js +79 -0
  214. package/dist/components/organisms/Cycle/Cycle.module.js +17 -0
  215. package/dist/components/organisms/Cycle/index.d.ts +3 -0
  216. package/dist/components/organisms/Cycle/types.d.ts +18 -0
  217. package/dist/components/organisms/Cycle/types.js +9 -0
  218. package/dist/components/organisms/Deck/Deck.d.ts +6 -0
  219. package/dist/components/organisms/Deck/Deck.js +159 -0
  220. package/dist/components/organisms/Deck/Deck.module.js +19 -0
  221. package/dist/components/organisms/Deck/index.d.ts +4 -0
  222. package/dist/components/organisms/Deck/types.d.ts +37 -0
  223. package/dist/components/organisms/Deck/types.js +13 -0
  224. package/dist/components/organisms/Deck/useDeckNavigation.d.ts +15 -0
  225. package/dist/components/organisms/Deck/useDeckNavigation.js +218 -0
  226. package/dist/components/organisms/DeckFooter/DeckFooter.d.ts +6 -0
  227. package/dist/components/organisms/DeckFooter/DeckFooter.js +75 -0
  228. package/dist/components/organisms/DeckFooter/DeckFooter.module.js +25 -0
  229. package/dist/components/organisms/DeckFooter/index.d.ts +3 -0
  230. package/dist/components/organisms/DeckFooter/types.d.ts +22 -0
  231. package/dist/components/organisms/DeckFooter/types.js +8 -0
  232. package/dist/components/organisms/Flow/Flow.d.ts +6 -0
  233. package/dist/components/organisms/Flow/Flow.js +26 -0
  234. package/dist/components/organisms/Flow/Flow.module.js +13 -0
  235. package/dist/components/organisms/Flow/index.d.ts +3 -0
  236. package/dist/components/organisms/Flow/types.d.ts +17 -0
  237. package/dist/components/organisms/Flow/types.js +4 -0
  238. package/dist/components/organisms/Form/Form.d.ts +6 -0
  239. package/dist/components/organisms/Form/Form.js +28 -0
  240. package/dist/components/organisms/Form/Form.module.js +13 -0
  241. package/dist/components/organisms/Form/index.d.ts +3 -0
  242. package/dist/components/organisms/Form/types.d.ts +16 -0
  243. package/dist/components/organisms/Form/types.js +8 -0
  244. package/dist/components/organisms/Heartbeat/Heartbeat.d.ts +3 -0
  245. package/dist/components/organisms/Heartbeat/Heartbeat.js +17 -0
  246. package/dist/components/organisms/Heartbeat/Heartbeat.module.js +13 -0
  247. package/dist/components/organisms/Heartbeat/index.d.ts +2 -0
  248. package/dist/components/organisms/Heartbeat/types.d.ts +3 -0
  249. package/dist/components/organisms/LogoCarousel/LogoCarousel.d.ts +6 -0
  250. package/dist/components/organisms/LogoCarousel/LogoCarousel.js +72 -0
  251. package/dist/components/organisms/LogoCarousel/LogoCarousel.module.js +13 -0
  252. package/dist/components/organisms/LogoCarousel/index.d.ts +3 -0
  253. package/dist/components/organisms/LogoCarousel/types.d.ts +18 -0
  254. package/dist/components/organisms/LogoCarousel/types.js +4 -0
  255. package/dist/components/organisms/Marquee/Marquee.d.ts +7 -0
  256. package/dist/components/organisms/Marquee/Marquee.js +57 -0
  257. package/dist/components/organisms/Marquee/Marquee.module.js +15 -0
  258. package/dist/components/organisms/Marquee/index.d.ts +3 -0
  259. package/dist/components/organisms/Marquee/types.d.ts +11 -0
  260. package/dist/components/organisms/Marquee/types.js +4 -0
  261. package/dist/components/organisms/ProgressBar/ProgressBar.d.ts +6 -0
  262. package/dist/components/organisms/ProgressBar/ProgressBar.js +56 -0
  263. package/dist/components/organisms/ProgressBar/ProgressBar.module.js +17 -0
  264. package/dist/components/organisms/ProgressBar/index.d.ts +3 -0
  265. package/dist/components/organisms/ProgressBar/types.d.ts +20 -0
  266. package/dist/components/organisms/ProgressBar/types.js +7 -0
  267. package/dist/components/organisms/Punchline/Punchline.d.ts +6 -0
  268. package/dist/components/organisms/Punchline/Punchline.js +41 -0
  269. package/dist/components/organisms/Punchline/Punchline.module.js +11 -0
  270. package/dist/components/organisms/Punchline/index.d.ts +3 -0
  271. package/dist/components/organisms/Punchline/types.d.ts +15 -0
  272. package/dist/components/organisms/Punchline/types.js +4 -0
  273. package/dist/components/organisms/Quote/Quote.d.ts +3 -0
  274. package/dist/components/organisms/Quote/Quote.js +33 -0
  275. package/dist/components/organisms/Quote/Quote.module.js +5 -0
  276. package/dist/components/organisms/Quote/index.d.ts +3 -0
  277. package/dist/components/organisms/Quote/types.d.ts +15 -0
  278. package/dist/components/organisms/Quote/types.js +4 -0
  279. package/dist/components/organisms/Schema/Schema.d.ts +54 -0
  280. package/dist/components/organisms/Schema/Schema.js +117 -0
  281. package/dist/components/organisms/Schema/Schema.module.js +87 -0
  282. package/dist/components/organisms/Schema/index.d.ts +2 -0
  283. package/dist/components/organisms/Schema/types.d.ts +32 -0
  284. package/dist/components/organisms/Share/Share.d.ts +6 -0
  285. package/dist/components/organisms/Share/Share.js +68 -0
  286. package/dist/components/organisms/Share/Share.module.js +22 -0
  287. package/dist/components/organisms/Share/index.d.ts +3 -0
  288. package/dist/components/organisms/Share/types.d.ts +24 -0
  289. package/dist/components/organisms/Share/types.js +4 -0
  290. package/dist/components/organisms/Sheet/Sheet.d.ts +2 -0
  291. package/dist/components/organisms/Sheet/Sheet.js +92 -0
  292. package/dist/components/organisms/Sheet/Sheet.module.js +15 -0
  293. package/dist/components/organisms/Sheet/index.d.ts +3 -0
  294. package/dist/components/organisms/Sheet/types.d.ts +15 -0
  295. package/dist/components/organisms/Sheet/types.js +4 -0
  296. package/dist/components/organisms/Slide/Slide.d.ts +6 -0
  297. package/dist/components/organisms/Slide/Slide.js +29 -0
  298. package/dist/components/organisms/Slide/Slide.module.js +13 -0
  299. package/dist/components/organisms/Slide/index.d.ts +3 -0
  300. package/dist/components/organisms/Slide/types.d.ts +18 -0
  301. package/dist/components/organisms/Slide/types.js +8 -0
  302. package/dist/components/organisms/Spotlight/Spotlight.d.ts +7 -0
  303. package/dist/components/organisms/Spotlight/Spotlight.js +39 -0
  304. package/dist/components/organisms/Spotlight/Spotlight.module.js +5 -0
  305. package/dist/components/organisms/Spotlight/index.d.ts +2 -0
  306. package/dist/components/organisms/Spotlight/types.d.ts +6 -0
  307. package/dist/components/organisms/Statements/Statements.d.ts +7 -0
  308. package/dist/components/organisms/Statements/Statements.js +50 -0
  309. package/dist/components/organisms/Statements/Statements.module.js +11 -0
  310. package/dist/components/organisms/Statements/index.d.ts +3 -0
  311. package/dist/components/organisms/Statements/types.d.ts +14 -0
  312. package/dist/components/organisms/Statements/types.js +7 -0
  313. package/dist/components/organisms/Steps/Steps.d.ts +15 -0
  314. package/dist/components/organisms/Steps/Steps.js +117 -0
  315. package/dist/components/organisms/Steps/Steps.module.js +13 -0
  316. package/dist/components/organisms/Steps/StepsContext.d.ts +11 -0
  317. package/dist/components/organisms/Steps/StepsContext.js +18 -0
  318. package/dist/components/organisms/Steps/index.d.ts +3 -0
  319. package/dist/components/organisms/Steps/types.d.ts +22 -0
  320. package/dist/components/organisms/Story/Story.d.ts +6 -0
  321. package/dist/components/organisms/Story/Story.js +43 -0
  322. package/dist/components/organisms/Story/Story.module.js +5 -0
  323. package/dist/components/organisms/Story/index.d.ts +3 -0
  324. package/dist/components/organisms/Story/types.d.ts +20 -0
  325. package/dist/components/organisms/Story/types.js +7 -0
  326. package/dist/components/organisms/Timeline/Timeline.d.ts +7 -0
  327. package/dist/components/organisms/Timeline/Timeline.js +67 -0
  328. package/dist/components/organisms/Timeline/Timeline.module.js +19 -0
  329. package/dist/components/organisms/Timeline/index.d.ts +3 -0
  330. package/dist/components/organisms/Timeline/types.d.ts +25 -0
  331. package/dist/components/organisms/Timeline/types.js +4 -0
  332. package/dist/components/organisms/Tools/Tools.d.ts +6 -0
  333. package/dist/components/organisms/Tools/Tools.js +47 -0
  334. package/dist/components/organisms/Tools/Tools.module.js +17 -0
  335. package/dist/components/organisms/Tools/index.d.ts +3 -0
  336. package/dist/components/organisms/Tools/types.d.ts +23 -0
  337. package/dist/components/organisms/Tools/types.js +4 -0
  338. package/dist/fonts/OFL.txt +93 -0
  339. package/dist/fonts/dm-sans-latin-opsz-normal.woff2 +0 -0
  340. package/dist/hooks/useCenterState.d.ts +9 -0
  341. package/dist/hooks/useCenterState.js +40 -0
  342. package/dist/hooks/useReveal.d.ts +7 -0
  343. package/dist/hooks/useReveal.js +34 -0
  344. package/dist/index.d.ts +54 -0
  345. package/dist/index.js +98 -0
  346. package/dist/styles.css +3441 -0
  347. package/dist/templates/TalkTemplate/TalkTemplate.d.ts +7 -0
  348. package/dist/templates/TalkTemplate/TalkTemplate.js +1392 -0
  349. package/dist/templates/TalkTemplate/index.d.ts +2 -0
  350. package/package.json +86 -4
@@ -0,0 +1,3441 @@
1
+ @font-face {
2
+ font-family: 'DM Sans';
3
+ font-style: normal;
4
+ font-display: swap;
5
+ font-weight: 100 1000;
6
+ src: url('./fonts/dm-sans-latin-opsz-normal.woff2') format('woff2-variations');
7
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
8
+ }
9
+
10
+ :root {
11
+ --540-accent-yellow: #fef401;
12
+ --540-accent-yellow-subtle: #fef4011a;
13
+ --540-accent-gold: #876e00;
14
+ --540-neutral-white: #fff;
15
+ --540-neutral-50: #f5f5f3;
16
+ --540-neutral-100: #e8e8e6;
17
+ --540-neutral-200: #dcdcd9;
18
+ --540-neutral-300: #aaa;
19
+ --540-neutral-450: #70706e;
20
+ --540-neutral-600: #555553;
21
+ --540-neutral-800: #3a3a38;
22
+ --540-neutral-875: #1c1c1c;
23
+ --540-neutral-900: #2a2a28;
24
+ --540-neutral-925: #0e0e0e;
25
+ --540-neutral-950: #1a1a18;
26
+ --540-neutral-black: #000;
27
+ --540-neutral-50-veil: #f5f5f3b3;
28
+ --540-neutral-950-veil: #1a1a18b3;
29
+ --540-neutral-black-veil: #000000b3;
30
+ --540-status-red: #c83f43;
31
+ --540-status-red-soft: #d9686c;
32
+ --540-status-red-subtle: #c83f431a;
33
+ --540-status-green: #257f54;
34
+ --540-status-green-soft: #3aa06e;
35
+ --540-status-green-subtle: #257f541a;
36
+ --540-gradient-gray: radial-gradient(circle at 50% 50%, #ffffff14 0%, #ffffff08 45%, transparent 70%);
37
+ --540-gradient-gray-paper: radial-gradient(circle at 50% 50%, #0000000d 0%, #00000005 45%, transparent 70%);
38
+ --540-gradient-image-veil: linear-gradient(180deg, #0000 0%, #00000026 45%, #000000c7 100%);
39
+ --540-filter-logo-paper: grayscale(1) opacity(.55);
40
+ --540-filter-logo-black: brightness(0) invert(1) opacity(.72);
41
+ --540-filter-logo-paper-center: grayscale(1) opacity(1);
42
+ --540-filter-logo-black-center: brightness(0) invert(1) opacity(1);
43
+ --540-filter-nav-blur: blur(16px);
44
+ --540-font-family-sans: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
45
+ --540-font-family-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
46
+ --540-font-size-12: 12px;
47
+ --540-font-size-14: 14px;
48
+ --540-font-size-16: 16px;
49
+ --540-font-size-18: 18px;
50
+ --540-font-size-20: 20px;
51
+ --540-font-size-22: 22px;
52
+ --540-font-size-26: 26px;
53
+ --540-font-size-28: 28px;
54
+ --540-font-size-32: 32px;
55
+ --540-font-size-36: 36px;
56
+ --540-font-size-42: 42px;
57
+ --540-font-size-48: 48px;
58
+ --540-font-size-64: 64px;
59
+ --540-font-size-statement: clamp(20px, 5.1vw, 76px);
60
+ --540-font-weight-light: 350;
61
+ --540-font-weight-regular: 400;
62
+ --540-font-weight-bold: 700;
63
+ --540-font-weight-extrabold: 800;
64
+ --540-line-height-tight: .9;
65
+ --540-line-height-solid: 1;
66
+ --540-line-height-normal: normal;
67
+ --540-line-height-reading: 1.35;
68
+ --540-line-height-reading-l: 1.3;
69
+ --540-letter-spacing-tight: -.03em;
70
+ --540-letter-spacing-normal: 0;
71
+ --540-size-0: 0px;
72
+ --540-size-4: 4px;
73
+ --540-size-8: 8px;
74
+ --540-size-10: 10px;
75
+ --540-size-12: 12px;
76
+ --540-size-16: 16px;
77
+ --540-size-18: 18px;
78
+ --540-size-20: 20px;
79
+ --540-size-24: 24px;
80
+ --540-size-28: 28px;
81
+ --540-size-32: 32px;
82
+ --540-size-36: 36px;
83
+ --540-size-45: 45px;
84
+ --540-size-48: 48px;
85
+ --540-size-64: 64px;
86
+ --540-size-94: 94px;
87
+ --540-size-120: 120px;
88
+ --540-size-1200: 1200px;
89
+ --540-size-pill: 9999px;
90
+ }
91
+
92
+ :root, [data-theme="light"] {
93
+ color-scheme: light;
94
+ --color-bg-default: var(--540-neutral-50);
95
+ --color-bg-inverse: var(--540-neutral-950);
96
+ --color-bg-surface: var(--540-neutral-50);
97
+ --color-bg-subtle: var(--540-neutral-100);
98
+ --color-bg-accent: var(--540-accent-yellow);
99
+ --color-bg-accent-subtle: var(--540-accent-yellow-subtle);
100
+ --color-bg-inverse-active: var(--540-neutral-800);
101
+ --color-bg-neutral-hover: var(--540-neutral-100);
102
+ --color-bg-row-active: var(--540-neutral-100);
103
+ --color-bg-neutral-active: var(--540-neutral-200);
104
+ --color-bg-disabled: var(--540-neutral-100);
105
+ --color-bg-error: var(--540-status-red-subtle);
106
+ --color-bg-overlay: var(--540-neutral-950-veil);
107
+ --color-bg-success: var(--540-status-green-subtle);
108
+ --color-bg-nav: var(--540-neutral-50-veil);
109
+ --color-text-primary: var(--540-neutral-950);
110
+ --color-text-secondary: var(--540-neutral-600);
111
+ --color-text-tertiary: var(--540-neutral-450);
112
+ --color-text-disabled: var(--540-neutral-300);
113
+ --color-text-inverse: var(--540-neutral-white);
114
+ --color-text-inverse-secondary: var(--540-neutral-200);
115
+ --color-text-accent: var(--540-accent-yellow);
116
+ --color-text-accent-inverse: var(--540-accent-gold);
117
+ --color-text-on-media: var(--540-neutral-white);
118
+ --color-text-error: var(--540-status-red);
119
+ --color-text-success: var(--540-status-green);
120
+ --color-border-default: var(--540-neutral-100);
121
+ --color-border-strong: var(--540-neutral-900);
122
+ --color-border-default-inverse: var(--540-neutral-900);
123
+ --color-border-strong-inverse: var(--540-neutral-white);
124
+ --color-border-focus: var(--540-neutral-950);
125
+ --gradient-halo: var(--540-gradient-gray-paper);
126
+ --gradient-image-veil: var(--540-gradient-image-veil);
127
+ --filter-logo-client: var(--540-filter-logo-paper);
128
+ --filter-logo-client-center: var(--540-filter-logo-paper-center);
129
+ --filter-nav: var(--540-filter-nav-blur);
130
+ }
131
+
132
+ [data-theme="dark"] {
133
+ color-scheme: dark;
134
+ --color-bg-default: var(--540-neutral-black);
135
+ --color-bg-inverse: var(--540-neutral-50);
136
+ --color-bg-surface: var(--540-neutral-925);
137
+ --color-bg-subtle: var(--540-neutral-925);
138
+ --color-bg-accent: var(--540-accent-yellow);
139
+ --color-bg-accent-subtle: var(--540-accent-yellow-subtle);
140
+ --color-bg-inverse-active: var(--540-neutral-200);
141
+ --color-bg-neutral-hover: var(--540-neutral-925);
142
+ --color-bg-row-active: var(--540-neutral-875);
143
+ --color-bg-neutral-active: var(--540-neutral-875);
144
+ --color-bg-disabled: var(--540-neutral-875);
145
+ --color-bg-error: var(--540-status-red-subtle);
146
+ --color-bg-overlay: var(--540-neutral-950-veil);
147
+ --color-bg-success: var(--540-status-green-subtle);
148
+ --color-bg-nav: var(--540-neutral-black-veil);
149
+ --color-text-primary: var(--540-neutral-white);
150
+ --color-text-secondary: var(--540-neutral-200);
151
+ --color-text-tertiary: var(--540-neutral-300);
152
+ --color-text-disabled: var(--540-neutral-600);
153
+ --color-text-inverse: var(--540-neutral-950);
154
+ --color-text-inverse-secondary: var(--540-neutral-600);
155
+ --color-text-accent: var(--540-accent-yellow);
156
+ --color-text-accent-inverse: var(--540-accent-gold);
157
+ --color-text-on-media: var(--540-neutral-white);
158
+ --color-text-error: var(--540-status-red-soft);
159
+ --color-text-success: var(--540-status-green-soft);
160
+ --color-border-default: var(--540-neutral-875);
161
+ --color-border-strong: var(--540-neutral-white);
162
+ --color-border-default-inverse: var(--540-neutral-100);
163
+ --color-border-strong-inverse: var(--540-neutral-950);
164
+ --color-border-focus: var(--540-neutral-white);
165
+ --gradient-halo: var(--540-gradient-gray);
166
+ --gradient-image-veil: var(--540-gradient-image-veil);
167
+ --filter-logo-client: var(--540-filter-logo-black);
168
+ --filter-logo-client-center: var(--540-filter-logo-black-center);
169
+ --filter-nav: var(--540-filter-nav-blur);
170
+ }
171
+
172
+ :root {
173
+ --font-family-base: var(--540-font-family-sans);
174
+ --font-family-mono: var(--540-font-family-mono);
175
+ --text-statement-size: var(--540-font-size-statement);
176
+ --text-statement-weight: var(--540-font-weight-extrabold);
177
+ --text-statement-line-height: var(--540-line-height-tight);
178
+ --text-statement-letter-spacing: var(--540-letter-spacing-tight);
179
+ --text-title-l-size: var(--540-font-size-28);
180
+ --text-title-l-weight: var(--540-font-weight-regular);
181
+ --text-title-l-line-height: var(--540-line-height-normal);
182
+ --text-title-l-letter-spacing: var(--540-letter-spacing-normal);
183
+ --text-title-m-size: var(--540-font-size-26);
184
+ --text-title-m-weight: var(--540-font-weight-regular);
185
+ --text-title-m-line-height: var(--540-line-height-normal);
186
+ --text-title-m-letter-spacing: var(--540-letter-spacing-normal);
187
+ --text-title-s-size: var(--540-font-size-22);
188
+ --text-title-s-weight: var(--540-font-weight-regular);
189
+ --text-title-s-line-height: var(--540-line-height-normal);
190
+ --text-title-s-letter-spacing: var(--540-letter-spacing-normal);
191
+ --text-title-xs-size: var(--540-font-size-20);
192
+ --text-title-xs-weight: var(--540-font-weight-regular);
193
+ --text-title-xs-line-height: var(--540-line-height-normal);
194
+ --text-title-xs-letter-spacing: var(--540-letter-spacing-normal);
195
+ --text-body-l-size: var(--540-font-size-18);
196
+ --text-body-l-weight: var(--540-font-weight-regular);
197
+ --text-body-l-line-height: var(--540-line-height-normal);
198
+ --text-body-l-letter-spacing: var(--540-letter-spacing-normal);
199
+ --text-body-m-size: var(--540-font-size-16);
200
+ --text-body-m-weight: var(--540-font-weight-regular);
201
+ --text-body-m-line-height: var(--540-line-height-normal);
202
+ --text-body-m-letter-spacing: var(--540-letter-spacing-normal);
203
+ --text-body-s-size: var(--540-font-size-14);
204
+ --text-body-s-weight: var(--540-font-weight-regular);
205
+ --text-body-s-line-height: var(--540-line-height-normal);
206
+ --text-body-s-letter-spacing: var(--540-letter-spacing-normal);
207
+ --text-body-s-light-size: var(--540-font-size-14);
208
+ --text-body-s-light-weight: var(--540-font-weight-light);
209
+ --text-body-s-light-line-height: var(--540-line-height-normal);
210
+ --text-body-s-light-letter-spacing: var(--540-letter-spacing-normal);
211
+ --text-body-s-bold-size: var(--540-font-size-14);
212
+ --text-body-s-bold-weight: var(--540-font-weight-bold);
213
+ --text-body-s-bold-line-height: var(--540-line-height-normal);
214
+ --text-body-s-bold-letter-spacing: var(--540-letter-spacing-normal);
215
+ --text-micro-size: var(--540-font-size-12);
216
+ --text-micro-weight: var(--540-font-weight-regular);
217
+ --text-micro-line-height: var(--540-line-height-normal);
218
+ --text-micro-letter-spacing: var(--540-letter-spacing-normal);
219
+ --text-micro-light-size: var(--540-font-size-12);
220
+ --text-micro-light-weight: var(--540-font-weight-light);
221
+ --text-micro-light-line-height: var(--540-line-height-normal);
222
+ --text-micro-light-letter-spacing: var(--540-letter-spacing-normal);
223
+ --text-micro-bold-size: var(--540-font-size-12);
224
+ --text-micro-bold-weight: var(--540-font-weight-bold);
225
+ --text-micro-bold-line-height: var(--540-line-height-normal);
226
+ --text-micro-bold-letter-spacing: var(--540-letter-spacing-normal);
227
+ }
228
+
229
+ @media (width >= 1024px) {
230
+ :root {
231
+ --text-title-l-size: var(--540-font-size-36);
232
+ --text-title-m-size: var(--540-font-size-32);
233
+ --text-title-s-size: var(--540-font-size-26);
234
+ --text-title-xs-size: var(--540-font-size-22);
235
+ }
236
+ }
237
+
238
+ [data-scale="projection"] {
239
+ --text-title-l-size: var(--540-font-size-42);
240
+ --text-title-m-size: var(--540-font-size-36);
241
+ --text-title-s-size: var(--540-font-size-28);
242
+ --text-body-l-size: var(--540-font-size-22);
243
+ --text-body-m-size: var(--540-font-size-20);
244
+ --text-body-s-size: var(--540-font-size-18);
245
+ --text-body-s-light-size: var(--540-font-size-18);
246
+ --text-body-l-line-height: var(--540-line-height-reading-l);
247
+ --text-body-m-line-height: var(--540-line-height-reading);
248
+ --text-body-s-line-height: var(--540-line-height-reading);
249
+ --text-body-s-light-line-height: var(--540-line-height-reading);
250
+ }
251
+
252
+ :root {
253
+ --space-xs: var(--540-size-4);
254
+ --space-s: var(--540-size-8);
255
+ --space-m: var(--540-size-12);
256
+ --space-l: var(--540-size-16);
257
+ --space-xl: var(--540-size-24);
258
+ --space-2xl: var(--540-size-32);
259
+ --space-3xl: var(--540-size-48);
260
+ --padding-page: var(--540-size-16);
261
+ --padding-section: var(--540-size-36);
262
+ --padding-section-block: var(--540-size-48);
263
+ --padding-card: var(--540-size-24);
264
+ --size-control-xs: var(--540-size-24);
265
+ --size-control-sm: var(--540-size-36);
266
+ --size-control-md: var(--540-size-45);
267
+ --size-icon-sm: var(--540-size-16);
268
+ --size-icon-md: var(--540-size-18);
269
+ --size-logo-xs: var(--540-size-24);
270
+ --size-logo-sm: var(--540-size-32);
271
+ --size-logo-md: var(--540-size-48);
272
+ --size-logo-client: var(--540-size-94);
273
+ --size-container: var(--540-size-1200);
274
+ --grid-columns: 12;
275
+ --grid-gutter: var(--540-size-16);
276
+ --grid-gutter-wide: var(--540-size-48);
277
+ --radius-default: var(--540-size-10);
278
+ --radius-pill: var(--540-size-pill);
279
+ --focus-ring-width: 2px;
280
+ --focus-ring-offset: 2px;
281
+ --focus-ring-color: var(--color-border-focus);
282
+ }
283
+
284
+ @media (width >= 1024px) {
285
+ :root {
286
+ --padding-page: var(--540-size-28);
287
+ --padding-section-block: var(--540-size-120);
288
+ --grid-gutter: var(--540-size-24);
289
+ --grid-gutter-wide: var(--540-size-120);
290
+ }
291
+ }
292
+
293
+ *, :before, :after {
294
+ box-sizing: border-box;
295
+ }
296
+
297
+ html {
298
+ font-family: var(--font-family-base);
299
+ font-optical-sizing: auto;
300
+ background-color: var(--color-bg-default);
301
+ color: var(--color-text-primary);
302
+ -webkit-font-smoothing: antialiased;
303
+ -moz-osx-font-smoothing: grayscale;
304
+ }
305
+
306
+ body {
307
+ font-size: var(--text-body-m-size);
308
+ font-weight: var(--text-body-m-weight);
309
+ line-height: var(--text-body-m-line-height);
310
+ margin: 0;
311
+ }
312
+
313
+ :focus-visible {
314
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
315
+ outline-offset: var(--focus-ring-offset);
316
+ }
317
+
318
+ /* Bullets — the dots that say which page a strip is on. The active one gets longer
319
+ instead of changing color: length reads in grayscale; color alone does not. */
320
+
321
+ ._bullets_49fy9_4 {
322
+ display: flex;
323
+ gap: var(--space-m);
324
+ align-items: center;
325
+ }
326
+
327
+ ._bullet_49fy9_4 {
328
+ inline-size: var(--space-m);
329
+ block-size: var(--space-m);
330
+ padding: 0;
331
+ border: 0;
332
+ border-radius: var(--radius-pill);
333
+ background: var(--color-border-default);
334
+ cursor: pointer;
335
+ transition:
336
+ inline-size 0.32s ease,
337
+ background-color 0.24s ease;
338
+ }
339
+
340
+ ._bullet_49fy9_4:hover {
341
+ background: var(--color-text-secondary);
342
+ }
343
+
344
+ ._bullet_49fy9_4:focus-visible {
345
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
346
+ outline-offset: var(--focus-ring-offset);
347
+ }
348
+
349
+ ._active_49fy9_32 {
350
+ inline-size: var(--space-3xl);
351
+ background: var(--color-text-primary);
352
+ }
353
+
354
+ ._active_49fy9_32:hover {
355
+ background: var(--color-text-primary);
356
+ }
357
+
358
+ /* Vertical: at the edge of the window, right-aligned, small gap, bars instead of dots.
359
+ Stacked, what is compared is the length, and a circle has no length. */
360
+ ._vertical_49fy9_43 {
361
+ flex-direction: column;
362
+ align-items: flex-end;
363
+ gap: var(--space-s);
364
+ }
365
+
366
+ ._vertical_49fy9_43 ._bullet_49fy9_4 {
367
+ inline-size: var(--space-l);
368
+ block-size: var(--space-xs);
369
+ background: var(--color-text-tertiary);
370
+ }
371
+
372
+ ._vertical_49fy9_43 ._bullet_49fy9_4:hover {
373
+ background: var(--color-text-primary);
374
+ }
375
+
376
+ ._vertical_49fy9_43 ._active_49fy9_32 {
377
+ inline-size: var(--space-2xl);
378
+ background: var(--color-text-primary);
379
+ }
380
+
381
+ /* A bigger hit area than the 4 px bar, without changing what is drawn */
382
+ ._vertical_49fy9_43 ._bullet_49fy9_4 {
383
+ position: relative;
384
+ }
385
+
386
+ ._vertical_49fy9_43 ._bullet_49fy9_4::after {
387
+ content: '';
388
+ position: absolute;
389
+ inset: -10px -8px;
390
+ }
391
+
392
+ @media (prefers-reduced-motion: reduce) {
393
+ ._bullet_49fy9_4 {
394
+ transition: none;
395
+ }
396
+ }
397
+ /* Button — the action that triggers something. Semantic tokens only.
398
+ Hover inverts the fill; active fills one step more: three surfaces, never two. */
399
+
400
+ ._button_fhfjw_4 {
401
+ display: inline-flex;
402
+ align-items: center;
403
+ justify-content: center;
404
+ box-sizing: border-box;
405
+ gap: var(--space-s);
406
+ border: 1px solid transparent;
407
+ border-radius: var(--radius-pill);
408
+ font-family: var(--font-family-base);
409
+ font-optical-sizing: none;
410
+ -webkit-font-smoothing: antialiased;
411
+ -moz-osx-font-smoothing: grayscale;
412
+ font-size: var(--text-body-s-size);
413
+ font-weight: var(--text-body-s-weight);
414
+ line-height: var(--text-body-s-line-height);
415
+ letter-spacing: var(--text-body-s-letter-spacing);
416
+ white-space: nowrap;
417
+ text-decoration: none;
418
+ cursor: pointer;
419
+ transition:
420
+ background-color 0.12s ease,
421
+ border-color 0.12s ease,
422
+ color 0.12s ease;
423
+ }
424
+
425
+ ._button_fhfjw_4:focus-visible {
426
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
427
+ outline-offset: var(--focus-ring-offset);
428
+ }
429
+
430
+ ._button_fhfjw_4:disabled {
431
+ cursor: not-allowed;
432
+ }
433
+
434
+ @media (prefers-reduced-motion: reduce) {
435
+ ._button_fhfjw_4 {
436
+ transition: none;
437
+ }
438
+ }
439
+
440
+ /* ---- Sizes ---- */
441
+ ._size-md_fhfjw_45 {
442
+ min-height: var(--size-control-md);
443
+ padding-inline: var(--space-xl);
444
+ }
445
+
446
+ ._size-sm_fhfjw_50 {
447
+ min-height: var(--size-control-sm);
448
+ padding-inline: var(--space-l);
449
+ }
450
+
451
+ /* ---- Icon ---- */
452
+ ._icon_fhfjw_56 {
453
+ display: inline-flex;
454
+ flex: none;
455
+ }
456
+
457
+ ._icon_fhfjw_56 > svg {
458
+ display: block;
459
+ width: var(--size-icon-md);
460
+ height: var(--size-icon-md);
461
+ }
462
+
463
+ ._size-sm_fhfjw_50 ._icon_fhfjw_56 > svg {
464
+ width: var(--size-icon-sm);
465
+ height: var(--size-icon-sm);
466
+ }
467
+
468
+ /* ---- Icon only: a square as tall as the control; the label stays for screen readers ---- */
469
+ ._iconOnly_fhfjw_73 {
470
+ padding-inline: 0;
471
+ }
472
+
473
+ ._iconOnly_fhfjw_73._size-md_fhfjw_45 {
474
+ width: var(--size-control-md);
475
+ }
476
+
477
+ ._iconOnly_fhfjw_73._size-sm_fhfjw_50 {
478
+ width: var(--size-control-sm);
479
+ }
480
+
481
+ ._srOnly_fhfjw_85 {
482
+ position: absolute;
483
+ width: 1px;
484
+ height: 1px;
485
+ margin: -1px;
486
+ padding: 0;
487
+ overflow: hidden;
488
+ clip-path: inset(50%);
489
+ white-space: nowrap;
490
+ border: 0;
491
+ }
492
+
493
+ /* ---- Variants ---- */
494
+ ._variant-primary_fhfjw_98 {
495
+ background: var(--color-bg-inverse);
496
+ color: var(--color-text-inverse);
497
+ }
498
+
499
+ ._variant-primary_fhfjw_98:hover:not(:disabled),
500
+ ._variant-primary_fhfjw_98._forceHover_fhfjw_104 {
501
+ background: transparent;
502
+ border-color: var(--color-border-strong);
503
+ color: var(--color-text-primary);
504
+ }
505
+
506
+ ._variant-primary_fhfjw_98:active:not(:disabled),
507
+ ._variant-primary_fhfjw_98._forceActive_fhfjw_111 {
508
+ background: var(--color-bg-inverse-active);
509
+ border-color: transparent;
510
+ color: var(--color-text-inverse);
511
+ }
512
+
513
+ ._variant-primary_fhfjw_98:disabled {
514
+ background: var(--color-bg-disabled);
515
+ color: var(--color-text-disabled);
516
+ }
517
+
518
+ ._variant-outline_fhfjw_122 {
519
+ background: transparent;
520
+ border-color: var(--color-border-strong);
521
+ color: var(--color-text-primary);
522
+ }
523
+
524
+ ._variant-outline_fhfjw_122:hover:not(:disabled),
525
+ ._variant-outline_fhfjw_122._forceHover_fhfjw_104 {
526
+ background: var(--color-bg-inverse);
527
+ border-color: transparent;
528
+ color: var(--color-text-inverse);
529
+ }
530
+
531
+ ._variant-outline_fhfjw_122:active:not(:disabled),
532
+ ._variant-outline_fhfjw_122._forceActive_fhfjw_111 {
533
+ background: var(--color-bg-inverse-active);
534
+ border-color: transparent;
535
+ color: var(--color-text-inverse);
536
+ }
537
+
538
+ ._variant-outline_fhfjw_122:disabled {
539
+ border-color: var(--color-border-default);
540
+ color: var(--color-text-disabled);
541
+ }
542
+
543
+ ._variant-ghost_fhfjw_147 {
544
+ background: transparent;
545
+ color: var(--color-text-primary);
546
+ }
547
+
548
+ ._variant-ghost_fhfjw_147:hover:not(:disabled),
549
+ ._variant-ghost_fhfjw_147._forceHover_fhfjw_104 {
550
+ background: var(--color-bg-neutral-hover);
551
+ }
552
+
553
+ ._variant-ghost_fhfjw_147:active:not(:disabled),
554
+ ._variant-ghost_fhfjw_147._forceActive_fhfjw_111 {
555
+ background: var(--color-bg-neutral-active);
556
+ }
557
+
558
+ ._variant-ghost_fhfjw_147:disabled {
559
+ color: var(--color-text-disabled);
560
+ }
561
+
562
+ /* Forced focus ring for documentation only (the browser draws the real one) */
563
+ ._forceFocus_fhfjw_167 {
564
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
565
+ outline-offset: var(--focus-ring-offset);
566
+ }
567
+ /* Count — a figure that counts up from zero. It inherits the text style it sits in;
568
+ tabular numerals keep the width still while the digits change. */
569
+
570
+ ._count_z2ehz_4 {
571
+ font-variant-numeric: tabular-nums;
572
+ white-space: nowrap;
573
+ }
574
+
575
+ ._voice_z2ehz_9 {
576
+ position: absolute;
577
+ inline-size: 1px;
578
+ block-size: 1px;
579
+ overflow: hidden;
580
+ clip-path: inset(50%);
581
+ white-space: nowrap;
582
+ }
583
+ /* Image — content image. Crops to fill its box and never deforms (cover, centered).
584
+ The only piece of the system without a token: just proportion and crop. */
585
+
586
+ ._image_1q33o_4 {
587
+ display: block;
588
+ width: 100%;
589
+ object-fit: cover;
590
+ object-position: center;
591
+ }
592
+
593
+ ._ratio-2-1_1q33o_11 {
594
+ aspect-ratio: 2 / 1;
595
+ }
596
+
597
+ ._ratio-1-1_1q33o_15 {
598
+ aspect-ratio: 1 / 1;
599
+ }
600
+
601
+ /* The container owns the height: what a section background needs */
602
+ ._ratio-fill_1q33o_20 {
603
+ height: 100%;
604
+ }
605
+
606
+ /* The file owns the height: the only one that does not crop. Reserve its room. */
607
+ ._ratio-auto_1q33o_25 {
608
+ height: auto;
609
+ object-fit: fill;
610
+ }
611
+ /* Logo — the 540 logotype. The height rules, the width follows; it inherits the ink from its context. */
612
+
613
+ ._logo_6429y_3 {
614
+ display: block;
615
+ width: auto;
616
+ color: var(--color-text-primary);
617
+ flex: none;
618
+ }
619
+
620
+ ._size-md_6429y_10 {
621
+ height: var(--size-logo-md);
622
+ }
623
+
624
+ ._size-sm_6429y_14 {
625
+ height: var(--size-logo-sm);
626
+ }
627
+
628
+ ._size-xs_6429y_18 {
629
+ height: var(--size-logo-xs);
630
+ }
631
+ /* MenuItem — a destination of the nav bar. Hover and press scale the label; focus is a 2 px line
632
+ under the word, not a ring: on a lone word the ring weighs more than the word. */
633
+
634
+ ._item_vvlcs_4 {
635
+ position: relative;
636
+ display: inline-flex;
637
+ align-items: center;
638
+ box-sizing: border-box;
639
+ font-family: var(--font-family-base);
640
+ font-optical-sizing: none;
641
+ -webkit-font-smoothing: antialiased;
642
+ -moz-osx-font-smoothing: grayscale;
643
+ text-decoration-line: none;
644
+ white-space: nowrap;
645
+ cursor: pointer;
646
+ color: var(--color-text-primary);
647
+ }
648
+
649
+ ._label_vvlcs_19 {
650
+ display: inline-block;
651
+ transform-origin: center;
652
+ transition: transform 0.16s ease;
653
+ }
654
+
655
+ ._item_vvlcs_4:hover ._label_vvlcs_19,
656
+ ._forceHover_vvlcs_26 ._label_vvlcs_19 {
657
+ transform: scale(1.09);
658
+ }
659
+
660
+ ._item_vvlcs_4:active ._label_vvlcs_19,
661
+ ._forceActive_vvlcs_31 ._label_vvlcs_19 {
662
+ transform: scale(0.97);
663
+ }
664
+
665
+ ._item_vvlcs_4:focus-visible {
666
+ outline: 2px solid transparent;
667
+ outline-offset: 2px;
668
+ }
669
+
670
+ ._item_vvlcs_4:focus-visible ._label_vvlcs_19,
671
+ ._forceFocus_vvlcs_41 ._label_vvlcs_19 {
672
+ box-shadow: 0 2px 0 var(--color-border-focus);
673
+ }
674
+
675
+ /* ---- Sizes ---- */
676
+ ._size-sm_vvlcs_46 {
677
+ min-height: var(--size-control-xs);
678
+ font-size: var(--text-micro-size);
679
+ font-weight: var(--text-micro-weight);
680
+ line-height: var(--text-micro-line-height);
681
+ text-transform: uppercase;
682
+ }
683
+
684
+ ._size-lg_vvlcs_54 {
685
+ min-height: var(--size-control-md);
686
+ padding-block: var(--space-m);
687
+ font-size: var(--text-title-m-size);
688
+ font-weight: var(--text-title-m-weight);
689
+ line-height: var(--text-title-m-line-height);
690
+ }
691
+
692
+ /* ---- Current: bold and nothing else ---- */
693
+ ._current_vvlcs_63 {
694
+ font-weight: var(--text-micro-bold-weight);
695
+ }
696
+
697
+ @media (prefers-reduced-motion: reduce) {
698
+ ._label_vvlcs_19 {
699
+ transition: none;
700
+ }
701
+
702
+ ._item_vvlcs_4:hover ._label_vvlcs_19,
703
+ ._item_vvlcs_4:active ._label_vvlcs_19 {
704
+ transform: none;
705
+ }
706
+ }
707
+ /* SocialIcon — a brand mark as an icon: filled, original path, inherits the ink. Always aria-hidden. */
708
+
709
+ ._icon_4tj8z_3 {
710
+ display: block;
711
+ flex: none;
712
+ fill: currentColor;
713
+ }
714
+
715
+ ._size-md_4tj8z_9 {
716
+ inline-size: var(--size-icon-md);
717
+ block-size: var(--size-icon-md);
718
+ }
719
+
720
+ ._size-sm_4tj8z_14 {
721
+ inline-size: var(--size-icon-sm);
722
+ block-size: var(--size-icon-sm);
723
+ }
724
+ /* Text — the type scale as a component. Uses semantic tokens only. */
725
+
726
+ ._text_xsdsu_3 {
727
+ margin: 0;
728
+ font-family: var(--font-family-base);
729
+ font-optical-sizing: none;
730
+ -webkit-font-smoothing: antialiased;
731
+ -moz-osx-font-smoothing: grayscale;
732
+ }
733
+
734
+ /* ---- Inline: bold and code inside any text ---- */
735
+ ._text_xsdsu_3 strong,
736
+ ._text_xsdsu_3 b {
737
+ font-weight: var(--540-font-weight-bold);
738
+ }
739
+
740
+ ._text_xsdsu_3 code,
741
+ ._mono_xsdsu_18 {
742
+ font-family: var(--font-family-mono);
743
+ font-size: 0.92em;
744
+ }
745
+
746
+ /* ---- Variants (one per text style) ---- */
747
+ ._variant-statement_xsdsu_24 {
748
+ font-size: var(--text-statement-size);
749
+ font-weight: var(--text-statement-weight);
750
+ line-height: var(--text-statement-line-height);
751
+ letter-spacing: var(--text-statement-letter-spacing);
752
+ }
753
+
754
+ ._variant-title-l_xsdsu_31 {
755
+ font-size: var(--text-title-l-size);
756
+ font-weight: var(--text-title-l-weight);
757
+ line-height: var(--text-title-l-line-height);
758
+ letter-spacing: var(--text-title-l-letter-spacing);
759
+ }
760
+
761
+ ._variant-title-m_xsdsu_38 {
762
+ font-size: var(--text-title-m-size);
763
+ font-weight: var(--text-title-m-weight);
764
+ line-height: var(--text-title-m-line-height);
765
+ letter-spacing: var(--text-title-m-letter-spacing);
766
+ }
767
+
768
+ ._variant-title-s_xsdsu_45 {
769
+ font-size: var(--text-title-s-size);
770
+ font-weight: var(--text-title-s-weight);
771
+ line-height: var(--text-title-s-line-height);
772
+ letter-spacing: var(--text-title-s-letter-spacing);
773
+ }
774
+
775
+ ._variant-title-xs_xsdsu_52 {
776
+ font-size: var(--text-title-xs-size);
777
+ font-weight: var(--text-title-xs-weight);
778
+ line-height: var(--text-title-xs-line-height);
779
+ letter-spacing: var(--text-title-xs-letter-spacing);
780
+ }
781
+
782
+ ._variant-body-l_xsdsu_59 {
783
+ font-size: var(--text-body-l-size);
784
+ font-weight: var(--text-body-l-weight);
785
+ line-height: var(--text-body-l-line-height);
786
+ letter-spacing: var(--text-body-l-letter-spacing);
787
+ }
788
+
789
+ ._variant-body-m_xsdsu_66 {
790
+ font-size: var(--text-body-m-size);
791
+ font-weight: var(--text-body-m-weight);
792
+ line-height: var(--text-body-m-line-height);
793
+ letter-spacing: var(--text-body-m-letter-spacing);
794
+ }
795
+
796
+ ._variant-body-s_xsdsu_73 {
797
+ font-size: var(--text-body-s-size);
798
+ font-weight: var(--text-body-s-weight);
799
+ line-height: var(--text-body-s-line-height);
800
+ letter-spacing: var(--text-body-s-letter-spacing);
801
+ }
802
+
803
+ ._variant-body-s-light_xsdsu_80 {
804
+ font-size: var(--text-body-s-light-size);
805
+ font-weight: var(--text-body-s-light-weight);
806
+ line-height: var(--text-body-s-light-line-height);
807
+ letter-spacing: var(--text-body-s-light-letter-spacing);
808
+ }
809
+
810
+ ._variant-body-s-bold_xsdsu_87 {
811
+ font-size: var(--text-body-s-bold-size);
812
+ font-weight: var(--text-body-s-bold-weight);
813
+ line-height: var(--text-body-s-bold-line-height);
814
+ letter-spacing: var(--text-body-s-bold-letter-spacing);
815
+ }
816
+
817
+ ._variant-micro_xsdsu_94 {
818
+ font-size: var(--text-micro-size);
819
+ font-weight: var(--text-micro-weight);
820
+ line-height: var(--text-micro-line-height);
821
+ letter-spacing: var(--text-micro-letter-spacing);
822
+ }
823
+
824
+ ._variant-micro-light_xsdsu_101 {
825
+ font-size: var(--text-micro-light-size);
826
+ font-weight: var(--text-micro-light-weight);
827
+ line-height: var(--text-micro-light-line-height);
828
+ letter-spacing: var(--text-micro-light-letter-spacing);
829
+ }
830
+
831
+ ._variant-micro-bold_xsdsu_108 {
832
+ font-size: var(--text-micro-bold-size);
833
+ font-weight: var(--text-micro-bold-weight);
834
+ line-height: var(--text-micro-bold-line-height);
835
+ letter-spacing: var(--text-micro-bold-letter-spacing);
836
+ text-transform: uppercase;
837
+ }
838
+
839
+ /* ---- Tones ---- */
840
+ ._tone-primary_xsdsu_117 {
841
+ color: var(--color-text-primary);
842
+ }
843
+
844
+ ._tone-secondary_xsdsu_121 {
845
+ color: var(--color-text-secondary);
846
+ }
847
+
848
+ /* ---- Alignment ---- */
849
+ ._align-start_xsdsu_126 {
850
+ text-align: start;
851
+ }
852
+
853
+ ._align-center_xsdsu_130 {
854
+ text-align: center;
855
+ }
856
+
857
+ /* ---- Line wrapping ---- */
858
+ ._wrap-balance_xsdsu_135 {
859
+ text-wrap: balance;
860
+ }
861
+
862
+ ._wrap-pretty_xsdsu_139 {
863
+ text-wrap: pretty;
864
+ }
865
+
866
+ /* ---- Measure (max width). Centered text also centers the box. ---- */
867
+ ._measure-half_xsdsu_144 {
868
+ max-width: calc((var(--size-container) - var(--grid-gutter)) / 2);
869
+ }
870
+
871
+ ._measure-wide_xsdsu_148 {
872
+ max-width: calc(var(--size-container) * 0.75);
873
+ }
874
+
875
+ ._measure-prose_xsdsu_152 {
876
+ max-width: 62ch;
877
+ }
878
+
879
+ ._measure-narrow_xsdsu_156 {
880
+ max-width: 38ch;
881
+ }
882
+
883
+ ._align-center_xsdsu_130._measure-half_xsdsu_144,
884
+ ._align-center_xsdsu_130._measure-wide_xsdsu_148,
885
+ ._align-center_xsdsu_130._measure-prose_xsdsu_152,
886
+ ._align-center_xsdsu_130._measure-narrow_xsdsu_156 {
887
+ margin-inline: auto;
888
+ }
889
+ /* ThemeToggle — the 24 px round control of the nav bar. Ghost gesture: nothing at rest,
890
+ a surface on hover, one step more when pressed. */
891
+
892
+ ._toggle_c8kwp_4 {
893
+ display: inline-flex;
894
+ align-items: center;
895
+ justify-content: center;
896
+ inline-size: var(--size-control-xs);
897
+ block-size: var(--size-control-xs);
898
+ padding: 0;
899
+ border: 0;
900
+ border-radius: var(--radius-pill);
901
+ background: transparent;
902
+ color: var(--color-text-primary);
903
+ cursor: pointer;
904
+ transition:
905
+ background 0.2s ease,
906
+ color 0.2s ease;
907
+ }
908
+
909
+ ._toggle_c8kwp_4:hover,
910
+ ._toggle_c8kwp_4._forceHover_c8kwp_22 {
911
+ background: var(--color-bg-neutral-hover);
912
+ }
913
+
914
+ ._toggle_c8kwp_4:active,
915
+ ._toggle_c8kwp_4._forceActive_c8kwp_27 {
916
+ background: var(--color-bg-neutral-active);
917
+ }
918
+
919
+ ._toggle_c8kwp_4:focus-visible,
920
+ ._toggle_c8kwp_4._forceFocus_c8kwp_32 {
921
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
922
+ outline-offset: var(--focus-ring-offset);
923
+ }
924
+
925
+ ._icon_c8kwp_37 {
926
+ display: inline-flex;
927
+ flex: none;
928
+ }
929
+
930
+ ._icon_c8kwp_37 > svg {
931
+ display: block;
932
+ width: var(--size-icon-sm);
933
+ height: var(--size-icon-sm);
934
+ }
935
+
936
+ ._srOnly_c8kwp_48 {
937
+ position: absolute;
938
+ width: 1px;
939
+ height: 1px;
940
+ margin: -1px;
941
+ padding: 0;
942
+ overflow: hidden;
943
+ clip-path: inset(50%);
944
+ white-space: nowrap;
945
+ border: 0;
946
+ }
947
+
948
+ @media (prefers-reduced-motion: reduce) {
949
+ ._toggle_c8kwp_4 {
950
+ transition: none;
951
+ }
952
+ }
953
+ /* Card — number, title and explanation. A bordered box, or a band edge to edge.
954
+ Square corners: the radius is reserved for what gets pressed. No shadow: the border separates. */
955
+
956
+ ._card_ii9ny_4 {
957
+ display: flex;
958
+ flex-direction: column;
959
+ gap: var(--padding-section);
960
+ height: 100%;
961
+ box-sizing: border-box;
962
+ padding: var(--padding-card);
963
+ border: 1px solid var(--color-border-default);
964
+ background: var(--color-bg-default);
965
+ }
966
+
967
+ ._header_ii9ny_15 {
968
+ display: grid;
969
+ justify-items: start;
970
+ gap: var(--space-s);
971
+ }
972
+
973
+ ._window_ii9ny_21 {
974
+ display: grid;
975
+ grid-template-rows: 1fr;
976
+ }
977
+
978
+ ._body_ii9ny_26 {
979
+ display: grid;
980
+ justify-items: start;
981
+ gap: var(--space-l);
982
+ min-height: 0;
983
+ }
984
+
985
+ /* ---- Portrait, footer and after ---- */
986
+ ._portrait_ii9ny_34 {
987
+ inline-size: 160px;
988
+ block-size: 160px;
989
+ border-radius: var(--radius-pill);
990
+ margin-inline: auto;
991
+ margin-block-end: calc(var(--space-s) - var(--padding-section));
992
+ }
993
+
994
+ ._footer_ii9ny_42 {
995
+ inline-size: 100%;
996
+ padding-block-start: var(--space-l);
997
+ border-block-start: 1px solid var(--color-border-default);
998
+ }
999
+
1000
+ ._after_ii9ny_48 {
1001
+ display: grid;
1002
+ gap: var(--space-s);
1003
+ inline-size: 100%;
1004
+ padding-block-start: var(--space-l);
1005
+ border-block-start: 1px solid var(--color-border-strong);
1006
+ }
1007
+
1008
+ /* ---- Emphasis among several cards ---- */
1009
+ ._card_ii9ny_4 {
1010
+ transition:
1011
+ opacity 0.4s,
1012
+ transform 0.4s,
1013
+ border-color 0.4s;
1014
+ }
1015
+
1016
+ ._highlighted_ii9ny_64 {
1017
+ transform: scale(1.04);
1018
+ border-color: var(--color-border-strong);
1019
+ }
1020
+
1021
+ ._dimmed_ii9ny_69 {
1022
+ opacity: 0.25;
1023
+ }
1024
+
1025
+ /* ---- Centered ---- */
1026
+ ._center_ii9ny_74 {
1027
+ align-items: center;
1028
+ text-align: center;
1029
+ }
1030
+
1031
+ ._center_ii9ny_74 ._header_ii9ny_15,
1032
+ ._center_ii9ny_74 ._body_ii9ny_26 {
1033
+ justify-items: center;
1034
+ }
1035
+
1036
+ ._center_ii9ny_74 ._window_ii9ny_21 {
1037
+ max-width: 62ch;
1038
+ margin-inline: auto;
1039
+ }
1040
+
1041
+ /* ---- Row: a band edge to edge, inside a CardList ---- */
1042
+ ._row_ii9ny_90 {
1043
+ display: block;
1044
+ height: auto;
1045
+ gap: 0;
1046
+ padding: var(--space-2xl) max(var(--padding-page), (100% - var(--size-container)) / 2);
1047
+ border: 0;
1048
+ border-top: 1px solid var(--color-border-default);
1049
+ background: transparent;
1050
+ transition: background-color 0.42s cubic-bezier(0.4, 0, 0.2, 1);
1051
+ }
1052
+
1053
+ ._row_ii9ny_90 ._ordinal_ii9ny_101 {
1054
+ padding-top: var(--space-xs);
1055
+ }
1056
+
1057
+ ._row_ii9ny_90 ._body_ii9ny_26 {
1058
+ max-width: 62ch;
1059
+ padding-top: var(--space-l);
1060
+ gap: var(--space-l);
1061
+ }
1062
+
1063
+ @media (min-width: 600px) {
1064
+ ._row_ii9ny_90 ._header_ii9ny_15 {
1065
+ grid-template-columns: 1fr 2fr;
1066
+ align-items: start;
1067
+ gap: var(--grid-gutter);
1068
+ }
1069
+
1070
+ ._row_ii9ny_90 ._window_ii9ny_21 {
1071
+ margin-inline-start: calc((100% - var(--grid-gutter)) / 3 + var(--grid-gutter));
1072
+ }
1073
+
1074
+ ._row_ii9ny_90._center_ii9ny_74 ._header_ii9ny_15 {
1075
+ grid-template-columns: 1fr;
1076
+ justify-items: center;
1077
+ }
1078
+
1079
+ ._row_ii9ny_90._center_ii9ny_74 ._window_ii9ny_21 {
1080
+ margin-inline: auto;
1081
+ }
1082
+ }
1083
+
1084
+ /* Folded: the window closes to zero and is clipped; the text stays in the document */
1085
+ ._row_ii9ny_90._folded_ii9ny_133 ._window_ii9ny_21 {
1086
+ grid-template-rows: 0fr;
1087
+ opacity: 0;
1088
+ transition:
1089
+ grid-template-rows 0.42s cubic-bezier(0.4, 0, 0.2, 1),
1090
+ opacity 0.32s ease;
1091
+ }
1092
+
1093
+ ._row_ii9ny_90._folded_ii9ny_133 ._window_ii9ny_21 > ._body_ii9ny_26 {
1094
+ overflow: hidden;
1095
+ min-height: 0;
1096
+ }
1097
+
1098
+ /* Active: open, on the active-row background */
1099
+ ._row_ii9ny_90._active_ii9ny_147 {
1100
+ background: var(--color-bg-row-active);
1101
+ }
1102
+
1103
+ @media (prefers-reduced-motion: reduce) {
1104
+ ._card_ii9ny_4,
1105
+ ._row_ii9ny_90,
1106
+ ._row_ii9ny_90._folded_ii9ny_133 ._window_ii9ny_21 {
1107
+ transition: none;
1108
+ }
1109
+ }
1110
+ /* Carousel — a strip that is paged with the dots below. One piece per slot. */
1111
+
1112
+ ._carousel_zjv2t_3 {
1113
+ position: relative;
1114
+ display: grid;
1115
+ gap: var(--space-3xl);
1116
+ }
1117
+
1118
+ ._headerRow_zjv2t_9 {
1119
+ display: flex;
1120
+ align-items: flex-end;
1121
+ justify-content: space-between;
1122
+ gap: var(--space-xl);
1123
+ }
1124
+
1125
+ ._window_zjv2t_16 {
1126
+ overflow: hidden;
1127
+ }
1128
+
1129
+ ._track_zjv2t_20 {
1130
+ display: flex;
1131
+ gap: var(--grid-gutter);
1132
+ overflow-x: auto;
1133
+ scroll-snap-type: x mandatory;
1134
+ scroll-behavior: smooth;
1135
+ scrollbar-width: none;
1136
+ -webkit-overflow-scrolling: touch;
1137
+ }
1138
+
1139
+ ._track_zjv2t_20::-webkit-scrollbar {
1140
+ display: none;
1141
+ }
1142
+
1143
+ ._slot_zjv2t_34 {
1144
+ flex: 0 0 var(--carousel-item, 100%);
1145
+ min-width: 0;
1146
+ scroll-snap-align: start;
1147
+ }
1148
+
1149
+ @media (min-width: 600px) {
1150
+ ._slot_zjv2t_34 {
1151
+ flex-basis: var(--carousel-item, calc((100% - var(--grid-gutter)) / 2));
1152
+ }
1153
+ }
1154
+
1155
+ /* ---- Controls ---- */
1156
+ ._dots_zjv2t_47 {
1157
+ display: flex;
1158
+ justify-content: center;
1159
+ }
1160
+
1161
+ ._row_zjv2t_52 {
1162
+ display: flex;
1163
+ align-items: center;
1164
+ gap: var(--space-l);
1165
+ }
1166
+
1167
+ ._row_zjv2t_52 ._dots_zjv2t_47 {
1168
+ flex: 1;
1169
+ }
1170
+
1171
+ ._arrows_zjv2t_62 {
1172
+ display: inline-flex;
1173
+ gap: var(--space-s);
1174
+ }
1175
+
1176
+ /* Sides: the arrows beside the strip, one on each side, no dots. The window keeps the wide
1177
+ gutter free on both sides so the arrows never cover the end pieces. */
1178
+ ._sides_zjv2t_69 ._window_zjv2t_16 {
1179
+ padding-inline: var(--grid-gutter-wide);
1180
+ }
1181
+
1182
+ ._side_zjv2t_69 {
1183
+ position: absolute;
1184
+ inset-block-start: 50%;
1185
+ transform: translateY(-50%);
1186
+ z-index: 1;
1187
+ }
1188
+
1189
+ ._sidePrev_zjv2t_80 {
1190
+ inset-inline-start: calc((var(--grid-gutter-wide) - var(--size-control-md)) / 2);
1191
+ }
1192
+
1193
+ ._sideNext_zjv2t_84 {
1194
+ inset-inline-end: calc((var(--grid-gutter-wide) - var(--size-control-md)) / 2);
1195
+ }
1196
+
1197
+ @media (prefers-reduced-motion: reduce) {
1198
+ ._track_zjv2t_20 {
1199
+ scroll-behavior: auto;
1200
+ }
1201
+ }
1202
+ /* CaseItem — a portfolio case: the photo, and over it the name and the sentence anchored at the
1203
+ bottom on a veil. The zoom of the image is the only thing that says it is pressed. */
1204
+
1205
+ ._item_1gpwq_4 {
1206
+ position: relative;
1207
+ display: block;
1208
+ aspect-ratio: 2 / 1;
1209
+ overflow: hidden;
1210
+ color: var(--color-text-on-media);
1211
+ text-decoration: none;
1212
+ }
1213
+
1214
+ ._frame_1gpwq_13 {
1215
+ position: absolute;
1216
+ inset: 0;
1217
+ overflow: hidden;
1218
+ }
1219
+
1220
+ ._frame_1gpwq_13 > img {
1221
+ height: 100%;
1222
+ transition: transform 0.32s ease;
1223
+ }
1224
+
1225
+ /* Only linked cases zoom: without a destination it would promise something that does not happen */
1226
+ ._linked_1gpwq_25:hover ._frame_1gpwq_13 > img,
1227
+ ._linked_1gpwq_25._forceHover_1gpwq_26 ._frame_1gpwq_13 > img {
1228
+ transform: scale(1.05);
1229
+ }
1230
+
1231
+ ._linked_1gpwq_25:active ._frame_1gpwq_13 > img,
1232
+ ._linked_1gpwq_25._forceActive_1gpwq_31 ._frame_1gpwq_13 > img {
1233
+ transform: scale(1.04);
1234
+ }
1235
+
1236
+ ._linked_1gpwq_25:focus-visible {
1237
+ outline: var(--focus-ring-width) solid var(--color-border-strong-inverse);
1238
+ outline-offset: calc(-1 * var(--focus-ring-width) - var(--focus-ring-offset));
1239
+ }
1240
+
1241
+ /* The veil is not decoration: without it a light name on a light photo disappears */
1242
+ ._veil_1gpwq_41 {
1243
+ position: absolute;
1244
+ inset: 0;
1245
+ background: var(--gradient-image-veil);
1246
+ pointer-events: none;
1247
+ }
1248
+
1249
+ ._data_1gpwq_48 {
1250
+ position: absolute;
1251
+ inset-inline: 0;
1252
+ inset-block-end: 0;
1253
+ display: grid;
1254
+ gap: var(--space-s);
1255
+ padding: var(--padding-card);
1256
+ }
1257
+
1258
+ /* Text over media does not follow the theme: white in both */
1259
+ ._data_1gpwq_48 > * {
1260
+ color: var(--color-text-on-media);
1261
+ }
1262
+
1263
+ @media (prefers-reduced-motion: reduce) {
1264
+ ._frame_1gpwq_13 > img {
1265
+ transition: none;
1266
+ }
1267
+
1268
+ ._linked_1gpwq_25:hover ._frame_1gpwq_13 > img,
1269
+ ._linked_1gpwq_25:active ._frame_1gpwq_13 > img {
1270
+ transform: none;
1271
+ }
1272
+ }
1273
+ /* Dialog — a window that covers the page to tell one thing. A real <dialog>: closed, it paints
1274
+ nothing; the veil is the browser's ::backdrop. Half the grid wide. No shadow: the veil separates. */
1275
+
1276
+ ._dialog_y1k69_4 {
1277
+ box-sizing: border-box;
1278
+ width: calc((var(--size-container) - var(--grid-gutter)) / 2);
1279
+ max-width: calc(100% - var(--padding-page) * 2);
1280
+ max-height: calc(100svh - var(--padding-page) * 2);
1281
+ margin: auto;
1282
+ padding: 0;
1283
+ border: 0;
1284
+ border-radius: var(--radius-default);
1285
+ background: var(--color-bg-surface);
1286
+ color: var(--color-text-primary);
1287
+ overflow: hidden;
1288
+ }
1289
+
1290
+ ._dialog_y1k69_4::backdrop {
1291
+ background: var(--color-bg-overlay);
1292
+ }
1293
+
1294
+ /* The inner wrapper: what tells the veil from the panel is the click target */
1295
+ ._inner_y1k69_23 {
1296
+ display: flex;
1297
+ flex-direction: column;
1298
+ max-height: calc(100svh - var(--padding-page) * 2);
1299
+ }
1300
+
1301
+ /* On short screens the portrait crops instead of eating the dialog */
1302
+ ._media_y1k69_30 {
1303
+ flex: none;
1304
+ max-height: 50svh;
1305
+ overflow: hidden;
1306
+ }
1307
+
1308
+ ._body_y1k69_36 {
1309
+ display: flex;
1310
+ flex-direction: column;
1311
+ gap: var(--space-xl);
1312
+ padding: var(--padding-card);
1313
+ min-height: 0;
1314
+ }
1315
+
1316
+ ._header_y1k69_44 {
1317
+ display: flex;
1318
+ align-items: flex-start;
1319
+ justify-content: space-between;
1320
+ gap: var(--space-l);
1321
+ }
1322
+
1323
+ /* Only the text scrolls: title and cross stay in view */
1324
+ ._content_y1k69_52 {
1325
+ min-height: 0;
1326
+ overflow-y: auto;
1327
+ }
1328
+
1329
+ ._footer_y1k69_57 {
1330
+ display: flex;
1331
+ flex-wrap: wrap;
1332
+ align-items: center;
1333
+ gap: var(--space-l);
1334
+ }
1335
+
1336
+ ._dialog_y1k69_4:focus {
1337
+ outline: none;
1338
+ }
1339
+ /* Field — label and control tied by the id. The outline is only the bottom line: no box, no radius.
1340
+ Focus goes to that line, 2 px in the focus color: the system's only exception to the ring. */
1341
+
1342
+ ._field_1i00h_4 {
1343
+ display: grid;
1344
+ gap: var(--space-s);
1345
+ width: 100%;
1346
+ }
1347
+
1348
+ ._label_1i00h_10 {
1349
+ display: block;
1350
+ width: fit-content;
1351
+ text-transform: uppercase;
1352
+ cursor: default;
1353
+ }
1354
+
1355
+ ._control_1i00h_17 {
1356
+ box-sizing: border-box;
1357
+ width: 100%;
1358
+ margin: 0;
1359
+ padding: 0;
1360
+ border: 0;
1361
+ border-bottom: 1px solid var(--color-border-default);
1362
+ border-radius: 0;
1363
+ background: transparent;
1364
+ font-family: var(--font-family-base);
1365
+ font-optical-sizing: none;
1366
+ font-size: var(--540-font-size-16); /* 16 px: below it, Safari on iPhone zooms on focus */
1367
+ font-weight: var(--text-body-m-weight);
1368
+ line-height: normal;
1369
+ color: var(--color-text-primary);
1370
+ }
1371
+
1372
+ ._control_1i00h_17::placeholder {
1373
+ color: var(--color-text-secondary);
1374
+ opacity: 1;
1375
+ }
1376
+
1377
+ ._control_1i00h_17:focus {
1378
+ outline: none;
1379
+ border-bottom-width: 2px;
1380
+ border-bottom-color: var(--color-border-focus);
1381
+ margin-bottom: -1px;
1382
+ }
1383
+
1384
+ ._control_1i00h_17:disabled {
1385
+ color: var(--color-text-disabled);
1386
+ cursor: not-allowed;
1387
+ }
1388
+
1389
+ ._control_1i00h_17:disabled::placeholder {
1390
+ color: var(--color-text-disabled);
1391
+ }
1392
+
1393
+ ._size-md_1i00h_55 {
1394
+ height: var(--size-control-md);
1395
+ }
1396
+
1397
+ ._size-sm_1i00h_59 {
1398
+ height: var(--size-control-sm);
1399
+ }
1400
+
1401
+ /* The textarea keeps the same line; its height is the message's */
1402
+ ._multiline_1i00h_64 {
1403
+ height: auto;
1404
+ min-height: calc(var(--size-control-md) * 2);
1405
+ padding-block: var(--space-m);
1406
+ resize: vertical;
1407
+ }
1408
+ /* Footer — the brand with its tagline, the columns of links, the networks and the signature.
1409
+ The top only exists if there is something to put in it. The closing is separated by air, not a line. */
1410
+
1411
+ ._footer_64xzx_4 {
1412
+ display: grid;
1413
+ gap: var(--space-3xl);
1414
+ }
1415
+
1416
+ ._top_64xzx_9 {
1417
+ display: flex;
1418
+ flex-wrap: wrap;
1419
+ justify-content: space-between;
1420
+ gap: var(--space-3xl) var(--grid-gutter-wide);
1421
+ }
1422
+
1423
+ ._brand_64xzx_16 {
1424
+ display: grid;
1425
+ gap: var(--space-l);
1426
+ align-content: start;
1427
+ }
1428
+
1429
+ ._home_64xzx_22 {
1430
+ display: inline-flex;
1431
+ width: fit-content;
1432
+ color: inherit;
1433
+ }
1434
+
1435
+ ._home_64xzx_22:focus-visible {
1436
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
1437
+ outline-offset: var(--focus-ring-offset);
1438
+ }
1439
+
1440
+ ._tagline_64xzx_33 {
1441
+ max-width: 38ch;
1442
+ }
1443
+
1444
+ ._groups_64xzx_37 {
1445
+ display: flex;
1446
+ flex-wrap: wrap;
1447
+ gap: var(--space-3xl) var(--grid-gutter-wide);
1448
+ }
1449
+
1450
+ ._group_64xzx_37 {
1451
+ display: grid;
1452
+ gap: var(--space-l);
1453
+ align-content: start;
1454
+ }
1455
+
1456
+ ._groupTitle_64xzx_49 {
1457
+ text-transform: uppercase;
1458
+ }
1459
+
1460
+ ._list_64xzx_53 {
1461
+ display: grid;
1462
+ gap: var(--space-m);
1463
+ margin: 0;
1464
+ padding: 0;
1465
+ list-style: none;
1466
+ }
1467
+
1468
+ ._link_64xzx_61 {
1469
+ color: inherit;
1470
+ text-decoration-line: none;
1471
+ text-decoration-thickness: 1px;
1472
+ text-underline-offset: var(--space-xs);
1473
+ }
1474
+
1475
+ ._link_64xzx_61:hover {
1476
+ text-decoration-line: underline;
1477
+ }
1478
+
1479
+ ._link_64xzx_61:focus-visible {
1480
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
1481
+ outline-offset: var(--focus-ring-offset);
1482
+ }
1483
+
1484
+ ._networks_64xzx_77 {
1485
+ grid-auto-flow: column;
1486
+ justify-content: start;
1487
+ gap: var(--space-m);
1488
+ }
1489
+
1490
+ ._network_64xzx_77 {
1491
+ display: inline-flex;
1492
+ align-items: center;
1493
+ justify-content: center;
1494
+ inline-size: var(--size-control-xs);
1495
+ block-size: var(--size-control-xs);
1496
+ color: var(--color-text-primary);
1497
+ }
1498
+
1499
+ ._network_64xzx_77:hover {
1500
+ color: var(--color-text-accent-inverse);
1501
+ }
1502
+
1503
+ ._network_64xzx_77:focus-visible {
1504
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
1505
+ outline-offset: var(--focus-ring-offset);
1506
+ }
1507
+
1508
+ ._closing_64xzx_101 {
1509
+ display: flex;
1510
+ flex-wrap: wrap;
1511
+ align-items: baseline;
1512
+ justify-content: space-between;
1513
+ gap: var(--space-s) var(--space-xl);
1514
+ padding-top: var(--space-xl);
1515
+ }
1516
+
1517
+ ._legal_64xzx_110 {
1518
+ display: flex;
1519
+ flex-wrap: wrap;
1520
+ gap: var(--space-s);
1521
+ margin: 0;
1522
+ padding: 0;
1523
+ list-style: none;
1524
+ }
1525
+
1526
+ ._legal_64xzx_110 li + li::before {
1527
+ content: '·';
1528
+ margin-inline-end: var(--space-s);
1529
+ }
1530
+ /* Grid — twelve columns in the three ranges, with the two gutters. Every item takes the row;
1531
+ from 600 px spans 1–6 take half; from 1024 px each takes its span. */
1532
+
1533
+ ._grid_fmszx_4 {
1534
+ display: grid;
1535
+ grid-template-columns: repeat(var(--grid-columns), 1fr);
1536
+ column-gap: var(--grid-gutter);
1537
+ row-gap: var(--grid-gutter);
1538
+ }
1539
+
1540
+ ._item_fmszx_11 {
1541
+ min-width: 0;
1542
+ grid-column: span 12;
1543
+ }
1544
+
1545
+ @media (min-width: 600px) {
1546
+ ._span-1_fmszx_17,
1547
+ ._span-2_fmszx_18,
1548
+ ._span-3_fmszx_19,
1549
+ ._span-4_fmszx_20,
1550
+ ._span-5_fmszx_21,
1551
+ ._span-6_fmszx_22 {
1552
+ grid-column: span 6;
1553
+ }
1554
+ }
1555
+
1556
+ @media (min-width: 1024px) {
1557
+ ._span-1_fmszx_17 { grid-column: span 1; }
1558
+ ._span-2_fmszx_18 { grid-column: span 2; }
1559
+ ._span-3_fmszx_19 { grid-column: span 3; }
1560
+ ._span-4_fmszx_20 { grid-column: span 4; }
1561
+ ._span-5_fmszx_21 { grid-column: span 5; }
1562
+ ._span-6_fmszx_22 { grid-column: span 6; }
1563
+ ._span-7_fmszx_34 { grid-column: span 7; }
1564
+ ._span-8_fmszx_35 { grid-column: span 8; }
1565
+ ._span-9_fmszx_36 { grid-column: span 9; }
1566
+ ._span-10_fmszx_37 { grid-column: span 10; }
1567
+ ._span-11_fmszx_38 { grid-column: span 11; }
1568
+ ._span-12_fmszx_39 { grid-column: span 12; }
1569
+ }
1570
+
1571
+ /* Five equal columns */
1572
+ ._five_fmszx_43 {
1573
+ grid-template-columns: repeat(5, minmax(0, 1fr));
1574
+ }
1575
+
1576
+ ._five_fmszx_43 > ._item_fmszx_11 {
1577
+ grid-column: auto;
1578
+ }
1579
+
1580
+ /* Five: three on top, two centered below (from 1024 px) */
1581
+ @media (min-width: 1024px) {
1582
+ ._fiveCentered_fmszx_53 > ._item_fmszx_11:nth-child(4) {
1583
+ grid-column: 3 / span 4;
1584
+ }
1585
+
1586
+ ._fiveCentered_fmszx_53 > ._item_fmszx_11:nth-child(5) {
1587
+ grid-column: 7 / span 4;
1588
+ }
1589
+ }
1590
+
1591
+ /* Compact density: text one step down and tighter cards */
1592
+ ._compact_fmszx_63 {
1593
+ --text-title-s-size: var(--540-font-size-22);
1594
+ --text-body-m-size: var(--540-font-size-16);
1595
+ --text-body-s-size: var(--540-font-size-14);
1596
+ --text-body-m-line-height: 1.4;
1597
+ --padding-card: var(--space-l);
1598
+ --padding-section: var(--space-l);
1599
+ }
1600
+
1601
+ ._item_fmszx_11 > * {
1602
+ block-size: 100%;
1603
+ }
1604
+
1605
+ /* Centered in height: each cell keeps its own height (a ring and the panel beside it) */
1606
+ ._center_fmszx_77 {
1607
+ align-items: center;
1608
+ }
1609
+
1610
+ ._center_fmszx_77 > ._item_fmszx_11 > * {
1611
+ block-size: auto;
1612
+ }
1613
+ /* Lists — the three lists of the talks: plain centered items, items with an arrow, and
1614
+ label + text pairs. None has bullets: the air separates. */
1615
+
1616
+ ._simple_1y536_4 {
1617
+ list-style: none;
1618
+ margin: 0;
1619
+ padding: 0;
1620
+ display: grid;
1621
+ gap: var(--space-m);
1622
+ justify-items: center;
1623
+ text-align: center;
1624
+ }
1625
+
1626
+ ._arrows_1y536_14 {
1627
+ list-style: none;
1628
+ margin: 0;
1629
+ padding: 0;
1630
+ display: grid;
1631
+ gap: var(--space-m);
1632
+ justify-items: center;
1633
+ text-align: center;
1634
+ }
1635
+
1636
+ ._arrows_1y536_14 li {
1637
+ display: flex;
1638
+ gap: var(--space-s);
1639
+ align-items: baseline;
1640
+ }
1641
+
1642
+ ._arrow_1y536_14 {
1643
+ color: var(--color-text-secondary);
1644
+ }
1645
+
1646
+ ._problems_1y536_34 {
1647
+ list-style: none;
1648
+ margin: 0;
1649
+ padding: 0;
1650
+ display: grid;
1651
+ gap: var(--space-xl);
1652
+ }
1653
+
1654
+ ._problem_1y536_34 {
1655
+ display: grid;
1656
+ gap: var(--space-s);
1657
+ }
1658
+ /* Menu — the desktop nav bar: three columns, the middle one as wide as it needs.
1659
+ Logo left, destinations centered on the bar, theme toggle right. */
1660
+
1661
+ ._menu_14qp6_4 {
1662
+ display: grid;
1663
+ grid-template-columns: 1fr auto 1fr;
1664
+ width: 100%;
1665
+ align-items: center;
1666
+ gap: var(--space-xl);
1667
+ padding-block: var(--space-xl);
1668
+ }
1669
+
1670
+ ._home_14qp6_13 {
1671
+ display: inline-flex;
1672
+ color: inherit;
1673
+ }
1674
+
1675
+ ._home_14qp6_13:focus-visible {
1676
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
1677
+ outline-offset: var(--focus-ring-offset);
1678
+ }
1679
+
1680
+ ._list_14qp6_23 {
1681
+ display: flex;
1682
+ align-items: center;
1683
+ gap: var(--space-xl);
1684
+ margin: 0;
1685
+ padding: 0;
1686
+ list-style: none;
1687
+ }
1688
+
1689
+ ._end_14qp6_32 {
1690
+ display: inline-flex;
1691
+ justify-self: end;
1692
+ }
1693
+ /* Metric — a figure, what it measures and its change, inside a bordered box. */
1694
+
1695
+ ._metric_p5wtq_3 {
1696
+ display: flex;
1697
+ flex-direction: column;
1698
+ align-items: center;
1699
+ gap: var(--padding-section);
1700
+ block-size: 100%;
1701
+ box-sizing: border-box;
1702
+ padding: var(--padding-card);
1703
+ border: 1px solid var(--color-border-default);
1704
+ background: var(--color-bg-default);
1705
+ text-align: center;
1706
+ }
1707
+
1708
+ ._body_p5wtq_16 {
1709
+ display: grid;
1710
+ gap: var(--space-l);
1711
+ justify-items: center;
1712
+ max-inline-size: 62ch;
1713
+ }
1714
+
1715
+ /* The notes under a row of metrics stay at the web body-s (14 px) in projection too */
1716
+ ._note_p5wtq_24 {
1717
+ --text-body-s-size: var(--540-font-size-14);
1718
+ margin-block-start: var(--space-l);
1719
+ }
1720
+ /* NavMobile — logo and a button that opens the menu full screen. The bar is transparent over
1721
+ whatever is behind; only the panel paints. Horizontal padding belongs to the bar row, not here. */
1722
+
1723
+ ._nav_1ghkl_4 {
1724
+ display: flex;
1725
+ width: 100%;
1726
+ align-items: center;
1727
+ justify-content: space-between;
1728
+ gap: var(--space-xl);
1729
+ padding-block: var(--space-xl);
1730
+ }
1731
+
1732
+ ._home_1ghkl_13 {
1733
+ display: inline-flex;
1734
+ color: inherit;
1735
+ }
1736
+
1737
+ ._home_1ghkl_13:focus-visible {
1738
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
1739
+ outline-offset: var(--focus-ring-offset);
1740
+ }
1741
+
1742
+ ._end_1ghkl_23 {
1743
+ display: inline-flex;
1744
+ align-items: center;
1745
+ gap: var(--space-s);
1746
+ }
1747
+
1748
+ /* The panel: a real <dialog>, full screen */
1749
+ ._panel_1ghkl_30 {
1750
+ position: fixed;
1751
+ inset: 0;
1752
+ z-index: 100;
1753
+ width: 100%;
1754
+ max-width: none;
1755
+ height: 100%;
1756
+ max-height: none;
1757
+ margin: 0;
1758
+ padding: var(--padding-page);
1759
+ border: 0;
1760
+ display: none;
1761
+ flex-direction: column;
1762
+ overflow-y: auto;
1763
+ background: var(--color-bg-default);
1764
+ color: var(--color-text-primary);
1765
+ }
1766
+
1767
+ ._panel_1ghkl_30[open] {
1768
+ display: flex;
1769
+ }
1770
+
1771
+ ._panel_1ghkl_30::backdrop {
1772
+ background: transparent;
1773
+ }
1774
+
1775
+ ._panelBar_1ghkl_56 {
1776
+ display: flex;
1777
+ align-items: center;
1778
+ justify-content: space-between;
1779
+ gap: var(--space-xl);
1780
+ padding-block: var(--space-xl);
1781
+ margin-bottom: var(--space-3xl);
1782
+ }
1783
+
1784
+ ._list_1ghkl_65 {
1785
+ display: flex;
1786
+ flex-direction: column;
1787
+ align-items: flex-start;
1788
+ gap: var(--space-m);
1789
+ margin: 0;
1790
+ padding: 0;
1791
+ list-style: none;
1792
+ }
1793
+ /* Question — a question and its answer, under a hairline, centered. */
1794
+
1795
+ ._question_mtllx_3 {
1796
+ display: grid;
1797
+ gap: var(--space-s);
1798
+ justify-items: center;
1799
+ padding-block-start: var(--space-l);
1800
+ border-block-start: 1px solid var(--color-border-default);
1801
+ inline-size: 100%;
1802
+ text-align: center;
1803
+ }
1804
+ /* Screenshot — a capture at a fixed height (so the layout does not jump) with rounded corners. */
1805
+
1806
+ ._screenshot_hioia_3 {
1807
+ display: block;
1808
+ block-size: min(calc(100svh - 470px), 560px);
1809
+ inline-size: auto;
1810
+ max-inline-size: 100%;
1811
+ margin-inline: auto;
1812
+ margin-block-start: var(--space-2xl);
1813
+ border-radius: var(--radius-default);
1814
+ object-fit: contain;
1815
+ }
1816
+ /* Section — a band of the page: full-bleed background, content in the column, the system's vertical air.
1817
+ Two pieces on purpose: if the background lived in the column it would stop at 1200 px. */
1818
+
1819
+ ._section_1nzhz_4 {
1820
+ position: relative;
1821
+ padding-block: var(--padding-section-block);
1822
+ }
1823
+
1824
+ ._tone-default_1nzhz_9 {
1825
+ background: transparent;
1826
+ }
1827
+
1828
+ ._tone-raised_1nzhz_13 {
1829
+ background: var(--color-bg-row-active);
1830
+ }
1831
+
1832
+ /* The column fills the band and stops at --size-container, centered */
1833
+ ._column_1nzhz_18 {
1834
+ position: relative;
1835
+ max-width: var(--size-container);
1836
+ margin-inline: auto;
1837
+ padding-inline: var(--padding-page);
1838
+ box-sizing: content-box;
1839
+ }
1840
+ /* SectionHeader — title and lead. Start fills the column; center caps at half the grid. */
1841
+
1842
+ ._header_q562s_3 {
1843
+ display: grid;
1844
+ justify-items: start;
1845
+ gap: var(--space-3xl);
1846
+ }
1847
+
1848
+ ._center_q562s_9 {
1849
+ justify-items: center;
1850
+ max-width: calc((var(--size-container) - var(--grid-gutter)) / 2);
1851
+ margin-inline: auto;
1852
+ text-align: center;
1853
+ }
1854
+ /* Stack — pieces one under the other, with one of three steps of air between them.
1855
+ It is what keeps a header, a grid and a note apart inside a stop. */
1856
+
1857
+ ._stack_169h2_4 {
1858
+ display: grid;
1859
+ grid-template-columns: minmax(0, 1fr);
1860
+ justify-items: stretch;
1861
+ }
1862
+
1863
+ ._gap-s_169h2_10 {
1864
+ gap: var(--space-l);
1865
+ }
1866
+
1867
+ ._gap-m_169h2_14 {
1868
+ gap: var(--space-2xl);
1869
+ }
1870
+
1871
+ ._gap-l_169h2_18 {
1872
+ gap: var(--space-3xl);
1873
+ }
1874
+
1875
+ /* Full width up to the cap: inside another grid, auto margins alone would shrink it to its content */
1876
+ ._measure-half_169h2_23 {
1877
+ inline-size: 100%;
1878
+ max-inline-size: calc((var(--size-container) - var(--grid-gutter)) / 2);
1879
+ margin-inline: auto;
1880
+ }
1881
+
1882
+ ._measure-wide_169h2_29 {
1883
+ inline-size: 100%;
1884
+ max-inline-size: calc(var(--size-container) * 0.75);
1885
+ margin-inline: auto;
1886
+ }
1887
+ /* TeamMember — a person: portrait, role, name and two lines. The three at the same level,
1888
+ separated by --space-l: no box in between. */
1889
+
1890
+ ._member_1mo29_4 {
1891
+ display: grid;
1892
+ gap: var(--space-l);
1893
+ justify-items: start;
1894
+ }
1895
+
1896
+ ._center_1mo29_10 {
1897
+ justify-items: center;
1898
+ text-align: center;
1899
+ }
1900
+
1901
+ ._portrait_1mo29_15 {
1902
+ width: 100%;
1903
+ }
1904
+
1905
+ ._link_1mo29_19 {
1906
+ color: inherit;
1907
+ text-decoration-line: none;
1908
+ text-decoration-thickness: 1px;
1909
+ text-underline-offset: var(--space-xs);
1910
+ }
1911
+
1912
+ ._link_1mo29_19:hover {
1913
+ text-decoration-line: underline;
1914
+ }
1915
+
1916
+ ._link_1mo29_19:focus-visible {
1917
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
1918
+ outline-offset: var(--focus-ring-offset);
1919
+ }
1920
+ /* Bars — horizontal bars: the label, a bar that grows from the left with its figure at the tip,
1921
+ and an optional detail. Ink for the story, gray for the context, yellow for the one row. */
1922
+
1923
+ ._bars_11g54_4 {
1924
+ display: grid;
1925
+ gap: var(--space-m);
1926
+ text-align: start;
1927
+ }
1928
+
1929
+ ._list_11g54_10 {
1930
+ list-style: none;
1931
+ margin: 0;
1932
+ padding: 0;
1933
+ display: grid;
1934
+ gap: var(--space-m);
1935
+ }
1936
+
1937
+ ._row_11g54_18 {
1938
+ display: grid;
1939
+ grid-template-columns: minmax(0, 1fr) auto;
1940
+ grid-template-areas:
1941
+ 'label detail'
1942
+ 'track track';
1943
+ column-gap: var(--space-l);
1944
+ row-gap: var(--space-xs);
1945
+ align-items: center;
1946
+ transition: opacity 0.35s;
1947
+ }
1948
+
1949
+ @media (min-width: 600px) {
1950
+ ._row_11g54_18 {
1951
+ grid-template-columns: minmax(8rem, 2fr) minmax(0, 5fr) auto;
1952
+ grid-template-areas: 'label track detail';
1953
+ }
1954
+ }
1955
+
1956
+ ._row_11g54_18[data-dimmed] {
1957
+ opacity: 0.3;
1958
+ }
1959
+
1960
+ ._label_11g54_41 {
1961
+ grid-area: label;
1962
+ }
1963
+
1964
+ ._track_11g54_45 {
1965
+ grid-area: track;
1966
+ display: flex;
1967
+ align-items: center;
1968
+ gap: var(--space-s);
1969
+ min-inline-size: 0;
1970
+ }
1971
+
1972
+ ._fill_11g54_53 {
1973
+ flex: none;
1974
+ block-size: var(--space-xl);
1975
+ max-inline-size: calc(100% - 5ch);
1976
+ transition: inline-size 0.9s cubic-bezier(0.22, 1, 0.36, 1);
1977
+ }
1978
+
1979
+ ._tone-ink_11g54_60 {
1980
+ background: var(--color-bg-inverse);
1981
+ }
1982
+
1983
+ ._tone-context_11g54_64 {
1984
+ background: var(--color-text-tertiary);
1985
+ }
1986
+
1987
+ ._tone-accent_11g54_68 {
1988
+ background: var(--color-bg-accent);
1989
+ }
1990
+
1991
+ ._value_11g54_72 {
1992
+ flex: none;
1993
+ white-space: nowrap;
1994
+ font-variant-numeric: tabular-nums;
1995
+ }
1996
+
1997
+ ._detail_11g54_78 {
1998
+ grid-area: detail;
1999
+ white-space: nowrap;
2000
+ font-variant-numeric: tabular-nums;
2001
+ }
2002
+
2003
+ ._head_11g54_84 {
2004
+ }
2005
+
2006
+ @media (prefers-reduced-motion: reduce) {
2007
+ ._fill_11g54_53,
2008
+ ._row_11g54_18 {
2009
+ transition: none;
2010
+ }
2011
+ }
2012
+ /* Blobs — two soft yellow stains that drift behind the page. Decoration: aria-hidden, no pointer. */
2013
+
2014
+ ._blobs_2bbak_3 {
2015
+ position: fixed;
2016
+ inset: 0;
2017
+ z-index: 0;
2018
+ overflow: hidden;
2019
+ pointer-events: none;
2020
+ }
2021
+
2022
+ ._a_2bbak_11,
2023
+ ._b_2bbak_3 {
2024
+ position: absolute;
2025
+ width: 42vw;
2026
+ aspect-ratio: 1;
2027
+ will-change: transform;
2028
+ }
2029
+
2030
+ ._a_2bbak_11 {
2031
+ inset-block-start: -12%;
2032
+ inset-inline-end: -8%;
2033
+ background: radial-gradient(
2034
+ circle at center,
2035
+ color-mix(in srgb, var(--color-bg-accent) 11%, transparent) 0%,
2036
+ color-mix(in srgb, var(--color-bg-accent) 4%, transparent) 42%,
2037
+ transparent 68%
2038
+ );
2039
+ animation: _driftA_2bbak_1 34s ease-in-out infinite alternate;
2040
+ }
2041
+
2042
+ ._b_2bbak_3 {
2043
+ inset-block-end: -16%;
2044
+ inset-inline-start: -12%;
2045
+ background: radial-gradient(
2046
+ circle at center,
2047
+ color-mix(in srgb, var(--color-bg-accent) 7%, transparent) 0%,
2048
+ color-mix(in srgb, var(--color-bg-accent) 3%, transparent) 40%,
2049
+ transparent 66%
2050
+ );
2051
+ animation: _driftB_2bbak_1 47s ease-in-out infinite alternate;
2052
+ }
2053
+
2054
+ @keyframes _driftA_2bbak_1 {
2055
+ from {
2056
+ transform: translateZ(0) scale(1);
2057
+ }
2058
+ to {
2059
+ transform: translate3d(-7%, 9%, 0) scale(1.14);
2060
+ }
2061
+ }
2062
+
2063
+ @keyframes _driftB_2bbak_1 {
2064
+ from {
2065
+ transform: translateZ(0) scale(1.1);
2066
+ }
2067
+ to {
2068
+ transform: translate3d(8%, -7%, 0) scale(0.92);
2069
+ }
2070
+ }
2071
+
2072
+ @media (prefers-reduced-motion: reduce) {
2073
+ ._a_2bbak_11,
2074
+ ._b_2bbak_3 {
2075
+ animation: none;
2076
+ }
2077
+ }
2078
+ /* Slide — a stop of the talk: a Section that fills the screen and centers its content
2079
+ on a 16:9 stage. Every stop weighs the same: same scale, same air, same treatment. */
2080
+
2081
+ ._slide_yly5c_4 {
2082
+ position: relative;
2083
+ padding-block: var(--padding-section-block);
2084
+ display: grid;
2085
+ grid-template-columns: minmax(0, 1fr);
2086
+ align-content: center;
2087
+ }
2088
+
2089
+ ._full_yly5c_12 {
2090
+ min-block-size: 100svh;
2091
+ }
2092
+
2093
+ ._tone-default_yly5c_16 {
2094
+ background: transparent;
2095
+ }
2096
+
2097
+ ._tone-raised_yly5c_20 {
2098
+ background: var(--color-bg-row-active);
2099
+ }
2100
+
2101
+ /* The keyboard navigation does not draw a focus box on the stop */
2102
+ ._slide_yly5c_4:focus,
2103
+ ._slide_yly5c_4:focus-visible {
2104
+ outline: none;
2105
+ }
2106
+
2107
+ /* The column: the content stage, 16:9 at most */
2108
+ ._stage_yly5c_31 {
2109
+ position: relative;
2110
+ width: 100%;
2111
+ max-inline-size: min(calc(var(--size-container) + var(--padding-page) * 2), calc(100svh * 16 / 9));
2112
+ margin-inline: auto;
2113
+ padding-inline: var(--padding-page);
2114
+ box-sizing: border-box;
2115
+ text-align: center;
2116
+ }
2117
+ /* BlockTitle — a numbered block title and, right behind it, its photo. The section has no
2118
+ minimum height so the photo peeks under it; the photo reveals and zooms as you scroll. */
2119
+
2120
+ ._title_40wtv_4 {
2121
+ display: grid;
2122
+ justify-items: center;
2123
+ gap: var(--space-l);
2124
+ }
2125
+
2126
+ ._photo_40wtv_10 {
2127
+ position: relative;
2128
+ overflow: hidden;
2129
+ }
2130
+
2131
+ ._layer_40wtv_15 {
2132
+ scale: 1.18;
2133
+ transform-origin: center;
2134
+ }
2135
+
2136
+ /* Reveal from the bottom and settle the zoom while the photo crosses the screen.
2137
+ Scroll-driven where supported; a static photo elsewhere. */
2138
+ @supports (animation-timeline: view()) {
2139
+ @media (prefers-reduced-motion: no-preference) {
2140
+ ._photo_40wtv_10 {
2141
+ clip-path: inset(100% 0 0 0);
2142
+ animation: _reveal_40wtv_1 linear both;
2143
+ animation-timeline: view();
2144
+ animation-range: entry 0% entry 60%;
2145
+ }
2146
+
2147
+ ._layer_40wtv_15 {
2148
+ animation: _settle_40wtv_1 linear both;
2149
+ animation-timeline: view();
2150
+ animation-range: entry 0% exit 100%;
2151
+ }
2152
+ }
2153
+ }
2154
+
2155
+ @keyframes _reveal_40wtv_1 {
2156
+ from {
2157
+ clip-path: inset(100% 0 0 0);
2158
+ }
2159
+ to {
2160
+ clip-path: inset(0 0 0 0);
2161
+ }
2162
+ }
2163
+
2164
+ @keyframes _settle_40wtv_1 {
2165
+ from {
2166
+ scale: 1.18;
2167
+ translate: 0 -4%;
2168
+ }
2169
+ to {
2170
+ scale: 1;
2171
+ translate: 0 4%;
2172
+ }
2173
+ }
2174
+
2175
+ @media (prefers-reduced-motion: reduce) {
2176
+ ._layer_40wtv_15 {
2177
+ scale: 1;
2178
+ }
2179
+ }
2180
+ /* CardList — the stack of full-width bands. Leaves the column to the window edge so each band's
2181
+ line crosses the whole screen, and closes the stack with the last line. No gap: the line separates. */
2182
+
2183
+ ._list_jhida_4 {
2184
+ width: 100vw;
2185
+ margin-inline: calc(50% - 50vw);
2186
+ border-block-end: 1px solid var(--color-border-default);
2187
+ }
2188
+ /* Closing — the last slide before the footer: a statement sentence, and optionally a body
2189
+ at half the grid and a final line. */
2190
+
2191
+ ._closing_ursam_4 {
2192
+ text-align: center;
2193
+ }
2194
+
2195
+ ._body_ursam_8 {
2196
+ display: grid;
2197
+ gap: var(--space-l);
2198
+ margin: var(--space-2xl) auto 0;
2199
+ justify-items: center;
2200
+ }
2201
+ /* Cover — the first stop: the title in statement, the question, the lead, the event, the client
2202
+ logo and the full-bleed photo. Everything centered; the photo is glued to the bottom. */
2203
+
2204
+ ._cover_weyps_4 {
2205
+ padding-block-start: calc(var(--padding-section-block) + var(--space-xl) * 2 + var(--size-control-xs));
2206
+ padding-block-end: 0;
2207
+ }
2208
+
2209
+ ._block_weyps_9 {
2210
+ display: grid;
2211
+ justify-items: center;
2212
+ gap: var(--space-3xl);
2213
+ }
2214
+
2215
+ ._text_weyps_15 {
2216
+ display: grid;
2217
+ justify-items: center;
2218
+ gap: var(--space-2xl);
2219
+ }
2220
+
2221
+ ._line_weyps_21 {
2222
+ display: block;
2223
+ }
2224
+
2225
+ ._client_weyps_25 {
2226
+ display: flex;
2227
+ justify-content: center;
2228
+ }
2229
+
2230
+ ._client_weyps_25 img {
2231
+ block-size: var(--size-logo-client);
2232
+ inline-size: auto;
2233
+ }
2234
+
2235
+ ._clientDark_weyps_35 {
2236
+ display: none;
2237
+ }
2238
+
2239
+ [data-theme='dark'] ._clientLight_weyps_39 {
2240
+ display: none;
2241
+ }
2242
+
2243
+ [data-theme='dark'] ._clientDark_weyps_35 {
2244
+ display: block;
2245
+ }
2246
+
2247
+ /* The photo bleeds: full viewport width, no radius */
2248
+ ._photo_weyps_48 {
2249
+ width: 100vw;
2250
+ margin-inline: calc(50% - 50vw);
2251
+ overflow: hidden;
2252
+ }
2253
+ /* Cycle — a ring of phases. Idle: thin border, tertiary number. Done: filled in primary.
2254
+ Active: filled in the inverse, 18 % bigger. A mark paints the node red, green or yellow. */
2255
+
2256
+ ._cycle_1bjzo_4 {
2257
+ display: block;
2258
+ inline-size: 100%;
2259
+ max-block-size: calc(100svh - 360px);
2260
+ font-family: var(--font-family-base);
2261
+ }
2262
+
2263
+ ._ring_1bjzo_11 {
2264
+ fill: none;
2265
+ stroke: var(--color-border-default);
2266
+ stroke-width: 3;
2267
+ }
2268
+
2269
+ ._arc_1bjzo_17 {
2270
+ fill: none;
2271
+ stroke: var(--color-text-primary);
2272
+ stroke-width: 3;
2273
+ stroke-linecap: round;
2274
+ transition: stroke-dashoffset 0.8s cubic-bezier(0.22, 1, 0.36, 1);
2275
+ }
2276
+
2277
+ ._node_1bjzo_25 circle {
2278
+ stroke-width: 3;
2279
+ transition:
2280
+ fill 0.3s,
2281
+ stroke 0.3s,
2282
+ transform 0.3s;
2283
+ transform-box: fill-box;
2284
+ transform-origin: center;
2285
+ }
2286
+
2287
+ ._node_1bjzo_25[data-state='idle'] circle {
2288
+ fill: var(--color-bg-default);
2289
+ stroke: var(--color-border-default);
2290
+ }
2291
+
2292
+ ._node_1bjzo_25[data-state='done'] circle {
2293
+ fill: var(--color-text-primary);
2294
+ stroke: var(--color-text-primary);
2295
+ }
2296
+
2297
+ ._node_1bjzo_25[data-state='active'] circle {
2298
+ fill: var(--color-bg-inverse);
2299
+ stroke: var(--color-bg-inverse);
2300
+ transform: scale(1.18);
2301
+ }
2302
+
2303
+ ._node_1bjzo_25[data-mark] circle {
2304
+ transform: scale(1.18);
2305
+ }
2306
+
2307
+ ._node_1bjzo_25[data-mark='red'] circle {
2308
+ fill: var(--540-status-red);
2309
+ stroke: var(--540-status-red);
2310
+ }
2311
+
2312
+ ._node_1bjzo_25[data-mark='green'] circle {
2313
+ fill: var(--540-status-green);
2314
+ stroke: var(--540-status-green);
2315
+ }
2316
+
2317
+ ._node_1bjzo_25[data-mark='yellow'] circle {
2318
+ fill: var(--color-bg-accent);
2319
+ stroke: var(--color-bg-accent);
2320
+ }
2321
+
2322
+ ._number_1bjzo_70 {
2323
+ font-size: 26px;
2324
+ font-weight: var(--540-font-weight-bold);
2325
+ fill: var(--color-text-tertiary);
2326
+ }
2327
+
2328
+ ._node_1bjzo_25[data-state='done'] ._number_1bjzo_70,
2329
+ ._node_1bjzo_25[data-state='active'] ._number_1bjzo_70,
2330
+ ._node_1bjzo_25[data-mark='red'] ._number_1bjzo_70,
2331
+ ._node_1bjzo_25[data-mark='green'] ._number_1bjzo_70 {
2332
+ fill: var(--color-text-inverse);
2333
+ }
2334
+
2335
+ ._node_1bjzo_25[data-mark='yellow'] ._number_1bjzo_70 {
2336
+ fill: var(--540-neutral-950);
2337
+ }
2338
+
2339
+ ._label_1bjzo_87 {
2340
+ font-size: 28px;
2341
+ font-weight: var(--540-font-weight-regular);
2342
+ fill: var(--color-text-tertiary);
2343
+ }
2344
+
2345
+ ._node_1bjzo_25:not([data-state='idle']) ._label_1bjzo_87,
2346
+ ._node_1bjzo_25[data-mark] ._label_1bjzo_87 {
2347
+ fill: var(--color-text-primary);
2348
+ font-weight: var(--540-font-weight-bold);
2349
+ }
2350
+
2351
+ @media (prefers-reduced-motion: reduce) {
2352
+ ._arc_1bjzo_17,
2353
+ ._node_1bjzo_25 circle {
2354
+ transition: none;
2355
+ }
2356
+ }
2357
+ /* DeckFooter — the last stop of a talk: a full screen with the halo rising from the bottom,
2358
+ the logo, the tagline, the networks, the thanks and the signature, all centered. */
2359
+
2360
+ ._pie_m97tq_4 {
2361
+ position: relative;
2362
+ min-block-size: 100svh;
2363
+ display: grid;
2364
+ align-content: center;
2365
+ overflow: hidden;
2366
+ background: var(--color-bg-default);
2367
+ }
2368
+
2369
+ ._halo_m97tq_13 {
2370
+ position: absolute;
2371
+ inset-block-end: 0;
2372
+ inset-inline-start: 50%;
2373
+ width: 120vw;
2374
+ aspect-ratio: 1;
2375
+ transform: translate(-50%, 50%);
2376
+ pointer-events: none;
2377
+ background: var(--gradient-halo);
2378
+ }
2379
+
2380
+ ._column_m97tq_24 {
2381
+ position: relative;
2382
+ max-width: var(--size-container);
2383
+ margin-inline: auto;
2384
+ padding-inline: var(--padding-page);
2385
+ box-sizing: content-box;
2386
+ }
2387
+
2388
+ ._footer_m97tq_32 {
2389
+ display: grid;
2390
+ gap: var(--space-3xl);
2391
+ justify-items: center;
2392
+ text-align: center;
2393
+ }
2394
+
2395
+ ._brand_m97tq_39 {
2396
+ display: grid;
2397
+ gap: var(--space-l);
2398
+ justify-items: center;
2399
+ }
2400
+
2401
+ ._home_m97tq_45 {
2402
+ display: inline-flex;
2403
+ color: inherit;
2404
+ }
2405
+
2406
+ ._home_m97tq_45:focus-visible {
2407
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
2408
+ outline-offset: var(--focus-ring-offset);
2409
+ }
2410
+
2411
+ ._tagline_m97tq_55 {
2412
+ max-width: 38ch;
2413
+ }
2414
+
2415
+ ._networks_m97tq_59 {
2416
+ display: flex;
2417
+ justify-content: center;
2418
+ gap: var(--space-m);
2419
+ margin: 0;
2420
+ padding: 0;
2421
+ list-style: none;
2422
+ }
2423
+
2424
+ ._network_m97tq_59 {
2425
+ display: inline-flex;
2426
+ align-items: center;
2427
+ justify-content: center;
2428
+ inline-size: var(--size-control-xs);
2429
+ block-size: var(--size-control-xs);
2430
+ color: var(--color-text-primary);
2431
+ }
2432
+
2433
+ ._network_m97tq_59:hover {
2434
+ color: var(--color-text-accent-inverse);
2435
+ }
2436
+
2437
+ ._network_m97tq_59:focus-visible {
2438
+ outline: var(--focus-ring-width) solid var(--focus-ring-color);
2439
+ outline-offset: var(--focus-ring-offset);
2440
+ }
2441
+
2442
+ ._closing_m97tq_86 {
2443
+ padding-top: var(--space-xl);
2444
+ }
2445
+ /* Deck — the frame of a talk: blobs behind, the fixed top bar that hides while navigating,
2446
+ the stops, the side index and the footer as the last stop. */
2447
+
2448
+ ._deck_1rkwo_4 {
2449
+ position: relative;
2450
+ min-height: 100svh;
2451
+ background: var(--color-bg-default);
2452
+ color: var(--color-text-primary);
2453
+ font-family: var(--font-family-base);
2454
+ }
2455
+
2456
+ /* ---- Top bar: fixed, over everything; hides when navigating, comes back near the top edge ---- */
2457
+ ._bar_1rkwo_13 {
2458
+ position: fixed;
2459
+ inset-block-start: 0;
2460
+ inset-inline: 0;
2461
+ z-index: 2;
2462
+ width: 100%;
2463
+ background: var(--color-bg-default);
2464
+ transition:
2465
+ transform 0.45s ease,
2466
+ opacity 0.45s ease;
2467
+ }
2468
+
2469
+ @supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)) {
2470
+ ._bar_1rkwo_13 {
2471
+ background: var(--color-bg-nav);
2472
+ -webkit-backdrop-filter: var(--filter-nav);
2473
+ backdrop-filter: var(--filter-nav);
2474
+ }
2475
+ }
2476
+
2477
+ ._bar_1rkwo_13[data-hidden] {
2478
+ transform: translateY(-100%);
2479
+ opacity: 0;
2480
+ pointer-events: none;
2481
+ }
2482
+
2483
+ ._row_1rkwo_39 {
2484
+ display: flex;
2485
+ align-items: center;
2486
+ gap: var(--space-l);
2487
+ max-width: var(--size-container);
2488
+ margin-inline: auto;
2489
+ padding-inline: var(--padding-page);
2490
+ box-sizing: content-box;
2491
+ }
2492
+
2493
+ ._narrow_1rkwo_49 {
2494
+ display: block;
2495
+ flex: 1;
2496
+ }
2497
+
2498
+ ._wide_1rkwo_54 {
2499
+ display: none;
2500
+ }
2501
+
2502
+ @media (min-width: 1024px) {
2503
+ ._narrow_1rkwo_49 {
2504
+ display: none;
2505
+ }
2506
+
2507
+ ._wide_1rkwo_54 {
2508
+ display: block;
2509
+ flex: 1;
2510
+ }
2511
+ }
2512
+
2513
+ /* ---- Stops ---- */
2514
+ ._main_1rkwo_70 {
2515
+ position: relative;
2516
+ z-index: 1;
2517
+ }
2518
+
2519
+ /* ---- Side index: stuck to the right edge, visible once past the cover ---- */
2520
+ ._index_1rkwo_76 {
2521
+ position: fixed;
2522
+ inset-inline-end: 0;
2523
+ inset-block-start: 50%;
2524
+ z-index: 5;
2525
+ transform: translateY(-50%);
2526
+ padding-inline-end: var(--padding-page);
2527
+ opacity: 0;
2528
+ visibility: hidden;
2529
+ transition:
2530
+ opacity 0.32s ease,
2531
+ visibility 0.32s;
2532
+ }
2533
+
2534
+ ._index_1rkwo_76[data-visible] {
2535
+ opacity: 1;
2536
+ visibility: visible;
2537
+ }
2538
+
2539
+ @media (max-width: 900px) {
2540
+ ._index_1rkwo_76 {
2541
+ display: none;
2542
+ }
2543
+ }
2544
+
2545
+ @media (prefers-reduced-motion: reduce) {
2546
+ ._bar_1rkwo_13,
2547
+ ._index_1rkwo_76 {
2548
+ transition: none;
2549
+ }
2550
+ }
2551
+ /* Flow — chained steps: pills separated by 48 px with an arrow centered in the gap,
2552
+ never touching a pill. A column on narrow screens, a row from 600 px. */
2553
+
2554
+ ._flow_1fjzk_4 {
2555
+ display: flex;
2556
+ flex-direction: column;
2557
+ align-items: center;
2558
+ gap: var(--space-3xl);
2559
+ margin: var(--space-3xl) 0 0;
2560
+ padding: 0;
2561
+ list-style: none;
2562
+ }
2563
+
2564
+ ._step_1fjzk_14 {
2565
+ position: relative;
2566
+ padding: var(--space-m) var(--space-xl);
2567
+ border: 1px solid var(--color-border-default);
2568
+ border-radius: var(--radius-pill);
2569
+ text-align: center;
2570
+ }
2571
+
2572
+ ._highlighted_1fjzk_22 {
2573
+ border-color: transparent;
2574
+ background: var(--color-bg-inverse);
2575
+ }
2576
+
2577
+ ._highlighted_1fjzk_22 ._label_1fjzk_27 {
2578
+ color: var(--color-text-inverse);
2579
+ }
2580
+
2581
+ /* The arrow: "↓" in the column, centered in the 48 px gap above the pill */
2582
+ ._step_1fjzk_14 + ._step_1fjzk_14::before {
2583
+ content: '↓';
2584
+ position: absolute;
2585
+ inset-block-end: 100%;
2586
+ inset-inline-start: 50%;
2587
+ transform: translate(-50%, calc(-1 * var(--space-3xl) / 2 + 50%));
2588
+ color: var(--color-text-secondary);
2589
+ font-family: var(--font-family-base);
2590
+ font-size: var(--text-body-m-size);
2591
+ line-height: 1;
2592
+ }
2593
+
2594
+ @media (min-width: 600px) {
2595
+ ._flow_1fjzk_4 {
2596
+ flex-direction: row;
2597
+ flex-wrap: wrap;
2598
+ justify-content: center;
2599
+ }
2600
+
2601
+ /* "→" in the row, centered in the gap to the left of the pill */
2602
+ ._step_1fjzk_14 + ._step_1fjzk_14::before {
2603
+ content: '→';
2604
+ inset-block-end: auto;
2605
+ inset-block-start: 50%;
2606
+ inset-inline-start: auto;
2607
+ inset-inline-end: 100%;
2608
+ transform: translate(calc(-1 * var(--space-3xl) / 2 + 50%), -50%);
2609
+ }
2610
+ }
2611
+ /* Form — places the fields with 24 px between them and puts the submit at the end of the row
2612
+ (or centered, in a talk). */
2613
+
2614
+ ._form_du2ma_4 {
2615
+ display: grid;
2616
+ gap: var(--space-xl);
2617
+ }
2618
+
2619
+ ._fields_du2ma_9 {
2620
+ display: grid;
2621
+ gap: var(--space-xl);
2622
+ }
2623
+
2624
+ ._submit_du2ma_14 {
2625
+ display: flex;
2626
+ justify-content: flex-end;
2627
+ }
2628
+
2629
+ ._center_du2ma_19 {
2630
+ justify-content: center;
2631
+ }
2632
+ /* Heartbeat — a red heart that beats, with a wave expanding around it. Pure decoration. */
2633
+
2634
+ ._heartbeat_13f55_3 {
2635
+ position: relative;
2636
+ display: flex;
2637
+ align-items: center;
2638
+ justify-content: center;
2639
+ inline-size: 200px;
2640
+ block-size: 200px;
2641
+ margin: var(--space-2xl) auto 0;
2642
+ }
2643
+
2644
+ ._wave_13f55_13 {
2645
+ position: absolute;
2646
+ inline-size: 144px;
2647
+ block-size: 144px;
2648
+ border-radius: var(--radius-pill);
2649
+ border: 1px solid var(--540-status-red);
2650
+ animation: _wave_13f55_13 1.6s ease-out infinite;
2651
+ }
2652
+
2653
+ ._heart_13f55_3 {
2654
+ position: relative;
2655
+ inline-size: 116px;
2656
+ block-size: 116px;
2657
+ fill: none;
2658
+ stroke: var(--540-status-red);
2659
+ stroke-width: 2.4;
2660
+ stroke-linejoin: round;
2661
+ stroke-linecap: round;
2662
+ animation: _beat_13f55_1 1.6s ease-out infinite;
2663
+ }
2664
+
2665
+ @keyframes _wave_13f55_13 {
2666
+ 0% {
2667
+ transform: scale(0.86);
2668
+ opacity: 0.35;
2669
+ }
2670
+ 45%,
2671
+ 100% {
2672
+ transform: scale(1.18);
2673
+ opacity: 0;
2674
+ }
2675
+ }
2676
+
2677
+ @keyframes _beat_13f55_1 {
2678
+ 0% {
2679
+ transform: scale(1);
2680
+ }
2681
+ 9% {
2682
+ transform: scale(1.14);
2683
+ }
2684
+ 20% {
2685
+ transform: scale(1.03);
2686
+ }
2687
+ 29% {
2688
+ transform: scale(1.09);
2689
+ }
2690
+ 42%,
2691
+ 100% {
2692
+ transform: scale(1);
2693
+ }
2694
+ }
2695
+
2696
+ @media (prefers-reduced-motion: reduce) {
2697
+ ._wave_13f55_13,
2698
+ ._heart_13f55_3 {
2699
+ animation: none;
2700
+ }
2701
+ }
2702
+ /* LogoCarousel — the strip of client logos. Equal slots, an odd number of them (3 / 5 / 7) so
2703
+ there is always a center: the middle one at full ink and 8 % bigger, the rest even and dimmed. */
2704
+
2705
+ ._carousel_w1h3y_4 {
2706
+ --slots: 3;
2707
+ overflow: hidden;
2708
+ }
2709
+
2710
+ @media (min-width: 600px) {
2711
+ ._carousel_w1h3y_4 {
2712
+ --slots: 5;
2713
+ }
2714
+ }
2715
+
2716
+ @media (min-width: 1024px) {
2717
+ ._carousel_w1h3y_4 {
2718
+ --slots: 7;
2719
+ }
2720
+ }
2721
+
2722
+ ._track_w1h3y_21 {
2723
+ display: flex;
2724
+ align-items: center;
2725
+ transform: translateX(calc(-100% / var(--slots) * var(--offset, 0)));
2726
+ transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
2727
+ }
2728
+
2729
+ ._track_w1h3y_21[data-jump] {
2730
+ transition: none;
2731
+ }
2732
+
2733
+ ._slot_w1h3y_32 {
2734
+ flex: 0 0 calc(100% / var(--slots));
2735
+ display: flex;
2736
+ align-items: center;
2737
+ justify-content: center;
2738
+ block-size: calc(var(--size-logo-client) * 1.08);
2739
+ padding-inline: var(--space-s);
2740
+ }
2741
+
2742
+ /* The logo fits inside the same box for all, never cropped, evened by the theme's filter */
2743
+ ._logo_w1h3y_42 {
2744
+ display: block;
2745
+ max-inline-size: 100%;
2746
+ block-size: var(--size-logo-client);
2747
+ object-fit: contain;
2748
+ filter: var(--filter-logo-client);
2749
+ scale: 1;
2750
+ transition:
2751
+ scale 0.6s cubic-bezier(0.4, 0, 0.2, 1),
2752
+ filter 0.6s ease;
2753
+ }
2754
+
2755
+ ._slot_w1h3y_32[data-pos='1'] ._logo_w1h3y_42 {
2756
+ filter: var(--filter-logo-client-center);
2757
+ scale: 1.08;
2758
+ }
2759
+
2760
+ @media (min-width: 600px) {
2761
+ ._slot_w1h3y_32[data-pos='1'] ._logo_w1h3y_42 {
2762
+ filter: var(--filter-logo-client);
2763
+ scale: 1;
2764
+ }
2765
+
2766
+ ._slot_w1h3y_32[data-pos='2'] ._logo_w1h3y_42 {
2767
+ filter: var(--filter-logo-client-center);
2768
+ scale: 1.08;
2769
+ }
2770
+ }
2771
+
2772
+ @media (min-width: 1024px) {
2773
+ ._slot_w1h3y_32[data-pos='2'] ._logo_w1h3y_42 {
2774
+ filter: var(--filter-logo-client);
2775
+ scale: 1;
2776
+ }
2777
+
2778
+ ._slot_w1h3y_32[data-pos='3'] ._logo_w1h3y_42 {
2779
+ filter: var(--filter-logo-client-center);
2780
+ scale: 1.08;
2781
+ }
2782
+ }
2783
+
2784
+ @media (prefers-reduced-motion: reduce) {
2785
+ ._track_w1h3y_21,
2786
+ ._logo_w1h3y_42 {
2787
+ transition: none;
2788
+ }
2789
+ }
2790
+ /* Marquee — a strip of short pieces that scrolls endlessly between two hairlines, edge to edge. */
2791
+
2792
+ ._marquee_19w0s_3 {
2793
+ position: relative;
2794
+ inline-size: 100vw;
2795
+ margin-inline: calc(50% - 50vw);
2796
+ overflow: hidden;
2797
+ padding-block: var(--space-xl);
2798
+ border-block: 1px solid var(--color-border-default);
2799
+ }
2800
+
2801
+ ._strip_19w0s_12 {
2802
+ display: flex;
2803
+ width: max-content;
2804
+ animation: _scroll_19w0s_1 var(--marquee-duration, 40s) linear infinite;
2805
+ }
2806
+
2807
+ ._round_19w0s_18 {
2808
+ display: flex;
2809
+ flex: none;
2810
+ }
2811
+
2812
+ ._piece_19w0s_23 {
2813
+ white-space: nowrap;
2814
+ padding-inline-end: var(--space-xl);
2815
+ }
2816
+
2817
+ ._marquee_19w0s_3:hover ._strip_19w0s_12 {
2818
+ animation-play-state: paused;
2819
+ }
2820
+
2821
+ @keyframes _scroll_19w0s_1 {
2822
+ from {
2823
+ transform: translateZ(0);
2824
+ }
2825
+ to {
2826
+ transform: translate3d(-50%, 0, 0);
2827
+ }
2828
+ }
2829
+
2830
+ @media (prefers-reduced-motion: reduce) {
2831
+ ._strip_19w0s_12 {
2832
+ animation: none;
2833
+ }
2834
+ }
2835
+ /* ProgressBar — a 2 px track with a fill that grows from the left, a dot at each end and,
2836
+ optionally, milestone dots that light up as they are reached. */
2837
+
2838
+ ._bar_uakc4_4 {
2839
+ display: grid;
2840
+ gap: var(--space-l);
2841
+ margin-block-start: var(--space-2xl);
2842
+ }
2843
+
2844
+ ._track_uakc4_10 {
2845
+ position: relative;
2846
+ block-size: 2px;
2847
+ background: var(--color-border-default);
2848
+ margin-block: var(--space-s);
2849
+ }
2850
+
2851
+ ._fill_uakc4_17 {
2852
+ position: absolute;
2853
+ inset: 0;
2854
+ background: var(--color-border-strong);
2855
+ transform-origin: left center;
2856
+ transition: transform 1.1s cubic-bezier(0.22, 1, 0.36, 1);
2857
+ }
2858
+
2859
+ ._dot_uakc4_25 {
2860
+ position: absolute;
2861
+ top: 50%;
2862
+ inline-size: 16px;
2863
+ block-size: 16px;
2864
+ border-radius: var(--radius-pill);
2865
+ background: var(--color-text-primary);
2866
+ transform: translate(-50%, -50%);
2867
+ }
2868
+
2869
+ ._milestone_uakc4_35 {
2870
+ background: var(--color-border-default);
2871
+ transition: background 0.3s;
2872
+ }
2873
+
2874
+ ._milestone_uakc4_35[data-on] {
2875
+ background: var(--color-text-primary);
2876
+ }
2877
+
2878
+ ._ends_uakc4_44 {
2879
+ display: flex;
2880
+ justify-content: space-between;
2881
+ }
2882
+
2883
+ @media (prefers-reduced-motion: reduce) {
2884
+ ._fill_uakc4_17,
2885
+ ._milestone_uakc4_35 {
2886
+ transition: none;
2887
+ }
2888
+ }
2889
+ /* Punchline — the sentence that closes a block: statement at three quarters, under a hairline,
2890
+ with an optional transition to what comes next. */
2891
+
2892
+ ._punchline_anwe8_4 {
2893
+ padding-block: var(--space-3xl);
2894
+ border-block-start: 1px solid var(--color-border-default);
2895
+ text-align: center;
2896
+ }
2897
+
2898
+ ._inside_anwe8_10 {
2899
+ margin-block-start: var(--space-3xl);
2900
+ }
2901
+
2902
+ ._transition_anwe8_14 {
2903
+ margin: var(--space-xl) auto 0;
2904
+ }
2905
+ /* Quote — a sentence someone said, in statement, with its attribution under it. */
2906
+
2907
+ ._figure_1kqx2_3 {
2908
+ display: grid;
2909
+ justify-items: center;
2910
+ gap: var(--space-xl);
2911
+ margin: 0;
2912
+ text-align: center;
2913
+ }
2914
+ /* Schema — the drawing vocabulary of the talks: boxes, lines, arrowheads and six text sizes,
2915
+ all in the neutral inks. The accent only fills pills. */
2916
+
2917
+ ._frame_qkt9g_4 {
2918
+ margin-block-start: var(--space-3xl);
2919
+ inline-size: 100vw;
2920
+ margin-inline: calc(50% - 50vw);
2921
+ padding-inline: var(--padding-page);
2922
+ box-sizing: border-box;
2923
+ overflow-x: auto;
2924
+ overscroll-behavior-x: contain;
2925
+ }
2926
+
2927
+ ._caption_qkt9g_14 {
2928
+ margin-block-start: var(--space-3xl);
2929
+ margin-inline: auto;
2930
+ max-inline-size: calc((var(--size-container) - var(--grid-gutter)) / 2);
2931
+ }
2932
+
2933
+ ._schema_qkt9g_20 {
2934
+ display: block;
2935
+ inline-size: min(100%, 1800px, calc((100svh - 430px) * 3.122));
2936
+ min-inline-size: 1200px;
2937
+ block-size: auto;
2938
+ margin-inline: auto;
2939
+ font-family: var(--font-family-base);
2940
+ }
2941
+
2942
+ ._layer_qkt9g_29 {
2943
+ opacity: 1;
2944
+ }
2945
+
2946
+ ._guided_qkt9g_33 ._layer_qkt9g_29 {
2947
+ opacity: 0.18;
2948
+ transition: opacity 0.55s ease;
2949
+ }
2950
+
2951
+ ._guided_qkt9g_33 ._layer_qkt9g_29[data-on] {
2952
+ opacity: 1;
2953
+ }
2954
+
2955
+ ._voice_qkt9g_42 {
2956
+ position: absolute;
2957
+ inline-size: 1px;
2958
+ block-size: 1px;
2959
+ overflow: hidden;
2960
+ clip-path: inset(50%);
2961
+ white-space: nowrap;
2962
+ }
2963
+
2964
+ /* ---- Shapes ---- */
2965
+ ._node_qkt9g_52 { fill: none; stroke: var(--color-border-strong); stroke-width: 1.15; }
2966
+ ._highlighted_qkt9g_53 { fill: none; stroke: var(--color-text-primary); stroke-width: 1.6; }
2967
+ ._note_qkt9g_54 { fill: none; stroke: var(--color-border-default); stroke-width: 1.2; stroke-dasharray: 11 7; }
2968
+ ._pill_qkt9g_55 { fill: var(--color-bg-accent); }
2969
+ ._inverse_qkt9g_56 { fill: var(--color-bg-inverse); }
2970
+ ._dot_qkt9g_57 { fill: var(--color-text-primary); }
2971
+ ._arc_qkt9g_58 { fill: none; stroke: var(--color-border-strong); stroke-width: 1.6; }
2972
+ ._icon_qkt9g_59 { fill: none; stroke: var(--color-text-primary); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
2973
+ ._iconBox_qkt9g_60 { fill: none; stroke: var(--color-border-strong); stroke-width: 1.15; }
2974
+ ._iconFill_qkt9g_61 { fill: var(--color-text-primary); }
2975
+
2976
+ /* ---- Lines ---- */
2977
+ ._line_qkt9g_64 { fill: none; stroke: var(--color-text-secondary); stroke-width: 1.15; }
2978
+ ._lineStrong_qkt9g_65 { fill: none; stroke: var(--color-text-primary); stroke-width: 1.4; }
2979
+ ._lineDashed_qkt9g_66 { fill: none; stroke: var(--color-text-tertiary); stroke-width: 1.2; stroke-dasharray: 11 7; }
2980
+ ._arrowhead_qkt9g_67 { fill: none; stroke: var(--color-text-secondary); stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
2981
+ ._arrowheadFill_qkt9g_68 { fill: var(--color-text-primary); }
2982
+
2983
+ /* ---- Series (charts) ---- */
2984
+ ._series_qkt9g_71 { fill: none; stroke: var(--color-text-secondary); stroke-width: 3.5; stroke-linejoin: round; stroke-linecap: round; }
2985
+ ._seriesDashed_qkt9g_72 { fill: none; stroke: var(--color-text-tertiary); stroke-width: 2.5; stroke-dasharray: 12 9; stroke-linejoin: round; }
2986
+ ._accent_qkt9g_73 { fill: none; stroke: var(--color-bg-accent); stroke-width: 4; stroke-linejoin: round; stroke-linecap: round; }
2987
+ ._accentThin_qkt9g_74 { fill: none; stroke: var(--color-bg-accent); stroke-width: 2.5; }
2988
+ ._accentDashed_qkt9g_75 { fill: none; stroke: var(--color-bg-accent); stroke-width: 2.5; stroke-dasharray: 14 10; }
2989
+ ._accentDotted_qkt9g_76 { fill: none; stroke: var(--color-bg-accent); stroke-width: 2.5; stroke-dasharray: 3 9; }
2990
+ ._accentDot_qkt9g_76 { fill: var(--color-bg-accent); stroke: var(--color-bg-default); stroke-width: 3; }
2991
+
2992
+ /* ---- Text ---- */
2993
+ ._title_qkt9g_80 { fill: var(--color-text-primary); font-size: 32px; font-weight: var(--540-font-weight-bold); }
2994
+ ._nodeText_qkt9g_81 { fill: var(--color-text-primary); font-size: 26px; font-weight: var(--540-font-weight-bold); }
2995
+ ._nodeSub_qkt9g_82 { fill: var(--color-text-secondary); font-size: 21px; }
2996
+ ._circleText_qkt9g_83 { fill: var(--color-text-primary); font-size: 26px; font-weight: var(--540-font-weight-bold); }
2997
+ ._pillText_qkt9g_84 { fill: var(--540-neutral-950); font-size: 23px; font-weight: var(--540-font-weight-bold); }
2998
+ ._inverseText_qkt9g_85 { fill: var(--color-text-inverse); font-size: 26px; font-weight: var(--540-font-weight-bold); }
2999
+ ._noteText_qkt9g_86 { fill: var(--color-text-secondary); font-size: 24px; }
3000
+ ._label_qkt9g_87 { fill: var(--color-text-tertiary); font-size: 22px; }
3001
+ ._coreTitle_qkt9g_88 { fill: var(--color-text-primary); font-size: 44px; font-weight: var(--540-font-weight-bold); }
3002
+ ._coreSub_qkt9g_89 { fill: var(--color-text-secondary); font-size: 26px; }
3003
+ ._micro_qkt9g_90 { fill: var(--color-text-tertiary); font-size: 19px; font-weight: var(--540-font-weight-bold); letter-spacing: 0.16em; }
3004
+ ._sideText_qkt9g_91 { fill: var(--color-text-tertiary); font-size: 24px; font-weight: var(--540-font-weight-bold); }
3005
+
3006
+ /* Data schemas: text one step bigger */
3007
+ ._data_qkt9g_94 ._label_qkt9g_87 { font-size: 30px; }
3008
+ ._data_qkt9g_94 ._noteText_qkt9g_86 { font-size: 32px; }
3009
+ ._data_qkt9g_94 ._micro_qkt9g_90 { font-size: 26px; }
3010
+ ._data_qkt9g_94 ._sideText_qkt9g_91 { font-size: 32px; }
3011
+ ._data_qkt9g_94 ._pillText_qkt9g_84 { font-size: 32px; }
3012
+ ._data_qkt9g_94 ._nodeText_qkt9g_81,
3013
+ ._data_qkt9g_94 ._inverseText_qkt9g_85 { font-size: 34px; }
3014
+ ._data_qkt9g_94 ._title_qkt9g_80 { font-size: 44px; }
3015
+
3016
+ @media (prefers-reduced-motion: reduce) {
3017
+ ._guided_qkt9g_33 ._layer_qkt9g_29 {
3018
+ transition: none;
3019
+ }
3020
+ }
3021
+ /* Share — a whole as one bar split into its parts, and a legend with each part's percentage. */
3022
+
3023
+ ._share_nsb7q_3 {
3024
+ display: grid;
3025
+ gap: var(--space-m);
3026
+ text-align: start;
3027
+ }
3028
+
3029
+ ._bar_nsb7q_9 {
3030
+ display: flex;
3031
+ gap: 2px;
3032
+ block-size: var(--space-xl);
3033
+ }
3034
+
3035
+ ._segment_nsb7q_15 {
3036
+ flex: none;
3037
+ transition: inline-size 0.9s cubic-bezier(0.22, 1, 0.36, 1);
3038
+ }
3039
+
3040
+ ._tone-ink_nsb7q_20 {
3041
+ background: var(--color-bg-inverse);
3042
+ }
3043
+
3044
+ ._tone-context_nsb7q_24 {
3045
+ background: var(--color-text-tertiary);
3046
+ }
3047
+
3048
+ ._tone-accent_nsb7q_28 {
3049
+ background: var(--color-bg-accent);
3050
+ }
3051
+
3052
+ ._legend_nsb7q_32 {
3053
+ list-style: none;
3054
+ margin: 0;
3055
+ padding: 0;
3056
+ display: flex;
3057
+ flex-wrap: wrap;
3058
+ gap: var(--space-s) var(--space-xl);
3059
+ }
3060
+
3061
+ ._item_nsb7q_41 {
3062
+ display: flex;
3063
+ align-items: center;
3064
+ gap: var(--space-s);
3065
+ }
3066
+
3067
+ ._swatch_nsb7q_47 {
3068
+ flex: none;
3069
+ inline-size: var(--space-m);
3070
+ block-size: var(--space-m);
3071
+ }
3072
+
3073
+ ._percent_nsb7q_53 {
3074
+ font-variant-numeric: tabular-nums;
3075
+ }
3076
+
3077
+ @media (prefers-reduced-motion: reduce) {
3078
+ ._segment_nsb7q_15 {
3079
+ transition: none;
3080
+ }
3081
+ }
3082
+ /* Sheet — a panel that rises from the bottom edge over the stop, 84 % of the window high,
3083
+ with a veil dimming the stop behind. Inside, type drops to the web scale so it all fits. */
3084
+
3085
+ ._veil_kx9ft_4 {
3086
+ position: fixed;
3087
+ inset: 0;
3088
+ z-index: 2;
3089
+ background: var(--color-bg-overlay);
3090
+ opacity: 0;
3091
+ pointer-events: none;
3092
+ transition: opacity 0.45s ease;
3093
+ }
3094
+
3095
+ ._veil_kx9ft_4[data-open] {
3096
+ opacity: 1;
3097
+ }
3098
+
3099
+ ._sheet_kx9ft_18 {
3100
+ position: fixed;
3101
+ inset-inline-start: 50%;
3102
+ inset-block-end: 0;
3103
+ z-index: 3;
3104
+ inline-size: min(calc(100vw - 96px), 1080px);
3105
+ block-size: 84svh;
3106
+ translate: -50% 100%;
3107
+ visibility: hidden;
3108
+ transition:
3109
+ translate 0.55s cubic-bezier(0.22, 1, 0.36, 1),
3110
+ visibility 0s 0.55s;
3111
+ }
3112
+
3113
+ ._sheet_kx9ft_18[data-open] {
3114
+ translate: -50% 0;
3115
+ visibility: visible;
3116
+ transition:
3117
+ translate 0.55s cubic-bezier(0.22, 1, 0.36, 1),
3118
+ visibility 0s;
3119
+ }
3120
+
3121
+ ._panel_kx9ft_40 {
3122
+ box-sizing: border-box;
3123
+ block-size: 100%;
3124
+ display: grid;
3125
+ grid-template-rows: auto auto minmax(0, 1fr);
3126
+ gap: var(--space-l);
3127
+ padding: var(--space-m) var(--space-2xl) var(--space-xl);
3128
+ background: var(--color-bg-surface);
3129
+ border: 1px solid var(--color-border-default);
3130
+ border-block-end: 0;
3131
+ border-radius: var(--radius-default) var(--radius-default) 0 0;
3132
+ overflow: auto;
3133
+ text-align: center;
3134
+ }
3135
+
3136
+ /* The handle */
3137
+ ._panel_kx9ft_40::before {
3138
+ content: '';
3139
+ display: block;
3140
+ inline-size: 40px;
3141
+ block-size: 4px;
3142
+ border-radius: var(--radius-pill);
3143
+ background: var(--color-border-strong);
3144
+ margin-inline: auto;
3145
+ }
3146
+
3147
+ ._header_kx9ft_66 {
3148
+ display: grid;
3149
+ gap: var(--space-s);
3150
+ justify-items: center;
3151
+ }
3152
+
3153
+ ._body_kx9ft_72 {
3154
+ min-block-size: 0;
3155
+ }
3156
+
3157
+ @media (prefers-reduced-motion: reduce) {
3158
+ ._veil_kx9ft_4,
3159
+ ._sheet_kx9ft_18 {
3160
+ transition: none;
3161
+ }
3162
+ }
3163
+ /* Spotlight — the piece holding the center of the window is lit; the rest stays at 14 %. */
3164
+
3165
+ ._spotlight_1p8cr_3 {
3166
+ opacity: 0.14;
3167
+ transition: opacity 0.35s ease;
3168
+ }
3169
+
3170
+ ._spotlight_1p8cr_3[data-on] {
3171
+ opacity: 1;
3172
+ }
3173
+
3174
+ @media (prefers-reduced-motion: reduce) {
3175
+ ._spotlight_1p8cr_3 {
3176
+ opacity: 1;
3177
+ }
3178
+ }
3179
+ /* Statements — the sentences of the journey, stacked, one stop each. The stack keeps its own
3180
+ rhythm: 1.5 statement sizes between sentences, half a screen above the first one. */
3181
+
3182
+ ._section_pa9rm_4 {
3183
+ min-block-size: 0;
3184
+ display: block;
3185
+ padding-block-start: calc(50svh - 68px);
3186
+ }
3187
+
3188
+ ._section_pa9rm_4 > [data-slide-stage] {
3189
+ max-inline-size: none;
3190
+ }
3191
+
3192
+ ._stack_pa9rm_14 {
3193
+ position: relative;
3194
+ margin-inline: calc(50% - 50vw);
3195
+ display: grid;
3196
+ gap: calc(var(--text-statement-size) * 1.5);
3197
+ }
3198
+
3199
+ ._stop_pa9rm_21 {
3200
+ display: grid;
3201
+ justify-items: center;
3202
+ padding-inline: var(--padding-page);
3203
+ }
3204
+
3205
+ /* Lit at the center, told ones at 14 %, the ones to come hidden (as in the talks) */
3206
+ ._stop_pa9rm_21 {
3207
+ transition: opacity 0.35s ease;
3208
+ }
3209
+
3210
+ ._stop_pa9rm_21[data-state='before'] {
3211
+ opacity: 0.14;
3212
+ }
3213
+
3214
+ ._stop_pa9rm_21[data-state='after'] {
3215
+ opacity: 0;
3216
+ }
3217
+
3218
+ @media (prefers-reduced-motion: reduce) {
3219
+ ._stop_pa9rm_21 {
3220
+ transition: none;
3221
+ }
3222
+ }
3223
+ /* Steps — a block the arrow walks through: what is not due yet is not seen, and enters like the
3224
+ original Reveal (opacity and 12 px). */
3225
+
3226
+ ._step_16316_4 {
3227
+ transition:
3228
+ opacity 0.4s cubic-bezier(0.22, 1, 0.36, 1),
3229
+ transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
3230
+ }
3231
+
3232
+ ._steps_16316_10[data-guided] ._step_16316_4:not([data-on]) {
3233
+ opacity: 0;
3234
+ transform: translateY(12px);
3235
+ pointer-events: none;
3236
+ }
3237
+
3238
+ ._steps_16316_10[data-guided] ._step_16316_4._collapse_16316_16:not([data-on]) {
3239
+ display: none;
3240
+ }
3241
+
3242
+ /* A Sheet brings its own entrance and exit. Its Step must not move or fade: a transform on an
3243
+ ancestor makes position: fixed follow the Step instead of the window, and the sheet and its
3244
+ veil would show stuck to the Step while it animates. Any depth: a Stack, a slot or an island
3245
+ between them still leaves the Sheet inside the Step's transform. */
3246
+ ._steps_16316_10[data-guided] ._step_16316_4:has([data-sheet]) {
3247
+ opacity: 1;
3248
+ transform: none;
3249
+ transition: none;
3250
+ }
3251
+
3252
+ /* Several versions of a block in the same cell: only the one of the step shows */
3253
+ ._stack_16316_31 {
3254
+ display: grid;
3255
+ justify-items: center;
3256
+ }
3257
+
3258
+ ._stack_16316_31 > ._step_16316_4 {
3259
+ grid-area: 1 / 1;
3260
+ inline-size: 100%;
3261
+ }
3262
+
3263
+ @media (prefers-reduced-motion: reduce) {
3264
+ ._step_16316_4 {
3265
+ transition: none;
3266
+ }
3267
+ }
3268
+ /* Story — a story or an objection: title and paragraphs at half the grid, centered, on a raised band. */
3269
+
3270
+ ._story_1wbhn_3 {
3271
+ display: grid;
3272
+ gap: var(--space-xl);
3273
+ justify-items: center;
3274
+ max-width: calc((var(--size-container) - var(--grid-gutter)) / 2);
3275
+ margin-inline: auto;
3276
+ }
3277
+ /* Timeline — a vertical axis at half the grid: a dot and a title per step, joined by a 2 px line.
3278
+ Each step is a stop. The line draws and the dot pops as the step enters the screen. */
3279
+
3280
+ ._list_9azf2_4 {
3281
+ list-style: none;
3282
+ margin: var(--space-3xl) auto 0;
3283
+ padding: 0;
3284
+ max-width: calc((var(--size-container) - var(--grid-gutter)) / 2);
3285
+ }
3286
+
3287
+ ._step_9azf2_11 {
3288
+ position: relative;
3289
+ display: grid;
3290
+ justify-items: center;
3291
+ gap: var(--space-2xl);
3292
+ padding-block-start: calc(var(--space-xl) * 3 + var(--space-l) * 2);
3293
+ }
3294
+
3295
+ ._step_9azf2_11:first-child {
3296
+ padding-block-start: 0;
3297
+ }
3298
+
3299
+ /* The axis between steps: a 2 px line with 16 px of air at each end, so it never touches the text */
3300
+ ._step_9azf2_11::before {
3301
+ content: '';
3302
+ position: absolute;
3303
+ inset-block-start: var(--space-l);
3304
+ inset-inline-start: 50%;
3305
+ inline-size: 2px;
3306
+ block-size: calc(var(--space-xl) * 3);
3307
+ transform: translateX(-50%);
3308
+ transform-origin: 50% 0;
3309
+ background: var(--color-border-strong);
3310
+ }
3311
+
3312
+ ._step_9azf2_11:first-child::before {
3313
+ content: none;
3314
+ }
3315
+
3316
+ ._dot_9azf2_40 {
3317
+ inline-size: 16px;
3318
+ block-size: 16px;
3319
+ border-radius: var(--radius-pill);
3320
+ background: var(--color-text-primary);
3321
+ }
3322
+
3323
+ /* A warning step: the dot goes red; the text stays neutral */
3324
+ ._alert_9azf2_48 ._dot_9azf2_40 {
3325
+ background: var(--540-status-red);
3326
+ }
3327
+
3328
+ ._text_9azf2_52 {
3329
+ display: grid;
3330
+ gap: var(--space-s);
3331
+ justify-items: center;
3332
+ }
3333
+
3334
+ /* Lit at the center, told ones at 14 %, the ones to come hidden (as in the talks) */
3335
+ ._step_9azf2_11 {
3336
+ transition: opacity 0.35s ease;
3337
+ }
3338
+
3339
+ ._step_9azf2_11[data-state='before'] {
3340
+ opacity: 0.14;
3341
+ }
3342
+
3343
+ ._step_9azf2_11[data-state='after'] {
3344
+ opacity: 0;
3345
+ }
3346
+
3347
+ @media (prefers-reduced-motion: reduce) {
3348
+ ._step_9azf2_11 {
3349
+ transition: none;
3350
+ }
3351
+ }
3352
+
3353
+ @supports (animation-timeline: view()) {
3354
+ @media (prefers-reduced-motion: no-preference) {
3355
+ ._step_9azf2_11::before {
3356
+ scale: 1 0;
3357
+ animation: _draw_9azf2_1 linear both;
3358
+ animation-timeline: view();
3359
+ animation-range: contain 0% contain 40%;
3360
+ }
3361
+
3362
+ ._dot_9azf2_40 {
3363
+ scale: 0;
3364
+ animation: _pop_9azf2_1 linear both;
3365
+ animation-timeline: view();
3366
+ animation-range: contain 8% contain 24%;
3367
+ }
3368
+ }
3369
+ }
3370
+
3371
+ @keyframes _draw_9azf2_1 {
3372
+ from {
3373
+ scale: 1 0;
3374
+ }
3375
+ to {
3376
+ scale: 1 1;
3377
+ }
3378
+ }
3379
+
3380
+ @keyframes _pop_9azf2_1 {
3381
+ from {
3382
+ scale: 0;
3383
+ }
3384
+ to {
3385
+ scale: 1;
3386
+ }
3387
+ }
3388
+ /* Tools — a grid of tools: logo normalised by ink area, name and an optional verdict, centered. */
3389
+
3390
+ ._grid_e43sg_3 {
3391
+ display: grid;
3392
+ grid-template-columns: repeat(var(--grid-columns), 1fr);
3393
+ column-gap: var(--grid-gutter);
3394
+ row-gap: var(--space-3xl);
3395
+ margin-block-start: var(--space-2xl);
3396
+ list-style: none;
3397
+ padding: 0;
3398
+ }
3399
+
3400
+ ._item_e43sg_13 {
3401
+ grid-column: span 12;
3402
+ }
3403
+
3404
+ @media (min-width: 600px) {
3405
+ ._item_e43sg_13 {
3406
+ grid-column: span 6;
3407
+ }
3408
+ }
3409
+
3410
+ @media (min-width: 1024px) {
3411
+ ._cols-4_e43sg_24 ._item_e43sg_13 {
3412
+ grid-column: span 3;
3413
+ }
3414
+
3415
+ ._cols-3_e43sg_28 ._item_e43sg_13 {
3416
+ grid-column: span 4;
3417
+ }
3418
+ }
3419
+
3420
+ ._tool_e43sg_33 {
3421
+ display: grid;
3422
+ justify-items: center;
3423
+ gap: var(--space-s);
3424
+ text-align: center;
3425
+ max-inline-size: 38ch;
3426
+ margin-inline: auto;
3427
+ }
3428
+
3429
+ /* A common optical box; the per-brand correction comes from measuring each file's ink */
3430
+ ._logo_e43sg_43 {
3431
+ block-size: 52px;
3432
+ inline-size: 52px;
3433
+ object-fit: contain;
3434
+ margin-block-end: var(--space-s);
3435
+ scale: var(--tool-scale, 1);
3436
+ }
3437
+
3438
+ [data-theme='dark'] ._invert_e43sg_51 {
3439
+ filter: invert(1);
3440
+ }
3441
+ /*$vite$:1*/