@repobit/dex-system-design 0.25.12 → 0.26.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 (336) hide show
  1. package/CHANGELOG.md +187 -0
  2. package/README.md +131 -8
  3. package/package.json +95 -13
  4. package/schemas/component-manifest.json +3294 -405
  5. package/schemas/manifest-omissions.json +173 -0
  6. package/src/blog/src/breakpoints.js +6 -6
  7. package/src/blog/src/content/blog-atoms-showcase.js +1 -1
  8. package/src/blog/src/content/blog-page-layout.js +2 -2
  9. package/src/blog/src/lib/article-toc.js +7 -7
  10. package/src/blog/src/shell/blog-shell.js +1 -1
  11. package/src/blog/src/tokens/blog.js +2 -2
  12. package/src/blog/src/tokens/core.js +34 -35
  13. package/src/blog/src/tokens/legacy.js +0 -9
  14. package/src/blog/tokens/blog.js +2 -2
  15. package/src/blog/tokens/core.js +34 -35
  16. package/src/blog/tokens/legacy.js +0 -9
  17. package/src/blog/tokens.css +36 -46
  18. package/src/components/accordion/accordion-bg.css.js +83 -59
  19. package/src/components/accordion/accordion-bg.js +29 -10
  20. package/src/components/accordion/accordion-bg.stories.js +67 -67
  21. package/src/components/accordion/accordion-keyboard.js +80 -0
  22. package/src/components/accordion/accordion.css.js +142 -80
  23. package/src/components/accordion/accordion.js +37 -10
  24. package/src/components/accordion/accordion.stories.js +7 -7
  25. package/src/components/agent-endpoints/agent-endpoints.css.js +36 -39
  26. package/src/components/agent-endpoints/agent-endpoints.js +30 -20
  27. package/src/components/agent-endpoints/agent-endpoints.stories.js +1 -1
  28. package/src/components/ai-guardian-demo.stories.js +91 -91
  29. package/src/components/alert/alert.css.js +198 -0
  30. package/src/components/alert/alert.js +103 -0
  31. package/src/components/alert/alert.stories.js +206 -0
  32. package/src/components/anchor/anchor-nav.css.js +213 -101
  33. package/src/components/anchor/anchor-nav.js +26 -40
  34. package/src/components/anchor/anchor.stories.js +22 -12
  35. package/src/components/annotation/annotation.css.js +58 -0
  36. package/src/components/annotation/annotation.js +67 -0
  37. package/src/components/annotation/annotation.stories.js +63 -0
  38. package/src/components/architecture.stories.js +285 -0
  39. package/src/components/atoms.stories.js +342 -0
  40. package/src/components/avatar/avatar.css.js +67 -0
  41. package/src/components/avatar/avatar.js +42 -0
  42. package/src/components/avatar/avatar.stories.js +95 -0
  43. package/src/components/awards/awards-flex.css.js +209 -23
  44. package/src/components/awards/awards-flex.js +66 -7
  45. package/src/components/awards/awards-flex.stories.js +1 -1
  46. package/src/components/awards/{awards-light.stories.js → awards-summary.stories.js} +54 -64
  47. package/src/components/awards/awards.css.js +116 -58
  48. package/src/components/awards/awards.js +102 -28
  49. package/src/components/awards/awards.stories.js +1 -1
  50. package/src/components/back/back.css.js +51 -22
  51. package/src/components/back/back.js +28 -7
  52. package/src/components/back/back.stories.js +9 -3
  53. package/src/components/badge/badge.css.js +158 -46
  54. package/src/components/badge/badge.js +62 -74
  55. package/src/components/badge/badge.stories.js +176 -248
  56. package/src/components/bento-grid/bento-grid.css.js +21 -16
  57. package/src/components/bento-grid/bento-grid.js +16 -4
  58. package/src/components/bento-grid/bento-grid.stories.js +19 -18
  59. package/src/components/bento-grid/bento-item.css.js +52 -28
  60. package/src/components/bento-grid/bento-item.js +2 -2
  61. package/src/components/blockquote/blockquote.css.js +47 -0
  62. package/src/components/blockquote/blockquote.js +29 -0
  63. package/src/components/blockquote/blockquote.stories.js +62 -0
  64. package/src/components/breadcrumb/breadcrumb.css.js +92 -22
  65. package/src/components/breadcrumb/breadcrumb.js +56 -11
  66. package/src/components/button/button.css.js +531 -161
  67. package/src/components/button/button.js +206 -214
  68. package/src/components/button/button.stories.js +322 -174
  69. package/src/components/caption/caption.css.js +21 -0
  70. package/src/components/caption/caption.js +31 -0
  71. package/src/components/caption/caption.stories.js +62 -0
  72. package/src/components/card-features/card-features.css.js +14 -22
  73. package/src/components/card-features/card-features.js +68 -9
  74. package/src/components/card-features/card-features.stories.js +11 -11
  75. package/src/components/cards/card.css.js +60 -81
  76. package/src/components/cards/card.js +56 -25
  77. package/src/components/cards/card.stories.js +39 -39
  78. package/src/components/carousel/carousel.css.js +93 -99
  79. package/src/components/carousel/carousel.js +32 -4
  80. package/src/components/checkbox/checkbox.css.js +111 -93
  81. package/src/components/checkbox/checkbox.js +64 -90
  82. package/src/components/checkbox/checkbox.stories.js +96 -29
  83. package/src/components/code/code.css.js +70 -0
  84. package/src/components/code/code.js +40 -0
  85. package/src/components/code/code.stories.js +73 -0
  86. package/src/components/compare/compare.css.js +179 -43
  87. package/src/components/compare/compare.js +52 -25
  88. package/src/components/compare/compare.stories.js +61 -4
  89. package/src/components/comparison-panel/comparison-panel.css.js +38 -51
  90. package/src/components/comparison-panel/comparison-panel.js +5 -4
  91. package/src/components/comparison-panel/comparison-panel.stories.js +1 -1
  92. package/src/components/compatibility-table/compatibility-table.css.js +180 -80
  93. package/src/components/compatibility-table/compatibility-table.js +37 -9
  94. package/src/components/control-alignment.stories.js +393 -0
  95. package/src/components/cta-banner/cta-banner.css.js +41 -13
  96. package/src/components/cta-banner/cta-banner.js +6 -5
  97. package/src/components/cta-banner/cta-banner.stories.js +43 -98
  98. package/src/components/display/display.css.js +25 -1
  99. package/src/components/display/display.js +46 -13
  100. package/src/components/display/display.stories.js +270 -40
  101. package/src/components/divider/divider-horizontal.js +21 -5
  102. package/src/components/divider/divider-vertical.js +15 -7
  103. package/src/components/divider/divider.css.js +2 -2
  104. package/src/components/divider/divider.stories.js +38 -34
  105. package/src/components/dropdown/dropdown.css.js +93 -126
  106. package/src/components/dropdown/dropdown.js +114 -34
  107. package/src/components/dropdown/dropdown.stories.js +56 -24
  108. package/src/components/features/features.css.js +24 -11
  109. package/src/components/features/features.js +7 -3
  110. package/src/components/features/features.stories.js +37 -37
  111. package/src/components/features-tab/features-tab.css.js +19 -8
  112. package/src/components/features-tab/features-tab.js +6 -5
  113. package/src/components/features-tab/features-tab.stories.js +23 -23
  114. package/src/components/fieldset/fieldset.css.js +30 -0
  115. package/src/components/fieldset/fieldset.js +28 -0
  116. package/src/components/fieldset/fieldset.stories.js +84 -0
  117. package/src/components/footer/footer-links-group.css.js +10 -14
  118. package/src/components/footer/footer-links-group.js +4 -3
  119. package/src/components/footer/footer-lp.css.js +59 -30
  120. package/src/components/footer/footer-lp.js +17 -12
  121. package/src/components/footer/footer-lp.stories.js +63 -75
  122. package/src/components/footer/footer-nav-menu.css.js +26 -4
  123. package/src/components/footer/footer-nav-menu.js +3 -2
  124. package/src/components/footer/footer.css.js +146 -264
  125. package/src/components/footer/footer.js +176 -106
  126. package/src/components/footer/footer.stories.js +9 -9
  127. package/src/components/footer/localeMap.js +1 -1
  128. package/src/components/grid/grid.css.js +1 -1
  129. package/src/components/grid/grid.js +49 -7
  130. package/src/components/grid/grid.stories.js +111 -0
  131. package/src/components/header/header-code.css.js +61 -51
  132. package/src/components/header/header-code.js +28 -14
  133. package/src/components/header/header-code.stories.js +5 -5
  134. package/src/components/header/header.css.js +655 -176
  135. package/src/components/header/header.js +269 -36
  136. package/src/components/header/header.stories.js +841 -18
  137. package/src/components/heading/heading.css.js +14 -17
  138. package/src/components/heading/heading.js +48 -33
  139. package/src/components/heading/heading.stories.js +27 -25
  140. package/src/components/help-text/help-text.css.js +21 -0
  141. package/src/components/help-text/help-text.js +25 -0
  142. package/src/components/help-text/help-text.stories.js +66 -0
  143. package/src/components/highlight/highlight.css.js +86 -64
  144. package/src/components/highlight/highlight.js +18 -27
  145. package/src/components/highlight/highlight.stories.js +14 -3
  146. package/src/components/icons/analysis-icon.js +6 -16
  147. package/src/components/icons/arrow-down-icon.js +6 -19
  148. package/src/components/icons/arrow-icon.js +44 -0
  149. package/src/components/icons/arrow-right-icon.js +30 -23
  150. package/src/components/icons/arrow-up-icon.js +19 -18
  151. package/src/components/icons/bd-ai-icon.js +1 -1
  152. package/src/components/icons/brand-marks.stories.js +279 -0
  153. package/src/components/icons/brand-signature-icon.js +42 -0
  154. package/src/components/icons/check-icon.js +27 -0
  155. package/src/components/icons/circle-info-icon.js +33 -0
  156. package/src/components/icons/close-icon.js +6 -18
  157. package/src/components/icons/family-icon.js +8 -20
  158. package/src/components/icons/globe-icon.js +6 -18
  159. package/src/components/icons/guide-icon.js +6 -18
  160. package/src/components/icons/icon-element.js +99 -0
  161. package/src/components/icons/icons.js +36 -0
  162. package/src/components/icons/icons.stories.js +184 -52
  163. package/src/components/icons/individual-icon.js +6 -18
  164. package/src/components/icons/laurel-icon.js +9 -19
  165. package/src/components/icons/machine-learning-icon.js +6 -17
  166. package/src/components/icons/marks.js +41 -0
  167. package/src/components/icons/minus-icon.js +7 -21
  168. package/src/components/icons/missing-icon.js +52 -0
  169. package/src/components/icons/plus-icon.js +7 -21
  170. package/src/components/icons/quote-icon.js +19 -19
  171. package/src/components/image/image.css.js +72 -25
  172. package/src/components/image/image.js +11 -6
  173. package/src/components/image/image.stories.js +2 -2
  174. package/src/components/input/custom-form.stories.js +214 -62
  175. package/src/components/input/input-clipboard.css.js +51 -144
  176. package/src/components/input/input-clipboard.js +31 -15
  177. package/src/components/input/input.css.js +8 -146
  178. package/src/components/input/input.js +93 -38
  179. package/src/components/install-options/install-options.css.js +84 -77
  180. package/src/components/install-options/install-options.js +33 -30
  181. package/src/components/install-options/install-options.stories.js +3 -3
  182. package/src/components/label/label.css.js +35 -0
  183. package/src/components/label/label.js +38 -0
  184. package/src/components/label/label.stories.js +82 -0
  185. package/src/components/light-carousel/light-carousel.css.js +111 -63
  186. package/src/components/light-carousel/light-carousel.js +85 -11
  187. package/src/components/light-carousel/light-carousel.stories.js +126 -82
  188. package/src/components/link/link.css.js +150 -99
  189. package/src/components/link/link.js +86 -11
  190. package/src/components/link/link.stories.js +124 -30
  191. package/src/components/list/list-item/list-item.css.js +74 -22
  192. package/src/components/list/list-item/list-item.js +32 -10
  193. package/src/components/list/list-item/list-item.stories.js +23 -23
  194. package/src/components/list/list.css.js +8 -2
  195. package/src/components/list/list.js +3 -2
  196. package/src/components/list/list.stories.js +222 -0
  197. package/src/components/modal/modal.css.js +114 -24
  198. package/src/components/modal/modal.js +83 -7
  199. package/src/components/modal/modal.stories.js +9 -9
  200. package/src/components/overview/overview.css.js +19 -14
  201. package/src/components/overview/overview.js +6 -5
  202. package/src/components/overview/overview.stories.js +10 -10
  203. package/src/components/page-switcher/page-switcher.css.js +97 -40
  204. package/src/components/page-switcher/page-switcher.js +28 -5
  205. package/src/components/page-switcher/page-switcher.stories.js +95 -0
  206. package/src/components/paragraph/paragraph.css.js +15 -10
  207. package/src/components/paragraph/paragraph.js +41 -44
  208. package/src/components/paragraph/paragraph.stories.js +56 -21
  209. package/src/components/picture/picture.css.js +103 -44
  210. package/src/components/picture/picture.js +100 -30
  211. package/src/components/picture/picture.stories.js +1 -1
  212. package/src/components/pricing-cards/new-pricing-card.js +3 -3
  213. package/src/components/pricing-cards/new-pricing.css.js +24 -15
  214. package/src/components/pricing-cards/pricing-card-actions.css.js +1 -1
  215. package/src/components/pricing-cards/pricing-card-actions.js +3 -4
  216. package/src/components/pricing-cards/pricing-card-container.css.js +3 -3
  217. package/src/components/pricing-cards/pricing-card-container.js +3 -2
  218. package/src/components/pricing-cards/pricing-card-header.css.js +10 -8
  219. package/src/components/pricing-cards/pricing-card-header.js +6 -7
  220. package/src/components/pricing-cards/pricing-card-pricing.css.js +16 -9
  221. package/src/components/pricing-cards/pricing-card-pricing.js +8 -6
  222. package/src/components/pricing-cards/pricing-card-show-more.css.js +11 -3
  223. package/src/components/pricing-cards/pricing-card-show-more.js +8 -3
  224. package/src/components/pricing-cards/pricing-card.css.js +244 -190
  225. package/src/components/pricing-cards/pricing-card.js +54 -70
  226. package/src/components/pricing-cards/pricing-feature-item.css.js +25 -8
  227. package/src/components/pricing-cards/pricing-feature-item.js +8 -3
  228. package/src/components/process-steps/process-steps.css.js +26 -14
  229. package/src/components/process-steps/process-steps.js +23 -6
  230. package/src/components/process-steps/process-steps.stories.js +1 -1
  231. package/src/components/progress/progress.css.js +80 -0
  232. package/src/components/progress/progress.js +42 -0
  233. package/src/components/progress/progress.stories.js +79 -0
  234. package/src/components/quick-answer/quick-answer.css.js +75 -13
  235. package/src/components/quick-answer/quick-answer.js +8 -3
  236. package/src/components/radio/radio.css.js +92 -128
  237. package/src/components/radio/radio.js +106 -127
  238. package/src/components/radio/radio.stories.js +54 -19
  239. package/src/components/review/review-grid.css.js +5 -6
  240. package/src/components/review/review-grid.js +14 -11
  241. package/src/components/review/review.css.js +11 -6
  242. package/src/components/review/review.js +3 -8
  243. package/src/components/shared/ensemble.css.js +93 -0
  244. package/src/components/shared/form-field.css.js +206 -0
  245. package/src/components/shared/prop-vocabulary.js +48 -0
  246. package/src/components/shared/token-scales.js +306 -0
  247. package/src/components/skeleton/skeleton.css.js +34 -0
  248. package/src/components/skeleton/skeleton.js +32 -0
  249. package/src/components/skeleton/skeleton.stories.js +70 -0
  250. package/src/components/spinner/spinner.css.js +62 -0
  251. package/src/components/spinner/spinner.js +38 -0
  252. package/src/components/spinner/spinner.stories.js +92 -0
  253. package/src/components/spotlight-section/spotlight-section.css.js +14 -13
  254. package/src/components/spotlight-section/spotlight-section.js +42 -39
  255. package/src/components/switch/switch.css.js +103 -0
  256. package/src/components/switch/switch.js +44 -0
  257. package/src/components/switch/switch.stories.js +86 -0
  258. package/src/components/tab-list/content-switcher.stories.js +189 -0
  259. package/src/components/tab-list/tab-list.css.js +250 -0
  260. package/src/components/tab-list/tab-list.js +184 -0
  261. package/src/components/tab-list/tab-list.stories.js +221 -0
  262. package/src/components/tabs/tabs.css.js +14 -123
  263. package/src/components/tabs/tabs.js +16 -19
  264. package/src/components/tabs/tabs.stories.js +95 -95
  265. package/src/components/tag/tag.css.js +54 -0
  266. package/src/components/tag/tag.js +32 -0
  267. package/src/components/tag/tag.stories.js +126 -0
  268. package/src/components/terminal/terminal-message.css.js +164 -60
  269. package/src/components/terminal/terminal-message.js +5 -5
  270. package/src/components/terminal/terminal-message.stories.js +70 -1
  271. package/src/components/termsOfUse/terms.css.js +25 -20
  272. package/src/components/termsOfUse/terms.js +13 -9
  273. package/src/components/termsOfUse/terms.stories.js +1 -1
  274. package/src/components/textarea/textarea.css.js +51 -0
  275. package/src/components/textarea/textarea.js +136 -0
  276. package/src/components/textarea/textarea.stories.js +191 -0
  277. package/src/components/tooltip/tooltip.css.js +75 -0
  278. package/src/components/tooltip/tooltip.js +156 -0
  279. package/src/components/tooltip/tooltip.stories.js +161 -0
  280. package/src/components/trust-panel/trust-panel.css.js +85 -33
  281. package/src/components/trust-panel/trust-panel.js +18 -10
  282. package/src/components/trust-panel/trust-panel.stories.js +1 -1
  283. package/src/components/ultimate-security-demo.stories.js +431 -0
  284. package/src/components/video/video.css.js +17 -0
  285. package/src/components/video/video.js +40 -0
  286. package/src/components/video/video.stories.js +106 -0
  287. package/src/components/video-player/video-player.css.js +67 -11
  288. package/src/components/video-player/video-player.js +35 -4
  289. package/src/components/video-player/video-player.stories.js +1 -1
  290. package/src/components/visual-alignment.stories.js +411 -0
  291. package/src/components/visually-hidden/visually-hidden.css.js +24 -0
  292. package/src/components/visually-hidden/visually-hidden.js +16 -0
  293. package/src/components/visually-hidden/visually-hidden.stories.js +56 -0
  294. package/src/stories/Button.stories.js +17 -17
  295. package/src/stories/Header.stories.js +10 -10
  296. package/src/stories/Page.js +1 -1
  297. package/src/stories/Page.stories.js +6 -6
  298. package/src/tokens/borders.stories.js +339 -0
  299. package/src/tokens/color-responsibilities.stories.js +227 -0
  300. package/src/tokens/dark-derivation.js +309 -0
  301. package/src/tokens/dark-findings.js +197 -0
  302. package/src/tokens/dark-mode.stories.js +207 -0
  303. package/src/tokens/dimension.stories.js +251 -0
  304. package/src/tokens/elevation.stories.js +143 -0
  305. package/src/tokens/focus.stories.js +276 -0
  306. package/src/tokens/fonts.css +20 -20
  307. package/src/tokens/fonts.stories.js +354 -374
  308. package/src/tokens/layout.css +25 -11
  309. package/src/tokens/motion.stories.js +231 -0
  310. package/src/tokens/shape.stories.js +272 -0
  311. package/src/tokens/spacing-rhythm.stories.js +359 -0
  312. package/src/tokens/spacing.stories.js +208 -703
  313. package/src/tokens/story-chrome.js +503 -0
  314. package/src/tokens/surfaces.stories.js +224 -0
  315. package/src/tokens/text-on-surface.stories.js +164 -0
  316. package/src/tokens/token-map.js +220 -0
  317. package/src/tokens/token-map.stories.js +257 -0
  318. package/src/tokens/token-purposes.js +266 -0
  319. package/src/tokens/tokens-grid.stories.js +388 -900
  320. package/src/tokens/tokens.css +1633 -1045
  321. package/src/tokens/tokens.js +1130 -492
  322. package/src/tokens/tokens.stories.js +137 -47
  323. package/src/tokens/type-ceiling-words.js +299 -0
  324. package/src/tokens/typography.stories.js +1003 -965
  325. package/src/tokens/vertical-rhythm.stories.js +224 -0
  326. package/src/components/awards/awards-icon.js +0 -56
  327. package/src/components/awards/awards-light.js +0 -240
  328. package/src/components/banner/banner.js +0 -60
  329. package/src/components/banner/banner.stories.js +0 -51
  330. package/src/components/button/icons.js +0 -24
  331. package/src/components/input/index.js +0 -0
  332. package/src/components/light-carousel/light-carousel-simple.css.js +0 -183
  333. package/src/components/light-carousel/light-carousel-simple.js +0 -74
  334. package/src/tokens/colors.js +0 -121
  335. package/src/tokens/typography.css.js +0 -207
  336. package/src/tokens/typography.js +0 -0
