@morphemecms/cms 0.5.0 → 0.7.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 (396) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/astro.mjs +3 -0
  3. package/bin/morpheme.mjs +3 -1
  4. package/defaults/blockTexts.ts +2 -2
  5. package/defaults/collections.ts +10 -0
  6. package/defaults/editor.ts +57 -53
  7. package/defaults/privacy.ts +4 -1
  8. package/defaults/rules.ts +36 -38
  9. package/defaults/standardPages.ts +0 -3
  10. package/defaults/texts.ts +11 -2
  11. package/demo/src/content/pages/about.md +2 -0
  12. package/icons/lucide/browser-fill.svg +1 -0
  13. package/icons/lucide/buildings-fill.svg +1 -0
  14. package/icons/lucide/certificate-fill.svg +1 -0
  15. package/icons/lucide/chart-line-up-fill.svg +1 -0
  16. package/icons/lucide/chats-fill.svg +1 -0
  17. package/icons/lucide/envelope-simple-fill.svg +1 -0
  18. package/icons/lucide/file-text-fill.svg +1 -0
  19. package/icons/lucide/folder-simple-fill.svg +1 -0
  20. package/icons/lucide/gauge.svg +1 -1
  21. package/icons/lucide/gear-six.svg +1 -0
  22. package/icons/lucide/globe-simple.svg +1 -0
  23. package/icons/lucide/heart-fill.svg +1 -0
  24. package/icons/lucide/layout.svg +1 -0
  25. package/icons/lucide/list-checks-fill.svg +1 -0
  26. package/icons/lucide/magnifying-glass-fill.svg +1 -0
  27. package/icons/lucide/megaphone-fill.svg +1 -0
  28. package/icons/lucide/newspaper-fill.svg +1 -0
  29. package/icons/lucide/paint-brush-broad-fill.svg +1 -0
  30. package/icons/lucide/puzzle-piece-fill.svg +1 -0
  31. package/icons/lucide/shield-check-fill.svg +1 -0
  32. package/icons/lucide/sidebar-simple.svg +1 -1
  33. package/icons/lucide/sidebar.svg +1 -0
  34. package/icons/lucide/square-half-bottom-fill.svg +1 -0
  35. package/icons/lucide/square-half.svg +1 -0
  36. package/icons/lucide/squares-four-fill.svg +1 -0
  37. package/icons/lucide/storefront-fill.svg +1 -0
  38. package/icons/lucide/tag-fill.svg +1 -0
  39. package/icons/lucide/toggle-right-fill.svg +1 -0
  40. package/icons/lucide/trash-fill.svg +1 -0
  41. package/icons/lucide/user-fill.svg +1 -0
  42. package/icons/lucide/wrench-fill.svg +1 -0
  43. package/icons/material-symbols/browser-fill.svg +1 -0
  44. package/icons/material-symbols/buildings-fill.svg +1 -0
  45. package/icons/material-symbols/certificate-fill.svg +1 -0
  46. package/icons/material-symbols/chart-line-up-fill.svg +1 -0
  47. package/icons/material-symbols/chats-fill.svg +1 -0
  48. package/icons/material-symbols/envelope-simple-fill.svg +1 -0
  49. package/icons/material-symbols/file-text-fill.svg +1 -0
  50. package/icons/material-symbols/folder-simple-fill.svg +1 -0
  51. package/icons/material-symbols/gauge.svg +1 -1
  52. package/icons/material-symbols/gear-six.svg +1 -0
  53. package/icons/material-symbols/globe-simple.svg +1 -0
  54. package/icons/material-symbols/heart-fill.svg +1 -0
  55. package/icons/material-symbols/layout.svg +1 -0
  56. package/icons/material-symbols/list-checks-fill.svg +1 -0
  57. package/icons/material-symbols/magnifying-glass-fill.svg +1 -0
  58. package/icons/material-symbols/megaphone-fill.svg +1 -0
  59. package/icons/material-symbols/newspaper-fill.svg +1 -0
  60. package/icons/material-symbols/paint-brush-broad-fill.svg +1 -0
  61. package/icons/material-symbols/puzzle-piece-fill.svg +1 -0
  62. package/icons/material-symbols/shield-check-fill.svg +1 -0
  63. package/icons/material-symbols/sidebar-simple.svg +1 -1
  64. package/icons/material-symbols/sidebar.svg +1 -0
  65. package/icons/material-symbols/square-half-bottom-fill.svg +1 -0
  66. package/icons/material-symbols/square-half.svg +1 -0
  67. package/icons/material-symbols/squares-four-fill.svg +1 -0
  68. package/icons/material-symbols/storefront-fill.svg +1 -0
  69. package/icons/material-symbols/tag-fill.svg +1 -0
  70. package/icons/material-symbols/toggle-right-fill.svg +1 -0
  71. package/icons/material-symbols/trash-fill.svg +1 -0
  72. package/icons/material-symbols/user-fill.svg +1 -0
  73. package/icons/material-symbols/wrench-fill.svg +1 -0
  74. package/icons/phosphor/browser-fill.svg +1 -0
  75. package/icons/phosphor/buildings-fill.svg +1 -0
  76. package/icons/phosphor/certificate-fill.svg +1 -0
  77. package/icons/phosphor/chart-line-up-fill.svg +1 -0
  78. package/icons/phosphor/chats-fill.svg +1 -0
  79. package/icons/phosphor/envelope-simple-fill.svg +1 -0
  80. package/icons/phosphor/file-text-fill.svg +1 -0
  81. package/icons/phosphor/folder-simple-fill.svg +1 -0
  82. package/icons/phosphor/gear-six.svg +1 -0
  83. package/icons/phosphor/globe-simple.svg +1 -0
  84. package/icons/phosphor/heart-fill.svg +1 -0
  85. package/icons/phosphor/layout.svg +1 -0
  86. package/icons/phosphor/list-checks-fill.svg +1 -0
  87. package/icons/phosphor/magnifying-glass-fill.svg +1 -0
  88. package/icons/phosphor/megaphone-fill.svg +1 -0
  89. package/icons/phosphor/newspaper-fill.svg +1 -0
  90. package/icons/phosphor/paint-brush-broad-fill.svg +1 -0
  91. package/icons/phosphor/puzzle-piece-fill.svg +1 -0
  92. package/icons/phosphor/shield-check-fill.svg +1 -0
  93. package/icons/phosphor/sidebar.svg +1 -0
  94. package/icons/phosphor/square-half-bottom-fill.svg +1 -0
  95. package/icons/phosphor/square-half.svg +1 -0
  96. package/icons/phosphor/squares-four-fill.svg +1 -0
  97. package/icons/phosphor/storefront-fill.svg +1 -0
  98. package/icons/phosphor/tag-fill.svg +1 -0
  99. package/icons/phosphor/toggle-right-fill.svg +1 -0
  100. package/icons/phosphor/trash-fill.svg +1 -0
  101. package/icons/phosphor/user-fill.svg +1 -0
  102. package/icons/phosphor/wrench-fill.svg +1 -0
  103. package/lib/breakpoints.d.mts +13 -0
  104. package/lib/breakpoints.mjs +20 -0
  105. package/lib/breakpoints.test.mjs +39 -0
  106. package/lib/build-lane.d.mts +15 -0
  107. package/lib/build-lane.mjs +23 -0
  108. package/lib/build-lane.test.mjs +74 -0
  109. package/lib/build-settings.d.mts +16 -0
  110. package/lib/build-settings.mjs +39 -0
  111. package/lib/build-settings.test.mjs +41 -0
  112. package/lib/contracts.d.mts +3 -2
  113. package/lib/contracts.mjs +3 -2
  114. package/lib/drawer-swipe.d.mts +10 -0
  115. package/lib/drawer-swipe.mjs +17 -0
  116. package/lib/drawer-swipe.test.mjs +33 -0
  117. package/lib/drawerKeys.d.mts +9 -0
  118. package/lib/drawerKeys.mjs +26 -0
  119. package/lib/drawerKeys.test.mjs +21 -0
  120. package/lib/eyebrow.d.mts +6 -0
  121. package/lib/eyebrow.mjs +24 -0
  122. package/lib/eyebrow.test.mjs +20 -0
  123. package/lib/front-sections.test.mjs +82 -0
  124. package/lib/heading-levels.d.mts +7 -0
  125. package/lib/heading-levels.mjs +16 -0
  126. package/lib/heading-levels.test.mjs +37 -0
  127. package/lib/inline.ts +3 -2
  128. package/lib/markdown.ts +2 -0
  129. package/lib/materialIcon.d.mts +21 -0
  130. package/lib/materialIcon.mjs +29 -0
  131. package/lib/materialIcon.test.mjs +45 -0
  132. package/lib/menu-layout.d.mts +11 -0
  133. package/lib/menu-layout.mjs +14 -0
  134. package/lib/menu-layout.test.mjs +23 -0
  135. package/lib/menu.d.mts +59 -0
  136. package/lib/menu.mjs +129 -0
  137. package/lib/menu.test.mjs +291 -0
  138. package/lib/rehype-emphasize.d.mts +4 -0
  139. package/lib/rehype-emphasize.mjs +20 -0
  140. package/lib/rehype-emphasize.test.mjs +39 -0
  141. package/lib/section-in-view.d.mts +8 -0
  142. package/lib/section-in-view.mjs +25 -0
  143. package/lib/section-in-view.test.mjs +35 -0
  144. package/lib/section-marker.d.mts +5 -0
  145. package/lib/section-marker.mjs +18 -0
  146. package/lib/section-marker.test.mjs +22 -0
  147. package/lib/section-ranges.d.mts +12 -0
  148. package/lib/section-ranges.mjs +43 -0
  149. package/lib/section-ranges.test.mjs +61 -0
  150. package/lib/sheet-stops.d.mts +68 -0
  151. package/lib/sheet-stops.mjs +198 -0
  152. package/lib/sheet-stops.test.mjs +155 -0
  153. package/lib/still-timer.d.mts +5 -0
  154. package/lib/still-timer.mjs +17 -0
  155. package/lib/still-timer.test.mjs +42 -0
  156. package/lib/text-sections.d.mts +10 -0
  157. package/lib/text-sections.mjs +45 -0
  158. package/lib/text-sections.test.mjs +78 -0
  159. package/lib/video.mjs +2 -1
  160. package/lib/without-h1.d.mts +1 -0
  161. package/lib/without-h1.mjs +7 -0
  162. package/lib/without-h1.test.mjs +26 -0
  163. package/lib/word-at.d.mts +6 -0
  164. package/lib/word-at.mjs +20 -0
  165. package/lib/word-at.test.mjs +19 -0
  166. package/package.json +3 -1
  167. package/pages/editor/version.json.js +22 -2
  168. package/scripts/already-checked.mjs +11 -0
  169. package/scripts/already-checked.test.mjs +18 -0
  170. package/scripts/build-settings-problems.mjs +27 -0
  171. package/scripts/build-settings-problems.test.mjs +35 -0
  172. package/scripts/check-content.mjs +42 -4
  173. package/scripts/check-worker.mjs +96 -4
  174. package/scripts/ci-build.mjs +85 -0
  175. package/scripts/ci-build.test.mjs +137 -0
  176. package/scripts/editor-roundtrip.mjs +62 -3
  177. package/scripts/editor-screens.mjs +21 -7
  178. package/scripts/git-env.mjs +6 -0
  179. package/scripts/step-command.mjs +34 -0
  180. package/scripts/step-command.test.mjs +50 -0
  181. package/scripts/text-problems.mjs +83 -0
  182. package/scripts/text-problems.test.mjs +74 -0
  183. package/scripts/worker-modules.mjs +11 -1
  184. package/site/breakpoints.d.mts +6 -0
  185. package/site/breakpoints.mjs +52 -0
  186. package/site/breakpoints.test.mjs +36 -0
  187. package/site/casing.d.mts +3 -0
  188. package/site/casing.mjs +26 -0
  189. package/site/content.config.ts +2 -0
  190. package/site/content.ts +2 -4
  191. package/site/defineSite.d.mts +1 -0
  192. package/site/defineSite.mjs +3 -0
  193. package/site/home.ts +3 -2
  194. package/site/icons.d.mts +116 -4
  195. package/site/icons.mjs +62 -6
  196. package/site/images.mjs +1 -1
  197. package/site/live-diff.d.mts +22 -0
  198. package/site/live-diff.mjs +98 -0
  199. package/site/live-diff.test.mjs +235 -0
  200. package/site/materialSymbols.d.mts +5 -0
  201. package/site/materialSymbols.mjs +19 -0
  202. package/site/sections.ts +1 -1
  203. package/site/theme.d.mts +1 -1
  204. package/site/theme.mjs +7 -1
  205. package/src/ActionParts.tsx +1 -1
  206. package/src/Advanced.tsx +101 -20
  207. package/src/App.tsx +47 -121
  208. package/src/AppList.tsx +1 -1
  209. package/src/BlockParts.tsx +3 -3
  210. package/src/Colors.tsx +1 -1
  211. package/src/CommunicationParts.tsx +1 -1
  212. package/src/ContainmentParts.tsx +80 -28
  213. package/src/Deleted.tsx +18 -4
  214. package/src/EditorFooter.tsx +14 -0
  215. package/src/EntryForm.tsx +75 -39
  216. package/src/FormFrame.tsx +3 -8
  217. package/src/Library.tsx +46 -51
  218. package/src/Licenses.tsx +27 -11
  219. package/src/MainDrawerParts.tsx +60 -0
  220. package/src/MainMenu.tsx +136 -0
  221. package/src/MarkdownEditor.tsx +175 -32
  222. package/src/Media.tsx +69 -16
  223. package/src/MediaTags.tsx +91 -0
  224. package/src/ModalSheetSample.tsx +47 -0
  225. package/src/NavigationParts.tsx +67 -21
  226. package/src/NavigationRestParts.tsx +1 -1
  227. package/src/Parts.tsx +71 -0
  228. package/src/PartsShown.tsx +1 -1
  229. package/src/PickerParts.tsx +2 -2
  230. package/src/Redirects.tsx +3 -2
  231. package/src/Screen.tsx +93 -90
  232. package/src/SelectionParts.tsx +22 -6
  233. package/src/SiteLogoLink.tsx +14 -0
  234. package/src/StartFab.tsx +22 -0
  235. package/src/StartStatus.tsx +1 -1
  236. package/src/autoTags.d.mts +28 -0
  237. package/src/autoTags.mjs +68 -0
  238. package/src/autoTags.test.mjs +109 -0
  239. package/src/buildSettings.test.mjs +20 -0
  240. package/src/buildSettings.ts +20 -0
  241. package/src/checkSite.ts +14 -1
  242. package/src/deploy.ts +7 -9
  243. package/src/editor.css +150 -17
  244. package/src/eyebrow.d.mts +5 -0
  245. package/src/eyebrow.mjs +53 -0
  246. package/src/eyebrowState.d.mts +21 -0
  247. package/src/eyebrowState.mjs +62 -0
  248. package/src/eyebrowState.test.mjs +78 -0
  249. package/src/fileRecords.d.mts +115 -0
  250. package/src/fileRecords.mjs +224 -0
  251. package/src/fileRecords.test.mjs +224 -0
  252. package/src/fileTagFilter.d.mts +30 -0
  253. package/src/fileTagFilter.mjs +44 -0
  254. package/src/fileTagFilter.test.mjs +57 -0
  255. package/src/fileTags.d.mts +56 -0
  256. package/src/fileTags.mjs +100 -0
  257. package/src/fileTags.test.mjs +127 -0
  258. package/src/firstHeading.d.mts +6 -0
  259. package/src/firstHeading.mjs +37 -0
  260. package/src/i18n/da-DK/advanced.ts +27 -12
  261. package/src/i18n/da-DK/app.ts +9 -7
  262. package/src/i18n/da-DK/apps.ts +16 -16
  263. package/src/i18n/da-DK/blockSettings.ts +9 -9
  264. package/src/i18n/da-DK/blocks.ts +2 -2
  265. package/src/i18n/da-DK/check.ts +5 -2
  266. package/src/i18n/da-DK/cms.ts +14 -12
  267. package/src/i18n/da-DK/colors.ts +5 -5
  268. package/src/i18n/da-DK/common.ts +2 -2
  269. package/src/i18n/da-DK/company.ts +3 -3
  270. package/src/i18n/da-DK/consents.ts +6 -6
  271. package/src/i18n/da-DK/forms.ts +6 -6
  272. package/src/i18n/da-DK/history.ts +6 -6
  273. package/src/i18n/da-DK/keywords.ts +2 -2
  274. package/src/i18n/da-DK/library.ts +17 -15
  275. package/src/i18n/da-DK/licenses.ts +4 -4
  276. package/src/i18n/da-DK/media.ts +10 -4
  277. package/src/i18n/da-DK/parts.ts +62 -25
  278. package/src/i18n/da-DK/preview.ts +5 -6
  279. package/src/i18n/da-DK/redirects.ts +7 -7
  280. package/src/i18n/da-DK/seo.ts +1 -1
  281. package/src/i18n/da-DK/text.ts +2 -0
  282. package/src/i18n/da-DK/theme.ts +5 -5
  283. package/src/i18n/en-US/advanced.ts +34 -18
  284. package/src/i18n/en-US/app.ts +7 -5
  285. package/src/i18n/en-US/apps.ts +9 -9
  286. package/src/i18n/en-US/blockSettings.ts +4 -4
  287. package/src/i18n/en-US/blocks.ts +6 -6
  288. package/src/i18n/en-US/check.ts +6 -3
  289. package/src/i18n/en-US/cms.ts +15 -14
  290. package/src/i18n/en-US/colors.ts +18 -18
  291. package/src/i18n/en-US/common.ts +3 -3
  292. package/src/i18n/en-US/consents.ts +4 -4
  293. package/src/i18n/en-US/forms.ts +5 -5
  294. package/src/i18n/en-US/history.ts +2 -2
  295. package/src/i18n/en-US/library.ts +21 -15
  296. package/src/i18n/en-US/licenses.ts +6 -6
  297. package/src/i18n/en-US/media.ts +7 -1
  298. package/src/i18n/en-US/parts.ts +60 -21
  299. package/src/i18n/en-US/preview.ts +5 -6
  300. package/src/i18n/en-US/redirects.ts +3 -3
  301. package/src/i18n/en-US/seo.ts +1 -1
  302. package/src/i18n/en-US/text.ts +3 -0
  303. package/src/i18n/en-US/theme.ts +6 -6
  304. package/src/icon.tsx +90 -27
  305. package/src/licenseData.test.mjs +28 -0
  306. package/src/licenseData.ts +12 -1
  307. package/src/markdown.d.mts +2 -0
  308. package/src/markdown.mjs +73 -5
  309. package/src/markdown.test.mjs +74 -0
  310. package/src/materialIcons.ts +8 -0
  311. package/src/menuChildren.ts +36 -0
  312. package/src/menuOpen.ts +34 -0
  313. package/src/pagePreview.tsx +23 -19
  314. package/src/r2Caching.ts +14 -0
  315. package/src/sectionFrame.ts +39 -0
  316. package/src/sectionState.d.mts +19 -0
  317. package/src/sectionState.mjs +31 -0
  318. package/src/sectionState.test.mjs +59 -0
  319. package/src/sections.d.mts +9 -7
  320. package/src/sections.mjs +74 -27
  321. package/src/sections.test.mjs +59 -0
  322. package/src/sidebar.ts +2 -2
  323. package/src/site.ts +27 -17
  324. package/src/stillCursor.d.mts +8 -0
  325. package/src/stillCursor.mjs +19 -0
  326. package/src/stillCursor.test.mjs +26 -0
  327. package/src/tagUses.d.mts +47 -0
  328. package/src/tagUses.mjs +121 -0
  329. package/src/tagUses.test.mjs +141 -0
  330. package/src/themeUi.ts +10 -0
  331. package/src/topBarSlot.tsx +37 -0
  332. package/src/ui.tsx +654 -150
  333. package/src/virtual.d.ts +5 -0
  334. package/starter/README.md +2 -1
  335. package/starter/package.json +2 -1
  336. package/starter/wrangler.jsonc +3 -2
  337. package/theme/blocks/cards/LinkCards.tsx +2 -1
  338. package/theme/blocks/hero/View.tsx +2 -1
  339. package/theme/blocks/video/View.tsx +2 -1
  340. package/theme/components/BlogIndex.astro +2 -2
  341. package/theme/components/BlogPosts.astro +1 -1
  342. package/theme/components/BlogPosts.tsx +9 -6
  343. package/theme/components/Container.astro +1 -1
  344. package/theme/components/CookieConsent.astro +1 -1
  345. package/theme/components/EndBlock.astro +1 -1
  346. package/theme/components/Footer.astro +5 -5
  347. package/theme/components/Header.astro +3 -3
  348. package/theme/components/Icon.astro +2 -2
  349. package/theme/components/MobileMenu.tsx +72 -61
  350. package/theme/components/MobileNav.astro +2 -2
  351. package/theme/components/PageHeader.astro +2 -2
  352. package/theme/components/PageSection.astro +1 -1
  353. package/theme/components/PopupButton.tsx +2 -2
  354. package/theme/components/PopupView.tsx +2 -2
  355. package/theme/components/PostList.tsx +7 -3
  356. package/theme/components/RichText.astro +22 -7
  357. package/theme/components/Section.astro +17 -10
  358. package/theme/components/SectionHeading.tsx +1 -1
  359. package/theme/components/home/PageBlock.astro +4 -4
  360. package/theme/components/home/Text.astro +3 -3
  361. package/theme/layouts/PageLayout.astro +3 -3
  362. package/theme/layouts/PostLayout.astro +9 -8
  363. package/theme/styles/base.css +13 -3
  364. package/theme/styles/blocks.css +97 -10
  365. package/theme/styles/components.css +9 -9
  366. package/theme/styles/elevation.test.mjs +168 -0
  367. package/theme/styles/global.css +65 -59
  368. package/theme/styles/ui.css +460 -131
  369. package/theme/templates/Home.astro +1 -1
  370. package/theme/templates/New.astro +5 -5
  371. package/theme/templates/NotFound.astro +2 -2
  372. package/theme/ui/BottomSheet.tsx +118 -21
  373. package/theme/ui/BottomSheetResizeIcon.tsx +13 -0
  374. package/theme/ui/Button.tsx +4 -3
  375. package/theme/ui/Dialog.tsx +1 -1
  376. package/theme/ui/FabMenu.tsx +13 -12
  377. package/theme/ui/LoadingIndicator.tsx +1 -1
  378. package/theme/ui/NavigationDrawer.tsx +116 -15
  379. package/theme/ui/NavigationRail.tsx +22 -13
  380. package/theme/ui/Search.tsx +1 -1
  381. package/theme/ui/SettingRow.tsx +31 -0
  382. package/theme/ui/Switch.tsx +11 -11
  383. package/theme/ui/TextField.tsx +17 -6
  384. package/theme/ui/bottomSheet.script.ts +3 -2
  385. package/theme/ui/bottomSheetControl.ts +131 -46
  386. package/theme/ui/fabMenu.script.ts +69 -53
  387. package/theme/ui/modalSheetSize.ts +214 -0
  388. package/theme/ui/navigationDrawerControl.ts +35 -0
  389. package/theme/ui/search.script.ts +4 -2
  390. package/worker/index.js +3 -0
  391. package/worker/plan-status.js +46 -0
  392. package/worker/push.js +7 -5
  393. package/worker/r2-status.js +2 -1
  394. package/icons/lucide/desktop.svg +0 -1
  395. package/icons/material-symbols/desktop.svg +0 -1
  396. package/icons/phosphor/desktop.svg +0 -1
