diff --git a/.changeset/checkbox-switch-single-label-node.md b/.changeset/checkbox-switch-single-label-node.md
new file mode 100644
index 0000000000..ea071b2b7a
--- /dev/null
+++ b/.changeset/checkbox-switch-single-label-node.md
@@ -0,0 +1,13 @@
+---
+'@toptal/picasso-form-label': minor
+'@toptal/picasso-checkbox': minor
+'@toptal/picasso-switch': minor
+---
+
+### Checkbox, Switch
+
+- expose a single label-associated node when a `label` is provided, so `getByLabelText`, `getByText` and `getByRole` match once. The base-ui control renders an accessible `role` element plus a hidden native ` `; both used to be label-associated (the `role` element via `aria-labelledby`, the input via the wrapping ``), which made those queries throw "Found multiple elements" in consumer tests. The control now names itself via `aria-labelledby`. Note the DOM contract change: a labeled control's root element changes from `` to ``, and the derived `"
-label"` node id is gone — update selectors/styles that relied on the `label` tag or that id. Label clicks are still forwarded to preserve click-to-toggle and focus, and interactive content inside the label (links, buttons) no longer toggles the control
+
+### FormControlLabel
+
+- add an optional `labelId` prop. When provided, the wrapper renders as a non-`` element (so a control's hidden native input is not a second label-associated node) and forwards label-text clicks to the control (skipping interactive descendants). The default `` path is unchanged, so `Radio` and other consumers are unaffected
diff --git a/.changeset/container-spacing-classes-move.md b/.changeset/container-spacing-classes-move.md
new file mode 100644
index 0000000000..a195207b66
--- /dev/null
+++ b/.changeset/container-spacing-classes-move.md
@@ -0,0 +1,7 @@
+---
+'@toptal/picasso-container': patch
+---
+
+### Container
+
+- resolve spacing classes through `@toptal/picasso-utils` — the resolver and class table moved there unchanged; no consumer-visible change
diff --git a/.changeset/decommission-mui-provider.md b/.changeset/decommission-mui-provider.md
new file mode 100644
index 0000000000..ccd1cc5afc
--- /dev/null
+++ b/.changeset/decommission-mui-provider.md
@@ -0,0 +1,27 @@
+---
+'@toptal/picasso-provider': major
+'@toptal/picasso': major
+'@toptal/picasso-utils': patch
+'@toptal/picasso-collapse': patch
+'@toptal/picasso-fade': patch
+'@toptal/picasso-slide': patch
+---
+
+Decommission the MUI v4 runtime and remove the `@material-ui/core` peer dependency.
+
+`@toptal/picasso-provider` no longer ships an MUI theme runtime, and `@toptal/picasso` no longer requires `@material-ui/core` as a peer dependency. Both packages now allow React 19 (the `react`/`react-dom` peer range widens to `>=16.12.0`).
+
+Breaking changes (consumer action required):
+
+- a `PicassoProvider` and its `.override()`, `.extendTheme()`, and `.disableResponsiveStyle()` methods are removed. There is no runtime MUI theme — override component styling with Tailwind `className`/`data-*` variants instead of `PicassoProvider.override()`.
+- the `theme`, `injectFirst`, and `disableClassNamePrefix` props are removed from `` and `` (they only configured the MUI theme and JSS style injection, both gone). For the one field with a runtime effect — page content width — set it on `` via a CSS-variable class (e.g. ``) rather than the `theme` prop.
+- `getServersideStylesheets` is removed. Tailwind extracts CSS at build time, so JSS server-side stylesheet collection is obsolete — drop it from SSR setup.
+- a `@material-ui/core` is no longer a peer dependency of `@toptal/picasso`, and `@material-ui/core` / `@material-ui/utils` are no longer dependencies of `@toptal/picasso-provider`.
+- the `reset` prop is removed from `` / ``, and the provider no longer injects a runtime reset `