@@ -1,61 +1,71 @@
1
- import { css } from "lit";
1
+ import { css, unsafeCSS } from "lit";
2
+ import { below } from "../shared/token-scales.js";
2
3
 
3
4
  export default css`
4
5
  :host {
5
- --background-card-grey: var(--color-neutral-25);
6
- --border-card-grey: var(--color-neutral-50);
6
+ /* no role: green-700 has no BORDER role, for the reason new-pricing.css.js
7
+ records at its own .highlight. Now that .highlight-banner takes the
8
+ -fill pair directly, .highlight's edge is this alias's only consumer and
9
+ the name finally matches what it does. */
7
10
  --border-card-green: var(--color-green-700);
8
- --badge-background: var(--color-blue-500);
9
- --text-color-white: var(--color-neutral-0);
10
- --bd-accesibility-focus: var(--color-blue-500);
11
+ /* --badge-background and --text-color-white stood here and stood here in
12
+ termsOfUse/terms.css.js too, declared identically in both and read by
13
+ neither: grep finds each name exactly twice in the whole package, both
14
+ times as these declarations. Private aliases that never even became
15
+ indirection. */
11
16
  }
12
- body {
13
- font-family: "IBM Plex Mono", monospace;
14
- }
15
-
16
17
  button {
17
18
  outline: none;
18
19
  }
19
20
 
20
21
  button:focus-visible {
21
- outline: var(--spacing-2) solid var(--bd-accesibility-focus);
22
- outline-offset: var(--spacing-2);
22
+ /* the one focus ring — see Design Tokens/Focus */
23
+ outline: none;
24
+ box-shadow: var(--focus-outline-primary);
23
25
  }
24
26
  a:focus-visible {
25
- outline: var(--spacing-2) solid var(--bd-accesibility-focus);
26
- outline-offset: var(--spacing-2);
27
- border-radius: var(--space-2xs);
27
+ /* the one focus ring — see Design Tokens/Focus */
28
+ outline: none;
29
+ box-shadow: var(--focus-outline-primary);
30
+ border-radius: var(--focus-outline-radius);
28
31
  }
29
32
  .card {
30
33
  padding-top: 2em;
31
- background: var(--background-card-grey);
32
- border: var(--spacing-2) solid var(--border-card-grey);
33
- border-radius: var(--spacing-20);
34
- padding: var(--spacing-32);
34
+ /* White on the brand band, with the 1px border/container edge the rule's
35
+ second clause names. This was surface/container with a 2px
36
+ --border-card-grey edge, and that edge measured 1.07:1 against its own
37
+ ground -- the least visible element in the whole surface system, two
38
+ pixels spent on nothing. It now reads 1.287:1 against the card and the
39
+ card reads 1.080:1 against the band. */
40
+ background: var(--color-surface-default);
41
+ border: var(--border-width-1) solid var(--color-border-container);
42
+ border-radius: var(--card-radius);
43
+ padding: var(--card-padding);
35
44
  text-align: center;
36
45
  max-width: 360px;
37
46
  position: relative;
38
47
  height: 100%;
39
48
  }
40
- .bd-section-title {
41
- font-family: var(--typography-fontFamily-sans);
42
- font-weight: var(--typography-fontWeight-semibold);
43
- }
44
- .icon-user-sharp-regular {
45
- display: inline-block;
46
- width: 22px;
47
- height: 22px;
48
- background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='none'><path d='M11 11C13.2091 11 15 9.20914 15 7C15 4.79086 13.2091 3 11 3C8.79086 3 7 4.79086 7 7C7 9.20914 8.79086 11 11 11Z' fill='%23000'/><path d='M4 19C4 15.6863 6.68629 13 10 13H12C15.3137 13 18 15.6863 18 19V20H4V19Z' fill='%23000'/></svg>")
49
- no-repeat center center;
50
- background-size: contain;
51
- }
52
- .icon-family-pants-sharp-regular {
53
- display: inline-block;
54
- width: 24px; /* dimensiunea dorită */
55
- height: 24px;
56
- background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32' fill='none'><path d='M24 25.1591V27H8V25.1591C8 23.3048 9.20796 21.6667 10.9795 21.1187L11.8455 20.8509C12.2644 20.7213 12.55 20.334 12.55 19.8955V19.7449C10.8538 18.295 10.1 16.0583 10.1 13.2778C10.1 10.8447 11.1289 9.23277 12.423 8.25708C13.6668 7.3193 15.1097 7 16 7C16.8903 7 18.3332 7.3193 19.577 8.25708C20.8711 9.23277 21.9 10.8447 21.9 13.2778C21.9 16.0583 21.1462 18.295 19.45 19.7449V19.8955C19.45 20.334 19.7356 20.7213 20.1545 20.8509L21.0205 21.1187C22.792 21.6667 24 23.3048 24 25.1591Z' fill='%23000'/><path d='M7.4663 23C8.03861 21.7386 9.10189 20.7276 10.4549 20.2401C10.103 19.7558 9.59938 19.382 8.99905 19.1939L8.86534 19.152C8.71342 19.1044 8.58812 19.0057 8.50596 18.8783C9.41844 17.937 9.8 16.5994 9.8 15.0556C9.8 13.5167 9.1507 12.4609 8.30704 11.8164C7.51308 11.2099 6.59336 11 6 11C5.40664 11 4.48692 11.2099 3.69296 11.8164C2.8493 12.4609 2.2 13.5167 2.2 15.0556C2.2 16.5845 2.57424 17.9112 3.46779 18.851L3.46121 18.8574L3.48918 18.8858C3.40698 19.0095 3.28362 19.1053 3.13466 19.152L3.00095 19.1939C1.81034 19.567 1 20.6702 1 21.9179V23C3.57036 23 7.4663 23 7.4663 23Z' fill='%23000'/><path d='M21.5451 20.2401C22.8981 20.7276 23.9614 21.7386 24.5337 23C24.5337 23 28.2313 23 31 23V21.9179C31 20.6702 30.1897 19.567 28.9991 19.1939L28.8653 19.152C28.7134 19.1044 28.5881 19.0057 28.506 18.8783C29.4184 17.937 29.8 16.5994 29.8 15.0556C29.8 13.5167 29.1507 12.4609 28.307 11.8164C27.5131 11.2099 26.5934 11 26 11C25.4066 11 24.4869 11.2099 23.693 11.8164C22.8493 12.4609 22.2 13.5167 22.2 15.0556C22.2 16.5845 22.5742 17.9112 23.4678 18.851L23.4612 18.8574L23.4892 18.8858C23.407 19.0095 23.2836 19.1053 23.1347 19.152L23.0009 19.1939C22.4006 19.382 21.897 19.7558 21.5451 20.2401Z' fill='%23000'/></svg>") no-repeat center center;
57
- background-size: contain;
58
- }
49
+ /* THE TOGGLE'S GLYPHS ARE GONE, and the history is worth one paragraph because
50
+ it ran through three shapes in a day. They began as empty spans carrying a
51
+ background-image data URI -- a 22x22 person and a 32x32 family, five
52
+ fill='%23000' between them, which is why five ".icon svg" rules written to
53
+ colour them per state could never match and the marks stayed black while
54
+ their own label went white on the active pill. They were migrated to
55
+ <bd-individual-icon> and <bd-family-icon>, which fixed that by inheriting
56
+ currentColor. Then the redesign removed the icons from the control
57
+ altogether: the Content Switcher is labels only, on the argument that the
58
+ label is the whole message and an icon beside it is decoration that has to
59
+ be translated too.
60
+ .
61
+ So the data URIs and the 4.63:1 black-on-blue defect are both retired, and
62
+ the atoms are no longer imported here. Nothing above needs the icon scale.
63
+ .
64
+ MARKUP CHANGES INSIDE PRODUCT_FROZEN, made on explicit instruction rather
65
+ than by drift. architecture.json's note is authoritative that the freeze
66
+ exempts the architecture mechanism only and keeps colour content in the
67
+ contract, but a template edit is the thing the freeze does cover. Flagged
68
+ for review rather than treated as settled. */
59
69
 
60
70
 
61
71
  .highlight {
@@ -63,8 +73,14 @@ export default css`
63
73
  }