@@ -58,18 +58,25 @@
58
58
  -square, -pressed and -corners.
59
59
  */
60
60
  /* The classes in the CMS's own code (this package, also from node_modules/, where Tailwind does not look by itself);
61
- the names in the icon packs' maps (MATERIAL_SYMBOLS, LUCIDE, site/icons.mjs) are not classes. */
61
+ the names in the icon packs' maps (MATERIAL_SYMBOLS, LUCIDE, site/icons.mjs) and the tests' examples are not classes. */
62
62
  @source '../..';
63
63
  @source not '../../site/icons.mjs';
64
+ @source not '../../**/*.test.mjs';
64
65
 
65
66
  /* ---- Elevation ----
66
67
  The elevation levels (m3.material.io/styles/elevation): how high a part stands over the page, level 0 (on it) to
67
- level 5, each a shadow. Every part's shadow below is one of them by default, at the level Material 3 gives that part
68
- and its state (its tokens: md.comp.<part>.…container.elevation), and keeps its own variable (--card-elevated-shadow,
69
- --menu-shadow …), so a theme can still give one part another shadow. A theme sets the levels to its own look, in
70
- light and dark mode, and they are its shadows everywhere; the ones here are a plain, neutral look of their own.
71
- --elevation-0 … --elevation-5 the levels; level 0 is no shadow (0 0 #0000, so it can stand in a list of shadows)
72
- At rest, pointed at (hover), pressed and dragged, by Material 3; with focus a part is as at rest:
68
+ level 5. A level is a colour and a shadow. Every part's shadow below is one of them by default, at the level Material
69
+ 3 gives that part and its state (its tokens: md.comp.<part>.…container.elevation), and keeps its own variable
70
+ (--card-elevated-shadow, --menu-shadow …), so a theme can still give one part another shadow. A theme sets the levels
71
+ to its own look, in light and dark mode, and they are its shadows everywhere; the ones here are a plain, neutral look
72
+ of their own.
73
+ --elevation-0 … --elevation-5 the level's shadow; level 0 is no shadow (0 0 #0000, so it can
74
+ stand in a list of shadows)
75
+ --elevation-0-surface … --elevation-5-surface the level's colour (the site's surface-container colours)
76
+ --elevation-1-rest-shadow … -5-rest-shadow the shadow a part shows at rest on that level; a theme turns resting
77
+ shadows off here and keeps the lift, which reads --elevation-N
78
+ At rest (the shadow reads --elevation-N-rest-shadow), pointed at (hover), pressed and dragged (the lift reads
79
+ --elevation-N), by Material 3; with focus a part is as at rest:
73
80
  level 0 filled, tonal and outlined buttons, icon buttons, filled and outlined cards, chips (not elevated), a
74
81
  standard side sheet, a full-screen dialog on a phone, the top app bar, the navigation bar and rail, the
75
82
  search bar, a plain tooltip
@@ -91,6 +98,17 @@
91
98
  --elevation-3: 0 2px 4px rgb(0 0 0 / 0.07), 0 12px 28px -10px rgb(0 0 0 / 0.22);
92
99
  --elevation-4: 0 2px 6px rgb(0 0 0 / 0.08), 0 16px 36px -12px rgb(0 0 0 / 0.26);
93
100
  --elevation-5: 0 4px 8px rgb(0 0 0 / 0.09), 0 20px 44px -12px rgb(0 0 0 / 0.3);
101
+ --elevation-0-surface: var(--bg);
102
+ --elevation-1-surface: var(--surface-container-low, var(--block-surface));
103
+ --elevation-2-surface: var(--surface-container, var(--block-surface));
104
+ --elevation-3-surface: var(--surface-container-high, var(--block-surface));
105
+ --elevation-4-surface: var(--surface-container-highest, var(--block-surface));
106
+ --elevation-5-surface: var(--surface-container-highest, var(--block-surface));
107
+ --elevation-1-rest-shadow: var(--elevation-1);
108
+ --elevation-2-rest-shadow: var(--elevation-2);
109
+ --elevation-3-rest-shadow: var(--elevation-3);
110
+ --elevation-4-rest-shadow: var(--elevation-4);
111
+ --elevation-5-rest-shadow: var(--elevation-5);
94
112
  }
95
113
  @media (prefers-color-scheme: dark) {
96
114
  :where(:root:not([data-theme='light'])) {
@@ -187,7 +205,7 @@
187
205
  --type-label-small-weight: 500;
188
206
  --type-label-small-tracking: 0.03125rem;
189
207
  }
190
- /* A role as a utility, for a theme's own components and layouts: type-title-large, md:type-headline-small … */
208
+ /* A role as a utility, for a theme's own components and layouts: type-title-large, medium:type-headline-small … */
191
209
  @utility type-display-large {
192
210
  font-size: var(--type-display-large-size);
193
211
  line-height: var(--type-display-large-line-height);
@@ -403,9 +421,9 @@
403
421
  }
