@hraness/design-kit 0.31.1

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 (345) hide show
  1. package/ARTICLE_COPY.md +208 -0
  2. package/HERO_FIELDS.md +55 -0
  3. package/ICONS.md +56 -0
  4. package/LANTERN_MATERIAL.md +60 -0
  5. package/LICENSE +21 -0
  6. package/MARKETING_COPY.md +49 -0
  7. package/MARKETING_PRESET.md +108 -0
  8. package/PALETTES.md +90 -0
  9. package/PAPER_THEME.md +128 -0
  10. package/README.md +745 -0
  11. package/STATUS_PAGES.md +67 -0
  12. package/STYLE.md +245 -0
  13. package/WRITING.md +72 -0
  14. package/dist/browser/index.js +2345 -0
  15. package/dist/chunk-44djxk16.js +6872 -0
  16. package/dist/chunk-5gtx3pza.js +9 -0
  17. package/dist/chunk-77391vmq.js +454 -0
  18. package/dist/chunk-7b1586eb.js +1209 -0
  19. package/dist/chunk-8834fh4n.js +6 -0
  20. package/dist/chunk-9t8xyqte.js +870 -0
  21. package/dist/chunk-cejpzyfh.js +446 -0
  22. package/dist/chunk-eh71jz57.js +429 -0
  23. package/dist/chunk-evb02bc1.js +516 -0
  24. package/dist/chunk-h4k7yv6x.js +368 -0
  25. package/dist/chunk-he8eznb1.js +760 -0
  26. package/dist/chunk-mr1vdcjq.js +404 -0
  27. package/dist/chunk-wzvdn8ey.js +116 -0
  28. package/dist/fonts/nebula-sans/social-fonts.generated.js +53 -0
  29. package/dist/icons.js +48 -0
  30. package/dist/index.js +237 -0
  31. package/dist/launch.js +41 -0
  32. package/dist/mockups/client.js +422 -0
  33. package/dist/mockups/index.js +1850 -0
  34. package/dist/portfolio.js +1549 -0
  35. package/dist/provider-marks.js +19 -0
  36. package/dist/react/charts.js +11 -0
  37. package/dist/react/hero-backdrop.js +8 -0
  38. package/dist/react/index.js +7252 -0
  39. package/dist/react/platform-install.js +10 -0
  40. package/dist/react/server.js +137 -0
  41. package/dist/stylex-manifest.json +1 -0
  42. package/dist/stylex.css +5392 -0
  43. package/dist/syntax-highlighting.js +15 -0
  44. package/dist/testing.js +250 -0
  45. package/package.json +377 -0
  46. package/portfolio-inventory.json +31 -0
  47. package/scripts/check-lantern-material-snapshot.d.mts +26 -0
  48. package/scripts/check-lantern-material-snapshot.mjs +126 -0
  49. package/scripts/check-marketing-snapshot.d.mts +12 -0
  50. package/scripts/check-marketing-snapshot.mjs +58 -0
  51. package/scripts/lantern-material-snapshot.ts +101 -0
  52. package/scripts/marketing-textures.ts +48 -0
  53. package/scripts/paper-theme-snapshot.ts +97 -0
  54. package/scripts/product-marketing-snapshot.ts +149 -0
  55. package/src/appearance-menu.css +266 -0
  56. package/src/appearance.ts +32 -0
  57. package/src/article-html.ts +269 -0
  58. package/src/article.ts +686 -0
  59. package/src/browser/appearance-menu.ts +604 -0
  60. package/src/browser/artifact-share.ts +164 -0
  61. package/src/browser/design-palette.ts +197 -0
  62. package/src/browser/foil.ts +124 -0
  63. package/src/browser/hero-light.ts +11 -0
  64. package/src/browser/index.ts +29 -0
  65. package/src/browser/status-field.ts +432 -0
  66. package/src/browser/status-page.ts +100 -0
  67. package/src/browser/sticky-offset.ts +82 -0
  68. package/src/browser/theme-color-sync.ts +213 -0
  69. package/src/charts.css +7 -0
  70. package/src/compiler-components.css +34 -0
  71. package/src/compiler-foundation.css +18 -0
  72. package/src/compiler-palettes.css +7 -0
  73. package/src/compiler-tokens.css +342 -0
  74. package/src/components.css +3 -0
  75. package/src/design-gallery.css +431 -0
  76. package/src/effects.css +14 -0
  77. package/src/fonts/geist-mono/GeistMono[wght].woff2 +0 -0
  78. package/src/fonts/geist-mono/OFL.txt +93 -0
  79. package/src/fonts/geist-mono/PROVENANCE.md +12 -0
  80. package/src/fonts/instrument-serif/OFL.txt +93 -0
  81. package/src/fonts/instrument-serif/UPSTREAM.md +14 -0
  82. package/src/fonts/instrument-serif/instrument-serif-latin-400.woff2 +0 -0
  83. package/src/fonts/nebula-sans/LICENSE.txt +96 -0
  84. package/src/fonts/nebula-sans/NebulaSans-Black.woff2 +0 -0
  85. package/src/fonts/nebula-sans/NebulaSans-BlackItalic.woff2 +0 -0
  86. package/src/fonts/nebula-sans/NebulaSans-Bold.otf +0 -0
  87. package/src/fonts/nebula-sans/NebulaSans-Bold.woff2 +0 -0
  88. package/src/fonts/nebula-sans/NebulaSans-BoldItalic.woff2 +0 -0
  89. package/src/fonts/nebula-sans/NebulaSans-Book.otf +0 -0
  90. package/src/fonts/nebula-sans/NebulaSans-Book.woff2 +0 -0
  91. package/src/fonts/nebula-sans/NebulaSans-BookItalic.woff2 +0 -0
  92. package/src/fonts/nebula-sans/NebulaSans-Light.woff2 +0 -0
  93. package/src/fonts/nebula-sans/NebulaSans-LightItalic.woff2 +0 -0
  94. package/src/fonts/nebula-sans/NebulaSans-Medium.woff2 +0 -0
  95. package/src/fonts/nebula-sans/NebulaSans-MediumItalic.woff2 +0 -0
  96. package/src/fonts/nebula-sans/NebulaSans-Semibold.woff2 +0 -0
  97. package/src/fonts/nebula-sans/NebulaSans-SemiboldItalic.woff2 +0 -0
  98. package/src/fonts/nebula-sans/PROVENANCE.md +14 -0
  99. package/src/fonts/nebula-sans/social-fonts.generated.ts +3873 -0
  100. package/src/fonts.css +106 -0
  101. package/src/icons/act60/act60.svg +5 -0
  102. package/src/icons/act60/application.svg +9 -0
  103. package/src/icons/act60/chapter-compare.svg +3 -0
  104. package/src/icons/act60/decree-residence.svg +6 -0
  105. package/src/icons/act60/estimate.svg +7 -0
  106. package/src/icons/act60/export-services.svg +4 -0
  107. package/src/icons/act60/investor.svg +13 -0
  108. package/src/icons/act60/presence.svg +7 -0
  109. package/src/icons/aicharts/aicharts.svg +6 -0
  110. package/src/icons/aicharts/cost-compare.svg +4 -0
  111. package/src/icons/aicharts/task-audio.svg +7 -0
  112. package/src/icons/aicharts/task-coding.svg +6 -0
  113. package/src/icons/aicharts/task-images.svg +3 -0
  114. package/src/icons/aicharts/task-reasoning.svg +9 -0
  115. package/src/icons/aicharts/task-research.svg +5 -0
  116. package/src/icons/aicharts/task-video.svg +4 -0
  117. package/src/icons/manifest.json +1371 -0
  118. package/src/icons/platonik/conversation.svg +3 -0
  119. package/src/icons/platonik/creature.svg +7 -0
  120. package/src/icons/platonik/economy.svg +4 -0
  121. package/src/icons/platonik/keep-light.svg +6 -0
  122. package/src/icons/platonik/platonik.svg +7 -0
  123. package/src/icons/platonik/spark-route.svg +15 -0
  124. package/src/icons/receipts/act60-retry.receipt.json +888 -0
  125. package/src/icons/receipts/act60.receipt.json +1366 -0
  126. package/src/icons/receipts/aicharts.receipt.json +1546 -0
  127. package/src/icons/receipts/platonik.receipt.json +1011 -0
  128. package/src/icons/receipts/roughday.receipt.json +770 -0
  129. package/src/icons/receipts/shared.receipt.json +1296 -0
  130. package/src/icons/receipts/slopcamera.receipt.json +1495 -0
  131. package/src/icons/receipts/soundfish-retry.receipt.json +460 -0
  132. package/src/icons/receipts/soundfish.receipt.json +1709 -0
  133. package/src/icons/receipts/sponge.receipt.json +1743 -0
  134. package/src/icons/receipts/stripe-history-retry.receipt.json +145 -0
  135. package/src/icons/receipts/stripe-history.receipt.json +1202 -0
  136. package/src/icons/receipts/wordcell.receipt.json +1924 -0
  137. package/src/icons/roughday/finance.svg +7 -0
  138. package/src/icons/roughday/roughday.svg +6 -0
  139. package/src/icons/roughday/technology.svg +4 -0
  140. package/src/icons/roughday/world.svg +4 -0
  141. package/src/icons/sets/act60.json +63 -0
  142. package/src/icons/sets/aicharts.json +63 -0
  143. package/src/icons/sets/platonik.json +39 -0
  144. package/src/icons/sets/roughday.json +25 -0
  145. package/src/icons/sets/shared.json +12 -0
  146. package/src/icons/sets/slopcamera.json +47 -0
  147. package/src/icons/sets/soundfish.json +43 -0
  148. package/src/icons/sets/sponge.json +51 -0
  149. package/src/icons/sets/stripe-history.json +39 -0
  150. package/src/icons/sets/wordcell.json +51 -0
  151. package/src/icons/shared/agent-skill.svg +4 -0
  152. package/src/icons/shared/cli.svg +5 -0
  153. package/src/icons/shared/privacy.svg +3 -0
  154. package/src/icons/shared/research.svg +7 -0
  155. package/src/icons/shared/sdk.svg +3 -0
  156. package/src/icons/slopcamera/diagram.svg +3 -0
  157. package/src/icons/slopcamera/direct-scene.svg +5 -0
  158. package/src/icons/slopcamera/edit-video.svg +17 -0
  159. package/src/icons/slopcamera/mcp.svg +3 -0
  160. package/src/icons/slopcamera/native-world.svg +3 -0
  161. package/src/icons/slopcamera/slopcamera.svg +11 -0
  162. package/src/icons/soundfish/agent-ui.svg +7 -0
  163. package/src/icons/soundfish/collaborate.svg +5 -0
  164. package/src/icons/soundfish/compose.svg +3 -0
  165. package/src/icons/soundfish/hear.svg +6 -0
  166. package/src/icons/soundfish/human-ui.svg +6 -0
  167. package/src/icons/soundfish/share.svg +3 -0
  168. package/src/icons/soundfish/soundfish.svg +6 -0
  169. package/src/icons/sponge/api.svg +3 -0
  170. package/src/icons/sponge/documents.svg +3 -0
  171. package/src/icons/sponge/library.svg +3 -0
  172. package/src/icons/sponge/one-question.svg +5 -0
  173. package/src/icons/sponge/people-direct.svg +5 -0
  174. package/src/icons/sponge/read.svg +3 -0
  175. package/src/icons/sponge/save.svg +4 -0
  176. package/src/icons/sponge/sponge.svg +7 -0
  177. package/src/icons/stripe-history/company-history.svg +3 -0
  178. package/src/icons/stripe-history/evidence.svg +4 -0
  179. package/src/icons/stripe-history/independence.svg +7 -0
  180. package/src/icons/stripe-history/publications.svg +11 -0
  181. package/src/icons/stripe-history/sources.svg +6 -0
  182. package/src/icons/stripe-history/stripe-history.svg +3 -0
  183. package/src/icons/wordcell/backlinks.svg +6 -0
  184. package/src/icons/wordcell/capture.svg +6 -0
  185. package/src/icons/wordcell/git-provenance.svg +4 -0
  186. package/src/icons/wordcell/kb.svg +4 -0
  187. package/src/icons/wordcell/markdown.svg +4 -0
  188. package/src/icons/wordcell/scopes.svg +3 -0
  189. package/src/icons/wordcell/search.svg +7 -0
  190. package/src/icons.generated.ts +734 -0
  191. package/src/icons.ts +51 -0
  192. package/src/index.ts +275 -0
  193. package/src/lantern-material.css +213 -0
  194. package/src/launch.ts +624 -0
  195. package/src/marketing-assets/UPSTREAM.md +18 -0
  196. package/src/marketing-assets/cells.svg +1 -0
  197. package/src/marketing-assets/grain.svg +1 -0
  198. package/src/marketing-forced-colors.css +12 -0
  199. package/src/mockups/client.tsx +415 -0
  200. package/src/mockups/core.tsx +318 -0
  201. package/src/mockups/frames.tsx +368 -0
  202. package/src/mockups/index.ts +14 -0
  203. package/src/mockups/surfaces.tsx +681 -0
  204. package/src/mockups.css +2607 -0
  205. package/src/palette-appearance.ts +45 -0
  206. package/src/palette-bridge.css +124 -0
  207. package/src/palette-color.ts +41 -0
  208. package/src/palette-system.css +721 -0
  209. package/src/palette-themes.ts +23 -0
  210. package/src/palette-tokens.stylex.ts +519 -0
  211. package/src/palettes.css +3 -0
  212. package/src/palettes.ts +161 -0
  213. package/src/paper-theme.css +244 -0
  214. package/src/plain-publication.css +1241 -0
  215. package/src/plain-site.css +397 -0
  216. package/src/platforms.ts +151 -0
  217. package/src/portfolio.generated.json +1595 -0
  218. package/src/portfolio.generated.ts +1596 -0
  219. package/src/portfolio.ts +226 -0
  220. package/src/product-marketing-foundation.css +433 -0
  221. package/src/product-marketing-preset.css +261 -0
  222. package/src/product-marketing.css +2186 -0
  223. package/src/provider-marks.generated.ts +112 -0
  224. package/src/provider-marks.ts +143 -0
  225. package/src/react/animated-rail-stage.stylex.ts +15 -0
  226. package/src/react/animated-rail-stage.tsx +51 -0
  227. package/src/react/app-shell.stylex.ts +104 -0
  228. package/src/react/app-shell.tsx +121 -0
  229. package/src/react/article.tsx +602 -0
  230. package/src/react/aurora-dots-background.tsx +34 -0
  231. package/src/react/charts.stylex.ts +563 -0
  232. package/src/react/charts.tsx +610 -0
  233. package/src/react/chat.stylex.ts +34 -0
  234. package/src/react/chat.tsx +155 -0
  235. package/src/react/design-gallery.tsx +943 -0
  236. package/src/react/design-palette.stylex.ts +124 -0
  237. package/src/react/design-palette.tsx +196 -0
  238. package/src/react/design-theme-context.tsx +41 -0
  239. package/src/react/effects.stylex.ts +325 -0
  240. package/src/react/fader.stylex.ts +71 -0
  241. package/src/react/fader.tsx +151 -0
  242. package/src/react/foil-card-math.ts +100 -0
  243. package/src/react/foil-card-surface.stylex.ts +326 -0
  244. package/src/react/foil-card-surface.tsx +742 -0
  245. package/src/react/foil-mark.tsx +35 -0
  246. package/src/react/foil.stylex.ts +163 -0
  247. package/src/react/haptics.ts +228 -0
  248. package/src/react/hero-backdrop.tsx +22 -0
  249. package/src/react/index.ts +38 -0
  250. package/src/react/keyboard-shortcuts.ts +228 -0
  251. package/src/react/lantern-material-gallery.tsx +166 -0
  252. package/src/react/lantern-material.stylex.ts +39 -0
  253. package/src/react/launch-beats.tsx +73 -0
  254. package/src/react/navigation-rail.stylex.ts +130 -0
  255. package/src/react/navigation-rail.tsx +228 -0
  256. package/src/react/particle-halo.tsx +115 -0
  257. package/src/react/phaser-dots.tsx +501 -0
  258. package/src/react/platform-icons.tsx +94 -0
  259. package/src/react/platform-install.stylex.ts +385 -0
  260. package/src/react/platform-install.tsx +389 -0
  261. package/src/react/playback-transport.stylex.ts +14 -0
  262. package/src/react/playback-transport.tsx +112 -0
  263. package/src/react/procedural-backdrop.tsx +192 -0
  264. package/src/react/procedural-recipe.ts +323 -0
  265. package/src/react/product-marketing.stylex.ts +4469 -0
  266. package/src/react/product-marketing.tsx +1611 -0
  267. package/src/react/production-data-preview-notice.stylex.ts +40 -0
  268. package/src/react/production-data-preview-notice.tsx +34 -0
  269. package/src/react/provider-mark.stylex.ts +132 -0
  270. package/src/react/provider-mark.tsx +120 -0
  271. package/src/react/relative-time.tsx +117 -0
  272. package/src/react/route-state.stylex.ts +39 -0
  273. package/src/react/route-state.tsx +350 -0
  274. package/src/react/server.ts +11 -0
  275. package/src/react/social-kit-panel.tsx +103 -0
  276. package/src/react/sticky-offset.tsx +33 -0
  277. package/src/react/surfaces.stylex.ts +179 -0
  278. package/src/react/surfaces.tsx +330 -0
  279. package/src/react/syntax-code.tsx +33 -0
  280. package/src/react/theme-color-sync.ts +1 -0
  281. package/src/react/theme-resolution.ts +11 -0
  282. package/src/react/theme.stylex.ts +276 -0
  283. package/src/react/theme.tsx +402 -0
  284. package/src/reading.css +72 -0
  285. package/src/relative-time.ts +185 -0
  286. package/src/reset.css +2 -0
  287. package/src/site-shell.css +16 -0
  288. package/src/status-page-html.ts +63 -0
  289. package/src/status-page.css +276 -0
  290. package/src/status-page.ts +323 -0
  291. package/src/styles.css +21 -0
  292. package/src/syntax-code-lexers.ts +303 -0
  293. package/src/syntax-highlighting.css +78 -0
  294. package/src/syntax-highlighting.ts +477 -0
  295. package/src/syntax-tokens.ts +33 -0
  296. package/src/testing.ts +307 -0
  297. package/src/tokens.css +3 -0
  298. package/src/typography.css +86 -0
  299. package/vendor/evilcharts/LICENSE +21 -0
  300. package/vendor/evilcharts/UPSTREAM.md +14 -0
  301. package/vendor/platform-marks/LICENSE +30 -0
  302. package/vendor/platform-marks/UPSTREAM.md +15 -0
  303. package/vendor/platform-marks/apple.svg +1 -0
  304. package/vendor/platform-marks/linux.svg +1 -0
  305. package/vendor/provider-marks/CRUSH-LICENSE.md +134 -0
  306. package/vendor/provider-marks/LICENSE +21 -0
  307. package/vendor/provider-marks/UPSTREAM.md +27 -0
  308. package/vendor/provider-marks/aider.svg +3 -0
  309. package/vendor/provider-marks/crush-heartbit.svg +8 -0
  310. package/vendor/provider-marks/lobehub/alibabacloud-color.svg +1 -0
  311. package/vendor/provider-marks/lobehub/alibabacloud.svg +1 -0
  312. package/vendor/provider-marks/lobehub/amp-color.svg +1 -0
  313. package/vendor/provider-marks/lobehub/amp.svg +1 -0
  314. package/vendor/provider-marks/lobehub/anthropic.svg +1 -0
  315. package/vendor/provider-marks/lobehub/claude-color.svg +1 -0
  316. package/vendor/provider-marks/lobehub/claude.svg +1 -0
  317. package/vendor/provider-marks/lobehub/claudecode-color.svg +1 -0
  318. package/vendor/provider-marks/lobehub/claudecode.svg +1 -0
  319. package/vendor/provider-marks/lobehub/codex-color.svg +1 -0
  320. package/vendor/provider-marks/lobehub/codex.svg +1 -0
  321. package/vendor/provider-marks/lobehub/cursor.svg +1 -0
  322. package/vendor/provider-marks/lobehub/deepseek-color.svg +1 -0
  323. package/vendor/provider-marks/lobehub/deepseek.svg +1 -0
  324. package/vendor/provider-marks/lobehub/devin-color.svg +1 -0
  325. package/vendor/provider-marks/lobehub/devin.svg +1 -0
  326. package/vendor/provider-marks/lobehub/gemini-color.svg +1 -0
  327. package/vendor/provider-marks/lobehub/gemini.svg +1 -0
  328. package/vendor/provider-marks/lobehub/geminicli-color.svg +1 -0
  329. package/vendor/provider-marks/lobehub/geminicli.svg +1 -0
  330. package/vendor/provider-marks/lobehub/goose.svg +1 -0
  331. package/vendor/provider-marks/lobehub/meta-color.svg +1 -0
  332. package/vendor/provider-marks/lobehub/meta.svg +1 -0
  333. package/vendor/provider-marks/lobehub/mistral-color.svg +1 -0
  334. package/vendor/provider-marks/lobehub/mistral.svg +1 -0
  335. package/vendor/provider-marks/lobehub/moonshot.svg +1 -0
  336. package/vendor/provider-marks/lobehub/nvidia-color.svg +1 -0
  337. package/vendor/provider-marks/lobehub/nvidia.svg +1 -0
  338. package/vendor/provider-marks/lobehub/openai.svg +1 -0
  339. package/vendor/provider-marks/lobehub/opencode.svg +1 -0
  340. package/vendor/provider-marks/lobehub/perplexity-color.svg +1 -0
  341. package/vendor/provider-marks/lobehub/perplexity.svg +1 -0
  342. package/vendor/provider-marks/lobehub/qwen-color.svg +1 -0
  343. package/vendor/provider-marks/lobehub/qwen.svg +1 -0
  344. package/vendor/provider-marks/lobehub/xai.svg +1 -0
  345. package/vendor/provider-marks/lobehub/zai.svg +1 -0