64
74
 
65
75
  .highlight-banner {
66
- background: var(--border-card-green);
67
- color: white;
76
+ /* A saturated chip and its ink, which is what tokens.js calls the
77
+ -fill / -on-fill pair, and what bd-badge variant="fill" draws with the
78
+ same green-700-plus-white at 4.75:1 (badge.css.js:108-113). It used to
79
+ read --border-card-green: that alias serves a BORDER two rules up and a
80
+ BACKGROUND here, so its name described half its consumers. Both values
81
+ identical, #0e8532 and #ffffff. */
82
+ background: var(--status-success-fill);
83
+ color: var(--status-success-on-fill);
68
84
  font-size: 18px;
69
85
  padding: var(--spacing-16) var(--spacing-8);
70
86
  border-top-left-radius: var(--spacing-20);
@@ -76,8 +92,10 @@ export default css`
76
92
  width: 85%;
77
93
  font-family: var(--typography-fontFamily-sans);
78
94
  font-weight: 600;
79
- line-height: 14px;
80
- z-index: 1;
95
+ /* 18px text; was 14px (0.78) which clipped descenders and, at width:85%,
96
+ collided wrapped lines */
97
+ line-height: var(--typography-lineHeight-tight);
98
+ z-index: var(--z-base);
81
99
  }
82
100
  .pricing-cards .card:nth-child(2) .highlight-banner {
83
101
  top: -30px;
@@ -90,14 +108,33 @@ export default css`
90
108
  font-size: 2em;
91
109
  font-weight: 700;
92
110
  font-family: var(--typography-fontFamily-sans);
93
- line-height: 34px;
111
+ /* 32px text; was 34px (1.06), too tight for a title that wraps */
94
112
  text-align: start;
95
113
  margin: 0px;
96
114
  max-width: 300px;
97
115
  }