404
422
  /* Elevated: on a surface with its shadow, where the page behind it has a colour. */
405
423
  .button-elevated {
406
- background: var(--button-elevated-surface, var(--block-surface));
424
+ background: var(--button-elevated-surface, var(--elevation-1-surface));
407
425
  color: var(--button-elevated-text, var(--block-accent));
408
- box-shadow: var(--button-elevated-shadow, var(--elevation-1));
426
+ box-shadow: var(--button-elevated-shadow, var(--elevation-1-rest-shadow));
409
427
  }
410
428
  .button-elevated:hover {
411
429
  box-shadow: var(--button-elevated-hover-shadow, var(--button-elevated-shadow, var(--elevation-2)));
@@ -418,7 +436,7 @@
418
436
  box-shadow: var(--button-tonal-shadow, var(--elevation-0));
419
437
  }
420
438
  .button-elevated:active {
421
- box-shadow: var(--button-elevated-shadow, var(--elevation-1));
439
+ box-shadow: var(--button-elevated-shadow, var(--elevation-1-rest-shadow));
422
440
  }
423
441
  /* Outlined: another choice beside the main one, with a thin edge. */
424
442
  .button-outlined {
@@ -514,7 +532,7 @@
514
532
  --icon-button-corners: var(--icon-button-round);
515
533
  display: inline-grid;
516
534
  flex-shrink: 0;
517
- /* Centred also where a page shows it as flex (md:flex beside hidden). */
535
+ /* Centred also where a page shows it as flex (medium:flex beside hidden). */
518
536
  place-items: center;
519
537
  place-content: center;
520
538
  width: var(--icon-button-width);
@@ -701,7 +719,8 @@
701
719
  something is written, .text-field-visibility, aria-pressed while the password is shown); under it
702
720
  .text-field-supporting-row with the line (.text-field-supporting, what is wrong with it in .text-field-error) and the
703
721
  counter (.text-field-counter; .text-field-counter-over past the field's limit). A button or a link that is tapped to choose (the editor's choice from a list) can be
704
- the .text-field-input (textFieldInputClass) in the container. A read-only field ([readonly]) looks as an enabled one; with the focus its edge is the
722
+ the .text-field-input (textFieldInputClass) in the container; with aria-expanded while its menu is open (its edge and name in the accent,
723
+ its arrow up), and in .text-field-small a small box as wide as what is chosen. A read-only field ([readonly]) looks as an enabled one; with the focus its edge is the
705
724
  line's colour.
706
725
  --text-field-height, --text-field-padding, --text-field-radius, --text-field-font-size the field
707
726
  --text-field-<kind>-surface, -line, -hover-line, -focus-line each kind's colours and edge (resting, pointed at,
@@ -773,6 +792,16 @@
773
792
  .text-field-input:disabled {
774
793
  cursor: default;
775
794
  }
795
+ /* A small box (TextFieldButton's size="small"): as wide as what is chosen, for a row's choice (SettingRow). */
796
+ .text-field-small {
797
+ --text-field-height: var(--text-field-small-height, 2.5rem);
798
+ --text-field-padding: var(--text-field-small-padding, 0.75rem);
799
+ --text-field-font-size: var(--text-field-small-font-size, var(--type-body-medium-size));
800
+ --text-field-icon-padding: var(--text-field-small-icon-padding, 0.5rem);
801
+ --text-field-icon-gap: var(--text-field-small-icon-gap, 0.5rem);
802
+ width: max-content;
803
+ max-width: 100%;
804
+ }
776
805
  .text-field:has(.text-field-input:disabled) .text-field-supporting-row {
777
806
  opacity: var(--text-field-disabled-opacity, 0.6);
778
807
  }
@@ -800,9 +829,17 @@
800
829
  }
801
830
  .text-field-error .text-field-container,
802
831
  .text-field-error .text-field-container:hover,