@@ -0,0 +1,2607 @@
1
+ /**
2
+ * Code-built mockups
3
+ *
4
+ * The one stylesheet for `@hraness/design-kit/mockups` and `./mockups/client`.
5
+ * It is self-contained: every token it reads from the design kit has a literal
6
+ * fallback, it loads no fonts or images, and every selector sits under an
7
+ * `hkm-` class, so a film build can inline this file alone.
8
+ *
9
+ * Theming: colors use light-dark() and follow the inherited color-scheme.
10
+ * `data-hkm-theme="light|dark"` pins one mockup. Products retheme through
11
+ * --hkm-accent, --hkm-font, --hkm-mono, and --hkm-serif.
12
+ *
13
+ * Motion: nothing animates on first paint. Transitions turn on under
14
+ * `[data-hkm-animated]`, which the client shells set after the first user
15
+ * change and a film may set itself. Looping motion (typing dots, caret,
16
+ * hotspot) runs only with prefers-reduced-motion: no-preference.
17
+ */
18
+ @layer components.hraness-design-kit.legacy {
19
+ /* ---------------------------------------------------------------- */
20
+ /* Palette and root */
21
+ /* ---------------------------------------------------------------- */
22
+
23
+ :where(.hkm-root, .hkm-showcase) {
24
+ --hkm-accent: var(--hraness-site-accent, var(--primary, #2f6fed));
25
+ --hkm-font: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;
26
+ --hkm-mono: var(--font-mono, ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace);
27
+ --hkm-serif: "Iowan Old Style", Charter, Georgia, "Times New Roman", serif;
28
+ --hkm-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
29
+ --hkm-spring: linear(0, 0.057, 0.188, 0.344, 0.498, 0.635, 0.749, 0.837, 0.903, 0.949, 0.98, 0.999, 1.009, 1.014, 1.015, 1.014, 1.012, 1.01, 1.008, 1.005, 1.004, 1.002, 1.001, 1.001, 1);
30
+
31
+ --hkm-bg: light-dark(#ffffff, #151619);
32
+ --hkm-fg: light-dark(#15171a, #eceef1);
33
+ --hkm-muted: light-dark(#5e6570, #9ba2ac);
34
+ --hkm-faint: light-dark(#8a9099, #6f757e);
35
+ --hkm-line: light-dark(#e7e9ec, #2a2d33);
36
+ --hkm-surface: light-dark(#f4f5f7, #0e0f11);
37
+ --hkm-card: light-dark(#ffffff, #1b1c20);
38
+ --hkm-field: light-dark(#eff1f4, #24262b);
39
+ --hkm-chrome: light-dark(#eeeef0, #232428);
40
+ --hkm-chrome-ink: light-dark(#5a5c62, #a7a9af);
41
+ --hkm-address: light-dark(#ffffff, #313238);
42
+ --hkm-frame-line: light-dark(rgb(0 0 0 / 0.1), rgb(255 255 255 / 0.1));
43
+ --hkm-ok: light-dark(#1a7f45, #4cc38a);
44
+ --hkm-warn: light-dark(#9a6200, #f0b54a);
45
+ --hkm-error: light-dark(#c2352b, #ff7b72);
46
+ --hkm-shadow:
47
+ 0 0 0 0.5px light-dark(rgb(0 0 0 / 0.04), rgb(0 0 0 / 0.5)),
48
+ 0 1px 2px light-dark(rgb(0 0 0 / 0.06), rgb(0 0 0 / 0.3)),
49
+ 0 18px 40px -14px light-dark(rgb(15 20 30 / 0.22), rgb(0 0 0 / 0.6));
50
+ }
51
+
52
+ :where(.hkm-root, .hkm-showcase)[data-hkm-theme="light"] {
53
+ color-scheme: light;
54
+ }
55
+
56
+ :where(.hkm-root, .hkm-showcase)[data-hkm-theme="dark"] {
57
+ color-scheme: dark;
58
+ }
59
+
60
+ .hkm-root {
61
+ container: hkm / inline-size;
62
+ display: block;
63
+ position: relative;
64
+ min-inline-size: 0;
65
+ max-inline-size: 100%;
66
+ color: var(--hkm-fg);
67
+ font: 400 15px/1.4 var(--hkm-font);
68
+ letter-spacing: 0;
69
+ text-align: start;
70
+ font-synthesis: none;
71
+ -webkit-font-smoothing: antialiased;
72
+ -moz-osx-font-smoothing: grayscale;
73
+ text-rendering: optimizeLegibility;
74
+ user-select: none;
75
+ -webkit-user-select: none;
76
+ }
77
+
78
+ .hkm-root *,
79
+ .hkm-root *::before,
80
+ .hkm-root *::after {
81
+ box-sizing: border-box;
82
+ }
83
+
84
+ .hkm-root :where(p, ol, ul, li, figure, blockquote) {
85
+ margin: 0;
86
+ padding: 0;
87
+ list-style: none;
88
+ }
89
+
90
+ .hkm-root :where(b) {
91
+ font-weight: 650;
92
+ }
93
+
94
+ .hkm-root .hkm-muted {
95
+ color: var(--hkm-muted);
96
+ }
97
+
98
+ .hkm-root .hkm-unit {
99
+ position: relative;
100
+ }
101
+
102
+ .hkm-root .hkm-glyph {
103
+ display: block;
104
+ flex: none;
105
+ }
106
+
107
+ .hkm-root .hkm-avatar {
108
+ display: inline-grid;
109
+ flex: none;
110
+ place-items: center;
111
+ overflow: hidden;
112
+ color: #ffffff;
113
+ font-family: var(--hkm-font);
114
+ font-weight: 600;
115
+ line-height: 1;
116
+ letter-spacing: 0.01em;
117
+ text-shadow: 0 1px 1px rgb(0 0 0 / 0.18);
118
+ box-shadow: inset 0 0 0 0.5px rgb(0 0 0 / 0.08);
119
+ }
120
+
121
+ .hkm-root .hkm-photo {
122
+ display: block;
123
+ inline-size: 100%;
124
+ border-radius: 12px;
125
+ box-shadow: inset 0 0 0 0.5px rgb(0 0 0 / 0.08);
126
+ }
127
+
128
+ .hkm-root .hkm-card {
129
+ border: 1px solid var(--hkm-line);
130
+ border-radius: 10px;
131
+ background: var(--hkm-card);
132
+ }
133
+
134
+ .hkm-root .hkm-search-field {
135
+ display: flex;
136
+ align-items: center;
137
+ gap: 8px;
138
+ block-size: 34px;
139
+ padding-inline: 12px;
140
+ border-radius: 999px;
141
+ background: var(--hkm-field);
142
+ color: var(--hkm-muted);
143
+ font-size: 13px;
144
+ white-space: nowrap;
145
+ }
146
+
147
+ /* ---------------------------------------------------------------- */
148
+ /* Window chrome */
149
+ /* ---------------------------------------------------------------- */
150
+
151
+ .hkm-root .hkm-window {
152
+ position: relative;
153
+ overflow: hidden;
154
+ border-radius: 12px;
155
+ background: var(--hkm-bg);
156
+ box-shadow: 0 0 0 1px var(--hkm-frame-line), var(--hkm-shadow);
157
+ }
158
+
159
+ .hkm-root .hkm-lights {
160
+ display: flex;
161
+ flex: none;
162
+ gap: 7px;
163
+ }
164
+
165
+ .hkm-root .hkm-lights i {
166
+ inline-size: 12px;
167
+ block-size: 12px;
168
+ border-radius: 50%;
169
+ background: #ff5f57;
170
+ box-shadow: inset 0 0 0 0.5px rgb(0 0 0 / 0.16);
171
+ }
172
+
173
+ .hkm-root .hkm-lights i:nth-child(2) {
174
+ background: #febc2e;
175
+ }
176
+
177
+ .hkm-root .hkm-lights i:nth-child(3) {
178
+ background: #28c840;
179
+ }
180
+
181
+ .hkm-root .hkm-browser-bar,
182
+ .hkm-root .hkm-title-bar {
183
+ display: flex;
184
+ align-items: center;
185
+ gap: 14px;
186
+ block-size: 44px;
187
+ padding-inline: 14px 12px;
188
+ border-block-end: 1px solid var(--hkm-frame-line);
189
+ background: var(--hkm-chrome);
190
+ color: var(--hkm-chrome-ink);
191
+ font: 400 13px/1 var(--hkm-font);
192
+ }
193
+
194
+ .hkm-root .hkm-title-bar {
195
+ display: grid;
196
+ grid-template-columns: 1fr auto 1fr;
197
+ block-size: 38px;
198
+ }
199
+
200
+ .hkm-root .hkm-title {
201
+ overflow: hidden;
202
+ font-weight: 600;
203
+ text-align: center;
204
+ text-overflow: ellipsis;
205
+ white-space: nowrap;
206
+ }
207
+
208
+ .hkm-root .hkm-browser-nav {
209
+ display: flex;
210
+ flex: none;
211
+ align-items: center;
212
+ gap: 12px;
213
+ opacity: 0.72;
214
+ }
215
+
216
+ .hkm-root .hkm-address {
217
+ display: flex;
218
+ flex: 1;
219
+ align-items: center;
220
+ justify-content: center;
221
+ gap: 6px;
222
+ min-inline-size: 0;
223
+ max-inline-size: 520px;
224
+ block-size: 28px;
225
+ margin-inline: auto;
226
+ padding-inline: 12px;
227
+ border-radius: 8px;
228
+ background: var(--hkm-address);
229
+ box-shadow: 0 0 0 0.5px var(--hkm-frame-line);
230
+ white-space: nowrap;
231
+ }
232
+
233
+ .hkm-root .hkm-address > .hkm-glyph {
234
+ opacity: 0.6;
235
+ }
236
+
237
+ .hkm-root .hkm-address-host {
238
+ color: var(--hkm-fg);
239
+ }
240
+
241
+ .hkm-root .hkm-address-host,
242
+ .hkm-root .hkm-address-path {
243
+ overflow: hidden;
244
+ text-overflow: ellipsis;
245
+ }
246
+
247
+ .hkm-root .hkm-address-path {
248
+ min-inline-size: 0;
249
+ }
250
+
251
+ .hkm-root .hkm-browser-tools {
252
+ display: flex;
253
+ flex: none;
254
+ align-items: center;
255
+ justify-content: flex-end;
256
+ gap: 8px;
257
+ min-inline-size: 60px;
258
+ }
259
+
260
+ .hkm-root .hkm-page {
261
+ position: relative;
262
+ overflow: hidden;
263
+ max-block-size: var(--hkm-page-height, none);
264
+ background: var(--hkm-bg);
265
+ color: var(--hkm-fg);
266
+ }
267
+
268
+ /* A page window onto a longer page; the fade says it keeps going. */
269
+ .hkm-root .hkm-page[data-hkm-fade]::after,
270
+ .hkm-root .hkm-scroll-fade::after {
271
+ content: "";
272
+ position: absolute;
273
+ z-index: 3;
274
+ inset: auto 0 0;
275
+ block-size: var(--hkm-fade-height, 56px);
276
+ background: linear-gradient(to bottom, transparent, var(--hkm-fade-to, var(--hkm-bg)));
277
+ pointer-events: none;
278
+ }
279
+
280
+ .hkm-root .hkm-scroll-fade {
281
+ position: relative;
282
+ overflow: hidden;
283
+ max-block-size: var(--hkm-scroll-height);
284
+ }
285
+
286
+ @container hkm (max-width: 560px) {
287
+ .hkm-root .hkm-window {
288
+ border-radius: 10px;
289
+ }
290
+
291
+ .hkm-root .hkm-browser-bar {
292
+ gap: 8px;
293
+ block-size: 38px;
294
+ padding-inline: 10px 8px;
295
+ font-size: 12px;
296
+ }
297
+
298
+ .hkm-root .hkm-browser-nav,
299
+ .hkm-root .hkm-address-path {
300
+ display: none;
301
+ }
302
+
303
+ .hkm-root .hkm-lights {
304
+ gap: 5px;
305
+ }
306
+
307
+ .hkm-root .hkm-lights i {
308
+ inline-size: 10px;
309
+ block-size: 10px;
310
+ }
311
+
312
+ .hkm-root .hkm-browser-tools {
313
+ min-inline-size: 0;
314
+ }
315
+ }
316
+
317
+ /* ---------------------------------------------------------------- */
318
+ /* Terminal */
319
+ /* ---------------------------------------------------------------- */
320
+
321
+ .hkm-root.hkm-terminal,
322
+ .hkm-root.hkm-agent[data-hkm-kind="agent"] {
323
+ --hkm-bg: light-dark(#fbfbfc, #111214);
324
+ --hkm-chrome: light-dark(#ececef, #1d1e22);
325
+ }
326
+
327
+ .hkm-root .hkm-terminal-body {
328
+ padding: 16px 18px 18px;
329
+ font: 400 13.5px/1.6 var(--hkm-mono);
330
+ font-variant-ligatures: none;
331
+ }
332
+
333
+ .hkm-root .hkm-terminal-lines {
334
+ display: grid;
335
+ gap: 1px;
336
+ }
337
+
338
+ .hkm-root .hkm-terminal-line {
339
+ display: flex;
340
+ gap: 1ch;
341
+ min-block-size: 1.6em;
342
+ white-space: pre-wrap;
343
+ overflow-wrap: anywhere;
344
+ }
345
+
346
+ .hkm-root .hkm-terminal-line[data-hkm-line="input"] {
347
+ color: var(--hkm-fg);
348
+ font-weight: 500;
349
+ }
350
+
351
+ .hkm-root .hkm-terminal-line[data-hkm-line="output"] {
352
+ color: light-dark(#3b4048, #c3c7cd);
353
+ }
354
+
355
+ .hkm-root .hkm-terminal-line[data-hkm-line="comment"] {
356
+ color: var(--hkm-faint);
357
+ font-style: italic;
358
+ }
359
+
360
+ .hkm-root .hkm-terminal-line[data-hkm-tone="ok"] {
361
+ color: var(--hkm-ok);
362
+ }
363
+
364
+ .hkm-root .hkm-terminal-line[data-hkm-tone="warn"] {
365
+ color: var(--hkm-warn);
366
+ }
367
+
368
+ .hkm-root .hkm-terminal-line[data-hkm-tone="error"] {
369
+ color: var(--hkm-error);
370
+ }
371
+
372
+ .hkm-root .hkm-terminal-line[data-hkm-tone="muted"] {
373
+ color: var(--hkm-muted);
374
+ }
375
+
376
+ .hkm-root .hkm-terminal-prompt {
377
+ flex: none;
378
+ color: var(--hkm-accent);
379
+ font-weight: 600;
380
+ }
381
+
382
+ .hkm-root .hkm-terminal-line[data-hkm-line="comment"] .hkm-terminal-prompt {
383
+ color: inherit;
384
+ font-weight: inherit;
385
+ }
386
+
387
+ .hkm-root .hkm-caret {
388
+ display: inline-block;
389
+ inline-size: 0.6em;
390
+ block-size: 1.15em;
391
+ align-self: center;
392
+ border-radius: 1px;
393
+ background: currentColor;
394
+ opacity: 0.75;
395
+ }
396
+
397
+ /* ---------------------------------------------------------------- */
398
+ /* Desktop app window */
399
+ /* ---------------------------------------------------------------- */
400
+
401
+ .hkm-root.hkm-app-window .hkm-window {
402
+ display: grid;
403
+ grid-template-columns: 1fr;
404
+ min-block-size: 280px;
405
+ }
406
+
407
+ .hkm-root.hkm-app-window .hkm-window[data-hkm-sidebar] {
408
+ grid-template-columns: minmax(150px, 30%) 1fr;
409
+ }
410
+
411
+ .hkm-root .hkm-app-sidebar {
412
+ display: flex;
413
+ flex-direction: column;
414
+ gap: 18px;
415
+ padding: 13px 10px 14px;
416
+ border-inline-end: 1px solid var(--hkm-frame-line);
417
+ background: light-dark(rgb(238 238 241 / 0.92), rgb(34 35 39 / 0.92));
418
+ color: var(--hkm-chrome-ink);
419
+ font-size: 13px;
420
+ }
421
+
422
+ .hkm-root .hkm-app-sidebar > .hkm-lights {
423
+ padding-inline: 4px;
424
+ }
425
+
426
+ .hkm-root .hkm-app-sidebar-body {
427
+ display: grid;
428
+ gap: 2px;
429
+ }
430
+
431
+ .hkm-root .hkm-app-main {
432
+ display: flex;
433
+ flex-direction: column;
434
+ min-inline-size: 0;
435
+ }
436
+
437
+ .hkm-root .hkm-app-bar {
438
+ background: var(--hkm-bg);
439
+ }
440
+
441
+ .hkm-root .hkm-app-tools {
442
+ display: flex;
443
+ justify-content: flex-end;
444
+ gap: 10px;
445
+ }
446
+
447
+ .hkm-root .hkm-app-content {
448
+ flex: 1;
449
+ min-block-size: 0;
450
+ padding: 18px;
451
+ }
452
+
453
+ @container hkm (max-width: 480px) {
454
+ .hkm-root.hkm-app-window .hkm-window[data-hkm-sidebar] {
455
+ grid-template-columns: 1fr;
456
+ }
457
+
458
+ .hkm-root .hkm-app-sidebar {
459
+ display: none;
460
+ }
461
+
462
+ .hkm-root.hkm-app-window .hkm-app-bar > span:first-child::before {
463
+ content: "";
464
+ }
465
+ }
466
+
467
+ /* ---------------------------------------------------------------- */
468
+ /* Menu bar popover */
469
+ /* ---------------------------------------------------------------- */
470
+
471
+ .hkm-root.hkm-menubar {
472
+ padding-block-end: 12px;
473
+ border-radius: 12px;
474
+ background:
475
+ radial-gradient(120% 140% at 80% -20%, light-dark(#c9d6ee, #28324a), transparent 60%),
476
+ linear-gradient(180deg, light-dark(#dfe5ef, #1a1d24), light-dark(#eef1f5, #121418));
477
+ }
478
+
479
+ .hkm-root .hkm-menubar {
480
+ display: flex;
481
+ align-items: center;
482
+ gap: 16px;
483
+ block-size: 28px;
484
+ padding-inline: 14px;
485
+ border-radius: 12px 12px 0 0;
486
+ background: light-dark(rgb(255 255 255 / 0.55), rgb(20 21 24 / 0.6));
487
+ color: var(--hkm-fg);
488
+ font-size: 13px;
489
+ font-weight: 500;
490
+ }
491
+
492
+ .hkm-root .hkm-menubar-spacer {
493
+ flex: 1;
494
+ }
495
+
496
+ .hkm-root .hkm-menubar-item {
497
+ display: grid;
498
+ place-items: center;
499
+ min-inline-size: 26px;
500
+ block-size: 22px;
501
+ padding-inline: 5px;
502
+ border-radius: 5px;
503
+ }
504
+
505
+ .hkm-root .hkm-menubar-item[data-hkm-open] {
506
+ background: light-dark(rgb(0 0 0 / 0.12), rgb(255 255 255 / 0.18));
507
+ }
508
+
509
+ .hkm-root .hkm-menubar-dot {
510
+ inline-size: 12px;
511
+ block-size: 12px;
512
+ border: 2px solid currentColor;
513
+ border-radius: 50%;
514
+ }
515
+
516
+ .hkm-root .hkm-menubar-clock {
517
+ font-variant-numeric: tabular-nums;
518
+ }
519
+
520
+ .hkm-root .hkm-popover {
521
+ inline-size: min(320px, calc(100% - 24px));
522
+ margin-block-start: 6px;
523
+ margin-inline: auto 12px;
524
+ padding: 6px;
525
+ border-radius: 12px;
526
+ background: light-dark(rgb(246 246 248 / 0.97), rgb(40 41 46 / 0.97));
527
+ box-shadow: 0 0 0 0.5px var(--hkm-frame-line), var(--hkm-shadow);
528
+ font-size: 13px;
529
+ }
530
+
531
+ .hkm-root .hkm-popover-title {
532
+ padding: 6px 10px 8px;
533
+ color: var(--hkm-muted);
534
+ font-size: 12px;
535
+ font-weight: 600;
536
+ }
537
+
538
+ .hkm-root .hkm-popover-list {
539
+ display: grid;
540
+ gap: 1px;
541
+ }
542
+
543
+ .hkm-root .hkm-popover-item {
544
+ display: flex;
545
+ align-items: flex-start;
546
+ gap: 10px;
547
+ padding: 7px 10px;
548
+ border-radius: 7px;
549
+ }
550
+
551
+ .hkm-root .hkm-popover-item[data-hkm-selected] {
552
+ background: var(--hkm-accent);
553
+ color: #ffffff;
554
+ }
555
+
556
+ .hkm-root .hkm-popover-dot {
557
+ flex: none;
558
+ inline-size: 8px;
559
+ block-size: 8px;
560
+ margin-block-start: 5px;
561
+ border-radius: 50%;
562
+ background: var(--hkm-faint);
563
+ }
564
+
565
+ .hkm-root .hkm-popover-item[data-hkm-tone="ok"] .hkm-popover-dot {
566
+ background: var(--hkm-ok);
567
+ }
568
+
569
+ .hkm-root .hkm-popover-item[data-hkm-tone="warn"] .hkm-popover-dot {
570
+ background: var(--hkm-warn);
571
+ }
572
+
573
+ .hkm-root .hkm-popover-item[data-hkm-tone="error"] .hkm-popover-dot {
574
+ background: var(--hkm-error);
575
+ }
576
+
577
+ .hkm-root .hkm-popover-item[data-hkm-selected] .hkm-popover-dot {
578
+ background: #ffffff;
579
+ }
580
+
581
+ .hkm-root .hkm-popover-text {
582
+ display: grid;
583
+ gap: 1px;
584
+ min-inline-size: 0;
585
+ }
586
+
587
+ .hkm-root .hkm-popover-label {
588
+ font-weight: 500;
589
+ }
590
+
591
+ .hkm-root .hkm-popover-detail {
592
+ color: var(--hkm-muted);
593
+ font-size: 12px;
594
+ }
595
+
596
+ .hkm-root .hkm-popover-item[data-hkm-selected] .hkm-popover-detail {
597
+ color: rgb(255 255 255 / 0.82);
598
+ }
599
+
600
+ .hkm-root .hkm-popover-footer {
601
+ margin-block-start: 5px;
602
+ padding: 8px 10px 5px;
603
+ border-block-start: 1px solid var(--hkm-frame-line);
604
+ color: var(--hkm-muted);
605
+ font-size: 12px;
606
+ }
607
+
608
+ /* ---------------------------------------------------------------- */
609
+ /* Phone */
610
+ /* ---------------------------------------------------------------- */
611
+
612
+ /* Every phone length is in device points through --pt, so the phone scales with its root. */
613
+ .hkm-root:has(> .hkm-device) {
614
+ inline-size: min(100%, var(--hkm-phone-width, 380px));
615
+ margin-inline: auto;
616
+ --hkm-screen: light-dark(#ffffff, #000000);
617
+ --hkm-edge: light-dark(#c9cbcf, #3a3b3e);
618
+ --hkm-edge-hi: light-dark(#eef0f2, #6b6d72);
619
+ --hkm-edge-lo: light-dark(#9a9ca1, #232426);
620
+ }
621
+
622
+ .hkm-root .hkm-device {
623
+ --pt: calc(100cqw / 412);
624
+ position: relative;
625
+ inline-size: 100%;
626
+ aspect-ratio: 412 / var(--hkm-phone-height, 866);
627
+ padding: calc(2.5 * var(--pt));
628
+ border-radius: calc(57 * var(--pt));
629
+ background: linear-gradient(135deg, var(--hkm-edge-hi) 0%, var(--hkm-edge) 18%, var(--hkm-edge-lo) 50%, var(--hkm-edge) 82%, var(--hkm-edge-hi) 100%);
630
+ box-shadow:
631
+ inset 0 0 0 calc(0.6 * var(--pt)) rgb(255 255 255 / 0.55),
632
+ inset 0 0 calc(1.5 * var(--pt)) calc(0.8 * var(--pt)) rgb(0 0 0 / 0.18),
633
+ 0 calc(1 * var(--pt)) calc(1 * var(--pt)) rgb(0 0 0 / 0.12),
634
+ 0 40px 80px -30px rgb(0 0 0 / 0.35),
635
+ 0 18px 36px -24px rgb(0 0 0 / 0.25);
636
+ }
637
+
638
+ .hkm-root .hkm-device-button {
639
+ position: absolute;
640
+ inline-size: calc(3.2 * var(--pt));
641
+ border-radius: calc(1.5 * var(--pt));
642
+ background: linear-gradient(90deg, var(--hkm-edge-lo), var(--hkm-edge-hi) 55%, var(--hkm-edge));
643
+ box-shadow: inset 0 0 0 calc(0.4 * var(--pt)) rgb(0 0 0 / 0.12);
644
+ }
645
+
646
+ .hkm-root .hkm-device-button[data-hkm-button="action"] {
647
+ inset-block-start: calc(122 * var(--pt));
648
+ inset-inline-start: calc(-2.6 * var(--pt));
649
+ block-size: calc(32 * var(--pt));
650
+ }
651
+
652
+ .hkm-root .hkm-device-button[data-hkm-button="volume-up"] {
653
+ inset-block-start: calc(184 * var(--pt));
654
+ inset-inline-start: calc(-2.6 * var(--pt));
655
+ block-size: calc(62 * var(--pt));
656
+ }
657
+
658
+ .hkm-root .hkm-device-button[data-hkm-button="volume-down"] {
659
+ inset-block-start: calc(260 * var(--pt));
660
+ inset-inline-start: calc(-2.6 * var(--pt));
661
+ block-size: calc(62 * var(--pt));
662
+ }
663
+
664
+ .hkm-root .hkm-device-button[data-hkm-button="power"] {
665
+ inset-block-start: calc(214 * var(--pt));
666
+ inset-inline-end: calc(-2.6 * var(--pt));
667
+ block-size: calc(100 * var(--pt));
668
+ }
669
+
670
+ .hkm-root .hkm-bezel {
671
+ position: relative;
672
+ block-size: 100%;
673
+ padding: calc(8.5 * var(--pt));
674
+ border-radius: calc(54.5 * var(--pt));
675
+ background: #050506;
676
+ box-shadow: inset 0 0 0 calc(0.8 * var(--pt)) #2a2a2d, inset 0 0 0 calc(1.6 * var(--pt)) #0b0b0c;
677
+ }
678
+
679
+ .hkm-root .hkm-screen {
680
+ position: relative;
681
+ isolation: isolate;
682
+ block-size: 100%;
683
+ overflow: hidden;
684
+ border-radius: calc(46 * var(--pt));
685
+ background: var(--hkm-screen);
686
+ color: var(--hkm-fg);
687
+ }
688
+
689
+ .hkm-root .hkm-screen-content {
690
+ position: absolute;
691
+ inset: 0;
692
+ overflow: hidden;
693
+ }
694
+
695
+ /* The generic phone body clears the status bar and home indicator. */
696
+ .hkm-root .hkm-phone-body {
697
+ block-size: 100%;
698
+ overflow: hidden;
699
+ padding: calc(58 * var(--pt)) calc(20 * var(--pt)) calc(34 * var(--pt));
700
+ }
701
+
702
+ .hkm-root .hkm-status-bar {
703
+ position: absolute;
704
+ z-index: 4;
705
+ inset: 0 0 auto;
706
+ display: grid;
707
+ grid-template-columns: 1fr calc(126 * var(--pt)) 1fr;
708
+ align-items: center;
709
+ block-size: calc(54 * var(--pt));
710
+ padding-block-start: calc(3 * var(--pt));
711
+ color: var(--hkm-fg);
712
+ }
713
+
714
+ .hkm-root .hkm-status-time {
715
+ justify-self: center;
716
+ padding-inline-start: calc(10 * var(--pt));
717
+ font-size: calc(17 * var(--pt));
718
+ font-weight: 600;
719
+ letter-spacing: calc(-0.4 * var(--pt));
720
+ font-variant-numeric: tabular-nums;
721
+ }
722
+
723
+ .hkm-root .hkm-status-glyphs {
724
+ display: flex;
725
+ grid-column: 3;
726
+ justify-self: center;
727
+ align-items: center;
728
+ gap: calc(6 * var(--pt));
729
+ padding-inline-end: calc(4 * var(--pt));
730
+ fill: currentColor;
731
+ }
732
+
733
+ .hkm-root .hkm-status-cell {
734
+ inline-size: calc(19 * var(--pt));
735
+ block-size: calc(12 * var(--pt));
736
+ }
737
+
738
+ .hkm-root .hkm-status-wifi {
739
+ inline-size: calc(17 * var(--pt));
740
+ block-size: calc(12.3 * var(--pt));
741
+ }
742
+
743
+ .hkm-root .hkm-status-battery {
744
+ inline-size: calc(27.4 * var(--pt));
745
+ block-size: calc(13 * var(--pt));
746
+ }
747
+
748
+ .hkm-root .hkm-island {
749
+ position: absolute;
750
+ z-index: 5;
751
+ inset-block-start: calc(11 * var(--pt));
752
+ inset-inline-start: 50%;
753
+ inline-size: calc(126 * var(--pt));
754
+ block-size: calc(37 * var(--pt));
755
+ translate: -50% 0;
756
+ border-radius: calc(19 * var(--pt));
757
+ background: #000000;
758
+ box-shadow: inset 0 0 0 calc(0.5 * var(--pt)) rgb(255 255 255 / 0.04);
759
+ }
760
+
761
+ .hkm-root .hkm-island::after {
762
+ content: "";
763
+ position: absolute;
764
+ inset-block-start: 50%;
765
+ inset-inline-end: calc(26 * var(--pt));
766
+ inline-size: calc(10 * var(--pt));
767
+ block-size: calc(10 * var(--pt));
768
+ translate: 0 -50%;
769
+ border-radius: 50%;
770
+ background: radial-gradient(circle at 35% 35%, #1b2233 0 30%, #0a0c12 60%);
771
+ }
772
+
773
+ .hkm-root .hkm-home-indicator {
774
+ position: absolute;
775
+ z-index: 6;
776
+ inset-block-end: calc(8 * var(--pt));
777
+ inset-inline-start: 50%;
778
+ inline-size: calc(139 * var(--pt));
779
+ block-size: calc(5 * var(--pt));
780
+ translate: -50% 0;
781
+ border-radius: calc(3 * var(--pt));
782
+ background: var(--hkm-fg);
783
+ }
784
+
785
+ /* ---------------------------------------------------------------- */
786
+ /* Chat thread */
787
+ /* ---------------------------------------------------------------- */
788
+
789
+ .hkm-root .hkm-chat {
790
+ --hkm-in-bg: light-dark(#e9e9eb, #262629);
791
+ --hkm-in-fg: light-dark(#000000, #ffffff);
792
+ --hkm-out-bg: #0a84ff;
793
+ --hkm-out-fg: #ffffff;
794
+ --hkm-meta: light-dark(#8e8e93, #8d8d93);
795
+ --hkm-tint: light-dark(#007aff, #0a84ff);
796
+ --hkm-nav-bg: light-dark(rgb(249 249 249 / 0.985), rgb(22 22 24 / 0.985));
797
+ --hkm-hairline: light-dark(rgb(60 60 67 / 0.29), rgb(84 84 88 / 0.65));
798
+ --hkm-nav-h: calc(124 * var(--pt));
799
+ --hkm-composer-h: calc(86 * var(--pt));
800
+ position: absolute;
801
+ inset: 0;
802
+ background: var(--hkm-screen, var(--hkm-bg));
803
+ color: var(--hkm-in-fg);
804
+ font-family: var(--hkm-font);
805
+ }
806
+
807
+ .hkm-root .hkm-chat[data-hkm-via] {
808
+ --hkm-nav-h: calc(138 * var(--pt));
809
+ }
810
+
811
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] {
812
+ --hkm-in-bg: light-dark(#ffffff, #202c33);
813
+ --hkm-in-fg: light-dark(#111b21, #e9edef);
814
+ --hkm-out-bg: light-dark(#d9fdd3, #005c4b);
815
+ --hkm-out-fg: light-dark(#111b21, #e9edef);
816
+ --hkm-meta: light-dark(#667781, #8696a0);
817
+ --hkm-tint: light-dark(#008069, #00a884);
818
+ --hkm-nav-bg: light-dark(#f0f2f5, #202c33);
819
+ --hkm-nav-h: calc(110 * var(--pt));
820
+ background:
821
+ radial-gradient(circle at 20% 30%, light-dark(rgb(0 0 0 / 0.025), rgb(255 255 255 / 0.02)) 0 calc(2 * var(--pt)), transparent calc(2.5 * var(--pt))) 0 0 / calc(28 * var(--pt)) calc(28 * var(--pt)),
822
+ light-dark(#efeae2, #0b141a);
823
+ }
824
+
825
+ .hkm-root .hkm-chat-bare {
826
+ --pt: calc(100cqw / 390);
827
+ position: relative;
828
+ overflow: hidden;
829
+ aspect-ratio: 390 / 640;
830
+ border-radius: 16px;
831
+ box-shadow: 0 0 0 1px var(--hkm-frame-line), var(--hkm-shadow);
832
+ }
833
+
834
+ .hkm-root .hkm-chat-bare .hkm-chat {
835
+ --hkm-nav-h: calc(72 * var(--pt));
836
+ }
837
+
838
+ .hkm-root .hkm-chat-thread {
839
+ position: absolute;
840
+ inset: 0 0 var(--hkm-composer-h);
841
+ display: flex;
842
+ flex-direction: column-reverse;
843
+ justify-content: flex-end;
844
+ justify-content: safe flex-end;
845
+ overflow: hidden;
846
+ padding-block: calc(var(--hkm-nav-h) + 10 * var(--pt)) calc(8 * var(--pt));
847
+ }
848
+
849
+ .hkm-root .hkm-chat-inner {
850
+ display: flex;
851
+ flex-direction: column;
852
+ }
853
+
854
+ .hkm-root .hkm-chat-divider {
855
+ margin-block: calc(14 * var(--pt)) calc(4 * var(--pt));
856
+ color: var(--hkm-meta);
857
+ font-size: calc(11.5 * var(--pt));
858
+ line-height: calc(14 * var(--pt));
859
+ text-align: center;
860
+ }
861
+
862
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] .hkm-chat-divider {
863
+ justify-self: center;
864
+ inline-size: fit-content;
865
+ margin-inline: auto;
866
+ padding: calc(5 * var(--pt)) calc(10 * var(--pt));
867
+ border-radius: calc(8 * var(--pt));
868
+ background: var(--hkm-in-bg);
869
+ box-shadow: 0 calc(1 * var(--pt)) calc(0.5 * var(--pt)) rgb(11 20 26 / 0.13);
870
+ }
871
+
872
+ .hkm-root .hkm-chat-row {
873
+ display: flex;
874
+ flex-direction: column;
875
+ align-items: flex-start;
876
+ margin-block-start: calc(2 * var(--pt));
877
+ padding-inline: calc(16 * var(--pt));
878
+ }
879
+
880
+ .hkm-root .hkm-chat-row[data-hkm-first] {
881
+ margin-block-start: calc(10 * var(--pt));
882
+ }
883
+
884
+ .hkm-root .hkm-chat-divider + .hkm-chat-row {
885
+ margin-block-start: calc(4 * var(--pt));
886
+ }
887
+
888
+ .hkm-root .hkm-chat-row[data-hkm-side="out"] {
889
+ align-items: flex-end;
890
+ }
891
+
892
+ .hkm-root .hkm-bubble {
893
+ --hkm-bubble-bg: var(--hkm-in-bg);
894
+ --hkm-bubble-fg: var(--hkm-in-fg);
895
+ position: relative;
896
+ max-inline-size: calc(264 * var(--pt));
897
+ padding: calc(7 * var(--pt)) calc(13 * var(--pt)) calc(7.5 * var(--pt));
898
+ border-radius: calc(18.5 * var(--pt));
899
+ background: var(--hkm-bubble-bg);
900
+ color: var(--hkm-bubble-fg);
901
+ font-size: calc(17 * var(--pt));
902
+ line-height: calc(22 * var(--pt));
903
+ letter-spacing: calc(-0.43 * var(--pt));
904
+ white-space: pre-wrap;
905
+ overflow-wrap: anywhere;
906
+ }
907
+
908
+ .hkm-root .hkm-chat-row[data-hkm-side="out"] .hkm-bubble {
909
+ --hkm-bubble-bg: var(--hkm-out-bg);
910
+ --hkm-bubble-fg: var(--hkm-out-fg);
911
+ }
912
+
913
+ .hkm-root .hkm-bubble[data-hkm-emoji] {
914
+ padding: 0 calc(2 * var(--pt));
915
+ background: none;
916
+ font-size: calc(48 * var(--pt));
917
+ line-height: calc(56 * var(--pt));
918
+ letter-spacing: 0;
919
+ }
920
+
921
+ .hkm-root .hkm-bubble-tail {
922
+ position: absolute;
923
+ inset-block-end: calc(-0.5 * var(--pt));
924
+ inset-inline-end: calc(-7 * var(--pt));
925
+ inline-size: calc(23 * var(--pt));
926
+ block-size: calc(18 * var(--pt));
927
+ overflow: visible;
928
+ fill: var(--hkm-bubble-bg);
929
+ }
930
+
931
+ .hkm-root .hkm-chat-row[data-hkm-side="in"] .hkm-bubble-tail {
932
+ inset-inline: calc(-7 * var(--pt)) auto;
933
+ scale: -1 1;
934
+ }
935
+
936
+ /* The chat variant: squarer bubbles with a small hook at the top of the first in a run. */
937
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] .hkm-bubble {
938
+ max-inline-size: calc(290 * var(--pt));
939
+ padding: calc(6 * var(--pt)) calc(9 * var(--pt)) calc(7 * var(--pt));
940
+ border-radius: calc(8 * var(--pt));
941
+ font-size: calc(15.5 * var(--pt));
942
+ line-height: calc(20.5 * var(--pt));
943
+ letter-spacing: 0;
944
+ box-shadow: 0 calc(1 * var(--pt)) calc(0.5 * var(--pt)) rgb(11 20 26 / 0.13);
945
+ }
946
+
947
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] .hkm-chat-row {
948
+ padding-inline: calc(14 * var(--pt));
949
+ }
950
+
951
+ .hkm-root .hkm-bubble[data-hkm-tail="top"] {
952
+ border-start-start-radius: 0;
953
+ }
954
+
955
+ .hkm-root .hkm-chat-row[data-hkm-side="out"] .hkm-bubble[data-hkm-tail="top"] {
956
+ border-start-start-radius: calc(8 * var(--pt));
957
+ border-start-end-radius: 0;
958
+ }
959
+
960
+ .hkm-root .hkm-bubble[data-hkm-tail="top"]::before {
961
+ content: "";
962
+ position: absolute;
963
+ inset-block-start: 0;
964
+ inset-inline-start: calc(-8 * var(--pt));
965
+ inline-size: calc(8 * var(--pt));
966
+ block-size: calc(13 * var(--pt));
967
+ background: var(--hkm-bubble-bg);
968
+ clip-path: polygon(100% 0, 0 0, 100% 100%);
969
+ }
970
+
971
+ .hkm-root .hkm-chat-row[data-hkm-side="out"] .hkm-bubble[data-hkm-tail="top"]::before {
972
+ inset-inline: auto calc(-8 * var(--pt));
973
+ clip-path: polygon(0 0, 100% 0, 0 100%);
974
+ }
975
+
976
+ .hkm-root .hkm-chat-label {
977
+ margin-block-start: calc(3 * var(--pt));
978
+ padding-inline: calc(4 * var(--pt));
979
+ color: var(--hkm-meta);
980
+ font-size: calc(11 * var(--pt));
981
+ line-height: calc(13 * var(--pt));
982
+ }
983
+
984
+ .hkm-root .hkm-chat-receipt {
985
+ margin-block-start: calc(2.5 * var(--pt));
986
+ padding-inline-end: calc(19 * var(--pt));
987
+ color: var(--hkm-meta);
988
+ font-size: calc(11 * var(--pt));
989
+ font-weight: 500;
990
+ line-height: calc(13 * var(--pt));
991
+ text-align: end;
992
+ }
993
+
994
+ .hkm-root .hkm-typing {
995
+ position: relative;
996
+ display: flex;
997
+ align-items: center;
998
+ justify-content: center;
999
+ gap: calc(4.5 * var(--pt, 1px));
1000
+ inline-size: calc(56 * var(--pt, 1px));
1001
+ block-size: calc(36 * var(--pt, 1px));
1002
+ margin-inline-start: calc(4 * var(--pt, 1px));
1003
+ margin-block-end: calc(3 * var(--pt, 1px));
1004
+ border-radius: calc(18 * var(--pt, 1px));
1005
+ background: var(--hkm-in-bg, var(--hkm-field));
1006
+ }
1007
+
1008
+ .hkm-root .hkm-typing i {
1009
+ inline-size: calc(8 * var(--pt, 1px));
1010
+ block-size: calc(8 * var(--pt, 1px));
1011
+ border-radius: 50%;
1012
+ background: var(--hkm-meta, var(--hkm-muted));
1013
+ opacity: 0.4;
1014
+ }
1015
+
1016
+ .hkm-root .hkm-typing::before,
1017
+ .hkm-root .hkm-typing::after {
1018
+ content: "";
1019
+ position: absolute;
1020
+ border-radius: 50%;
1021
+ background: inherit;
1022
+ }
1023
+
1024
+ .hkm-root .hkm-typing::before {
1025
+ inset-block-end: calc(-1.5 * var(--pt, 1px));
1026
+ inset-inline-start: calc(-1 * var(--pt, 1px));
1027
+ inline-size: calc(12 * var(--pt, 1px));
1028
+ block-size: calc(12 * var(--pt, 1px));
1029
+ }
1030
+
1031
+ .hkm-root .hkm-typing::after {
1032
+ inset-block-end: calc(-6.5 * var(--pt, 1px));
1033
+ inset-inline-start: calc(-5.5 * var(--pt, 1px));
1034
+ inline-size: calc(6 * var(--pt, 1px));
1035
+ block-size: calc(6 * var(--pt, 1px));
1036
+ }
1037
+
1038
+ .hkm-root .hkm-chat-nav {
1039
+ position: absolute;
1040
+ z-index: 3;
1041
+ inset: 0 0 auto;
1042
+ display: grid;
1043
+ grid-template-columns: calc(56 * var(--pt)) 1fr calc(56 * var(--pt));
1044
+ align-items: start;
1045
+ block-size: var(--hkm-nav-h);
1046
+ padding-block-start: calc(54 * var(--pt));
1047
+ background: var(--hkm-nav-bg);
1048
+ box-shadow: 0 calc(0.5 * var(--pt)) 0 var(--hkm-hairline);
1049
+ color: var(--hkm-tint);
1050
+ }
1051
+
1052
+ .hkm-root .hkm-chat-bare .hkm-chat-nav {
1053
+ padding-block-start: calc(12 * var(--pt));
1054
+ }
1055
+
1056
+ .hkm-root .hkm-chat-back,
1057
+ .hkm-root .hkm-chat-call {
1058
+ display: grid;
1059
+ place-items: center;
1060
+ margin-block-start: calc(12 * var(--pt));
1061
+ }
1062
+
1063
+ .hkm-root .hkm-chat-back .hkm-glyph,
1064
+ .hkm-root .hkm-chat-call .hkm-glyph {
1065
+ inline-size: calc(24 * var(--pt));
1066
+ block-size: calc(24 * var(--pt));
1067
+ }
1068
+
1069
+ .hkm-root .hkm-chat-contact {
1070
+ display: flex;
1071
+ flex-direction: column;
1072
+ align-items: center;
1073
+ min-inline-size: 0;
1074
+ padding-block-start: calc(2 * var(--pt));
1075
+ color: var(--hkm-in-fg);
1076
+ }
1077
+
1078
+ .hkm-root .hkm-chat-contact .hkm-avatar {
1079
+ inline-size: calc(46 * var(--pt)) !important;
1080
+ block-size: calc(46 * var(--pt)) !important;
1081
+ font-size: calc(19 * var(--pt)) !important;
1082
+ }
1083
+
1084
+ .hkm-root .hkm-chat-name {
1085
+ margin-block-start: calc(4 * var(--pt));
1086
+ overflow: hidden;
1087
+ max-inline-size: 100%;
1088
+ font-size: calc(11.5 * var(--pt));
1089
+ line-height: calc(14 * var(--pt));
1090
+ text-overflow: ellipsis;
1091
+ white-space: nowrap;
1092
+ }
1093
+
1094
+ .hkm-root .hkm-chat-via {
1095
+ margin-block-start: calc(1 * var(--pt));
1096
+ color: var(--hkm-meta);
1097
+ font-size: calc(10 * var(--pt));
1098
+ line-height: calc(12 * var(--pt));
1099
+ }
1100
+
1101
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] .hkm-chat-nav {
1102
+ grid-template-columns: calc(40 * var(--pt)) 1fr calc(52 * var(--pt));
1103
+ align-items: center;
1104
+ box-shadow: none;
1105
+ }
1106
+
1107
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] .hkm-chat-back,
1108
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] .hkm-chat-call {
1109
+ margin-block-start: 0;
1110
+ }
1111
+
1112
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] .hkm-chat-contact {
1113
+ display: grid;
1114
+ grid-template-columns: auto 1fr;
1115
+ grid-template-rows: auto auto;
1116
+ align-items: center;
1117
+ column-gap: calc(10 * var(--pt));
1118
+ justify-items: start;
1119
+ padding: 0;
1120
+ }
1121
+
1122
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] .hkm-chat-contact .hkm-avatar {
1123
+ grid-row: span 2;
1124
+ inline-size: calc(38 * var(--pt)) !important;
1125
+ block-size: calc(38 * var(--pt)) !important;
1126
+ font-size: calc(15 * var(--pt)) !important;
1127
+ }
1128
+
1129
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] .hkm-chat-name {
1130
+ margin: 0;
1131
+ font-size: calc(16 * var(--pt));
1132
+ font-weight: 600;
1133
+ line-height: calc(20 * var(--pt));
1134
+ }
1135
+
1136
+ .hkm-root .hkm-chat-composer {
1137
+ position: absolute;
1138
+ z-index: 3;
1139
+ inset: auto 0 0;
1140
+ display: flex;
1141
+ align-items: flex-start;
1142
+ gap: calc(10 * var(--pt));
1143
+ block-size: var(--hkm-composer-h);
1144
+ padding: calc(8 * var(--pt)) calc(14 * var(--pt)) 0;
1145
+ }
1146
+
1147
+ .hkm-root .hkm-chat-plus {
1148
+ display: grid;
1149
+ flex: none;
1150
+ place-items: center;
1151
+ inline-size: calc(36 * var(--pt));
1152
+ block-size: calc(36 * var(--pt));
1153
+ border-radius: 50%;
1154
+ background: light-dark(#e9e9eb, #2c2c2e);
1155
+ color: light-dark(#7c7c80, #a1a1a6);
1156
+ }
1157
+
1158
+ .hkm-root .hkm-chat-plus .hkm-glyph {
1159
+ inline-size: calc(18 * var(--pt));
1160
+ block-size: calc(18 * var(--pt));
1161
+ }
1162
+
1163
+ .hkm-root .hkm-chat-field {
1164
+ display: flex;
1165
+ flex: 1;
1166
+ align-items: center;
1167
+ block-size: calc(36 * var(--pt));
1168
+ padding-inline: calc(14 * var(--pt));
1169
+ border: calc(1 * var(--pt)) solid light-dark(#c7c7cc, #3a3a3c);
1170
+ border-radius: calc(18 * var(--pt));
1171
+ background: var(--hkm-screen, var(--hkm-bg));
1172
+ color: light-dark(#a6a6aa, #5b5b5f);
1173
+ font-size: calc(17 * var(--pt));
1174
+ }
1175
+
1176
+ .hkm-root .hkm-chat[data-hkm-chat="chat"] .hkm-chat-field {
1177
+ border: 0;
1178
+ background: var(--hkm-in-bg);
1179
+ color: var(--hkm-meta);
1180
+ }
1181
+
1182
+ /* ---------------------------------------------------------------- */
1183
+ /* Social feed */
1184
+ /* ---------------------------------------------------------------- */
1185
+
1186
+ .hkm-root .hkm-social {
1187
+ display: grid;
1188
+ grid-template-columns: 200px minmax(0, 600px) minmax(0, 300px);
1189
+ justify-content: center;
1190
+ min-block-size: 100%;
1191
+ }
1192
+
1193
+ .hkm-root .hkm-social-rail {
1194
+ display: flex;
1195
+ flex-direction: column;
1196
+ gap: 2px;
1197
+ padding: 10px 12px;
1198
+ }
1199
+
1200
+ .hkm-root .hkm-social-mark {
1201
+ display: grid;
1202
+ place-items: center;
1203
+ inline-size: 44px;
1204
+ block-size: 44px;
1205
+ margin-block-end: 4px;
1206
+ }
1207
+
1208
+ .hkm-root .hkm-rail-item {
1209
+ display: flex;
1210
+ align-items: center;
1211
+ gap: 16px;
1212
+ inline-size: fit-content;
1213
+ padding: 10px 14px 10px 10px;
1214
+ border-radius: 999px;
1215
+ font-size: 17px;
1216
+ }
1217
+
1218
+ .hkm-root .hkm-rail-item[data-hkm-active] {
1219
+ font-weight: 650;
1220
+ }
1221
+
1222
+ .hkm-root .hkm-rail-cta {
1223
+ display: grid;
1224
+ place-items: center;
1225
+ block-size: 46px;
1226
+ margin-block: 12px;
1227
+ border-radius: 999px;
1228
+ background: var(--hkm-fg);
1229
+ color: var(--hkm-bg);
1230
+ font-weight: 650;
1231
+ }
1232
+
1233
+ .hkm-root .hkm-rail-cta-glyph {
1234
+ display: none;
1235
+ }
1236
+
1237
+ .hkm-root .hkm-rail-me {
1238
+ display: flex;
1239
+ align-items: center;
1240
+ gap: 10px;
1241
+ margin-block-start: auto;
1242
+ padding: 8px;
1243
+ font-size: 14px;
1244
+ font-weight: 600;
1245
+ }
1246
+
1247
+ .hkm-root .hkm-social-main {
1248
+ min-inline-size: 0;
1249
+ border-inline: 1px solid var(--hkm-line);
1250
+ }
1251
+
1252
+ .hkm-root .hkm-social-tabs {
1253
+ display: grid;
1254
+ grid-template-columns: 1fr 1fr;
1255
+ border-block-end: 1px solid var(--hkm-line);
1256
+ color: var(--hkm-muted);
1257
+ font-size: 15px;
1258
+ font-weight: 500;
1259
+ text-align: center;
1260
+ }
1261
+
1262
+ .hkm-root .hkm-social-tabs span {
1263
+ padding-block: 15px;
1264
+ }
1265
+
1266
+ .hkm-root .hkm-social-tabs [data-hkm-active] {
1267
+ color: var(--hkm-fg);
1268
+ font-weight: 650;
1269
+ box-shadow: inset 0 -4px 0 -0px transparent;
1270
+ background: linear-gradient(var(--hkm-accent), var(--hkm-accent)) bottom center / 56px 4px no-repeat;
1271
+ }
1272
+
1273
+ .hkm-root .hkm-social-compose {
1274
+ display: flex;
1275
+ align-items: center;
1276
+ gap: 12px;
1277
+ padding: 12px 16px;
1278
+ border-block-end: 1px solid var(--hkm-line);
1279
+ }
1280
+
1281
+ .hkm-root .hkm-social-compose-field {
1282
+ flex: 1;
1283
+ color: var(--hkm-muted);
1284
+ font-size: 18px;
1285
+ }
1286
+
1287
+ .hkm-root .hkm-social-compose-button {
1288
+ padding: 7px 16px;
1289
+ border-radius: 999px;
1290
+ background: var(--hkm-fg);
1291
+ color: var(--hkm-bg);
1292
+ font-size: 14px;
1293
+ font-weight: 650;
1294
+ opacity: 0.5;
1295
+ }
1296
+
1297
+ .hkm-root .hkm-feed {
1298
+ display: grid;
1299
+ }
1300
+
1301
+ .hkm-root .hkm-post {
1302
+ display: grid;
1303
+ grid-template-columns: 40px minmax(0, 1fr);
1304
+ gap: 12px;
1305
+ padding: 12px 16px;
1306
+ border-block-end: 1px solid var(--hkm-line);
1307
+ }
1308
+
1309
+ .hkm-root .hkm-post-body {
1310
+ display: grid;
1311
+ gap: 4px;
1312
+ min-inline-size: 0;
1313
+ }
1314
+
1315
+ .hkm-root .hkm-post-head {
1316
+ display: flex;
1317
+ align-items: baseline;
1318
+ gap: 5px;
1319
+ min-inline-size: 0;
1320
+ white-space: nowrap;
1321
+ }
1322
+
1323
+ .hkm-root .hkm-post-head > .hkm-muted {
1324
+ overflow: hidden;
1325
+ text-overflow: ellipsis;
1326
+ }
1327
+
1328
+ .hkm-root .hkm-post-more {
1329
+ align-self: center;
1330
+ margin-inline-start: auto;
1331
+ }
1332
+
1333
+ .hkm-root .hkm-post-text {
1334
+ display: grid;
1335
+ gap: 10px;
1336
+ font-size: 15px;
1337
+ line-height: 1.35;
1338
+ overflow-wrap: anywhere;
1339
+ }
1340
+
1341
+ .hkm-root .hkm-post-photo {
1342
+ margin-block-start: 8px;
1343
+ border-radius: 16px;
1344
+ }
1345
+
1346
+ .hkm-root .hkm-post-actions {
1347
+ display: flex;
1348
+ justify-content: space-between;
1349
+ max-inline-size: 440px;
1350
+ margin-block-start: 6px;
1351
+ font-size: 13px;
1352
+ }
1353
+
1354
+ .hkm-root .hkm-post-actions span {
1355
+ display: flex;
1356
+ align-items: center;
1357
+ gap: 5px;
1358
+ font-variant-numeric: tabular-nums;
1359
+ }
1360
+
1361
+ .hkm-root .hkm-post-actions-end {
1362
+ gap: 12px;
1363
+ }
1364
+
1365
+ .hkm-root .hkm-social-aside {
1366
+ display: grid;
1367
+ align-content: start;
1368
+ gap: 16px;
1369
+ padding: 10px 16px;
1370
+ }
1371
+
1372
+ .hkm-root .hkm-aside-card {
1373
+ display: grid;
1374
+ gap: 12px;
1375
+ padding: 14px 16px;
1376
+ border-radius: 16px;
1377
+ }
1378
+
1379
+ .hkm-root .hkm-aside-title {
1380
+ font-size: 18px;
1381
+ font-weight: 750;
1382
+ }
1383
+
1384
+ .hkm-root .hkm-aside-line {
1385
+ font-size: 14px;
1386
+ font-weight: 600;
1387
+ }
1388
+
1389
+ @container hkm (max-width: 1080px) {
1390
+ .hkm-root .hkm-social {
1391
+ grid-template-columns: 72px minmax(0, 600px) minmax(0, 260px);
1392
+ }
1393
+
1394
+ .hkm-root .hkm-social-rail {
1395
+ align-items: center;
1396
+ padding-inline: 8px;
1397
+ }
1398
+
1399
+ .hkm-root .hkm-social-rail .hkm-rail-label {
1400
+ display: none;
1401
+ }
1402
+
1403
+ .hkm-root .hkm-rail-item {
1404
+ padding: 10px;
1405
+ }
1406
+
1407
+ .hkm-root .hkm-rail-cta {
1408
+ inline-size: 46px;
1409
+ }
1410
+
1411
+ .hkm-root .hkm-rail-cta-glyph {
1412
+ display: block;
1413
+ }
1414
+
1415
+ .hkm-root .hkm-rail-me {
1416
+ padding: 8px 0;
1417
+ }
1418
+ }
1419
+
1420
+ @container hkm (max-width: 900px) {
1421
+ .hkm-root .hkm-social {
1422
+ grid-template-columns: 72px minmax(0, 1fr);
1423
+ }
1424
+
1425
+ .hkm-root .hkm-social-aside {
1426
+ display: none;
1427
+ }
1428
+
1429
+ .hkm-root .hkm-social-main {
1430
+ border-inline-end: 0;
1431
+ }
1432
+ }
1433
+
1434
+ @container hkm (max-width: 560px) {
1435
+ .hkm-root .hkm-social {
1436
+ grid-template-columns: minmax(0, 1fr);
1437
+ }
1438
+
1439
+ .hkm-root .hkm-social-rail {
1440
+ display: none;
1441
+ }
1442
+
1443
+ .hkm-root .hkm-social-main {
1444
+ border-inline: 0;
1445
+ }
1446
+
1447
+ .hkm-root .hkm-social-compose {
1448
+ display: none;
1449
+ }
1450
+
1451
+ .hkm-root .hkm-post {
1452
+ padding-inline: 12px;
1453
+ }
1454
+ }
1455
+
1456
+ /* ---------------------------------------------------------------- */
1457
+ /* Work feed */
1458
+ /* ---------------------------------------------------------------- */
1459
+
1460
+ .hkm-root.hkm-work {
1461
+ --hkm-surface: light-dark(#f4f2ee, #000000);
1462
+ --hkm-card: light-dark(#ffffff, #1b1f23);
1463
+ --hkm-fade-to: var(--hkm-surface);
1464
+ }
1465
+
1466
+ .hkm-root.hkm-work .hkm-page {
1467
+ background: var(--hkm-surface);
1468
+ }
1469
+
1470
+ .hkm-root .hkm-work-top {
1471
+ position: relative;
1472
+ z-index: 2;
1473
+ display: flex;
1474
+ align-items: center;
1475
+ gap: 12px;
1476
+ block-size: 52px;
1477
+ padding-inline: 24px;
1478
+ border-block-end: 1px solid var(--hkm-line);
1479
+ background: var(--hkm-card);
1480
+ }
1481
+
1482
+ .hkm-root .hkm-work-mark {
1483
+ display: grid;
1484
+ place-items: center;
1485
+ inline-size: 34px;
1486
+ block-size: 34px;
1487
+ border-radius: 7px;
1488
+ background: var(--hkm-accent);
1489
+ color: #ffffff;
1490
+ }
1491
+
1492
+ .hkm-root .hkm-work-top .hkm-search-field {
1493
+ inline-size: min(280px, 40%);
1494
+ border-radius: 6px;
1495
+ }
1496
+
1497
+ .hkm-root .hkm-work-nav {
1498
+ display: flex;
1499
+ align-items: center;
1500
+ gap: 26px;
1501
+ margin-inline-start: auto;
1502
+ color: var(--hkm-muted);
1503
+ }
1504
+
1505
+ .hkm-root .hkm-work-nav [data-hkm-active] {
1506
+ color: var(--hkm-fg);
1507
+ }
1508
+
1509
+ .hkm-root .hkm-work {
1510
+ display: grid;
1511
+ grid-template-columns: 220px minmax(0, 560px) 300px;
1512
+ justify-content: center;
1513
+ align-items: start;
1514
+ gap: 22px;
1515
+ padding: 22px 20px;
1516
+ }
1517
+
1518
+ .hkm-root .hkm-work-profile {
1519
+ display: grid;
1520
+ justify-items: center;
1521
+ overflow: hidden;
1522
+ padding-block-end: 16px;
1523
+ text-align: center;
1524
+ }
1525
+
1526
+ .hkm-root .hkm-work-cover {
1527
+ justify-self: stretch;
1528
+ block-size: 56px;
1529
+ background: linear-gradient(120deg, light-dark(#c8d5e8, #2b3a52), light-dark(#e9dccb, #4a3b2b));
1530
+ }
1531
+
1532
+ .hkm-root .hkm-work-profile .hkm-avatar {
1533
+ margin-block: -28px 8px;
1534
+ box-shadow: 0 0 0 2px var(--hkm-card);
1535
+ }
1536
+
1537
+ .hkm-root .hkm-work-profile .hkm-muted {
1538
+ padding-inline: 12px;
1539
+ font-size: 12px;
1540
+ }
1541
+
1542
+ .hkm-root .hkm-work-main {
1543
+ display: grid;
1544
+ grid-template-columns: minmax(0, 1fr);
1545
+ gap: 10px;
1546
+ min-inline-size: 0;
1547
+ }
1548
+
1549
+ .hkm-root .hkm-work-compose {
1550
+ display: flex;
1551
+ align-items: center;
1552
+ gap: 10px;
1553
+ padding: 12px 16px;
1554
+ }
1555
+
1556
+ .hkm-root .hkm-work-compose .hkm-social-compose-field {
1557
+ display: flex;
1558
+ align-items: center;
1559
+ block-size: 46px;
1560
+ padding-inline: 16px;
1561
+ border: 1px solid var(--hkm-line);
1562
+ border-radius: 999px;
1563
+ font-size: 14px;
1564
+ font-weight: 600;
1565
+ }
1566
+
1567
+ .hkm-root .hkm-work-post {
1568
+ display: grid;
1569
+ grid-template-columns: minmax(0, 1fr);
1570
+ gap: 10px;
1571
+ padding-block: 14px 4px;
1572
+ }
1573
+
1574
+ .hkm-root .hkm-work-post > :not(.hkm-work-photo) {
1575
+ margin-inline: 16px;
1576
+ }
1577
+
1578
+ .hkm-root .hkm-work-post-head {
1579
+ display: flex;
1580
+ align-items: flex-start;
1581
+ gap: 10px;
1582
+ }
1583
+
1584
+ .hkm-root .hkm-work-who {
1585
+ display: grid;
1586
+ flex: 1;
1587
+ min-inline-size: 0;
1588
+ font-size: 12px;
1589
+ line-height: 1.35;
1590
+ }
1591
+
1592
+ .hkm-root .hkm-work-who b {
1593
+ font-size: 14px;
1594
+ }
1595
+
1596
+ .hkm-root .hkm-work-follow {
1597
+ color: var(--hkm-accent);
1598
+ font-size: 14px;
1599
+ font-weight: 650;
1600
+ }
1601
+
1602
+ .hkm-root .hkm-work-post .hkm-post-text {
1603
+ font-size: 14px;
1604
+ line-height: 1.45;
1605
+ }
1606
+
1607
+ .hkm-root .hkm-work-photo {
1608
+ border-radius: 0;
1609
+ }
1610
+
1611
+ .hkm-root .hkm-work-counts {
1612
+ display: flex;
1613
+ justify-content: space-between;
1614
+ padding-block-end: 8px;
1615
+ border-block-end: 1px solid var(--hkm-line);
1616
+ font-size: 12px;
1617
+ }
1618
+
1619
+ .hkm-root .hkm-work-actions {
1620
+ display: flex;
1621
+ justify-content: space-around;
1622
+ font-size: 14px;
1623
+ font-weight: 600;
1624
+ }
1625
+
1626
+ .hkm-root .hkm-work-actions span {
1627
+ display: flex;
1628
+ align-items: center;
1629
+ gap: 6px;
1630
+ padding: 10px 8px;
1631
+ }
1632
+
1633
+ .hkm-root .hkm-work-comment {
1634
+ display: flex;
1635
+ align-items: flex-start;
1636
+ gap: 8px;
1637
+ margin-block-end: 12px;
1638
+ }
1639
+
1640
+ .hkm-root .hkm-work-comment-box {
1641
+ display: grid;
1642
+ flex: 1;
1643
+ gap: 2px;
1644
+ min-inline-size: 0;
1645
+ padding: 8px 12px 10px;
1646
+ border-radius: 0 10px 10px;
1647
+ background: var(--hkm-field);
1648
+ font-size: 13px;
1649
+ }
1650
+
1651
+ .hkm-root .hkm-work-comment-box > .hkm-muted {
1652
+ font-size: 12px;
1653
+ }
1654
+
1655
+ .hkm-root .hkm-work-comment-box p {
1656
+ margin-block-start: 4px;
1657
+ }
1658
+
1659
+ .hkm-root .hkm-work-right .hkm-aside-card {
1660
+ border-radius: 10px;
1661
+ }
1662
+
1663
+ .hkm-root .hkm-work-right .hkm-aside-title {
1664
+ font-size: 15px;
1665
+ }
1666
+
1667
+ @container hkm (max-width: 1100px) {
1668
+ .hkm-root .hkm-work {
1669
+ grid-template-columns: 200px minmax(0, 560px);
1670
+ }
1671
+
1672
+ .hkm-root .hkm-work-right {
1673
+ display: none;
1674
+ }
1675
+ }
1676
+
1677
+ @container hkm (max-width: 780px) {
1678
+ .hkm-root .hkm-work {
1679
+ grid-template-columns: minmax(0, 1fr);
1680
+ padding: 12px 0;
1681
+ }
1682
+
1683
+ .hkm-root .hkm-work-left,
1684
+ .hkm-root .hkm-work-top .hkm-search-field {
1685
+ display: none;
1686
+ }
1687
+
1688
+ .hkm-root .hkm-work-main > .hkm-card {
1689
+ border-inline: 0;
1690
+ border-radius: 0;
1691
+ }
1692
+
1693
+ .hkm-root .hkm-work-top {
1694
+ padding-inline: 12px;
1695
+ }
1696
+
1697
+ .hkm-root .hkm-work-nav {
1698
+ gap: 18px;
1699
+ }
1700
+ }
1701
+
1702
+ @container hkm (max-width: 440px) {
1703
+ .hkm-root .hkm-work-post > :not(.hkm-work-photo) {
1704
+ margin-inline: 12px;
1705
+ }
1706
+
1707
+ .hkm-root .hkm-work-actions {
1708
+ justify-content: space-between;
1709
+ font-size: 13px;
1710
+ }
1711
+
1712
+ .hkm-root .hkm-work-actions span {
1713
+ gap: 4px;
1714
+ padding-inline: 2px;
1715
+ }
1716
+
1717
+ .hkm-root .hkm-work-nav {
1718
+ gap: 14px;
1719
+ }
1720
+ }
1721
+
1722
+ /* ---------------------------------------------------------------- */
1723
+ /* Inbox */
1724
+ /* ---------------------------------------------------------------- */
1725
+
1726
+ .hkm-root.hkm-inbox {
1727
+ --hkm-surface: light-dark(#f6f8fc, #111214);
1728
+ --hkm-fade-to: var(--hkm-surface);
1729
+ }
1730
+
1731
+ .hkm-root.hkm-inbox .hkm-page {
1732
+ background: var(--hkm-surface);
1733
+ }
1734
+
1735
+ .hkm-root .hkm-inbox {
1736
+ display: grid;
1737
+ grid-template-columns: 200px minmax(0, 1fr);
1738
+ min-block-size: 100%;
1739
+ }
1740
+
1741
+ .hkm-root .hkm-inbox[data-hkm-open] {
1742
+ grid-template-columns: 200px minmax(0, 0.9fr) minmax(0, 1.1fr);
1743
+ }
1744
+
1745
+ .hkm-root .hkm-inbox-folders {
1746
+ display: flex;
1747
+ flex-direction: column;
1748
+ gap: 1px;
1749
+ padding: 10px 10px 10px 8px;
1750
+ }
1751
+
1752
+ .hkm-root .hkm-inbox-compose {
1753
+ display: flex;
1754
+ align-items: center;
1755
+ gap: 12px;
1756
+ inline-size: fit-content;
1757
+ margin-block-end: 12px;
1758
+ padding: 16px 22px 16px 18px;
1759
+ border-radius: 16px;
1760
+ background: light-dark(#c2e7ff, #36434f);
1761
+ font-size: 14px;
1762
+ font-weight: 600;
1763
+ }
1764
+
1765
+ .hkm-root .hkm-inbox-folders .hkm-rail-item {
1766
+ inline-size: 100%;
1767
+ gap: 14px;
1768
+ padding: 7px 12px 7px 14px;
1769
+ font-size: 14px;
1770
+ }
1771
+
1772
+ .hkm-root .hkm-inbox-folders .hkm-rail-item[data-hkm-active] {
1773
+ background: light-dark(#d3e3fd, #2b3847);
1774
+ }
1775
+
1776
+ .hkm-root .hkm-inbox-count {
1777
+ margin-inline-start: auto;
1778
+ font-size: 12px;
1779
+ font-variant-numeric: tabular-nums;
1780
+ }
1781
+
1782
+ .hkm-root .hkm-inbox-list {
1783
+ min-inline-size: 0;
1784
+ margin: 0 10px 10px 0;
1785
+ overflow: hidden;
1786
+ border-radius: 16px;
1787
+ background: var(--hkm-card);
1788
+ }
1789
+
1790
+ .hkm-root .hkm-inbox-toolbar {
1791
+ display: flex;
1792
+ padding: 10px 12px;
1793
+ border-block-end: 1px solid var(--hkm-line);
1794
+ }
1795
+
1796
+ .hkm-root .hkm-inbox-toolbar .hkm-search-field {
1797
+ flex: 1;
1798
+ max-inline-size: 520px;
1799
+ }
1800
+
1801
+ .hkm-root .hkm-inbox-rows {
1802
+ display: grid;
1803
+ }
1804
+
1805
+ .hkm-root .hkm-inbox-row {
1806
+ display: grid;
1807
+ grid-template-columns: 20px minmax(90px, 160px) minmax(0, 1fr) auto;
1808
+ align-items: center;
1809
+ gap: 12px;
1810
+ padding: 9px 16px 9px 12px;
1811
+ border-block-end: 1px solid var(--hkm-line);
1812
+ color: var(--hkm-muted);
1813
+ font-size: 14px;
1814
+ white-space: nowrap;
1815
+ }
1816
+
1817
+ .hkm-root .hkm-inbox-row[data-hkm-unread] {
1818
+ color: var(--hkm-fg);
1819
+ font-weight: 650;
1820
+ }
1821
+
1822
+ .hkm-root .hkm-inbox-row:not([data-hkm-unread]) {
1823
+ background: light-dark(#f2f6fc, #17181b);
1824
+ }
1825
+
1826
+ .hkm-root .hkm-inbox-row[data-hkm-selected] {
1827
+ background: light-dark(#c2dbff, #283444);
1828
+ }
1829
+
1830
+ .hkm-root .hkm-inbox-star {
1831
+ color: var(--hkm-faint);
1832
+ }
1833
+
1834
+ .hkm-root .hkm-inbox-star[data-hkm-on] {
1835
+ color: #f4b400;
1836
+ }
1837
+
1838
+ .hkm-root .hkm-inbox-from,
1839
+ .hkm-root .hkm-inbox-line {
1840
+ overflow: hidden;
1841
+ text-overflow: ellipsis;
1842
+ }
1843
+
1844
+ .hkm-root .hkm-inbox-subject {
1845
+ color: var(--hkm-fg);
1846
+ }
1847
+
1848
+ .hkm-root .hkm-inbox-line .hkm-muted {
1849
+ font-weight: 400;
1850
+ }
1851
+
1852
+ .hkm-root .hkm-inbox-time {
1853
+ font-size: 12px;
1854
+ font-variant-numeric: tabular-nums;
1855
+ }
1856
+
1857
+ .hkm-root .hkm-inbox-reader {
1858
+ min-inline-size: 0;
1859
+ margin: 0 10px 10px 0;
1860
+ padding: 20px 22px;
1861
+ border-radius: 16px;
1862
+ background: var(--hkm-card);
1863
+ }
1864
+
1865
+ .hkm-root .hkm-inbox-message {
1866
+ display: grid;
1867
+ gap: 16px;
1868
+ }
1869
+
1870
+ .hkm-root .hkm-inbox-message-subject {
1871
+ font-size: 21px;
1872
+ font-weight: 450;
1873
+ line-height: 1.3;
1874
+ }
1875
+
1876
+ .hkm-root .hkm-inbox-message-head {
1877
+ display: flex;
1878
+ align-items: center;
1879
+ gap: 12px;
1880
+ font-size: 13px;
1881
+ }
1882
+
1883
+ .hkm-root .hkm-inbox-message-who {
1884
+ display: grid;
1885
+ flex: 1;
1886
+ min-inline-size: 0;
1887
+ }
1888
+
1889
+ .hkm-root .hkm-inbox-message-body {
1890
+ display: grid;
1891
+ gap: 12px;
1892
+ font-size: 14px;
1893
+ line-height: 1.55;
1894
+ }
1895
+
1896
+ @container hkm (max-width: 900px) {
1897
+ .hkm-root .hkm-inbox[data-hkm-open] {
1898
+ grid-template-columns: minmax(0, 1fr);
1899
+ }
1900
+
1901
+ .hkm-root .hkm-inbox[data-hkm-open] .hkm-inbox-folders,
1902
+ .hkm-root .hkm-inbox[data-hkm-open] .hkm-inbox-list {
1903
+ display: none;
1904
+ }
1905
+
1906
+ .hkm-root .hkm-inbox[data-hkm-open] .hkm-inbox-reader {
1907
+ margin: 0;
1908
+ border-radius: 0;
1909
+ }
1910
+ }
1911
+
1912
+ @container hkm (max-width: 640px) {
1913
+ .hkm-root .hkm-inbox {
1914
+ grid-template-columns: minmax(0, 1fr);
1915
+ }
1916
+
1917
+ .hkm-root .hkm-inbox-folders {
1918
+ display: none;
1919
+ }
1920
+
1921
+ .hkm-root .hkm-inbox-list {
1922
+ margin: 0;
1923
+ border-radius: 0;
1924
+ }
1925
+
1926
+ .hkm-root .hkm-inbox-row {
1927
+ grid-template-columns: 18px minmax(0, 1fr) auto;
1928
+ grid-template-areas: "star from time" "star line line";
1929
+ row-gap: 2px;
1930
+ white-space: nowrap;
1931
+ }
1932
+
1933
+ .hkm-root .hkm-inbox-star {
1934
+ grid-area: star;
1935
+ align-self: start;
1936
+ }
1937
+
1938
+ .hkm-root .hkm-inbox-from {
1939
+ grid-area: from;
1940
+ }
1941
+
1942
+ .hkm-root .hkm-inbox-line {
1943
+ grid-area: line;
1944
+ }
1945
+
1946
+ .hkm-root .hkm-inbox-time {
1947
+ grid-area: time;
1948
+ }
1949
+ }
1950
+
1951
+ /* ---------------------------------------------------------------- */
1952
+ /* Article */
1953
+ /* ---------------------------------------------------------------- */
1954
+
1955
+ .hkm-root .hkm-article {
1956
+ min-block-size: 100%;
1957
+ background: var(--hkm-bg);
1958
+ }
1959
+
1960
+ .hkm-root .hkm-article-masthead {
1961
+ display: grid;
1962
+ grid-template-columns: auto 1fr auto;
1963
+ align-items: center;
1964
+ gap: 12px;
1965
+ padding: 12px 20px;
1966
+ border-block-end: 1px solid var(--hkm-line);
1967
+ }
1968
+
1969
+ .hkm-root .hkm-article-site {
1970
+ font: 700 22px/1 var(--hkm-serif);
1971
+ letter-spacing: -0.01em;
1972
+ text-align: center;
1973
+ }
1974
+
1975
+ .hkm-root .hkm-article-body {
1976
+ display: grid;
1977
+ gap: 14px;
1978
+ max-inline-size: 640px;
1979
+ margin-inline: auto;
1980
+ padding: 28px 24px 40px;
1981
+ }
1982
+
1983
+ .hkm-root .hkm-article-kicker {
1984
+ color: var(--hkm-accent);
1985
+ font-size: 12px;
1986
+ font-weight: 700;
1987
+ letter-spacing: 0.06em;
1988
+ text-transform: uppercase;
1989
+ }
1990
+
1991
+ .hkm-root .hkm-article-title {
1992
+ font: 700 clamp(24px, 5cqi, 34px)/1.15 var(--hkm-serif);
1993
+ letter-spacing: -0.012em;
1994
+ text-wrap: balance;
1995
+ }
1996
+
1997
+ .hkm-root .hkm-article-dek {
1998
+ color: var(--hkm-muted);
1999
+ font: 400 18px/1.4 var(--hkm-serif);
2000
+ }
2001
+
2002
+ .hkm-root .hkm-article-byline {
2003
+ display: flex;
2004
+ flex-wrap: wrap;
2005
+ align-items: center;
2006
+ gap: 6px 10px;
2007
+ padding-block: 6px 4px;
2008
+ font-size: 13px;
2009
+ }
2010
+
2011
+ .hkm-root .hkm-article-photo {
2012
+ border-radius: 4px;
2013
+ }
2014
+
2015
+ .hkm-root .hkm-article-text {
2016
+ display: grid;
2017
+ gap: 16px;
2018
+ font: 400 17px/1.6 var(--hkm-serif);
2019
+ }
2020
+
2021
+ .hkm-root .hkm-article-comments {
2022
+ display: grid;
2023
+ gap: 14px;
2024
+ margin-block-start: 12px;
2025
+ padding-block-start: 18px;
2026
+ border-block-start: 1px solid var(--hkm-line);
2027
+ }
2028
+
2029
+ .hkm-root .hkm-article-comments-title {
2030
+ font-size: 15px;
2031
+ font-weight: 700;
2032
+ }
2033
+
2034
+ .hkm-root .hkm-article-comment {
2035
+ display: flex;
2036
+ align-items: flex-start;
2037
+ gap: 10px;
2038
+ font-size: 14px;
2039
+ }
2040
+
2041
+ .hkm-root .hkm-article-comment-body {
2042
+ display: grid;
2043
+ gap: 2px;
2044
+ min-inline-size: 0;
2045
+ }
2046
+
2047
+ @container hkm (max-width: 560px) {
2048
+ .hkm-root .hkm-article-body {
2049
+ padding: 20px 16px 32px;
2050
+ }
2051
+
2052
+ .hkm-root .hkm-article-text {
2053
+ font-size: 16px;
2054
+ }
2055
+ }
2056
+
2057
+ /* ---------------------------------------------------------------- */
2058
+ /* Coding agent */
2059
+ /* ---------------------------------------------------------------- */
2060
+
2061
+ .hkm-root .hkm-agent-body {
2062
+ padding: 16px 18px 20px;
2063
+ }
2064
+
2065
+ .hkm-root .hkm-window[data-hkm-agent="generic-cli"] .hkm-agent-body {
2066
+ font: 400 13.5px/1.55 var(--hkm-mono);
2067
+ }
2068
+
2069
+ .hkm-root .hkm-agent-turns {
2070
+ display: grid;
2071
+ gap: 12px;
2072
+ }
2073
+
2074
+ .hkm-root .hkm-agent-turn {
2075
+ display: flex;
2076
+ align-items: flex-start;
2077
+ gap: 10px;
2078
+ overflow-wrap: anywhere;
2079
+ }
2080
+
2081
+ .hkm-root .hkm-agent-marker {
2082
+ display: grid;
2083
+ flex: none;
2084
+ place-items: center;
2085
+ inline-size: 18px;
2086
+ block-size: 1.55em;
2087
+ color: var(--hkm-accent);
2088
+ font-weight: 700;
2089
+ }
2090
+
2091
+ .hkm-root .hkm-agent-turn[data-hkm-role="user"] {
2092
+ color: var(--hkm-fg);
2093
+ font-weight: 500;
2094
+ }
2095
+
2096
+ .hkm-root .hkm-agent-turn[data-hkm-role="user"] .hkm-agent-marker {
2097
+ color: var(--hkm-muted);
2098
+ }
2099
+
2100
+ .hkm-root .hkm-agent-text {
2101
+ white-space: pre-wrap;
2102
+ }
2103
+
2104
+ .hkm-root .hkm-agent-tool {
2105
+ display: grid;
2106
+ flex: 1;
2107
+ min-inline-size: 0;
2108
+ margin-inline-start: 28px;
2109
+ overflow: hidden;
2110
+ border: 1px solid var(--hkm-line);
2111
+ border-radius: 8px;
2112
+ font-size: 0.93em;
2113
+ }
2114
+
2115
+ .hkm-root .hkm-agent-tool-name {
2116
+ display: flex;
2117
+ align-items: center;
2118
+ gap: 8px;
2119
+ padding: 6px 10px;
2120
+ border-block-end: 1px solid var(--hkm-line);
2121
+ background: var(--hkm-field);
2122
+ font-weight: 600;
2123
+ }
2124
+
2125
+ .hkm-root .hkm-agent-status {
2126
+ inline-size: 7px;
2127
+ block-size: 7px;
2128
+ border-radius: 50%;
2129
+ background: var(--hkm-faint);
2130
+ }
2131
+
2132
+ .hkm-root .hkm-agent-turn[data-hkm-tone="ok"] .hkm-agent-status {
2133
+ background: var(--hkm-ok);
2134
+ }
2135
+
2136
+ .hkm-root .hkm-agent-turn[data-hkm-tone="warn"] .hkm-agent-status {
2137
+ background: var(--hkm-warn);
2138
+ }
2139
+
2140
+ .hkm-root .hkm-agent-turn[data-hkm-tone="error"] .hkm-agent-status {
2141
+ background: var(--hkm-error);
2142
+ }
2143
+
2144
+ .hkm-root .hkm-agent-turn[data-hkm-tone="running"] .hkm-agent-status {
2145
+ background: var(--hkm-accent);
2146
+ }
2147
+
2148
+ .hkm-root .hkm-agent-tool-output {
2149
+ padding: 8px 10px;
2150
+ color: var(--hkm-muted);
2151
+ font-family: var(--hkm-mono);
2152
+ white-space: pre-wrap;
2153
+ }
2154
+
2155
+ .hkm-root .hkm-window[data-hkm-agent="generic-chat"] .hkm-agent-turn[data-hkm-role="user"] {
2156
+ justify-content: flex-end;
2157
+ }
2158
+
2159
+ .hkm-root .hkm-window[data-hkm-agent="generic-chat"] .hkm-agent-turn[data-hkm-role="user"] .hkm-agent-marker {
2160
+ display: none;
2161
+ }
2162
+
2163
+ .hkm-root .hkm-window[data-hkm-agent="generic-chat"] .hkm-agent-turn[data-hkm-role="user"] .hkm-agent-text {
2164
+ max-inline-size: 80%;
2165
+ padding: 8px 12px;
2166
+ border-radius: 14px;
2167
+ background: var(--hkm-field);
2168
+ }
2169
+
2170
+ .hkm-root .hkm-agent-composer {
2171
+ display: flex;
2172
+ align-items: center;
2173
+ gap: 8px;
2174
+ margin: 0 14px 14px;
2175
+ padding: 8px 8px 8px 14px;
2176
+ border: 1px solid var(--hkm-line);
2177
+ border-radius: 14px;
2178
+ color: var(--hkm-muted);
2179
+ font-size: 14px;
2180
+ }
2181
+
2182
+ .hkm-root .hkm-agent-composer-field {
2183
+ flex: 1;
2184
+ }
2185
+
2186
+ .hkm-root .hkm-agent-composer-send {
2187
+ display: grid;
2188
+ place-items: center;
2189
+ inline-size: 28px;
2190
+ block-size: 28px;
2191
+ border-radius: 8px;
2192
+ background: var(--hkm-fg);
2193
+ color: var(--hkm-bg);
2194
+ }
2195
+
2196
+ /* ---------------------------------------------------------------- */
2197
+ /* Hotspot */
2198
+ /* ---------------------------------------------------------------- */
2199
+
2200
+ .hkm-root .hkm-hotspot {
2201
+ position: absolute;
2202
+ z-index: 8;
2203
+ inline-size: 0;
2204
+ block-size: 0;
2205
+ pointer-events: none;
2206
+ }
2207
+
2208
+ .hkm-root .hkm-hotspot-ring {
2209
+ position: absolute;
2210
+ inset: -11px;
2211
+ border: 2px solid var(--hkm-accent);
2212
+ border-radius: 50%;
2213
+ background: color-mix(in srgb, var(--hkm-accent) 18%, transparent);
2214
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--hkm-accent) 14%, transparent);
2215
+ }
2216
+
2217
+ .hkm-root .hkm-hotspot-label {
2218
+ position: absolute;
2219
+ inset-block-start: -13px;
2220
+ inset-inline-start: 20px;
2221
+ padding: 4px 9px;
2222
+ border-radius: 7px;
2223
+ background: var(--hkm-fg);
2224
+ color: var(--hkm-bg);
2225
+ font-size: 12px;
2226
+ font-weight: 600;
2227
+ line-height: 1.4;
2228
+ white-space: nowrap;
2229
+ box-shadow: var(--hkm-shadow);
2230
+ }
2231
+
2232
+ .hkm-root .hkm-hotspot[data-hkm-side="start"] .hkm-hotspot-label {
2233
+ inset-inline: auto 20px;
2234
+ }
2235
+
2236
+ /* ---------------------------------------------------------------- */
2237
+ /* Showcase shells (client) */
2238
+ /* ---------------------------------------------------------------- */
2239
+
2240
+ .hkm-showcase {
2241
+ --hkm-sc-bg: light-dark(#fafafa, #141518);
2242
+ --hkm-sc-field: light-dark(#ffffff, #1e1f23);
2243
+ --hkm-sc-fg: var(--foreground, light-dark(#15171a, #eceef1));
2244
+ --hkm-sc-muted: var(--muted-foreground, light-dark(#5e6570, #9ba2ac));
2245
+ --hkm-sc-line: light-dark(#e3e5e8, #2c2e34);
2246
+ --hkm-sc-radius: var(--radius-lg, 14px);
2247
+
2248
+ container: hkm-showcase / inline-size;
2249
+ display: flex;
2250
+ flex-direction: column;
2251
+ gap: 14px;
2252
+ min-inline-size: 0;
2253
+ max-inline-size: 100%;
2254
+ margin: 0;
2255
+ color: var(--hkm-sc-fg);
2256
+ font: 400 14px/1.45 var(--font-text, system-ui, -apple-system, "Segoe UI", sans-serif);
2257
+ }
2258
+
2259
+ .hkm-showcase *,
2260
+ .hkm-showcase *::before,
2261
+ .hkm-showcase *::after {
2262
+ box-sizing: border-box;
2263
+ }
2264
+
2265
+ .hkm-showcase .hkm-showcase-controls {
2266
+ display: flex;
2267
+ flex-direction: column;
2268
+ gap: 10px;
2269
+ padding: 14px 16px;
2270
+ border: 1px solid var(--hkm-sc-line);
2271
+ border-radius: var(--hkm-sc-radius);
2272
+ background: var(--hkm-sc-bg);
2273
+ }
2274
+
2275
+ .hkm-showcase .hkm-tabs {
2276
+ display: flex;
2277
+ gap: 4px;
2278
+ margin: -4px -6px 0;
2279
+ padding: 4px 6px 10px;
2280
+ overflow-x: auto;
2281
+ border-block-end: 1px solid var(--hkm-sc-line);
2282
+ scrollbar-width: none;
2283
+ }
2284
+
2285
+ .hkm-showcase .hkm-tab,
2286
+ .hkm-showcase .hkm-segmented button,
2287
+ .hkm-showcase .hkm-step-button {
2288
+ appearance: none;
2289
+ margin: 0;
2290
+ border: 0;
2291
+ background: none;
2292
+ color: inherit;
2293
+ font: inherit;
2294
+ cursor: pointer;
2295
+ -webkit-tap-highlight-color: transparent;
2296
+ }
2297
+
2298
+ .hkm-showcase .hkm-tab {
2299
+ display: inline-flex;
2300
+ flex: none;
2301
+ align-items: center;
2302
+ gap: 8px;
2303
+ min-block-size: 32px;
2304
+ padding: 6px 13px;
2305
+ border-radius: 999px;
2306
+ color: var(--hkm-sc-muted);
2307
+ font-weight: 500;
2308
+ }
2309
+
2310
+ .hkm-showcase .hkm-tab:hover {
2311
+ color: var(--hkm-sc-fg);
2312
+ }
2313
+
2314
+ .hkm-showcase .hkm-tab[aria-selected="true"] {
2315
+ background: var(--hkm-sc-fg);
2316
+ color: var(--hkm-sc-bg);
2317
+ }
2318
+
2319
+ .hkm-showcase .hkm-step-number {
2320
+ display: inline-grid;
2321
+ place-items: center;
2322
+ inline-size: 20px;
2323
+ block-size: 20px;
2324
+ border: 1px solid currentColor;
2325
+ border-radius: 50%;
2326
+ font-size: 11px;
2327
+ font-variant-numeric: tabular-nums;
2328
+ }
2329
+
2330
+ .hkm-showcase .hkm-tab[data-hkm-done] .hkm-step-number {
2331
+ border-color: var(--hkm-accent);
2332
+ background: var(--hkm-accent);
2333
+ color: #ffffff;
2334
+ }
2335
+
2336
+ .hkm-showcase .hkm-showcase-settings {
2337
+ display: flex;
2338
+ flex-wrap: wrap;
2339
+ gap: 8px 28px;
2340
+ }
2341
+
2342
+ .hkm-showcase .hkm-showcase-row {
2343
+ display: flex;
2344
+ align-items: center;
2345
+ gap: 12px;
2346
+ }
2347
+
2348
+ .hkm-showcase .hkm-showcase-label {
2349
+ white-space: nowrap;
2350
+ }
2351
+
2352
+ .hkm-showcase .hkm-segmented {
2353
+ display: inline-flex;
2354
+ overflow: hidden;
2355
+ border: 1px solid var(--hkm-sc-line);
2356
+ border-radius: 9px;
2357
+ background: var(--hkm-sc-field);
2358
+ }
2359
+
2360
+ .hkm-showcase .hkm-segmented button {
2361
+ min-block-size: 30px;
2362
+ padding: 5px 12px;
2363
+ font-size: 13px;
2364
+ }
2365
+
2366
+ .hkm-showcase .hkm-segmented button + button {
2367
+ border-inline-start: 1px solid var(--hkm-sc-line);
2368
+ }
2369
+
2370
+ .hkm-showcase .hkm-segmented button[aria-pressed="true"] {
2371
+ background: var(--hkm-accent);
2372
+ color: #ffffff;
2373
+ }
2374
+
2375
+ /* Disabled segments keep a readable muted label instead of fading the whole button. */
2376
+ .hkm-showcase .hkm-segmented button:disabled {
2377
+ color: var(--hkm-sc-muted);
2378
+ cursor: default;
2379
+ }
2380
+
2381
+ .hkm-showcase .hkm-segmented button[aria-pressed="true"]:disabled {
2382
+ background: var(--hkm-sc-line);
2383
+ color: var(--hkm-sc-fg);
2384
+ }
2385
+
2386
+ .hkm-showcase .hkm-tab:focus-visible,
2387
+ .hkm-showcase .hkm-step-button:focus-visible {
2388
+ outline: 2px solid var(--hkm-accent);
2389
+ outline-offset: 2px;
2390
+ }
2391
+
2392
+ /* An inset ring plus a field-colored gap, so focus shows on the filled accent segment too. */
2393
+ .hkm-showcase .hkm-segmented button:focus-visible {
2394
+ outline: 2px solid var(--hkm-sc-fg);
2395
+ outline-offset: -4px;
2396
+ box-shadow: inset 0 0 0 2px var(--hkm-sc-field);
2397
+ }
2398
+
2399
+ .hkm-showcase .hkm-showcase-hint {
2400
+ min-block-size: 2.9em;
2401
+ margin: 0;
2402
+ color: var(--hkm-sc-muted);
2403
+ font-size: 13px;
2404
+ }
2405
+
2406
+ .hkm-showcase .hkm-showcase-stage {
2407
+ position: relative;
2408
+ min-inline-size: 0;
2409
+ }
2410
+
2411
+ .hkm-showcase .hkm-fit {
2412
+ min-inline-size: 0;
2413
+ overflow: hidden;
2414
+ overflow: clip;
2415
+ overflow-clip-margin: 48px;
2416
+ }
2417
+
2418
+ .hkm-fit {
2419
+ min-inline-size: 0;
2420
+ }
2421
+
2422
+ .hkm-fit-inner {
2423
+ transform-origin: 0 0;
2424
+ }
2425
+
2426
+ .hkm-showcase .hkm-step-nav {
2427
+ display: flex;
2428
+ align-items: center;
2429
+ gap: 12px;
2430
+ }
2431
+
2432
+ .hkm-showcase .hkm-step-nav .hkm-showcase-status {
2433
+ flex: 1;
2434
+ text-align: center;
2435
+ }
2436
+
2437
+ .hkm-showcase .hkm-step-button {
2438
+ min-block-size: 34px;
2439
+ padding: 6px 16px;
2440
+ border: 1px solid var(--hkm-sc-line);
2441
+ border-radius: 999px;
2442
+ background: var(--hkm-sc-field);
2443
+ font-weight: 500;
2444
+ }
2445
+
2446
+ .hkm-showcase .hkm-step-button[data-hkm-primary] {
2447
+ border-color: transparent;
2448
+ background: var(--hkm-sc-fg);
2449
+ color: var(--hkm-sc-bg);
2450
+ }
2451
+
2452
+ .hkm-showcase .hkm-step-button:disabled {
2453
+ opacity: 0.45;
2454
+ cursor: default;
2455
+ }
2456
+
2457
+ .hkm-showcase .hkm-showcase-caption {
2458
+ display: flex;
2459
+ flex-wrap: wrap;
2460
+ justify-content: space-between;
2461
+ gap: 4px 16px;
2462
+ color: var(--hkm-sc-muted);
2463
+ font-size: 13px;
2464
+ }
2465
+
2466
+ .hkm-showcase .hkm-showcase-status {
2467
+ color: var(--hkm-sc-fg);
2468
+ }
2469
+
2470
+ @container hkm-showcase (max-width: 520px) {
2471
+ .hkm-showcase .hkm-showcase-controls {
2472
+ padding: 12px;
2473
+ }
2474
+
2475
+ .hkm-showcase .hkm-showcase-row {
2476
+ flex-direction: column;
2477
+ align-items: stretch;
2478
+ gap: 6px;
2479
+ inline-size: 100%;
2480
+ }
2481
+
2482
+ .hkm-showcase .hkm-segmented {
2483
+ display: flex;
2484
+ }
2485
+
2486
+ .hkm-showcase .hkm-segmented button {
2487
+ flex: 1 1 0;
2488
+ min-inline-size: 0;
2489
+ padding-inline: 4px;
2490
+ text-align: center;
2491
+ }
2492
+
2493
+ .hkm-showcase .hkm-step-nav .hkm-showcase-status {
2494
+ font-size: 13px;
2495
+ }
2496
+ }
2497
+
2498
+ /* ---------------------------------------------------------------- */
2499
+ /* Motion */
2500
+ /* ---------------------------------------------------------------- */
2501
+
2502
+ @media (prefers-reduced-motion: no-preference) {
2503
+ .hkm-showcase .hkm-tab,
2504
+ .hkm-showcase .hkm-segmented button,
2505
+ .hkm-showcase .hkm-step-button {
2506
+ transition: background-color 160ms ease, color 160ms ease;
2507
+ }
2508
+
2509
+ /* Transitions exist only after the first user change, so the first paint never animates. */
2510
+ [data-hkm-animated] .hkm-root :where(.hkm-unit, .hkm-bubble, .hkm-chat-row, .hkm-popover-item, .hkm-terminal-line, .hkm-agent-turn, [data-hkm-transition]) {
2511
+ transition:
2512
+ background-color 220ms var(--hkm-ease),
2513
+ border-color 220ms var(--hkm-ease),
2514
+ box-shadow 220ms var(--hkm-ease),
2515
+ color 220ms var(--hkm-ease),
2516
+ filter 260ms var(--hkm-ease),
2517
+ opacity 220ms var(--hkm-ease),
2518
+ transform 320ms var(--hkm-spring);
2519
+ }
2520
+
2521
+ [data-hkm-animated] .hkm-root .hkm-chat-row:last-child {
2522
+ animation: hkm-bubble-in 360ms var(--hkm-spring) both;
2523
+ }
2524
+
2525
+ .hkm-root .hkm-typing i {
2526
+ animation: hkm-typing 1.2s ease-in-out infinite;
2527
+ }
2528
+
2529
+ .hkm-root .hkm-typing i:nth-child(2) {
2530
+ animation-delay: 0.15s;
2531
+ }
2532
+
2533
+ .hkm-root .hkm-typing i:nth-child(3) {
2534
+ animation-delay: 0.3s;
2535
+ }
2536
+
2537
+ .hkm-root .hkm-caret {
2538
+ animation: hkm-caret 1.1s steps(1, end) infinite;
2539
+ }
2540
+
2541
+ .hkm-root .hkm-hotspot-ring {
2542
+ animation: hkm-pulse 2.2s var(--hkm-ease) infinite;
2543
+ }
2544
+ }
2545
+
2546
+ @keyframes hkm-typing {
2547
+ 0%, 60%, 100% {
2548
+ opacity: 0.35;
2549
+ transform: translateY(0);
2550
+ }
2551
+
2552
+ 30% {
2553
+ opacity: 0.9;
2554
+ transform: translateY(-15%);
2555
+ }
2556
+ }
2557
+
2558
+ @keyframes hkm-caret {
2559
+ 50% {
2560
+ opacity: 0;
2561
+ }
2562
+ }
2563
+
2564
+ @keyframes hkm-pulse {
2565
+ 0% {
2566
+ box-shadow: 0 0 0 0 color-mix(in srgb, var(--hkm-accent) 40%, transparent);
2567
+ }
2568
+
2569
+ 70%, 100% {
2570
+ box-shadow: 0 0 0 12px transparent;
2571
+ }
2572
+ }
2573
+
2574
+ @keyframes hkm-bubble-in {
2575
+ from {
2576
+ opacity: 0;
2577
+ transform: translateY(8px) scale(0.96);
2578
+ }
2579
+ }
2580
+
2581
+ /* ---------------------------------------------------------------- */
2582
+ /* Forced colors */
2583
+ /* ---------------------------------------------------------------- */
2584
+
2585
+ @media (forced-colors: active) {
2586
+ .hkm-root .hkm-window,
2587
+ .hkm-root .hkm-card,
2588
+ .hkm-root .hkm-bubble,
2589
+ .hkm-root .hkm-popover,
2590
+ .hkm-root .hkm-agent-tool,
2591
+ .hkm-root .hkm-chat-bare {
2592
+ border: 1px solid CanvasText;
2593
+ }
2594
+
2595
+ .hkm-root .hkm-page[data-hkm-fade]::after,
2596
+ .hkm-root .hkm-scroll-fade::after {
2597
+ display: none;
2598
+ }
2599
+
2600
+ .hkm-showcase .hkm-tab[aria-selected="true"],
2601
+ .hkm-showcase .hkm-segmented button[aria-pressed="true"] {
2602
+ forced-color-adjust: none;
2603
+ background: Highlight;
2604
+ color: HighlightText;
2605
+ }
2606
+ }
2607
+ }