98
- .hr-line {
99
- color: var(--color-neutral-200);
100
- }
116
+ /* ".hr-line" stood here with a no role: marker recording why it could not be
117
+ migrated: composing <bd-divider-horizontal> is a markup change inside
118
+ PRODUCT_FROZEN, and the colour arrived via the color property driving the
119
+ UA's inset border on a real <hr>, so an explicit border-color would have
120
+ been a rendering change rather than a rename.
121
+ .
122
+ The markup objection was lifted by instruction, so the four <hr class=
123
+ "hr-line"> in pricing-card.js are now the atom -- which pricing-card-header
124
+ .js already rendered, so the unit no longer disagrees with itself. The
125
+ rendering objection is answered by that too: the atom draws its own line
126
+ rather than relying on <hr>'s inset shading, so neutral-200-as-color stops
127
+ being load-bearing and the rule goes with it.
128
+ .
129
+ The atom is passed color="subtle". Measured on the default story, its own
130
+ default is --color-border-default at neutral-400 (#88909b), two steps
131
+ darker than the neutral-200 these lines have shipped at, and subtle is
132
+ --color-border-subtle -- the same neutral-200. Composing the atom is the
133
+ fix that was asked for; silently darkening a shipped separator is not, so
134
+ the appearance is pinned and only the provenance changes.
135
+ .
136
+ The atom's own internal class is also .hr-line, which was always fair
137
+ evidence this rule had been copied from it rather than composed with it. */
101
138
 