803
- .text-field-error .text-field-container:has(> .text-field-input:focus) {
832
+ .text-field-error .text-field-container:has(> .text-field-input:is(:focus, [aria-expanded='true'])) {
804
833
  box-shadow: inset 0 0 0 2px var(--text-field-error, var(--block-accent));
805
834
  }
835
+ /* A choice whose menu is open under it (the button's aria-expanded): the edge as with the focus, which has moved into
836
+ the menu; and the arrow turned up. */
837
+ .text-field-outlined .text-field-container:has(> .text-field-input[aria-expanded='true']) {
838
+ box-shadow: inset 0 0 0 2px var(--text-field-outlined-focus-line, var(--block-accent));
839
+ }
840
+ .text-field-filled .text-field-container:has(> .text-field-input[aria-expanded='true']) {
841
+ box-shadow: inset 0 0 0 2px var(--text-field-filled-focus-line, var(--block-accent));
842
+ }
806
843
  /* Read-only: as an enabled field, and with the focus its edge in the line's colour, as it cannot be written in. */
807
844
  .text-field-outlined .text-field-container:has(> .text-field-input[readonly]:focus) {
808
845
  box-shadow: inset 0 0 0 2px var(--text-field-outlined-hover-line, var(--text-field-outlined-line, var(--block-line)));
@@ -851,8 +888,14 @@
851
888
  .text-field-input[readonly]:focus + .text-field-label {
852
889
  color: var(--text-field-label-color, var(--block-muted));
853
890
  }
891
+ .text-field-outlined .text-field-input[aria-expanded='true'] + .text-field-label {
892
+ color: var(--text-field-outlined-focus-line, var(--block-accent));
893
+ }
894
+ .text-field-filled .text-field-input[aria-expanded='true'] + .text-field-label {
895
+ color: var(--text-field-filled-focus-line, var(--block-accent));
896
+ }
854
897
  .text-field-error .text-field-label,
855
- .text-field-error .text-field-input:focus + .text-field-label {
898
+ .text-field-error .text-field-input:is(:focus, [aria-expanded='true']) + .text-field-label {
856
899
  color: var(--text-field-error, var(--block-accent));
857
900
  }
858
901
  /* Outlined: the name on the edge, on the field's surface, at its start (also past the icon before it). */
@@ -893,6 +936,10 @@
893
936
  }
894
937
  .text-field-trailing-icon {
895
938
  margin-inline-end: var(--text-field-icon-padding, 0.875rem);
939
+ transition: rotate var(--motion-spatial-fast);
940
+ }
941
+ .text-field-container:has(> button.text-field-input[aria-expanded='true']) > .text-field-trailing-icon {
942
+ rotate: 180deg;
896
943
  }
897
944
  /* The buttons bare (standard icon buttons without their surface), as the icons beside them. */
898
945
  .text-field-trailing-action {
@@ -1156,11 +1203,11 @@
1156
1203
  /* Elevated: on a surface with a shadow instead of the edge, where it stands on a picture or a colour; also chosen.
1157
1204
  Level 1, level 2 when pointed at, and as at rest while pressed (M3). */
1158
1205
  .chip-elevated {
1159
- background: var(--chip-elevated-surface, var(--block-surface));
1206
+ background: var(--chip-elevated-surface, var(--elevation-1-surface));
1160
1207
  }
1161
1208
  .chip-elevated,
1162
1209
  .chip.chip-elevated:is([aria-pressed='true'], [aria-current='page']) {
1163
- box-shadow: var(--chip-elevated-shadow, var(--elevation-1));
1210
+ box-shadow: var(--chip-elevated-shadow, var(--elevation-1-rest-shadow));
1164
1211
  }
1165
1212
  .chip-elevated:hover,
1166
1213
  .chip.chip-elevated:is([aria-pressed='true'], [aria-current='page']):hover {
@@ -1168,7 +1215,7 @@
1168
1215
  }
1169
1216
  .chip-elevated:active,
1170
1217
  .chip.chip-elevated:is([aria-pressed='true'], [aria-current='page']):active {
1171
- box-shadow: var(--chip-elevated-shadow, var(--elevation-1));
1218
+ box-shadow: var(--chip-elevated-shadow, var(--elevation-1-rest-shadow));
1172
1219
  }
1173
1220
 
1174
1221
  /* A person's picture before the label (an input chip): round, nearer the start. */
@@ -1278,7 +1325,7 @@
1278
1325
  icon (.dialog-icon, centred over the headline with .dialog-with-icon), .dialog-headline, .dialog-supporting-text,
1279
1326
  .dialog-content (what else it shows, scrolling), evt. .dialog-divider and .dialog-actions at its end. A full-screen
1280
1327
  dialog, .dialog-full-screen in .dialog-modal-full-screen: over the whole screen on a phone, with .dialog-header (the
1281
- close button, the headline and .dialog-header-actions), evt. .dialog-divider, and .dialog-content; from 48rem a
1328
+ close button, the headline and .dialog-header-actions), evt. .dialog-divider, and .dialog-content; from the medium width a
1282
1329
  dialog in the middle of the screen with the same header.
1283
1330
  --dialog-radius, --dialog-surface, --dialog-shadow, --dialog-line the container's corners, surface, shadow
1284
1331
  (level 3; none for a full-screen one on a phone), edge
@@ -1287,35 +1334,47 @@
1287
1334
  --dialog-max-width how wide a modal dialog is at most
1288
1335
  --dialog-padding the room inside a basic dialog, and at the sides of a full-screen one's content
1289
1336
  --dialog-icon-color, --dialog-headline-size, --dialog-headline-weight, --dialog-supporting-text-color its parts
1290
- --dialog-full-screen-max-width, --dialog-full-screen-headline-size a full-screen dialog from 48rem, and its
1337
+ --dialog-full-screen-max-width, --dialog-full-screen-headline-size a full-screen dialog from the medium width, and its
1291
1338
  headline in its header
1292
1339
  Bottom sheets (BottomSheet.tsx, bottomSheetClass, bottomSheetContainerClass, and bottomSheet() and
1293
1340
  standardBottomSheet() in bottomSheetControl.ts for what it does in a browser, bottomSheet.script.ts on the site;
1294
1341
  m3.material.io/components/bottom-sheets): a modal one's <dialog> is .bottom-sheet (an app's: Calendly's calendar), at
1295
1342
  most 44rem wide and nearly as high as the screen, from the bottom on a phone and in the middle of the screen from
1296
- 48rem (a dialog there, rounded all round, without the drag handle; with .bottom-sheet-fit as high as what is in
1297
- it: the editor's sheets; with .bottom-sheet-full as high as the screen, and wider on a computer: the editor's preview
1298
- of a page); in it .bottom-sheet-container with
1299
- .bottom-sheet-drag-handle, .bottom-sheet-header (.bottom-sheet-headline, .bottom-sheet-supporting-text and the close
1300
- button), .bottom-sheet-content (what it shows, filling the rest: a frame, and over it what stands in its place,
1301
- .bottom-sheet-cover) and .bottom-sheet-footer. A standard one is the container itself, .bottom-sheet-standard, at the
1302
- bottom of the screen (in the editor of its frame, with contain: layout and a size container) without a scrim, its
1303
- drag handle a button, in the state it rests in (data-state: collapsed, only the handle and the header; half-expanded, at most half as high as
1304
- the screen; expanded, as high as what it shows, but not to the top; hidden), data-moving while it is dragged or moves.
1343
+ the medium width (a dialog there, rounded all round, without the drag handle; with .bottom-sheet-fit as high as what
1344
+ is in it: the editor's sheets; with .bottom-sheet-full as high as the screen, and wider on a computer: the editor's
1345
+ preview of a page); in it .bottom-sheet-container with .bottom-sheet-drag-handle, .bottom-sheet-header
1346
+ (.bottom-sheet-headline, .bottom-sheet-supporting-text and .bottom-sheet-actions: the resize, collapse and close
1347
+ buttons), .bottom-sheet-peek (what a standard one shows even while collapsed), .bottom-sheet-content (what it shows,
1348
+ filling the rest: a frame, and over it what stands in its place, .bottom-sheet-cover) and .bottom-sheet-footer. On a
1349
+ phone bottomSheet() gives a modal one's container data-sized (it opens at the height its data-start says, 'half' or
1350
+ 'full', and is pulled by modalSheetSize.ts), data-full at full height (the content scrolls, and a frame takes
1351
+ touches, only then) and data-moving while it is pulled. A standard one is the container itself,
1352
+ .bottom-sheet-standard, at the bottom of the screen (in the editor of its frame, with contain: layout and a size
1353
+ container) without a scrim, its drag handle a button, in the state it rests in (data-state: collapsed, only the
1354
+ handle and the header; half-expanded, at most half as high as the screen; expanded, as high as what it shows, but
1355
+ not to the top; hidden), data-moving while it is dragged or moves, data-full while it is expanded and as high as it
1356
+ can be (the collapse button shows only then).
1305
1357
  --bottom-sheet-surface, --bottom-sheet-radius, --bottom-sheet-line its surface (also the cover's), corners, and
1306
1358
  the lines under the header and over the footer
1307
1359
  --bottom-sheet-shadow, --bottom-sheet-shadow-large its shadow on a phone (and a standard one's; level 1), and as
1308
- a dialog from 48rem (level 3)
1360
+ a dialog from the medium width (level 3)
1309
1361
  --bottom-sheet-scrim the shade over the page behind a modal one
1310
1362
  --bottom-sheet-handle the drag handle's colour
1311
1363
  --bottom-sheet-max-width, --bottom-sheet-top-gap how wide a standard one is at most, and how far from the top it
1312
1364
  stays when it is expanded
1365
+ --bottom-sheet-margin-wide a standard one with wide="sheet" (from the medium width) stays this far from the
1366
+ sides and from the top (3.5rem); wide="side-sheet" (the default) draws it as a standard side
1367
+ sheet at the end of the screen (--side-sheet-* tokens, full height, no handle or buttons, every
1368
+ part shown); a modal one's wide="dialog" (the default; the dialog in the middle, also a container without
1369
+ the attribute), "side-sheet" (a modal side sheet at the end: --side-sheet-modal-surface, -radius, -shadow,
1370
+ -scrim and -width, full height, no handle, slid in from the end) and "sheet" (stays a bottom sheet, as
1371
+ wide as --bottom-sheet-max-width at most, the margin from the sides and the top, slid up)
1313
1372
  Carousels (Carousel.tsx, carouselClass, carousel.script.ts and carouselLayout.ts;
1314
1373
  m3.material.io/components/carousel): .carousel with its items in a row to swipe (.carousel-items, each a
1315
1374
  .carousel-item; native scroll-snap), and under them the theme's addition to M3's carousel, a page indicator
1316
1375
  (.carousel-indicator with a .carousel-indicator-dot for each item, the one in view aria-current). Uncontained (no
1317
- class of its own): each item as wide as the others, one with the next peeking in on a phone, two from 40rem, three
1318
- from 64rem, reaching out to a phone's edges. The contained layouts, .carousel-contained with their own:
1376
+ class of its own): each item as wide as the others, one with the next peeking in on a phone, two from the medium width, three
1377
+ from the expanded width, reaching out to a phone's edges. The contained layouts, .carousel-contained with their own:
1319
1378
  .carousel-multi-browse (large items, a medium and a small one) and .carousel-hero (large ones and a small one;
1320
1379
  .carousel-center: between two small ones), whose items' masks (.carousel-item-mask, what is in an item, filling it)
1321
1380
  carouselLayout.ts moves and clips as they scroll (--carousel-item-width on the row, --carousel-mask-inset on a mask,
@@ -1341,10 +1400,10 @@
1341
1400
  /* A dialog's container. */
1342
1401
  .dialog {
1343
1402
  border-radius: var(--dialog-radius, var(--block-radius));
1344
- background: var(--dialog-surface, var(--block-surface));
1403
+ background: var(--dialog-surface, var(--elevation-3-surface));
1345
1404
  box-shadow:
1346
1405
  0 0 0 1px var(--dialog-line, var(--block-line)),
1347
- var(--dialog-shadow, var(--elevation-3));
1406
+ var(--dialog-shadow, var(--elevation-3-rest-shadow));
1348
1407
  }
1349
1408
  /* A modal dialog: in the middle of the screen over the scrim, coming up a little as it opens. */
1350
1409
  .dialog-modal {
@@ -1479,7 +1538,7 @@
1479
1538
  margin-bottom: 1rem;
1480
1539
  }
1481
1540
  /* On a phone over the whole screen, without corners, edge or shadow. */
1482
- @media (width < 48rem) {
1541
+ @media (width < theme(--breakpoint-medium)) {
1483
1542
  .dialog-modal-full-screen {
1484
1543
  width: 100%;
1485
1544
  max-width: none;
@@ -1495,8 +1554,8 @@
1495
1554
  box-shadow: none;
1496
1555
  }
1497
1556
  }
1498
- /* From 48rem a dialog in the middle of the screen, with the same header. */
1499
- @media (width >= 48rem) {
1557
+ /* From the medium width a dialog in the middle of the screen, with the same header. */
1558
+ @media (width >= theme(--breakpoint-medium)) {
1500
1559
  .dialog-modal-full-screen {
1501
1560
  max-width: var(--dialog-full-screen-max-width, 35rem);
1502
1561
  }
@@ -1549,8 +1608,8 @@
1549
1608
  height: 100%;
1550
1609
  overflow: hidden;
1551
1610
  border-radius: var(--bottom-sheet-radius, var(--block-radius)) var(--bottom-sheet-radius, var(--block-radius)) 0 0;
1552
- background: var(--bottom-sheet-surface, var(--block-surface));
1553
- box-shadow: var(--bottom-sheet-shadow, var(--elevation-1));
1611
+ background: var(--bottom-sheet-surface, var(--elevation-1-surface));
1612
+ box-shadow: var(--bottom-sheet-shadow, var(--elevation-1-rest-shadow));
1554
1613
  padding-bottom: env(safe-area-inset-bottom);
1555
1614
  }
1556
1615
  .bottom-sheet-drag-handle {
@@ -1585,6 +1644,12 @@
1585
1644
  .bottom-sheet-heading {
1586
1645
  min-width: 0;
1587
1646
  }
1647
+ .bottom-sheet-actions {
1648
+ display: flex;
1649
+ flex-shrink: 0;
1650
+ align-items: center;
1651
+ margin-inline-start: auto;
1652
+ }
1588
1653
  .bottom-sheet-headline {
1589
1654
  margin: 0;
1590
1655
  font-size: var(--type-headline-small-size);
@@ -1592,14 +1657,21 @@
1592
1657
  font-weight: var(--type-headline-small-weight);
1593
1658
  letter-spacing: var(--type-headline-small-tracking);
1594
1659
  }
1595
- .bottom-sheet-supporting-text {
1596
- margin: 0;
1660
+ .bottom-sheet-supporting-text,
1661
+ .bottom-sheet-peek {
1597
1662
  font-size: var(--type-body-medium-size);
1598
1663
  line-height: var(--type-body-medium-line-height);
1599
1664
  font-weight: var(--type-body-medium-weight);
1600
1665
  letter-spacing: var(--type-body-medium-tracking);
1666
+ }
1667
+ .bottom-sheet-supporting-text {
1668
+ margin: 0;
1601
1669
  color: var(--block-muted);
1602
1670
  }
1671
+ .bottom-sheet-peek {
1672
+ flex: none;
1673
+ padding: 0.75rem 1.25rem 1rem;
1674
+ }
1603
1675
  .bottom-sheet-content {
1604
1676
  position: relative;
1605
1677
  flex: 1;
@@ -1613,6 +1685,22 @@
1613
1685
  border: 0;
1614
1686
  background: transparent;
1615
1687
  }
1688
+ /* A modal sheet that bottomSheet() sizes (on a phone): the content scrolls only at full height; below it a touch on the
1689
+ content, also over a frame, pulls the sheet. */
1690
+ .bottom-sheet-container[data-sized] > :is(.bottom-sheet-drag-handle, .bottom-sheet-header) {
1691
+ touch-action: none;
1692
+ }
1693
+ .bottom-sheet-container[data-sized] > .bottom-sheet-content {
1694
+ overflow-y: auto;
1695
+ overscroll-behavior: contain;
1696
+ }
1697
+ .bottom-sheet-container[data-sized]:not([data-full]) > .bottom-sheet-content {
1698
+ overflow: hidden;
1699
+ touch-action: none;
1700
+ }
1701
+ .bottom-sheet-container[data-sized]:not([data-full]) > .bottom-sheet-content > iframe {
1702
+ pointer-events: none;
1703
+ }
1616
1704
  /* Over the frame while it loads, or in its place: in the middle, scrolling when it is long. */
1617
1705
  .bottom-sheet-cover {
1618
1706
  position: absolute;
@@ -1622,7 +1710,7 @@
1622
1710
  overflow-y: auto;
1623
1711
  margin: 0;
1624
1712
  padding: 1.25rem;
1625
- background: var(--bottom-sheet-surface, var(--block-surface));
1713
+ background: var(--bottom-sheet-surface, var(--elevation-1-surface));
1626
1714
  color: var(--block-muted);
1627
1715
  text-align: center;
1628
1716
  }
@@ -1641,19 +1729,23 @@
1641
1729
  color: var(--block-muted);
1642
1730
  text-align: center;
1643
1731
  }
1644
- @media (width >= 48rem) {
1645
- .bottom-sheet {
1732
+ /* From the medium width a modal sheet becomes what its container's data-wide says (BottomSheet's `wide`). 'dialog', or a
1733
+ container without the attribute (hand-written ones: Calendly's, and the editor's sheets), is a dialog in the middle of
1734
+ the screen: the rules below, which the other two values keep out of with :where(:not(:has(...))) so their
1735
+ specificity stays what it was. 'side-sheet' and 'sheet' follow after the standard sheet's rules. */
1736
+ @media (width >= theme(--breakpoint-medium)) {
1737
+ .bottom-sheet:where(:not(:has(> [data-wide='side-sheet'], > [data-wide='sheet']))) {
1646
1738
  inset: 0;
1647
1739
  height: min(88dvh, 52rem);
1648
1740
  margin: auto;
1649
1741
  }
1650
1742
  /* A modal one only: a standard one stays at the bottom. */
1651
- .bottom-sheet-container:where(:not(.bottom-sheet-standard)) {
1743
+ .bottom-sheet-container:where(:not(.bottom-sheet-standard, [data-wide='side-sheet'], [data-wide='sheet'])) {
1652
1744
  border-radius: var(--bottom-sheet-radius, var(--block-radius));
1653
- box-shadow: var(--bottom-sheet-shadow-large, var(--elevation-3));
1745
+ box-shadow: var(--bottom-sheet-shadow-large, var(--elevation-3-rest-shadow));
1654
1746
  padding-bottom: 0;
1655
1747
  }
1656
- :where(.bottom-sheet-container:not(.bottom-sheet-standard)) > .bottom-sheet-drag-handle {
1748
+ :where(.bottom-sheet-container:not(.bottom-sheet-standard, [data-wide='side-sheet'], [data-wide='sheet'])) > .bottom-sheet-drag-handle {
1657
1749
  display: none;
1658
1750
  }
1659
1751
  .bottom-sheet-fit {
@@ -1663,7 +1755,7 @@
1663
1755
  width: min(92vw, 80rem);
1664
1756
  height: 90vh;
1665
1757
  }
1666
- :where(.bottom-sheet-container:not(.bottom-sheet-standard)) > .bottom-sheet-header {
1758
+ :where(.bottom-sheet-container:not(.bottom-sheet-standard, [data-wide='side-sheet'], [data-wide='sheet'])) > .bottom-sheet-header {
1667
1759
  padding-top: 1rem;
1668
1760
  }
1669
1761
  }
@@ -1682,7 +1774,11 @@
1682
1774
  margin-inline: auto;
1683
1775
  color: var(--block-text);
1684
1776
  }
1777
+ /* The handle's button is Material 3's touch target, 3rem (48px) high, the bar centred in it. */
1685
1778
  .bottom-sheet-standard > .bottom-sheet-drag-handle {
1779
+ align-items: center;
1780
+ min-height: 3rem;
1781
+ padding: 0;
1686
1782
  width: 100%;
1687
1783
  border: 0;
1688
1784
  background: none;
@@ -1696,6 +1792,10 @@
1696
1792
  cursor: grab;
1697
1793
  touch-action: none;
1698
1794
  }
1795
+ /* Without a handle the header is at the top. */
1796
+ .bottom-sheet-standard > .bottom-sheet-header:first-child {
1797
+ padding-top: 1rem;
1798
+ }
1699
1799
  .bottom-sheet-standard > .bottom-sheet-content {
1700
1800
  overflow-y: auto;
1701
1801
  overscroll-behavior: contain;
@@ -1707,6 +1807,14 @@
1707
1807
  .bottom-sheet-standard[data-state='collapsed'] > .bottom-sheet-header {
1708
1808
  border-bottom-color: transparent;
1709
1809
  }
1810
+ /* The resize button's caret: up at the lowest stop, down above it. The collapse button shows only at full height. */
1811
+ [data-bottom-sheet-resize][aria-expanded='true'] > .bottom-sheet-resize-up,
1812
+ [data-bottom-sheet-resize]:not([aria-expanded='true']) > .bottom-sheet-resize-down {
1813
+ display: none;
1814
+ }
1815
+ .bottom-sheet-standard:not([data-full]) [data-bottom-sheet-collapse] {
1816
+ display: none;
1817
+ }
1710
1818
  .bottom-sheet-standard[data-state='half-expanded'] {
1711
1819
  max-height: 50cqh;
1712
1820
  }
@@ -1716,6 +1824,93 @@
1716
1824
  .bottom-sheet-standard[data-moving] {
1717
1825
  user-select: none;
1718
1826
  }
1827
+ /* From the medium width a standard sheet becomes what data-wide says (BottomSheet's `wide`; bottomSheetControl.ts does
1828
+ nothing to it then). 'side-sheet': a standard side sheet (.side-sheet-standard's look, through its tokens) at the end
1829
+ of the screen, full height, without handle, resize, collapse and close buttons, and with every part shown whatever
1830
+ its state (but hidden stays hidden). 'sheet': stays at the bottom, --bottom-sheet-margin-wide from the sides and the
1831
+ top. */
1832
+ @media (width >= theme(--breakpoint-medium)) {
1833
+ .bottom-sheet-standard[data-wide='side-sheet'] {
1834
+ inset-block: 0;
1835
+ inset-inline: auto 0;
1836
+ width: var(--side-sheet-width, 22.5rem);
1837
+ max-width: 100%;
1838
+ height: auto;
1839
+ max-height: none;
1840
+ margin: 0;
1841
+ padding-bottom: 0;
1842
+ border-radius: 0;
1843
+ border-inline-start: 1px solid var(--side-sheet-line, var(--block-line));
1844
+ background: var(--side-sheet-surface, var(--elevation-0-surface));
1845
+ box-shadow: none;
1846
+ }
1847
+ .bottom-sheet-standard[data-wide='side-sheet'] > .bottom-sheet-drag-handle,
1848
+ .bottom-sheet-standard[data-wide='side-sheet'] [data-bottom-sheet-resize],
1849
+ .bottom-sheet-standard[data-wide='side-sheet'] [data-bottom-sheet-collapse],
1850
+ .bottom-sheet-standard[data-wide='side-sheet'] [data-bottom-sheet-close] {
1851
+ display: none;
1852
+ }
1853
+ .bottom-sheet-standard[data-wide='side-sheet'] > .bottom-sheet-header {
1854
+ min-height: 4.5rem;
1855
+ padding: 1rem 0.75rem 0.5rem var(--side-sheet-padding, 1.5rem);
1856
+ border-bottom-color: transparent;
1857
+ cursor: auto;
1858
+ touch-action: auto;
1859
+ }
1860
+ .bottom-sheet-standard[data-wide='side-sheet'] > .bottom-sheet-content {
1861
+ padding: 0 var(--side-sheet-padding, 1.5rem) var(--side-sheet-padding, 1.5rem);
1862
+ }
1863
+ .bottom-sheet-standard[data-wide='side-sheet'] > :is(.bottom-sheet-content, .bottom-sheet-footer) {
1864
+ display: revert;
1865
+ }
1866
+ .bottom-sheet-standard[data-wide='sheet'] {
1867
+ width: calc(100% - 2 * var(--bottom-sheet-margin-wide, 3.5rem));
1868
+ }
1869
+ .bottom-sheet-standard[data-wide='sheet']:not([data-state='half-expanded']) {
1870
+ max-height: calc(100cqh - var(--bottom-sheet-margin-wide, 3.5rem));
1871
+ }
1872
+ }
1873
+ /* A modal sheet from the medium width. 'side-sheet': a modal side sheet (.side-sheet-modal's look, through its tokens) at
1874
+ the end of the screen, full height, over its scrim, without the drag handle; bottomSheet() slides it in from the end.
1875
+ 'sheet': stays a bottom sheet (with its handle), --bottom-sheet-max-width wide at most and --bottom-sheet-margin-wide
1876
+ from the sides and the top; bottomSheet() slides it up. */
1877
+ @media (width >= theme(--breakpoint-medium)) {
1878
+ .bottom-sheet:has(> [data-wide='side-sheet']) {
1879
+ inset: 0 0 0 auto;
1880
+ width: var(--side-sheet-width, 22.5rem);
1881
+ max-width: 100%;
1882
+ height: 100%;
1883
+ max-height: none;
1884
+ margin: 0;
1885
+ }
1886
+ .bottom-sheet:has(> [data-wide='side-sheet']):dir(rtl) {
1887
+ inset: 0 auto 0 0;
1888
+ }
1889
+ .bottom-sheet:has(> [data-wide='side-sheet'])::backdrop {
1890
+ background: var(--side-sheet-scrim, color-mix(in srgb, var(--theme-scrim-colour, var(--block-text)) 50%, transparent));
1891
+ }
1892
+ .bottom-sheet-container:not(.bottom-sheet-standard)[data-wide='side-sheet'] {
1893
+ border-radius: 0;
1894
+ border-start-start-radius: var(--side-sheet-radius, var(--block-radius));
1895
+ border-end-start-radius: var(--side-sheet-radius, var(--block-radius));
1896
+ background: var(--side-sheet-modal-surface, var(--side-sheet-surface, var(--elevation-1-surface)));
1897
+ box-shadow: var(--side-sheet-shadow, var(--elevation-1-rest-shadow));
1898
+ padding-bottom: 0;
1899
+ }
1900
+ .bottom-sheet-container:not(.bottom-sheet-standard)[data-wide='side-sheet'] > .bottom-sheet-drag-handle {
1901
+ display: none;
1902
+ }
1903
+ .bottom-sheet-container:not(.bottom-sheet-standard)[data-wide='side-sheet'] > .bottom-sheet-header {
1904
+ min-height: 4.5rem;
1905
+ padding: 1rem 0.75rem 0.5rem var(--side-sheet-padding, 1.5rem);
1906
+ border-bottom-color: transparent;
1907
+ }
1908
+ .bottom-sheet:has(> [data-wide='sheet']) {
1909
+ width: calc(100% - 2 * var(--bottom-sheet-margin-wide, 3.5rem));
1910
+ max-width: var(--bottom-sheet-max-width, 40rem);
1911
+ max-height: calc(100dvh - var(--bottom-sheet-margin-wide, 3.5rem));
1912
+ }
1913
+ }
1719
1914
 
1720
1915
  /* A carousel: its items in a row to swipe, and the page indicator under them. */
1721
1916
  .carousel-items {
@@ -1768,19 +1963,19 @@
1768
1963
  width: var(--carousel-dot-selected-width, 1.25rem);
1769
1964
  background: var(--carousel-dot-selected-colour, var(--block-accent));
1770
1965
  }
1771
- @media (width >= 40rem) {
1966
+ @media (width >= theme(--breakpoint-medium)) {
1772
1967
  .carousel-item {
1773
1968
  width: calc((100% - 1rem) / 2);
1774
1969
  }
1775
1970
  }
1776
- @media (width >= 48rem) {
1971
+ @media (width >= theme(--breakpoint-medium)) {
1777
1972
  .carousel-items {
1778
1973
  margin: 0;
1779
1974
  padding: 0;
1780
1975
  scroll-padding-inline: 0;
1781
1976
  }
1782
1977
  }
1783
- @media (width >= 64rem) {
1978
+ @media (width >= theme(--breakpoint-expanded)) {
1784
1979
  .carousel-item {
1785
1980
  width: calc((100% - 2rem) / 3);
1786
1981
  }
@@ -1830,13 +2025,13 @@
1830
2025
  width: 100%;
1831
2026
  scroll-snap-stop: always;
1832
2027
  }
1833
- @media (width < 48rem) {
2028
+ @media (width < theme(--breakpoint-medium)) {
1834
2029
  .carousel-full-screen .carousel-item-mask {
1835
2030
  border-radius: var(--carousel-full-screen-radius, 0);
1836
2031
  clip-path: none;
1837
2032
  }
1838
2033
  }
1839
- @media (width >= 48rem) {
2034
+ @media (width >= theme(--breakpoint-medium)) {
1840
2035
  .carousel-full-screen .carousel-items {
1841
2036
  margin: 0;
1842
2037
  }
@@ -1915,7 +2110,7 @@
1915
2110
  transition: box-shadow 0.3s var(--block-ease-quick);
1916
2111
  }
1917
2112
  .card-elevated {
1918
- --card-shadow: var(--card-elevated-shadow, var(--elevation-1));
2113
+ --card-shadow: var(--card-elevated-shadow, var(--elevation-1-rest-shadow));
1919
2114
  }
1920
2115
  .card-filled {
1921
2116
  --card-shadow: var(--card-filled-shadow, var(--elevation-0));
@@ -1947,7 +2142,7 @@
1947
2142
  cursor: grabbing;
1948
2143
  }
1949
2144
  .card-elevated {
1950
- background: var(--card-elevated-surface, var(--block-surface));
2145
+ background: var(--card-elevated-surface, var(--elevation-1-surface));
1951
2146
  box-shadow:
1952
2147
  inset 0 0 0 1px var(--card-elevated-line, transparent),
1953
2148
  var(--card-shadow);
@@ -1959,7 +2154,7 @@
1959
2154
  var(--card-shadow);
1960
2155
  }
1961
2156
  .card-outlined {
1962
- background: var(--card-outlined-surface, var(--block-surface));
2157
+ background: var(--card-outlined-surface, var(--elevation-0-surface));
1963
2158
  box-shadow:
1964
2159
  inset 0 0 0 1px var(--card-outlined-line, var(--block-line)),
1965
2160
  var(--card-shadow);
@@ -2041,7 +2236,7 @@
2041
2236
  display: block;
2042
2237
  }
2043
2238
  /* Columns: on a wide screen the headline and the supporting text side by side, each in half the item's text. */
2044
- @media (min-width: 48rem) {
2239
+ @media (width >= theme(--breakpoint-expanded)) {
2045
2240
  .list-item-columns .list-item-content {
2046
2241
  display: grid;
2047
2242
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
@@ -2409,7 +2604,7 @@
2409
2604
  .top-app-bar-large-flexible (a larger headline under the bar, wrapping; in the bar once [data-collapsed]); with
2410
2605
  .top-app-bar-center the headline (or the search bar's text) in the middle.
2411
2606
  --top-app-bar-surface, --top-app-bar-line, --top-app-bar-line-width, --top-app-bar-backdrop
2412
- --top-app-bar-stuck-surface, --top-app-bar-stuck-line, --top-app-bar-stuck-shadow (the shadow: level 2, M3's on
2607
+ --top-app-bar-stuck-surface (level 2's colour), --top-app-bar-stuck-line, --top-app-bar-stuck-shadow (the shadow: level 2, M3's on
2413
2608
  scroll; a theme that shows it by the surface alone, as the standard theme does, sets none)
2414
2609
  --top-app-bar-height, --top-app-bar-padding, --top-app-bar-gap the bar's height, the room at its sides and between
2415
2610
  its elements
@@ -2446,14 +2641,26 @@
2446
2641
  --exposed-dropdown-menu-icon-size, --exposed-dropdown-menu-icon-color
2447
2642
  Navigation drawer (NavigationDrawer, NavigationDrawerItem, NavigationDrawerToggle, NavigationDrawerSubitem,
2448
2643
  navigationDrawerClass, navigationDrawerScrimClass): .navigation-drawer, the drawer, over .navigation-drawer-scrim;
2449
- .navigation-drawer-dialog, a <dialog> it is in (its ::backdrop the scrim); .navigation-drawer-item, a page (a link,
2450
- or a button: the editor's) ([data-active]: the open one, or the one holding it); .navigation-drawer-row, an item
2451
- with .navigation-drawer-toggle after it (it unfolds its sub-pages, aria-expanded); .navigation-drawer-subitem, a
2452
- sub-page ([data-active]).
2453
- --navigation-drawer-width, --navigation-drawer-radius, --navigation-drawer-surface, --navigation-drawer-shadow
2454
- (level 1), --navigation-drawer-scrim
2455
- --navigation-drawer-item-height, -padding, -radius, -font-size, -line-height, -letter-spacing, -weight, -text,
2456
- -hover, -active-surface, -active-text, -active-weight
2644
+ .navigation-drawer-standard, the standard one, beside the content (--navigation-drawer-standard-shadow, level 0);
2645
+ .navigation-drawer-dialog, a <dialog> it is in, at the start edge (its ::backdrop the scrim); .navigation-drawer-item,
2646
+ a page (a link, or a button: the editor's) ([data-active]: the open one, or the one holding it), its
2647
+ .navigation-drawer-icon (24dp, outlined; the filled .navigation-drawer-selected-icon in its place while
2648
+ [data-active]) and .navigation-drawer-label, and evt. .navigation-drawer-badge, the text at its end
2649
+ (--navigation-drawer-badge-text, on surface variant; on secondary container on the active item);
2650
+ .navigation-drawer-trailing, an icon at the end of an item (an arrow to a list); .navigation-drawer-back, the back row
2651
+ (an item with an arrow before its label);
2652
+ .navigation-drawer-row, an item with .navigation-drawer-toggle after it (it unfolds its sub-pages, aria-expanded);
2653
+ .navigation-drawer-subitem, a sub-page ([data-active]); .navigation-drawer-section, items under a label
2654
+ (.navigation-drawer-section-label, title small) with, in one that follows another, the divider
2655
+ (.navigation-drawer-section-divider, edge to edge).
2656
+ --navigation-drawer-width (360dp, at most the screen less 56dp), --navigation-drawer-radius (0 16dp 16dp 0; under
2657
+ right-to-left --navigation-drawer-radius-rtl), --navigation-drawer-surface (level 1's colour),
2658
+ --navigation-drawer-shadow (level 1), --navigation-drawer-scrim, --navigation-drawer-inset (12dp each side, from
2659
+ the edges to the items), --navigation-drawer-padding (all of it, with room for the home indicator),
2660
+ --navigation-drawer-section-gap (8dp around the divider), --navigation-drawer-section-label-text
2661
+ --navigation-drawer-item-height (56dp), -padding (16dp start and end), -gap (12dp), -radius (full), -font-size,
2662
+ -line-height, -letter-spacing, -weight (label large), -text (on surface variant), -hover and -pressed (state
2663
+ layers), -active-surface (secondary container), -active-text (on secondary container), -active-weight (700)
2457
2664
  --navigation-drawer-row-gap, --navigation-drawer-toggle-size, --navigation-drawer-toggle-hover
2458
2665
  --navigation-drawer-subitem-indent, -line, -padding, -font-size, -text, -active-text
2459
2666
  Tabs (Tabs, Tab, tabsClass, tabsClasses, tabClass, tabs.script.ts): .tabs, a row of tabs to swipe sideways, or sharing
@@ -2500,8 +2707,8 @@
2500
2707
  }
2501
2708
  .top-app-bar[data-stuck] {
2502
2709
  border-color: var(--top-app-bar-stuck-line, color-mix(in oklab, var(--line) 60%, transparent));
2503
- background: var(--top-app-bar-stuck-surface, var(--top-app-bar-surface, color-mix(in oklab, var(--bg) 85%, transparent)));
2504
- box-shadow: var(--top-app-bar-stuck-shadow, var(--elevation-2));
2710
+ background: var(--top-app-bar-stuck-surface, var(--elevation-2-surface));
2711
+ box-shadow: var(--top-app-bar-stuck-shadow, var(--elevation-2-rest-shadow));
2505
2712
  }
2506
2713
  /* With a kind: the leading button, the headline (or the search bar) and the trailing elements in a row, and what else
2507
2714
  is in it under them. */
@@ -2630,11 +2837,11 @@
2630
2837
  max-height: var(--menu-max-height, none);
2631
2838
  overflow-y: auto;
2632
2839
  border-radius: var(--menu-radius, var(--block-radius-small));
2633
- background: var(--menu-surface, var(--block-surface));
2840
+ background: var(--menu-surface, var(--elevation-2-surface));
2634
2841
  padding: var(--menu-padding, 0.5rem);
2635
2842
  box-shadow:
2636
2843
  0 0 0 1px var(--menu-line, var(--block-line)),
2637
- var(--menu-shadow, var(--elevation-2));
2844
+ var(--menu-shadow, var(--elevation-2-rest-shadow));
2638
2845
  }
2639
2846
  .menu-item {
2640
2847
  display: flex;
@@ -2769,11 +2976,11 @@
2769
2976
  }
2770
2977
  .menu:has(> .menu-group):not(.menu-groups-divider) > .menu-group {
2771
2978
  border-radius: var(--menu-group-inner-radius, var(--menu-radius, var(--block-radius-small)));
2772
- background: var(--menu-surface, var(--block-surface));
2979
+ background: var(--menu-surface, var(--elevation-2-surface));
2773
2980
  padding: var(--menu-padding, 0.5rem);
2774
2981
  box-shadow:
2775
2982
  0 0 0 1px var(--menu-line, var(--block-line)),
2776
- var(--menu-shadow, var(--elevation-2));
2983
+ var(--menu-shadow, var(--elevation-2-rest-shadow));
2777
2984
  }
2778
2985
  .menu:has(> .menu-group):not(.menu-groups-divider) > .menu-group:first-child {
2779
2986
  border-start-start-radius: var(--menu-radius, var(--block-radius-small));
@@ -2883,7 +3090,7 @@
2883
3090
  .menu:has(.menu-submenu:not([popover])) {
2884
3091
  overflow: visible;
2885
3092
  }
2886
- @media (max-width: 40rem) {
3093
+ @media (width < theme(--breakpoint-medium)) {
2887
3094
  /* No room beside it on a phone: under its item, a little in, as a popover flips when it has no room. */
2888
3095
  .menu-submenu:not([popover]) {
2889
3096
  top: calc(100% + var(--menu-submenu-gap, 0.25rem));
@@ -2946,11 +3153,11 @@
2946
3153
  margin-block: var(--dropdown-menu-gap, 0.25rem);
2947
3154
  border: 0;
2948
3155
  border-radius: var(--menu-radius, var(--block-radius-small));
2949
- background: var(--menu-surface, var(--block-surface));
3156
+ background: var(--menu-surface, var(--elevation-2-surface));
2950
3157
  padding: var(--menu-padding, 0.5rem);
2951
3158
  box-shadow:
2952
3159
  0 0 0 1px var(--menu-line, var(--block-line)),
2953
- var(--menu-shadow, var(--elevation-2));
3160
+ var(--menu-shadow, var(--elevation-2-rest-shadow));
2954
3161
  color: var(--block-text);
2955
3162
  }
2956
3163
  .exposed-dropdown-menu-option {
@@ -2991,22 +3198,37 @@
2991
3198
  }
2992
3199
  .navigation-drawer {
2993
3200
  display: flex;
2994
- width: var(--navigation-drawer-width, min(22rem, 88vw));
3201
+ width: var(--navigation-drawer-width, min(22.5rem, calc(100vw - 3.5rem)));
2995
3202
  flex-direction: column;
2996
3203
  overflow-y: auto;
2997
- border-radius: var(--navigation-drawer-radius, 0);
2998
- background: var(--navigation-drawer-surface, var(--bg));
2999
- box-shadow: var(--navigation-drawer-shadow, var(--elevation-1));
3204
+ border-radius: var(--navigation-drawer-radius, 0 1rem 1rem 0);
3205
+ padding: var(--navigation-drawer-padding, 0.75rem var(--navigation-drawer-inset, 0.75rem) max(1rem, env(safe-area-inset-bottom)));
3206
+ background: var(--navigation-drawer-surface, var(--elevation-1-surface));
3207
+ box-shadow: var(--navigation-drawer-shadow, var(--elevation-1-rest-shadow));
3208
+ }
3209
+ .navigation-drawer:dir(rtl) {
3210
+ border-radius: var(--navigation-drawer-radius-rtl, 1rem 0 0 1rem);
3211
+ }
3212
+ /* Nothing in it is squeezed when its content is higher than the screen: the drawer scrolls instead. */
3213
+ .navigation-drawer > * {
3214
+ flex-shrink: 0;
3215
+ }
3216
+ /* Standard: beside the content, as high as its row, no scrim, at level 0 (the content makes room for it). */
3217
+ .navigation-drawer-standard {
3218
+ height: 100%;
3219
+ flex-shrink: 0;
3220
+ box-shadow: var(--navigation-drawer-standard-shadow, var(--elevation-0, none));
3000
3221
  }
3001
3222
  .navigation-drawer-item {
3002
3223
  display: flex;
3003
- min-height: var(--navigation-drawer-item-height, 0);
3224
+ min-height: var(--navigation-drawer-item-height, 3.5rem);
3004
3225
  flex: 1;
3005
3226
  align-items: center;
3006
- gap: 0.75rem;
3007
- border-radius: var(--navigation-drawer-item-radius, var(--block-radius-small));
3008
- padding: var(--navigation-drawer-item-padding, 0.875rem 0.75rem);
3009
- color: var(--navigation-drawer-item-text, inherit);
3227
+ gap: var(--navigation-drawer-item-gap, 0.75rem);
3228
+ border-radius: var(--navigation-drawer-item-radius, 9999px);
3229
+ padding: var(--navigation-drawer-item-padding, 0 1rem);
3230
+ color: var(--navigation-drawer-item-text, var(--block-muted));
3231
+ text-decoration: none;
3010
3232
  font-size: var(--navigation-drawer-item-font-size, var(--type-label-large-size));
3011
3233
  line-height: var(--navigation-drawer-item-line-height, var(--type-label-large-line-height));
3012
3234
  letter-spacing: var(--navigation-drawer-item-letter-spacing, var(--type-label-large-tracking));
@@ -3020,10 +3242,12 @@
3020
3242
  text-align: start;
3021
3243
  cursor: pointer;
3022
3244
  }
3023
- /* In a <dialog> (navigationDrawerDialogClass: the editor's): at the end of the screen, as high as it, over the scrim. */
3245
+ /* In a <dialog> (navigationDrawerDialogClass: the editor's): at the start of the screen (left, right in right-to-left
3246
+ languages), as high as it, over the scrim. */
3024
3247
  .navigation-drawer-dialog {
3025
3248
  position: fixed;
3026
- inset: 0 0 0 auto;
3249
+ inset-block: 0;
3250
+ inset-inline: 0 auto;
3027
3251
  width: auto;
3028
3252
  max-width: none;
3029
3253
  height: 100dvh;
@@ -3039,13 +3263,106 @@
3039
3263
  .navigation-drawer-dialog::backdrop {
3040
3264
  background: var(--navigation-drawer-scrim, color-mix(in srgb, var(--theme-scrim-colour) 45%, transparent));
3041
3265
  }
3266
+ /* State layers (as the theme's other items): the item's own colour over it, 8% pointed at, 10% focused or pressed. */
3042
3267
  .navigation-drawer-item:hover {
3043
- background: var(--navigation-drawer-item-hover, var(--block-tint));
3268
+ background: var(--navigation-drawer-item-hover, color-mix(in srgb, currentColor 8%, transparent));
3269
+ }
3270
+ .navigation-drawer-item:focus-visible,
3271
+ .navigation-drawer-item:active {
3272
+ background: var(--navigation-drawer-item-pressed, color-mix(in srgb, currentColor 10%, transparent));
3273
+ }
3274
+ .navigation-drawer-item:focus-visible {
3275
+ outline-offset: -2px;
3044
3276
  }
3045
3277
  .navigation-drawer-item[data-active] {
3046
- background: var(--navigation-drawer-item-active-surface, var(--block-tint));
3047
- color: var(--navigation-drawer-item-active-text, var(--block-accent));
3048
- font-weight: var(--navigation-drawer-item-active-weight, 500);
3278
+ background: var(--navigation-drawer-item-active-surface, var(--secondary-container));
3279
+ color: var(--navigation-drawer-item-active-text, var(--on-secondary-container));
3280
+ font-weight: var(--navigation-drawer-item-active-weight, 700);
3281
+ }
3282
+ .navigation-drawer-item[data-active]:hover {
3283
+ background: color-mix(in srgb, currentColor 8%, var(--navigation-drawer-item-active-surface, var(--secondary-container)));
3284
+ }
3285
+ .navigation-drawer-item[data-active]:focus-visible,
3286
+ .navigation-drawer-item[data-active]:active {
3287
+ background: color-mix(in srgb, currentColor 10%, var(--navigation-drawer-item-active-surface, var(--secondary-container)));
3288
+ }
3289
+ /* Sections: a label (title small, 56dp high) over the items; the divider is in every section and shown only in one that
3290
+ follows another, edge to edge (it takes the drawer's inset back). */
3291
+ .navigation-drawer-section {
3292
+ display: flex;
3293
+ flex-direction: column;
3294
+ }
3295
+ .navigation-drawer-section-divider {
3296
+ display: none;
3297
+ }
3298
+ .navigation-drawer-section + .navigation-drawer-section > .navigation-drawer-section-divider {
3299
+ display: block;
3300
+ margin-block: var(--navigation-drawer-section-gap, 0.5rem);
3301
+ margin-inline: calc(-1 * var(--navigation-drawer-inset, 0.75rem));
3302
+ }
3303
+ .navigation-drawer-section-label {
3304
+ display: flex;
3305
+ min-height: var(--navigation-drawer-item-height, 3.5rem);
3306
+ align-items: center;
3307
+ padding-inline: var(--navigation-drawer-item-padding-inline, 1rem);
3308
+ color: var(--navigation-drawer-section-label-text, var(--block-muted));
3309
+ font-size: var(--type-title-small-size);
3310
+ line-height: var(--type-title-small-line-height);
3311
+ font-weight: var(--type-title-small-weight);
3312
+ letter-spacing: var(--type-title-small-tracking);
3313
+ }
3314
+ .navigation-drawer-icon {
3315
+ display: grid;
3316
+ width: 1.5rem;
3317
+ height: 1.5rem;
3318
+ flex-shrink: 0;
3319
+ place-items: center;
3320
+ }
3321
+ .navigation-drawer-icon > svg {
3322
+ width: 1.5rem;
3323
+ height: 1.5rem;
3324
+ }
3325
+ /* The outlined icon, and the filled one in its place on the active item. */
3326
+ .navigation-drawer-item:not([data-active]) > .navigation-drawer-icon > .navigation-drawer-selected-icon,
3327
+ .navigation-drawer-item[data-active] > .navigation-drawer-icon > .navigation-drawer-unselected-icon {
3328
+ display: none;
3329
+ }
3330
+ .navigation-drawer-label {
3331
+ min-width: 0;
3332
+ flex: 1;
3333
+ }
3334
+ /* The badge label text at the end of an item: how many there are (label large, on surface variant; on secondary container
3335
+ on the active item). */
3336
+ .navigation-drawer-badge {
3337
+ flex-shrink: 0;
3338
+ margin-inline-start: auto;
3339
+ color: var(--navigation-drawer-badge-text, var(--block-muted));
3340
+ font-size: var(--type-label-large-size);
3341
+ line-height: var(--type-label-large-line-height);
3342
+ font-weight: var(--type-label-large-weight);
3343
+ letter-spacing: var(--type-label-large-tracking);
3344
+ font-variant-numeric: tabular-nums;
3345
+ }
3346
+ .navigation-drawer-item[data-active] > .navigation-drawer-badge {
3347
+ color: var(--navigation-drawer-item-active-text, var(--on-secondary-container));
3348
+ }
3349
+ /* The trailing icon at the end of an item (an arrow to the list it opens); the back row has the item's look. */
3350
+ .navigation-drawer-trailing {
3351
+ display: grid;
3352
+ width: 1.5rem;
3353
+ height: 1.5rem;
3354
+ flex-shrink: 0;
3355
+ place-items: center;
3356
+ margin-inline-start: auto;
3357
+ }
3358
+ .navigation-drawer-trailing:dir(rtl) {
3359
+ scale: -1 1;
3360
+ }
3361
+ .navigation-drawer-badge + .navigation-drawer-trailing {
3362
+ margin-inline-start: 0;
3363
+ }
3364
+ .navigation-drawer-back:dir(rtl) > .navigation-drawer-icon {
3365
+ scale: -1 1;
3049
3366
  }
3050
3367
  .navigation-drawer-row {
3051
3368
  display: flex;
@@ -3258,7 +3575,7 @@
3258
3575
  justify-content: center;
3259
3576
  border-radius: var(--fab-radius, var(--block-radius-small));
3260
3577
  padding: 0 var(--fab-padding, 1rem);
3261
- box-shadow: var(--fab-shadow, var(--elevation-3));
3578
+ box-shadow: var(--fab-shadow, var(--elevation-3-rest-shadow));
3262
3579
  transition:
3263
3580
  box-shadow var(--motion-effects),
3264
3581
  background-color var(--motion-effects),
@@ -3279,7 +3596,7 @@
3279
3596
  }
3280
3597
  .fab:active,
3281
3598
  .extended-fab:active {
3282
- box-shadow: var(--fab-shadow, var(--elevation-3));
3599
+ box-shadow: var(--fab-shadow, var(--elevation-3-rest-shadow));
3283
3600
  }
3284
3601
  /* The medium and the large size (M3 Expressive): taller, with rounder corners and a larger icon, the theme's corners
3285
3602
  scaled as Material's are (16, 20 and 28px). */
@@ -3445,7 +3762,7 @@
3445
3762
  --button-group-inner-radius (the small and medium buttons'), --button-group-xsmall-inner-radius, -large-, -xlarge-
3446
3763
  Toggles' colours are the buttons' (--button-toggle-*, --button-<kind>-selected-*, --icon-button-…-selected-*).
3447
3764
  Segmented button (SegmentedButton, segmentedButtonClass, segmentedButtonSegmentClass): .segmented-button, the frame
3448
- (the whole width on a phone, as wide as its choices from 40rem), with a .segmented-button-segment for each (the chosen with aria-pressed="true"), in it .segmented-button-check (shown
3765
+ (the whole width on a phone, as wide as its choices from the medium width), with a .segmented-button-segment for each (the chosen with aria-pressed="true"), in it .segmented-button-check (shown
3449
3766
  on the chosen), evt. .segmented-button-icon (hidden on the chosen, the check in its place) and
3450
3767
  .segmented-button-label.
3451
3768
  --segmented-button-height, -padding, -gap, -radius, -font-size, -icon-size (the button's where it has none)
@@ -3541,7 +3858,7 @@
3541
3858
 
3542
3859
  /* Segmented buttons (m3.material.io/components/segmented-buttons): the choices side by side in one frame, each as
3543
3860
  wide as the widest. */
3544
- /* The whole width on a phone, the choices sharing it; as wide as its choices from 40rem. */
3861
+ /* The whole width on a phone, the choices sharing it; as wide as its choices from the medium width. */
3545
3862
  .segmented-button {
3546
3863
  display: grid;
3547
3864
  grid-auto-columns: 1fr;
@@ -3550,7 +3867,7 @@
3550
3867
  border-radius: var(--segmented-button-radius, var(--button-radius, var(--block-control-radius)));
3551
3868
  background: var(--segmented-button-surface, var(--block-surface));
3552
3869
  }
3553
- @media (width >= 40rem) {
3870
+ @media (width >= theme(--breakpoint-medium)) {
3554
3871
  .segmented-button {
3555
3872
  display: inline-grid;
3556
3873
  }
@@ -3811,8 +4128,11 @@
3811
4128
 
3812
4129
  /* ---- Selection and the rest of containment: Switch, RadioButton, Slider, Divider, SideSheet ---- */
3813
4130
  /*
3814
- Switches (Switch.tsx, switchClass; m3.material.io/components/switch): .switch, a <label> with its text (.switch-text:
3815
- .switch-label and .switch-supporting), evt. what it is on or off (.switch-state), and after them the track
4131
+ Setting rows (SettingRow.tsx): .setting-row, with its text (.setting-row-text: .setting-row-label and
4132
+ .setting-row-supporting) and after it what sets it.
4133
+ --setting-row-gap, --setting-row-label-weight, --setting-row-supporting-color the room before what sets it, the name
4134
+ and the line under it (else the switch's --switch-label-weight and --switch-supporting-color)
4135
+ Switches (Switch.tsx, switchClass; m3.material.io/components/switch): .switch, a setting row, a <label>, evt. what it is on or off (.switch-state), and after them the track
3816
4136
  (.switch-track: the <input role="switch">,
3817
4137
  .switch-input, drawn as the track with appearance: none, and its handle, .switch-handle, with the theme's icons,
3818
4138
  .switch-icon-on and .switch-icon-off, when it has them: .switch-icons).
@@ -3880,32 +4200,37 @@
3880
4200
  room inside it, the headline, and the line over the actions
3881
4201
  */
3882
4202
  @layer components {
3883
- /* Switches: the name, and the track with its handle after it. */
3884
- .switch {
4203
+ /* A setting's row (SettingRow.tsx): the name and the line under it, then what sets it, on one line; the switch's
4204
+ and the editor's dropdown row both. */
4205
+ .setting-row {
3885
4206
  display: flex;
3886
4207
  align-items: center;
3887
- gap: var(--switch-gap, 1rem);
3888
- cursor: pointer;
3889
- }
3890
- .switch:has(.switch-input:disabled) {
3891
- cursor: default;
4208
+ gap: var(--setting-row-gap, 1rem);
3892
4209
  }
3893
- .switch-text {
4210
+ .setting-row-text {
3894
4211
  flex: 1;
3895
4212
  min-width: 0;
3896
4213
  }
3897
- .switch-label {
4214
+ .setting-row-label {
3898
4215
  display: block;
3899
- font-weight: var(--switch-label-weight, 500);
4216
+ font-weight: var(--setting-row-label-weight, var(--switch-label-weight, 500));
3900
4217
  }
3901
- .switch-supporting {
4218
+ .setting-row-supporting {
3902
4219
  display: block;
3903
- color: var(--switch-supporting-color, var(--block-muted));
4220
+ color: var(--setting-row-supporting-color, var(--switch-supporting-color, var(--block-muted)));
3904
4221
  font-size: var(--type-body-medium-size);
3905
4222
  line-height: var(--type-body-medium-line-height);
3906
4223
  font-weight: var(--type-body-medium-weight);
3907
4224
  letter-spacing: var(--type-body-medium-tracking);
3908
4225
  }
4226
+ /* Switches: a setting row with the track and its handle after the name. */
4227
+ .switch {
4228
+ gap: var(--switch-gap, var(--setting-row-gap, 1rem));
4229
+ cursor: pointer;
4230
+ }
4231
+ .switch:has(.switch-input:disabled) {
4232
+ cursor: default;
4233
+ }
3909
4234
  /* What it is, on or off (Til, Fra), before the track: in the accent while it is on. */
3910
4235
  .switch-state {
3911
4236
  color: var(--switch-state-color, var(--block-muted));
@@ -3952,7 +4277,7 @@
3952
4277
  place-items: center;
3953
4278
  border-radius: 9999px;
3954
4279
  background: var(--switch-handle-surface, var(--block-surface));
3955
- box-shadow: var(--switch-handle-shadow, var(--elevation-1));
4280
+ box-shadow: var(--switch-handle-shadow, var(--elevation-1-rest-shadow));
3956
4281
  color: var(--switch-icon-color, var(--block-muted));
3957
4282
  pointer-events: none;
3958
4283
  translate: -50% -50%;
@@ -4259,7 +4584,7 @@
4259
4584
  border: var(--slider-handle-line-width, 0.1875rem) solid var(--slider-handle-line, var(--block-surface));
4260
4585
  border-radius: var(--slider-handle-radius, 9999px);
4261
4586
  background: var(--slider-handle-surface, var(--block-accent));
4262
- box-shadow: var(--slider-handle-shadow, var(--elevation-1));
4587
+ box-shadow: var(--slider-handle-shadow, var(--elevation-1-rest-shadow));
4263
4588
  pointer-events: auto;
4264
4589
  cursor: grab;
4265
4590
  }
@@ -4270,7 +4595,7 @@
4270
4595
  border: var(--slider-handle-line-width, 0.1875rem) solid var(--slider-handle-line, var(--block-surface));
4271
4596
  border-radius: var(--slider-handle-radius, 9999px);
4272
4597
  background: var(--slider-handle-surface, var(--block-accent));
4273
- box-shadow: var(--slider-handle-shadow, var(--elevation-1));
4598
+ box-shadow: var(--slider-handle-shadow, var(--elevation-1-rest-shadow));
4274
4599
  pointer-events: auto;
4275
4600
  cursor: grab;
4276
4601
  }
@@ -4396,7 +4721,7 @@
4396
4721
  flex-direction: column;
4397
4722
  flex-shrink: 0;
4398
4723
  overflow: hidden;
4399
- background: var(--side-sheet-surface, var(--block-surface));
4724
+ background: var(--side-sheet-surface, var(--elevation-0-surface));
4400
4725
  color: var(--block-text);
4401
4726
  }
4402
4727
  .side-sheet-standard {
@@ -4407,8 +4732,8 @@
4407
4732
  height: 100%;
4408
4733
  border-start-start-radius: var(--side-sheet-radius, var(--block-radius));
4409
4734
  border-end-start-radius: var(--side-sheet-radius, var(--block-radius));
4410
- background: var(--side-sheet-modal-surface, var(--side-sheet-surface, var(--block-surface)));
4411
- box-shadow: var(--side-sheet-shadow, var(--elevation-1));
4735
+ background: var(--side-sheet-modal-surface, var(--side-sheet-surface, var(--elevation-1-surface)));
4736
+ box-shadow: var(--side-sheet-shadow, var(--elevation-1-rest-shadow));
4412
4737
  }
4413
4738
  .side-sheet-header {
4414
4739
  display: flex;
@@ -4804,7 +5129,7 @@
4804
5129
  background-color: transparent;
4805
5130
  padding: 0 1rem;
4806
5131
  }
4807
- @media (width < 48rem) {
5132
+ @media (width < theme(--breakpoint-medium)) {
4808
5133
  body:has([data-action-bar]) .snackbar-stack {
4809
5134
  bottom: calc(6.5rem + env(safe-area-inset-bottom));
4810
5135
  }
@@ -4828,7 +5153,7 @@
4828
5153
  font-size: var(--snackbar-font-size, var(--type-body-medium-size));
4829
5154
  letter-spacing: var(--type-body-medium-tracking);
4830
5155
  line-height: var(--snackbar-line-height, var(--type-body-medium-line-height));
4831
- box-shadow: var(--snackbar-shadow, var(--elevation-3));
5156
+ box-shadow: var(--snackbar-shadow, var(--elevation-3-rest-shadow));
4832
5157
  -webkit-backdrop-filter: var(--snackbar-backdrop, blur(8px));
4833
5158
  backdrop-filter: var(--snackbar-backdrop, blur(8px));
4834
5159
  -webkit-user-select: none;
@@ -4927,7 +5252,7 @@
4927
5252
  gap: 0.25rem;
4928
5253
  translate: var(--tooltip-shift, 0px) 0;
4929
5254
  border-radius: var(--tooltip-rich-radius, var(--block-radius-small));
4930
- background: var(--tooltip-rich-surface, var(--block-surface));
5255
+ background: var(--tooltip-rich-surface, var(--elevation-2-surface));
4931
5256
  padding: var(--tooltip-rich-padding, 0.75rem 1rem);
4932
5257
  color: var(--tooltip-rich-text, var(--block-muted));
4933
5258
  font-size: var(--type-body-medium-size);
@@ -4936,7 +5261,7 @@
4936
5261
  letter-spacing: var(--type-body-medium-tracking);
4937
5262
  box-shadow:
4938
5263
  0 0 0 1px var(--tooltip-rich-line, var(--block-line)),
4939
- var(--tooltip-rich-shadow, var(--elevation-2));
5264
+ var(--tooltip-rich-shadow, var(--elevation-2-rest-shadow));
4940
5265
  }
4941
5266
  .tooltip-subhead {
4942
5267
  color: var(--tooltip-rich-subhead, var(--block-text));
@@ -5138,8 +5463,8 @@
5138
5463
  content, which keeps its place, with its shadow and corners, over .navigation-rail-scrim just before it); its
5139
5464
  behaviour: back into the collapsed rail, or .navigation-rail-hide, nothing while it is collapsed.
5140
5465
  --navigation-rail-width, --navigation-rail-expanded-width, --navigation-rail-padding, --navigation-rail-radius,
5141
- --navigation-rail-surface, --navigation-rail-line
5142
- --navigation-rail-modal-surface, --navigation-rail-modal-radius, --navigation-rail-modal-shadow,
5466
+ --navigation-rail-surface (level 0's colour), --navigation-rail-line
5467
+ --navigation-rail-modal-surface (level 2's colour), --navigation-rail-modal-radius, --navigation-rail-modal-shadow,
5143
5468
  --navigation-rail-scrim a modal one, expanded
5144
5469
  --navigation-rail-item-gap, --navigation-rail-item-text, --navigation-rail-item-selected-text
5145
5470
  --navigation-rail-indicator-width, --navigation-rail-indicator-height, --navigation-rail-expanded-indicator-height,
@@ -5152,7 +5477,7 @@
5152
5477
  button with the leading icon, .search-bar-leading, and the placeholder, .search-bar-placeholder; and
5153
5478
  .search-bar-trailing, what stands after it; .search-bar-input in place of the button in a bar that searches in place,
5154
5479
  SearchBar) and .search-view (the <dialog> it opens: over the whole screen on a phone,
5155
- docked where the bar is from 48rem, and so in the editor), in it .search-view-header (back, the field,
5480
+ docked where the bar is from the medium width, and so in the editor), in it .search-view-header (back, the field,
5156
5481
  .search-view-input, a role="combobox", and .search-view-clear), .search-view-results (the theme's list as a
5157
5482
  role="listbox", the option the arrow keys are on with aria-selected) and .search-view-empty (when nothing fits).
5158
5483
  --search-bar-height, --search-bar-radius, --search-bar-padding, --search-bar-gap, --search-bar-surface,
@@ -5388,7 +5713,7 @@
5388
5713
  overflow: hidden;
5389
5714
  border-radius: var(--navigation-rail-radius, 0);
5390
5715
  padding: var(--navigation-rail-padding, 1rem 0.75rem);
5391
- background: var(--navigation-rail-surface, var(--block-surface));
5716
+ background: var(--navigation-rail-surface, var(--elevation-0-surface));
5392
5717
  box-shadow: inset -1px 0 0 var(--navigation-rail-line, var(--block-line));
5393
5718
  transition:
5394
5719
  width var(--motion-spatial),
@@ -5409,8 +5734,8 @@
5409
5734
  margin-inline-end: calc(var(--navigation-rail-width, 5.5rem) - var(--navigation-rail-expanded-width, 16rem));
5410
5735
  border-start-end-radius: var(--navigation-rail-modal-radius, var(--block-radius));
5411
5736
  border-end-end-radius: var(--navigation-rail-modal-radius, var(--block-radius));
5412
- background: var(--navigation-rail-modal-surface, var(--navigation-rail-surface, var(--block-surface)));
5413
- box-shadow: var(--navigation-rail-modal-shadow, var(--elevation-2));
5737
+ background: var(--navigation-rail-modal-surface, var(--elevation-2-surface));
5738
+ box-shadow: var(--navigation-rail-modal-shadow, var(--elevation-2-rest-shadow));
5414
5739
  }
5415
5740
  .navigation-rail-scrim {
5416
5741
  position: fixed;
@@ -5523,6 +5848,10 @@
5523
5848
  .navigation-rail-item[aria-current] {
5524
5849
  color: var(--navigation-rail-item-selected-text, var(--block-text));
5525
5850
  }
5851
+ button.navigation-rail-item {
5852
+ width: 100%;
5853
+ cursor: pointer;
5854
+ }
5526
5855
  .navigation-rail-indicator {
5527
5856
  display: contents;
5528
5857
  }
@@ -5662,7 +5991,7 @@
5662
5991
  inset 0 0 0 2px var(--block-accent),
5663
5992
  var(--search-bar-shadow, var(--elevation-0));
5664
5993
  }
5665
- /* The view: over the whole screen on a phone; docked from 48rem, where the bar is (search.script.ts sets where), and
5994
+ /* The view: over the whole screen on a phone; docked from the medium width, where the bar is (search.script.ts sets where), and
5666
5995
  as the editor draws it. */
5667
5996
  .search-view {
5668
5997
  inset: 0;
@@ -5674,7 +6003,7 @@
5674
6003
  overflow: hidden;
5675
6004
  border: 0;
5676
6005
  padding: 0;
5677
- background: var(--search-view-surface, var(--block-surface));
6006
+ background: var(--search-view-surface, var(--elevation-3-surface));
5678
6007
  color: var(--block-text);
5679
6008
  }
5680
6009
  .search-view[open] {
@@ -5693,7 +6022,7 @@
5693
6022
  border-radius: var(--search-view-radius, var(--block-radius));
5694
6023
  box-shadow:
5695
6024
  0 0 0 1px var(--search-view-line, var(--block-line)),
5696
- var(--search-view-shadow, var(--elevation-3));
6025
+ var(--search-view-shadow, var(--elevation-3-rest-shadow));
5697
6026
  }
5698
6027
  .search-view-docked {
5699
6028
  inset: var(--search-view-top) auto auto var(--search-view-left);
@@ -5779,7 +6108,7 @@
5779
6108
  padding: var(--toolbar-floating-padding, 0.5rem);
5780
6109
  box-shadow:
5781
6110
  0 0 0 1px var(--toolbar-floating-line, var(--block-line)),
5782
- var(--toolbar-floating-shadow, var(--elevation-3));
6111
+ var(--toolbar-floating-shadow, var(--elevation-3-rest-shadow));
5783
6112
  }
5784
6113
  .toolbar-vertical {
5785
6114
  flex-direction: column;
@@ -5967,7 +6296,7 @@
5967
6296
  border-radius: var(--date-picker-docked-radius, var(--dialog-radius, var(--block-radius)));
5968
6297
  box-shadow:
5969
6298
  0 0 0 1px var(--dialog-line, var(--block-line)),
5970
- var(--date-picker-docked-shadow, var(--dialog-shadow, var(--elevation-3)));
6299
+ var(--date-picker-docked-shadow, var(--dialog-shadow, var(--elevation-3-rest-shadow)));
5971
6300
  }
5972
6301
  .date-picker-header {
5973
6302
  padding: 1rem 0.75rem 0.75rem 1.5rem;
@@ -6184,7 +6513,7 @@
6184
6513
 
6185
6514
  /* The input mode: the theme's text fields, on the dialog's surface (behind an outlined field's name too). */
6186
6515
  .date-picker-input {
6187
- --text-field-label-surface: var(--dialog-surface, var(--block-surface));
6516
+ --text-field-label-surface: var(--dialog-surface, var(--elevation-3-surface));
6188
6517
  display: grid;
6189
6518
  gap: 1rem;
6190
6519
  padding: 1.25rem 0.75rem 0.5rem;