102
139
  .pricing-info {
103
140
  display: inline-flex;
@@ -108,7 +145,16 @@ export default css`
108
145
  font-size: 16px !important;
109
146
  font-weight: 500;
110
147
  font-family: var(--typography-fontFamily-sans);
111
- color: var(--color-neutral-950);
148
+ /* The ink role. This is a real change, not a like-for-like swap: the role is
149
+ neutral-900 and what stood here was neutral-950, one step darker, so
150
+ contrast on this card's own container surface goes 18.64:1 -> 17.22:1. At
151
+ CIE dE 4.19 between two near-blacks it is imperceptible, but it is a
152
+ change. Nothing was preserved by the darker step: neutral-950 is not an
153
+ ink in this system at all -- the ink ladder stops at neutral-900, and the
154
+ only roles carrying 950 are button fills. It stood here because this file
155
+ predates the role vocabulary. v2's counterpart already names the role, at
156
+ pricing-card-header.css.js:54. */
157
+ color: var(--color-text-primary);
112
158
  margin: var(--spacing-0);
113
159
  margin-top: var(--spacing-8);
114
160
  }
@@ -136,45 +182,74 @@ export default css`
136
182
  .original-price {
137
183
  font-family: var(--typography-fontFamily-sans);
138
184
  font-weight: 500;
139
- line-height: var(--spacing-18);
185
+ /* was var(--spacing-18): a spacing token used as an absolute line-height */
140
186
  font-size: 16px;
141
187
  text-decoration: line-through;
142
- color: var(--color-neutral-950);
188
+ /* The ink role, the same imperceptible darkening as .badge-subtitle above:
189
+ 18.64:1 -> 17.22:1, dE 4.19. v2's counterpart is
190
+ pricing-card-pricing.css.js:18. */
191
+ color: var(--color-text-primary);
143
192
  }
144
193
 
145
194
  .discount {
146
- background: var(--color-green-100);
195
+ /* -surface-strong, for the reason pricing-card-pricing.css.js records at
196
+ its own .discount: this is the badge-shade step and the ink on it is
197
+ already the matching role. Value-identical at #d1fadc. */
198
+ background: var(--status-success-surface-strong);
147
199
  font-family: var(--typography-fontFamily-sans);
148
200
  font-weight: 600;
149
201
  font-size: 16px;
150
202
  font-weight: bold;
151
- border-radius: 22px;
152
- // padding: var(--spacing-6) var(--spacing-12) var(--spacing-8) var(--spacing-12);
203
+ border-radius: var(--radius-full);
153
204
  gap: var(--spacing-10);
154
- color: var(--color-green-800);
205
+ color: var(--color-text-success);
155
206
  margin: var(--spacing-0);
156
207
  }
157
208
 
158
209
  .price {
210
+ /* No colour here. This selector is a bd-h host, where color is INERT per
211
+ scripts/atom-inert-properties.json -- the atom sets it on its own inner
212
+ .bd-heading, so a host declaration cannot reach the text. A neutral-950
213
+ stood here and painted nothing; the heading renders the ink role, which
214
+ the atom supplies. Proved by sabotage in both story families: forcing all
215
+ five of this rule's declared properties on the host with !important left
216
+ the rendered heading byte-identical. The four declarations below are dead
217
+ by the same mechanism -- deleting the whole rule is a larger call, and is
218
+ an item in plans/foundation-plan.md rather than part of this change. */
159
219
  font-size: 40px;
160
220
  font-weight: 700;
161
- color: var(--color-neutral-950);
162
221
  font-family: var(--typography-fontFamily-sans);
163
- line-height: 34px;
222
+ /* 40px text; was 34px (0.85) — the line box was smaller than the text */
223
+ line-height: var(--typography-lineHeight-none);
164
224
  }
165
225
 
166
226
  .terms {
167
227
  font-family: var(--typography-fontFamily-sans);
168
228
  font-weight: 400;
169
229
  font-size: 12px;
170
- color: var(--color-neutral-950);
171
- line-height: var(--spacing-14);
230
+ /* The ink role, the same imperceptible darkening as .badge-subtitle:
231
+ 18.64:1 -> 17.22:1, dE 4.19. v2's counterpart is
232
+ pricing-card-pricing.css.js:48. */
233
+ color: var(--color-text-primary);
234
+ /* four lines of small print; was var(--spacing-14) = 14px (1.17) */
172
235
  margin-top: 15px;
173
236
  max-width: 80%;
174
237
  }
175
238
 
176
239
  .terms a {
177
- color: var(--color-blue-700);
240
+ /* The resting-link ink, matching bd-link. This is a visible change: blue-700
241
+ is what --color-action-primary-active carries, and in this system that step
242
+ means an interactive element in its ENGAGED state -- bd-link uses it for
243
+ :hover, annotation for :hover, anchor-nav for the active option. A resting
244
+ link wearing it reads as permanently pressed. Contrast goes 8.20:1 -> 5.92:1
245
+ on --color-surface-container, still comfortably over 4.5.
246
+ .
247
+ The "small text wants darker ink" hypothesis was tested package-wide and
248
+ rejected: no such principle is documented anywhere, the ladder is flat
249
+ across 12-18px and goes LIGHTER at 32px, and accordion.css.js:347 is a 12px
250
+ link on this same surface that already chose --color-text-brand with the
251
+ arithmetic in its comment. See plans/reports/phase-2-size-dependent-ink-check.md. */
252
+ color: var(--color-text-brand);
178
253
  text-decoration: underline;
179
254
  }
180
255
  .actions {
@@ -189,9 +264,9 @@ export default css`
189
264
  .features h4 {
190
265
  font-size: 16px;
191
266
  font-weight: 700;
192
- color: var(--color-neutral-900);
267
+ color: var(--color-text-primary);
193
268
  font-family: var(--typography-fontFamily-sans);
194
- line-height: var(--spacing-18);
269
+ line-height: var(--typography-lineHeight-tight);
195
270
  }
196
271
 
197
272
  .features ul {
@@ -209,10 +284,19 @@ export default css`
209
284
  text-align: start;
210
285
  }
211
286
  .additional-info li {
287
+ /* No colour here either, and for a DIFFERENT reason than .price above. This
288
+ li is a plain element, not an atom host: its text lives in a bd-p child,
289
+ and paragraph.css.js declares the ink on that atom's own :host. A direct
290
+ declaration on an element beats a value inherited into it, so a colour set
291
+ on this li is replaced before it can reach the inner p. Proved in reverse:
292
+ standing bd-p's own declaration down makes the li's value appear, so what
293
+ stood here was present and blocked rather than absent or overridden.
294
+ Note this INVERTS the atom-host case, where a colour on a bd-p host is
295
+ LIVE -- see the ancestorDeclarations note in
296
+ scripts/atom-inert-properties.json. */
212
297
  font-family: var(--typography-fontFamily-sans);
213
298
  font-weight: 400;
214
299
  font-size: 14px;
215
- color: var(--color-neutral-950);
216
300
  margin-bottom: var(--spacing-10);
217
301
  display: flex;
218
302
  align-items: center;
@@ -247,12 +331,48 @@ export default css`
247
331
  margin-bottom: var(--spacing-24);
248
332
  }
249
333
 
334
+ /* The band the cards sit on.
335
+
336
+ Three adjacent plans need to be told apart from each OTHER, not just from
337
+ the page, and the ground cannot do that: surface/default, -container and
338
+ -subtle measure 1.000, 1.044 and 1.121 against the page, so two
339
+ surface/container cards with a gap between them are separated by about
340
+ nothing. Inverting solves it -- white cards on a tint get a tonal step AND
341
+ an edge, which is the pattern Trust Panel and Comparison Panel already
342
+ use and the second clause of CLAUDE.md's ground-and-edge rule.
343
+
344
+ status/brand/surface rather than a neutral tint: its luminance step is
345
+ the smaller one (1.080:1 against a white card, where surface/subtle gives
346
+ 1.121) but it separates by HUE, and a blue band against a white card is
347
+ legible in a way two near-identical greys are not.
348
+
349
+ Contained, not full-bleed, and that is settled by the architecture record
350
+ rather than by taste: scripts/architecture.json has this unit at
351
+ column: false and it does not compose ensembleCSS, so a 100vw band would
352
+ be the component claiming a page-section responsibility it is recorded as
353
+ not having.
354
+
355
+ padding-top is the larger one because the highlight banner overhangs the
356
+ card by 2.67em -- about 48px -- and the band has to contain it.
357
+
358
+ RADIUS: --radius-2xl, the same step the cards take, not the --radius-xl
359
+ that every other panel in this package uses. That is a deliberate
360
+ override of the panel convention: this band is not a panel that happens to
361
+ contain cards, it is the group the cards belong to, and matching their
362
+ corner makes the set read as one family rather than as foreign objects
363
+ sitting inside a container. Design decision, recorded so the next person
364
+ sees a choice rather than an inconsistency -- revisit it if a second
365
+ card-group band turns up and wants the panel step instead. */
250
366
  .pricing-cards {
251
367
  display: flex;
252
368
  justify-content: center;
253
369
  flex-wrap: wrap;
254
370
  gap: var(--spacing-24);
255
371
  align-items: stretch;
372
+ background: var(--status-brand-surface);
373
+ border-radius: var(--radius-2xl);
374
+ padding: var(--spacing-64) var(--spacing-32) var(--spacing-48);
375
+ box-sizing: border-box;
256
376
  }
257
377
 
258
378
  .pricing-card {
@@ -272,114 +392,34 @@ export default css`
272
392
  padding-bottom: var(--spacing-32);
273
393
  }
274
394
 
275
- .switchBox .switch {
276
- position: relative;
277
- display: inline-flex;
278
- align-items: center;
279
- width: 302px;
280
- height: 44px;
281
- background-color: #016dff;
282
- border-radius: 22px;
283
- }
284
-
285
- .switchBox .switch input {
286
- display: none;
287
- }
288
-
289
- .switchBox .slider {
290
- position: absolute;
291
- content: "";
292
- height: var(--spacing-40);
293
- width: 150px;
294
- left: var(--spacing-2);
295
- bottom: var(--spacing-2);
296
- background-color: white;
297
- border-radius: var(--spacing-20);
298
- transition: all 0.4s;
299
- }
300
-
301
- .switchBox .switch input:checked + .slider {
302
- transform: translateX(149px);
303
- }
304
-
305
- .switchBox .label {
306
- font-family: Arial, Helvetica, sans-serif;
307
- width: 50%;
308
- text-align: center;
309
- font-weight: bold;
310
- line-height: 34px;
311
- font-size: var(--spacing-16);
312
- color: white;
313
- transition: color 0.4s;
314
- cursor: pointer;
315
- }
316
- .switchBox .label .icon {
317
- vertical-align: middle;
318
- position: relative;
319
- }
320
-
321
- .icon-user-sharp-regular,
322
- .icon-family-pants-sharp-regular {
323
- vertical-align: middle;
324
- position: relative;
325
- top: -2px;
326
- }
327
- .switchBox .label.right {
328
- z-index: 10;
329
- color: black;
330
- }
331
-
332
- .switchBox .label.left {
333
- z-index: 10;
334
- }
335
-
336
- .switchBox .switch input:checked ~ .label.right {
337
- transition: color 0.4s;
338
- color: white !important;
339
- }
340
-
341
- .switchBox .switch input ~ .label .icon {
342
- position: relative;
343
- margin-right: var(--spacing-10);
344
- }
345
-
346
- .switchBox .switch input ~ .label .icon svg {
347
- width: var(--spacing-24);
348
- height: var(--spacing-20);
349
- }
350
- .badge-icon-family {
351
- top: var(--spacing-4) !important;
352
- position: relative;
353
- }
354
- .badge-icon-user {
355
- top: var(--spacing-4) !important;
356
- position: relative;
357
- }
358
- .switchBox .switch input ~ .label.right .icon svg {
359
- fill: #026dff;
360
- }
361
-
362
- .switchBox .switch input:checked ~ .label.right .icon svg {
363
- fill: white;
364
- }
365
-
366
- .switchBox .switch input:checked ~ .label.left {
367
- transition: color 0.4s;
368
- color: black;
369
- }
370
-
371
- .switchBox .switch input:checked ~ .label.left .icon svg {
372
- fill: #026dff;
373
- }
374
-
375
- .prod-box.individual-box {
376
- transition: all 0.4s;
377
- }
378
-
379
- .prod_box.family-box {
380
- display: none;
381
- transition: all 0.4s;
382
- }
395
+ /* Everything the billing toggle owned stood here: the 302x44 track, the
396
+ 150px sliding pill, four label state rules, the two data-URI glyph
397
+ classes, and the icon positioning around them. The control is now
398
+ <bd-tab-list appearance="switcher"> -- the Content Switcher designed in
399
+ Figma at node 311:931 -- so all of it is dead and removed rather than left
400
+ to be read as live.
401
+ .
402
+ What went with it, so the reasoning is not lost: the pill's radius had
403
+ been --radius-2xl on a 40px box where a full round needs 20px, the label
404
+ weight was the raw keyword bold at 700 against the buttons' 500, and the
405
+ pill travelled 149px where the geometry wanted 148, which put it 1px from
406
+ the right edge and 2px from the left. All three are moot now -- the
407
+ switcher has one radius, takes its weight from the action-label role, and
408
+ has no travelling pill at all. The reduced-motion block that used to name
409
+ .slider and the label rules went too; the switcher declares its own.
410
+ .
411
+ .switchBox stays: it is the wrapper that centres the control and holds the
412
+ section's margins, and it is still doing that job. */
413
+
414
+ /* Two ".prod-box" rules stood here. Neither class exists: a repo-wide search
415
+ for prod-box or prod_box finds no match outside this stylesheet -- no
416
+ template, no story, no schema, no blog page. The second also spells the
417
+ block with an underscore where the first uses a hyphen, so the pair could
418
+ not even have been two states of one thing.
419
+ .
420
+ One of them carried display: none, which is the reason to be sure before
421
+ deleting: had the class ever existed, removing this would reveal a hidden
422
+ box. It never existed. */
383
423
  .feature-item {
384
424
  position: relative;
385
425
  display: flex;
@@ -392,15 +432,22 @@ export default css`
392
432
  position: absolute;
393
433
  top: -70px;
394
434
  left: 0;
395
- background-color: #f8f8f8;
396
- color: #333;
435
+ background-color: var(--color-surface-container);
436
+ /* Tooltip copy: supporting, not primary. */
437
+ color: var(--color-text-secondary);
397
438
  padding: var(--spacing-8) var(--spacing-12);
398
- border-radius: 5px;
439
+ border-radius: var(--radius-sm);
399
440
  font-size: 12px;
400
441
  max-width: 250px;
401
- border: var(--spacing-1) solid #ccc;
442
+ /* -border-subtle IS neutral-200, and a tooltip's hairline is what that
443
+ role is for. Unlike .hr-line above, nothing here depends on the UA's
444
+ inset <hr> shading: this is already an explicit solid border, so the
445
+ substitution is a rename. The ::after arrow below must stay in step. */
446
+ border: var(--spacing-1) solid var(--color-border-subtle);
402
447
  box-shadow: 0 0 var(--spacing-10) rgba(0, 0, 0, 0.1);
403
- z-index: 10;
448
+ /* A tooltip is the role, not a number. It has to clear the cards it
449
+ overhangs, including the highlight banner beneath it. */
450
+ z-index: var(--z-tooltip);
404
451
  }
405
452
 
406
453
  .feature-item .tooltip::after {
@@ -411,16 +458,17 @@ export default css`
411
458
  transform: translateX(-50%);
412
459
  border-left: var(--spacing-8) solid transparent;
413
460
  border-right: var(--spacing-8) solid transparent;
414
- border-top: var(--spacing-8) solid #ccc;
461
+ /* the arrow, same role as the box above -- they are one shape */
462
+ border-top: var(--spacing-8) solid var(--color-border-subtle);
415
463
  }
416
464
 
417
465
  .feature-item:hover .tooltip {
418
466
  display: block;
419
467
  }
420
468
  .badge-feature {
421
- background-color: #007bff;
422
- color: white;
423
- border-radius: var(--spacing-16);
469
+ background-color: var(--color-surface-brand);
470
+ color: var(--color-text-inverse);
471
+ border-radius: var(--radius-2xl);
424
472
  width: var(--spacing-36);
425
473
  height: var(--spacing-20);
426
474
  display: inline-flex;
@@ -459,7 +507,6 @@ export default css`
459
507
 
460
508
  .card-title {
461
509
  font-size: 1.5em;
462
- line-height: 28px;
463
510
  }
464
511
 
465
512
  .price {
@@ -472,7 +519,7 @@ export default css`
472
519
  }
473
520
  }
474
521
 
475
- @media (max-width: 768px) {
522
+ @media ${unsafeCSS(below('md'))} {
476
523
  .pricing-card {
477
524
  max-width: 90%;
478
525
  padding: var(--spacing-24);
@@ -481,11 +528,6 @@ export default css`
481
528
  text-align: center;
482
529
  padding-bottom: 30px;
483
530
  }
484
- .bd-section-title {
485
- text-align: center;
486
- font-size: 2em;
487
- }
488
-
489
531
  .card-title {
490
532
  font-size: 1.3em;
491
533
  }
@@ -551,13 +593,25 @@ export default css`
551
593
  gap: var(--spacing-6);
552
594
  }
553
595
  }
554
- @media (min-width: 768px) and (max-width: 1024px) {
555
- pricing-card {
556
- margin-bottom: 100px;
557
- }
558
- }
596
+ /* A "pricing-card { margin-bottom: 100px }" rule stood here, inside this
597
+ media query, and could never match: pricing-card is this stylesheet's own
598
+ host, and a type selector inside a shadow root cannot select the element
599
+ that owns it -- only :host can.
600
+ .
601
+ Removed rather than repaired, and the distinction matters. Rewriting it as
602
+ :host would not be fixing a typo; it would add 100px of bottom margin
603
+ between 768 and 1024 that this component has never rendered, to a unit
604
+ whose architecture is PRODUCT_FROZEN. Nobody has seen that layout, so
605
+ turning it on is a design change wearing a cleanup's clothes. The 100px was
606
+ also a raw literal. If the gap is wanted, it should be asked for on its own
607
+ terms. */
559
608
  .text-left {
560
609
  text-align: left !important;
561
610
  padding-bottom: 15px;
562
611
  }
612
+
613
+ /* The reduced-motion block that stood here named .slider and three label
614
+ state rules, all of which went with the toggle. The switcher carries its
615
+ own prefers-reduced-motion rule in tab-list.css.js, next to the transition
616
+ it turns off, which is where it belongs. */
563
617
  `;