From a29d9fc1808e6550ef7fcb814d9b25ae3d74be78 Mon Sep 17 00:00:00 2001
From: Birk Skyum <birk.skyum@pm.me>
Date: Wed, 22 Oct 2025 02:44:12 +0200
Subject: [PATCH 1/6] chore: bump tailwind from v3 to v4 with postcss

---
 .../package.json                              |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../basic-file-based/package.json             |    6 +-
 .../basic-file-based/postcss.config.mjs       |    3 +-
 .../basic-file-based/src/routes/anchor.tsx    |   10 +-
 .../basic-file-based/src/styles.css           |   22 +-
 .../basic-file-based/tailwind.config.mjs      |    4 -
 .../basic-react-query-file-based/package.json |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../basic-react-query/package.json            |    6 +-
 .../basic-react-query/postcss.config.mjs      |    3 +-
 .../basic-react-query/src/styles.css          |   22 +-
 .../basic-react-query/tailwind.config.mjs     |    4 -
 .../basic-scroll-restoration/package.json     |    8 +-
 .../postcss.config.mjs                        |    3 +-
 .../basic-scroll-restoration/src/styles.css   |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../basic-virtual-file-based/package.json     |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../basic-virtual-file-based/src/styles.css   |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../package.json                              |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   24 +-
 .../tailwind.config.mjs                       |    4 -
 e2e/react-router/basic/package.json           |    6 +-
 e2e/react-router/basic/postcss.config.mjs     |    3 +-
 e2e/react-router/basic/src/styles.css         |   22 +-
 e2e/react-router/basic/tailwind.config.mjs    |    4 -
 .../generator-cli-only/package.json           |    6 +-
 .../generator-cli-only/postcss.config.mjs     |    3 +-
 .../generator-cli-only/src/styles.css         |   22 +-
 .../generator-cli-only/tailwind.config.mjs    |    4 -
 .../js-only-file-based/package.json           |    8 +-
 .../js-only-file-based/postcss.config.mjs     |    3 +-
 .../js-only-file-based/src/styles.css         |   22 +-
 .../js-only-file-based/tailwind.config.mjs    |    4 -
 .../rspack-basic-file-based/package.json      |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../rspack-basic-file-based/src/styles.css    |   24 +-
 .../tailwind.config.mjs                       |    4 -
 .../package.json                              |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   24 +-
 .../tailwind.config.mjs                       |    4 -
 .../package.json                              |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../sentry-integration/package.json           |    6 +-
 .../sentry-integration/postcss.config.mjs     |    3 +-
 .../sentry-integration/src/styles.css         |   22 +-
 .../sentry-integration/tailwind.config.mjs    |    4 -
 e2e/react-start/basic-auth/package.json       |    4 +-
 e2e/react-start/basic-auth/postcss.config.mjs |    3 +-
 .../basic-auth/src/components/Auth.tsx        |    6 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../basic-auth/src/components/NotFound.tsx    |    4 +-
 e2e/react-start/basic-auth/src/styles/app.css |   22 +-
 .../basic-auth/tailwind.config.mjs            |    4 -
 e2e/react-start/basic-cloudflare/package.json |    4 +-
 .../basic-cloudflare/postcss.config.mjs       |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../basic-cloudflare/src/styles/app.css       |   22 +-
 .../basic-cloudflare/tailwind.config.mjs      |    4 -
 .../basic-react-query/package.json            |    4 +-
 .../basic-react-query/postcss.config.mjs      |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../basic-react-query/src/styles/app.css      |   22 +-
 .../basic-react-query/tailwind.config.mjs     |    4 -
 e2e/react-start/basic-rsc/package.json        |    6 +
 e2e/react-start/basic-rsc/postcss.config.mjs  |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../basic-rsc/src/components/NotFound.tsx     |    4 +-
 e2e/react-start/basic-rsc/src/styles/app.css  |   22 +-
 e2e/react-start/basic-rsc/tailwind.config.mjs |    4 -
 e2e/react-start/basic/package.json            |    4 +-
 e2e/react-start/basic/postcss.config.mjs      |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../basic/src/components/NotFound.tsx         |    4 +-
 e2e/react-start/basic/src/styles/app.css      |   22 +-
 e2e/react-start/basic/tailwind.config.mjs     |    4 -
 e2e/react-start/custom-basepath/package.json  |    4 +-
 .../custom-basepath/postcss.config.mjs        |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../custom-basepath/src/styles/app.css        |   22 +-
 .../custom-basepath/tailwind.config.mjs       |    4 -
 .../query-integration/package.json            |    4 +-
 .../query-integration/postcss.config.mjs      |    3 +-
 .../query-integration/src/styles/app.css      |   22 +-
 .../query-integration/tailwind.config.mjs     |    4 -
 .../scroll-restoration/package.json           |    4 +-
 .../scroll-restoration/postcss.config.mjs     |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../scroll-restoration/src/styles/app.css     |   22 +-
 .../scroll-restoration/tailwind.config.mjs    |    4 -
 e2e/react-start/selective-ssr/package.json    |    5 +-
 .../selective-ssr/postcss.config.mjs          |    3 +-
 .../selective-ssr/src/styles/app.css          |   22 +-
 .../selective-ssr/tailwind.config.mjs         |    4 -
 .../serialization-adapters/package.json       |    5 +-
 .../serialization-adapters/postcss.config.mjs |    3 +-
 .../serialization-adapters/src/styles/app.css |   22 +-
 .../tailwind.config.mjs                       |    4 -
 e2e/react-start/server-functions/package.json |    6 +-
 .../server-functions/postcss.config.mjs       |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../src/routes/consistent.tsx                 |    2 +-
 .../src/routes/dead-code-preserve.tsx         |    2 +-
 .../src/routes/factory/index.tsx              |    2 +-
 .../src/routes/formdata-redirect/index.tsx    |    2 +-
 .../server-functions/src/routes/headers.tsx   |    2 +-
 .../middleware/client-middleware-router.tsx   |    2 +-
 .../src/routes/middleware/send-serverFn.tsx   |    2 +-
 .../server-functions/src/routes/multipart.tsx |    4 +-
 .../src/routes/raw-response.tsx               |    2 +-
 .../src/routes/return-null.tsx                |    2 +-
 .../src/routes/serialize-form-data.tsx        |    2 +-
 .../src/routes/submit-post-formdata.tsx       |    2 +-
 .../server-functions/src/styles/app.css       |   22 +-
 .../server-functions/tailwind.config.mjs      |    4 -
 e2e/react-start/server-routes/package.json    |    4 +-
 .../server-routes/postcss.config.mjs          |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../server-routes/src/components/NotFound.tsx |    4 +-
 .../merge-server-fn-middleware-context.tsx    |   10 +-
 .../server-routes/src/styles/app.css          |   22 +-
 .../server-routes/tailwind.config.mjs         |    4 -
 e2e/react-start/spa-mode/package.json         |    3 +-
 e2e/react-start/spa-mode/postcss.config.mjs   |    3 +-
 e2e/react-start/spa-mode/src/styles/app.css   |   22 +-
 e2e/react-start/spa-mode/tailwind.config.mjs  |    4 -
 e2e/react-start/virtual-routes/package.json   |    4 +-
 .../virtual-routes/postcss.config.mjs         |    3 +-
 .../virtual-routes/src/styles/app.css         |   22 +-
 .../virtual-routes/tailwind.config.mjs        |    4 -
 e2e/react-start/website/package.json          |    4 +-
 e2e/react-start/website/postcss.config.mjs    |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../website/src/components/NotFound.tsx       |    4 +-
 e2e/react-start/website/src/styles/app.css    |   22 +-
 e2e/react-start/website/tailwind.config.mjs   |    4 -
 .../package.json                              |    4 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../basic-file-based/package.json             |   12 +-
 .../basic-file-based/postcss.config.mjs       |    3 +-
 .../basic-file-based/src/routes/anchor.tsx    |   10 +-
 .../basic-file-based/src/styles.css           |   22 +-
 .../basic-file-based/tailwind.config.mjs      |    4 -
 .../basic-scroll-restoration/package.json     |   12 +-
 .../postcss.config.mjs                        |    3 +-
 .../basic-scroll-restoration/src/styles.css   |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../basic-solid-query-file-based/package.json |   14 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../basic-solid-query/package.json            |   12 +-
 .../basic-solid-query/postcss.config.mjs      |    3 +-
 .../basic-solid-query/src/styles.css          |   22 +-
 .../basic-solid-query/tailwind.config.mjs     |    4 -
 .../basic-virtual-file-based/package.json     |   14 +-
 .../postcss.config.mjs                        |    3 +-
 .../basic-virtual-file-based/src/styles.css   |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../package.json                              |   14 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   24 +-
 .../tailwind.config.mjs                       |    4 -
 e2e/solid-router/basic/package.json           |   12 +-
 e2e/solid-router/basic/postcss.config.mjs     |    3 +-
 e2e/solid-router/basic/src/styles.css         |   22 +-
 e2e/solid-router/basic/tailwind.config.mjs    |    4 -
 .../rspack-basic-file-based/package.json      |   10 +-
 .../postcss.config.mjs                        |    3 +-
 .../rspack-basic-file-based/src/styles.css    |   24 +-
 .../tailwind.config.mjs                       |    4 -
 .../package.json                              |   10 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   24 +-
 .../tailwind.config.mjs                       |    4 -
 .../package.json                              |   14 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 e2e/solid-start/basic-auth/package.json       |    8 +-
 e2e/solid-start/basic-auth/postcss.config.mjs |    3 +-
 .../basic-auth/src/components/Auth.tsx        |    6 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../basic-auth/src/components/NotFound.tsx    |    4 +-
 e2e/solid-start/basic-auth/src/styles/app.css |   22 +-
 .../basic-auth/tailwind.config.mjs            |    4 -
 .../basic-solid-query/package.json            |    6 +-
 .../basic-solid-query/postcss.config.mjs      |    3 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../basic-solid-query/src/styles/app.css      |   22 +-
 .../basic-solid-query/tailwind.config.mjs     |    8 -
 e2e/solid-start/basic/package.json            |    4 +-
 e2e/solid-start/basic/postcss.config.mjs      |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../basic/src/components/NotFound.tsx         |    4 +-
 e2e/solid-start/basic/src/styles/app.css      |   22 +-
 e2e/solid-start/basic/tailwind.config.mjs     |    4 -
 e2e/solid-start/custom-basepath/package.json  |    4 +-
 .../custom-basepath/postcss.config.mjs        |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../custom-basepath/src/styles/app.css        |   22 +-
 .../custom-basepath/tailwind.config.mjs       |    4 -
 .../query-integration/package.json            |    4 +-
 .../query-integration/postcss.config.mjs      |    3 +-
 .../query-integration/src/styles/app.css      |   22 +-
 .../query-integration/tailwind.config.mjs     |    8 -
 .../scroll-restoration/package.json           |    4 +-
 .../scroll-restoration/postcss.config.mjs     |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../scroll-restoration/src/styles/app.css     |   22 +-
 .../scroll-restoration/tailwind.config.mjs    |    4 -
 e2e/solid-start/selective-ssr/package.json    |    3 +-
 .../selective-ssr/postcss.config.mjs          |    3 +-
 .../selective-ssr/src/styles/app.css          |   22 +-
 .../selective-ssr/tailwind.config.mjs         |    4 -
 e2e/solid-start/server-functions/package.json |    4 +-
 .../server-functions/postcss.config.mjs       |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../src/routes/consistent.tsx                 |    2 +-
 .../src/routes/dead-code-preserve.tsx         |    2 +-
 .../server-functions/src/routes/headers.tsx   |    2 +-
 .../server-functions/src/routes/multipart.tsx |    4 +-
 .../src/routes/raw-response.tsx               |    2 +-
 .../src/routes/return-null.tsx                |    2 +-
 .../src/routes/serialize-form-data.tsx        |    2 +-
 .../src/routes/submit-post-formdata.tsx       |    2 +-
 .../server-functions/src/styles/app.css       |   22 +-
 .../server-functions/tailwind.config.mjs      |    4 -
 e2e/solid-start/server-routes/package.json    |    4 +-
 .../server-routes/postcss.config.mjs          |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../server-routes/src/components/NotFound.tsx |    4 +-
 .../merge-server-fn-middleware-context.tsx    |   10 +-
 .../server-routes/src/styles/app.css          |   22 +-
 .../server-routes/tailwind.config.mjs         |    4 -
 e2e/solid-start/spa-mode/package.json         |    9 +-
 e2e/solid-start/spa-mode/postcss.config.mjs   |    3 +-
 e2e/solid-start/spa-mode/src/styles/app.css   |   22 +-
 e2e/solid-start/spa-mode/tailwind.config.mjs  |    4 -
 e2e/solid-start/virtual-routes/package.json   |    8 +-
 .../virtual-routes/postcss.config.mjs         |    3 +-
 .../virtual-routes/src/styles/app.css         |   22 +-
 .../virtual-routes/tailwind.config.mjs        |    4 -
 e2e/solid-start/website/package.json          |    4 +-
 e2e/solid-start/website/postcss.config.mjs    |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../website/src/components/NotFound.tsx       |    4 +-
 e2e/solid-start/website/src/styles/app.css    |   22 +-
 e2e/solid-start/website/tailwind.config.mjs   |    4 -
 .../package.json                              |    4 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/routes/index.tsx                      |    4 +-
 .../src/routes/login.tsx                      |    2 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../react/authenticated-routes/package.json   |    6 +-
 .../authenticated-routes/postcss.config.mjs   |    3 +-
 .../react/authenticated-routes/src/styles.css |   22 +-
 .../authenticated-routes/tailwind.config.mjs  |    4 -
 .../basic-default-search-params/package.json  |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../basic-default-search-params/src/main.tsx  |    4 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../react/basic-devtools-panel/package.json   |    8 +-
 .../basic-devtools-panel/postcss.config.mjs   |    3 +-
 .../react/basic-devtools-panel/src/styles.css |   22 +-
 .../basic-devtools-panel/tailwind.config.mjs  |    4 -
 examples/react/basic-file-based/package.json  |    6 +-
 .../react/basic-file-based/postcss.config.mjs |    3 +-
 .../basic-file-based/src/routes/anchor.tsx    |   10 +-
 .../react/basic-file-based/src/styles.css     |   22 +-
 .../basic-file-based/tailwind.config.mjs      |    4 -
 .../basic-non-nested-devtools/package.json    |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../basic-non-nested-devtools/src/styles.css  |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../basic-react-query-file-based/package.json |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 examples/react/basic-react-query/package.json |    6 +-
 .../basic-react-query/postcss.config.mjs      |    3 +-
 .../react/basic-react-query/src/styles.css    |   22 +-
 .../basic-react-query/tailwind.config.mjs     |    4 -
 .../basic-virtual-file-based/package.json     |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../basic-virtual-file-based/src/styles.css   |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../package.json                              |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 examples/react/basic/package.json             |    6 +-
 examples/react/basic/postcss.config.mjs       |    3 +-
 examples/react/basic/src/styles.css           |   22 +-
 examples/react/basic/tailwind.config.mjs      |    4 -
 examples/react/deferred-data/package.json     |    6 +-
 .../react/deferred-data/postcss.config.mjs    |    3 +-
 examples/react/deferred-data/src/styles.css   |   22 +-
 .../react/deferred-data/tailwind.config.mjs   |    4 -
 .../kitchen-sink-file-based/package.json      |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/components/InvoiceFields.tsx          |    4 +-
 .../kitchen-sink-file-based/src/main.tsx      |   10 +-
 .../routes/dashboard.invoices.$invoiceId.tsx  |    8 +-
 .../src/routes/dashboard.invoices.index.tsx   |    6 +-
 .../src/routes/dashboard.users.route.tsx      |    4 +-
 .../src/routes/login.tsx                      |    6 +-
 .../kitchen-sink-file-based/src/styles.css    |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../package.json                              |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/components/InvoiceFields.tsx          |    4 +-
 .../src/main.tsx                              |   10 +-
 .../routes/dashboard.invoices.$invoiceId.tsx  |    8 +-
 .../src/routes/dashboard.invoices.index.tsx   |    6 +-
 .../src/routes/dashboard.users.route.tsx      |    4 +-
 .../src/routes/login.tsx                      |    6 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../kitchen-sink-react-query/package.json     |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../kitchen-sink-react-query/src/main.tsx     |   38 +-
 .../kitchen-sink-react-query/src/styles.css   |   22 +-
 .../tailwind.config.mjs                       |    4 -
 examples/react/kitchen-sink/package.json      |    6 +-
 .../react/kitchen-sink/postcss.config.mjs     |    3 +-
 examples/react/kitchen-sink/src/main.tsx      |   40 +-
 examples/react/kitchen-sink/src/styles.css    |   22 +-
 .../react/kitchen-sink/tailwind.config.mjs    |    4 -
 examples/react/large-file-based/package.json  |    6 +-
 .../react/large-file-based/postcss.config.mjs |    3 +-
 .../react/large-file-based/src/styles.css     |   22 +-
 .../large-file-based/tailwind.config.mjs      |    4 -
 examples/react/location-masking/package.json  |    6 +-
 .../react/location-masking/postcss.config.mjs |    3 +-
 examples/react/location-masking/src/main.tsx  |    4 +-
 .../react/location-masking/src/styles.css     |   22 +-
 .../location-masking/tailwind.config.mjs      |    4 -
 .../react/navigation-blocking/package.json    |    6 +-
 .../navigation-blocking/postcss.config.mjs    |    3 +-
 .../react/navigation-blocking/src/main.tsx    |    8 +-
 .../react/navigation-blocking/src/styles.css  |   22 +-
 .../navigation-blocking/tailwind.config.mjs   |    4 -
 .../react/quickstart-file-based/package.json  |    6 +-
 .../quickstart-file-based/postcss.config.mjs  |    3 +-
 .../quickstart-file-based/src/styles.css      |   22 +-
 .../quickstart-file-based/tailwind.config.mjs |    4 -
 .../quickstart-rspack-file-based/package.json |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 examples/react/quickstart/package.json        |    6 +-
 examples/react/quickstart/postcss.config.mjs  |    3 +-
 examples/react/quickstart/src/styles.css      |   22 +-
 examples/react/quickstart/tailwind.config.mjs |    4 -
 .../packages/app/package.json                 |    9 +-
 .../packages/app/postcss.config.js            |    1 -
 .../packages/app/src/style.css                |   24 +-
 .../packages/app/tailwind.config.js           |    7 -
 .../packages/app/package.json                 |    7 +-
 .../packages/app/postcss.config.js            |    1 -
 .../packages/app/src/style.css                |   24 +-
 .../packages/app/tailwind.config.js           |    7 -
 .../packages/app/package.json                 |    7 +-
 .../packages/app/postcss.config.js            |    1 -
 .../packages/app/src/style.css                |   24 +-
 .../packages/app/tailwind.config.js           |    7 -
 .../react/scroll-restoration/package.json     |    8 +-
 .../scroll-restoration/postcss.config.mjs     |    3 +-
 .../react/scroll-restoration/src/styles.css   |   22 +-
 .../scroll-restoration/tailwind.config.mjs    |    4 -
 .../search-validator-adapters/package.json    |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/components/Search.tsx                 |    2 +-
 .../search-validator-adapters/src/styles.css  |   22 +-
 .../tailwind.config.mjs                       |    4 -
 examples/react/start-basic-auth/package.json  |    6 +-
 .../react/start-basic-auth/postcss.config.mjs |    3 +-
 .../start-basic-auth/src/components/Auth.tsx  |    6 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../react/start-basic-auth/src/styles/app.css |   22 +-
 .../start-basic-auth/tailwind.config.mjs      |    4 -
 .../react/start-basic-cloudflare/package.json |    4 +-
 .../start-basic-cloudflare/postcss.config.mjs |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../start-basic-cloudflare/src/styles/app.css |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../start-basic-react-query/package.json      |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../src/styles/app.css                        |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../react/start-basic-static/package.json     |    2 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../start-basic-static/src/styles/app.css     |   22 +-
 .../start-basic-static/tailwind.config.cjs    |    4 -
 examples/react/start-basic/package.json       |    4 +-
 examples/react/start-basic/postcss.config.mjs |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../start-basic/src/components/NotFound.tsx   |    4 +-
 examples/react/start-basic/src/styles/app.css |   22 +-
 .../react/start-basic/tailwind.config.mjs     |    4 -
 examples/react/start-clerk-basic/package.json |    8 +-
 .../start-clerk-basic/postcss.config.mjs      |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../start-clerk-basic/src/styles/app.css      |   22 +-
 .../start-clerk-basic/tailwind.config.mjs     |    4 -
 .../react/start-convex-trellaux/package.json  |    8 +-
 .../start-convex-trellaux/postcss.config.mjs  |    3 +-
 .../src/components/Board.tsx                  |    6 +-
 .../src/components/Card.tsx                   |    2 +-
 .../src/components/Column.tsx                 |    8 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NewCard.tsx                |    2 +-
 .../src/components/NewColumn.tsx              |    4 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../src/routes/__root.tsx                     |    2 +-
 .../start-convex-trellaux/src/styles/app.css  |   22 +-
 .../start-convex-trellaux/tailwind.config.mjs |    4 -
 examples/react/start-large/package.json       |    4 +-
 examples/react/start-large/postcss.config.mjs |    3 +-
 examples/react/start-large/src/styles.css     |   22 +-
 .../react/start-large/tailwind.config.mjs     |    4 -
 .../react/start-supabase-basic/package.json   |    4 +-
 .../start-supabase-basic/postcss.config.mjs   |    3 +-
 .../src/components/Auth.tsx                   |    6 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../start-supabase-basic/src/styles/app.css   |   22 +-
 .../start-supabase-basic/tailwind.config.mjs  |    4 -
 examples/react/start-trellaux/package.json    |    8 +-
 .../react/start-trellaux/postcss.config.mjs   |    3 +-
 .../start-trellaux/src/components/Board.tsx   |    6 +-
 .../start-trellaux/src/components/Card.tsx    |    2 +-
 .../start-trellaux/src/components/Column.tsx  |    8 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../start-trellaux/src/components/NewCard.tsx |    2 +-
 .../src/components/NewColumn.tsx              |    4 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../start-trellaux/src/routes/__root.tsx      |    2 +-
 .../react/start-trellaux/src/styles/app.css   |   22 +-
 .../react/start-trellaux/tailwind.config.mjs  |    4 -
 examples/react/start-workos/package.json      |    3 -
 examples/react/view-transitions/package.json  |    6 +-
 .../react/view-transitions/postcss.config.mjs |    3 +-
 .../react/view-transitions/src/styles.css     |   22 +-
 .../view-transitions/tailwind.config.mjs      |    4 -
 .../react/with-framer-motion/package.json     |    6 +-
 .../with-framer-motion/postcss.config.mjs     |    3 +-
 .../react/with-framer-motion/src/styles.css   |   22 +-
 .../with-framer-motion/tailwind.config.mjs    |    4 -
 .../react/with-trpc-react-query/package.json  |    4 +-
 .../with-trpc-react-query/postcss.config.mjs  |    3 +-
 .../src/routes/dashboard.posts.$postId.tsx    |    6 +-
 .../with-trpc-react-query/src/styles.css      |   22 +-
 .../with-trpc-react-query/tailwind.config.mjs |    4 -
 examples/react/with-trpc/package.json         |    4 +-
 examples/react/with-trpc/postcss.config.mjs   |    3 +-
 .../src/routes/dashboard.posts.$postId.tsx    |    6 +-
 examples/react/with-trpc/src/styles.css       |   22 +-
 examples/react/with-trpc/tailwind.config.mjs  |    4 -
 .../solid/basic-devtools-panel/package.json   |   12 +-
 .../basic-devtools-panel/postcss.config.mjs   |    3 +-
 .../solid/basic-devtools-panel/src/styles.css |   22 +-
 .../basic-devtools-panel/tailwind.config.mjs  |    4 -
 examples/solid/basic-file-based/package.json  |    4 +-
 .../solid/basic-file-based/postcss.config.mjs |    3 +-
 .../solid/basic-file-based/src/styles.css     |   22 +-
 .../basic-file-based/tailwind.config.mjs      |    4 -
 .../basic-non-nested-devtools/package.json    |    6 +-
 .../postcss.config.mjs                        |    3 +-
 .../basic-non-nested-devtools/src/styles.css  |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../basic-solid-query-file-based/package.json |    8 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 examples/solid/basic-solid-query/package.json |    8 +-
 .../basic-solid-query/postcss.config.mjs      |    3 +-
 .../solid/basic-solid-query/src/styles.css    |   22 +-
 .../basic-solid-query/tailwind.config.mjs     |    4 -
 .../package.json                              |    4 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/routes/-components/Counter.tsx        |    2 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 examples/solid/basic/package.json             |    6 +-
 examples/solid/basic/postcss.config.mjs       |    3 +-
 examples/solid/basic/src/styles.css           |   22 +-
 examples/solid/basic/tailwind.config.mjs      |    4 -
 .../kitchen-sink-file-based/package.json      |    8 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/components/InvoiceFields.tsx          |    4 +-
 .../kitchen-sink-file-based/src/main.tsx      |   10 +-
 .../routes/dashboard.invoices.$invoiceId.tsx  |    8 +-
 .../src/routes/dashboard.invoices.index.tsx   |    6 +-
 .../src/routes/dashboard.users.route.tsx      |    4 +-
 .../src/routes/login.tsx                      |    6 +-
 .../kitchen-sink-file-based/src/styles.css    |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../package.json                              |   14 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/components/InvoiceFields.tsx          |    4 +-
 .../src/main.tsx                              |   10 +-
 .../routes/dashboard.invoices.$invoiceId.tsx  |    8 +-
 .../src/routes/dashboard.invoices.index.tsx   |    6 +-
 .../src/routes/dashboard.users.route.tsx      |    4 +-
 .../src/routes/login.tsx                      |    6 +-
 .../src/styles.css                            |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../kitchen-sink-solid-query/package.json     |   12 +-
 .../postcss.config.mjs                        |    3 +-
 .../kitchen-sink-solid-query/src/main.tsx     |   38 +-
 .../kitchen-sink-solid-query/src/styles.css   |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../solid/quickstart-file-based/package.json  |    4 +-
 .../quickstart-file-based/postcss.config.mjs  |    3 +-
 .../quickstart-file-based/src/styles.css      |   22 +-
 .../quickstart-file-based/tailwind.config.mjs |    4 -
 examples/solid/start-basic-auth/package.json  |    8 +-
 .../solid/start-basic-auth/postcss.config.mjs |    3 +-
 .../start-basic-auth/src/components/Auth.tsx  |    6 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../solid/start-basic-auth/src/styles/app.css |   22 +-
 .../start-basic-auth/tailwind.config.mjs      |    4 -
 .../solid/start-basic-cloudflare/package.json |    6 +-
 .../start-basic-cloudflare/postcss.config.mjs |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../start-basic-cloudflare/src/styles/app.css |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../solid/start-basic-netlify/package.json    |    6 +-
 .../start-basic-netlify/postcss.config.mjs    |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../start-basic-netlify/src/styles/app.css    |   22 +-
 .../start-basic-netlify/tailwind.config.mjs   |    4 -
 examples/solid/start-basic-nitro/package.json |    8 +-
 .../start-basic-nitro/postcss.config.mjs      |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../start-basic-nitro/src/styles/app.css      |   22 +-
 .../start-basic-nitro/tailwind.config.mjs     |    4 -
 .../start-basic-solid-query/package.json      |   10 +-
 .../postcss.config.mjs                        |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../src/styles/app.css                        |   22 +-
 .../tailwind.config.mjs                       |    4 -
 .../solid/start-basic-static/package.json     |    8 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../src/components/NotFound.tsx               |    4 +-
 .../start-basic-static/src/styles/app.css     |   22 +-
 .../start-basic-static/tailwind.config.cjs    |    4 -
 examples/solid/start-basic/package.json       |    6 +-
 examples/solid/start-basic/postcss.config.mjs |    3 +-
 .../src/components/DefaultCatchBoundary.tsx   |    6 +-
 .../start-basic/src/components/NotFound.tsx   |    4 +-
 examples/solid/start-basic/src/styles/app.css |   22 +-
 .../solid/start-basic/tailwind.config.mjs     |    4 -
 pnpm-lock.yaml                                | 2423 +++++++++--------
 589 files changed, 4262 insertions(+), 2942 deletions(-)
 delete mode 100644 e2e/react-router/basic-file-based-code-splitting/tailwind.config.mjs
 delete mode 100644 e2e/react-router/basic-file-based/tailwind.config.mjs
 delete mode 100644 e2e/react-router/basic-react-query-file-based/tailwind.config.mjs
 delete mode 100644 e2e/react-router/basic-react-query/tailwind.config.mjs
 delete mode 100644 e2e/react-router/basic-scroll-restoration/tailwind.config.mjs
 delete mode 100644 e2e/react-router/basic-virtual-file-based/tailwind.config.mjs
 delete mode 100644 e2e/react-router/basic-virtual-named-export-config-file-based/tailwind.config.mjs
 delete mode 100644 e2e/react-router/basic/tailwind.config.mjs
 delete mode 100644 e2e/react-router/generator-cli-only/tailwind.config.mjs
 delete mode 100644 e2e/react-router/js-only-file-based/tailwind.config.mjs
 delete mode 100644 e2e/react-router/rspack-basic-file-based/tailwind.config.mjs
 delete mode 100644 e2e/react-router/rspack-basic-virtual-named-export-config-file-based/tailwind.config.mjs
 delete mode 100644 e2e/react-router/scroll-restoration-sandbox-vite/tailwind.config.mjs
 delete mode 100644 e2e/react-router/sentry-integration/tailwind.config.mjs
 delete mode 100644 e2e/react-start/basic-auth/tailwind.config.mjs
 delete mode 100644 e2e/react-start/basic-cloudflare/tailwind.config.mjs
 delete mode 100644 e2e/react-start/basic-react-query/tailwind.config.mjs
 create mode 100644 e2e/react-start/basic-rsc/package.json
 delete mode 100644 e2e/react-start/basic-rsc/tailwind.config.mjs
 delete mode 100644 e2e/react-start/basic/tailwind.config.mjs
 delete mode 100644 e2e/react-start/custom-basepath/tailwind.config.mjs
 delete mode 100644 e2e/react-start/query-integration/tailwind.config.mjs
 delete mode 100644 e2e/react-start/scroll-restoration/tailwind.config.mjs
 delete mode 100644 e2e/react-start/selective-ssr/tailwind.config.mjs
 delete mode 100644 e2e/react-start/serialization-adapters/tailwind.config.mjs
 delete mode 100644 e2e/react-start/server-functions/tailwind.config.mjs
 delete mode 100644 e2e/react-start/server-routes/tailwind.config.mjs
 delete mode 100644 e2e/react-start/spa-mode/tailwind.config.mjs
 delete mode 100644 e2e/react-start/virtual-routes/tailwind.config.mjs
 delete mode 100644 e2e/react-start/website/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/basic-file-based-code-splitting/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/basic-file-based/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/basic-scroll-restoration/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/basic-solid-query-file-based/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/basic-solid-query/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/basic-virtual-file-based/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/basic-virtual-named-export-config-file-based/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/basic/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/rspack-basic-file-based/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/tailwind.config.mjs
 delete mode 100644 e2e/solid-router/scroll-restoration-sandbox-vite/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/basic-auth/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/basic-solid-query/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/basic/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/custom-basepath/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/query-integration/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/scroll-restoration/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/selective-ssr/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/server-functions/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/server-routes/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/spa-mode/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/virtual-routes/tailwind.config.mjs
 delete mode 100644 e2e/solid-start/website/tailwind.config.mjs
 delete mode 100644 examples/react/authenticated-routes-firebase/tailwind.config.mjs
 delete mode 100644 examples/react/authenticated-routes/tailwind.config.mjs
 delete mode 100644 examples/react/basic-default-search-params/tailwind.config.mjs
 delete mode 100644 examples/react/basic-devtools-panel/tailwind.config.mjs
 delete mode 100644 examples/react/basic-file-based/tailwind.config.mjs
 delete mode 100644 examples/react/basic-non-nested-devtools/tailwind.config.mjs
 delete mode 100644 examples/react/basic-react-query-file-based/tailwind.config.mjs
 delete mode 100644 examples/react/basic-react-query/tailwind.config.mjs
 delete mode 100644 examples/react/basic-virtual-file-based/tailwind.config.mjs
 delete mode 100644 examples/react/basic-virtual-inside-file-based/tailwind.config.mjs
 delete mode 100644 examples/react/basic/tailwind.config.mjs
 delete mode 100644 examples/react/deferred-data/tailwind.config.mjs
 delete mode 100644 examples/react/kitchen-sink-file-based/tailwind.config.mjs
 delete mode 100644 examples/react/kitchen-sink-react-query-file-based/tailwind.config.mjs
 delete mode 100644 examples/react/kitchen-sink-react-query/tailwind.config.mjs
 delete mode 100644 examples/react/kitchen-sink/tailwind.config.mjs
 delete mode 100644 examples/react/large-file-based/tailwind.config.mjs
 delete mode 100644 examples/react/location-masking/tailwind.config.mjs
 delete mode 100644 examples/react/navigation-blocking/tailwind.config.mjs
 delete mode 100644 examples/react/quickstart-file-based/tailwind.config.mjs
 delete mode 100644 examples/react/quickstart-rspack-file-based/tailwind.config.mjs
 delete mode 100644 examples/react/quickstart/tailwind.config.mjs
 delete mode 100644 examples/react/router-monorepo-react-query/packages/app/tailwind.config.js
 delete mode 100644 examples/react/router-monorepo-simple-lazy/packages/app/tailwind.config.js
 delete mode 100644 examples/react/router-monorepo-simple/packages/app/tailwind.config.js
 delete mode 100644 examples/react/scroll-restoration/tailwind.config.mjs
 delete mode 100644 examples/react/search-validator-adapters/tailwind.config.mjs
 delete mode 100644 examples/react/start-basic-auth/tailwind.config.mjs
 delete mode 100644 examples/react/start-basic-cloudflare/tailwind.config.mjs
 delete mode 100644 examples/react/start-basic-react-query/tailwind.config.mjs
 delete mode 100644 examples/react/start-basic-static/tailwind.config.cjs
 delete mode 100644 examples/react/start-basic/tailwind.config.mjs
 delete mode 100644 examples/react/start-clerk-basic/tailwind.config.mjs
 delete mode 100644 examples/react/start-convex-trellaux/tailwind.config.mjs
 delete mode 100644 examples/react/start-large/tailwind.config.mjs
 delete mode 100644 examples/react/start-supabase-basic/tailwind.config.mjs
 delete mode 100644 examples/react/start-trellaux/tailwind.config.mjs
 delete mode 100644 examples/react/view-transitions/tailwind.config.mjs
 delete mode 100644 examples/react/with-framer-motion/tailwind.config.mjs
 delete mode 100644 examples/react/with-trpc-react-query/tailwind.config.mjs
 delete mode 100644 examples/react/with-trpc/tailwind.config.mjs
 delete mode 100644 examples/solid/basic-devtools-panel/tailwind.config.mjs
 delete mode 100644 examples/solid/basic-file-based/tailwind.config.mjs
 delete mode 100644 examples/solid/basic-non-nested-devtools/tailwind.config.mjs
 delete mode 100644 examples/solid/basic-solid-query-file-based/tailwind.config.mjs
 delete mode 100644 examples/solid/basic-solid-query/tailwind.config.mjs
 delete mode 100644 examples/solid/basic-ssr-streaming-file-based/tailwind.config.mjs
 delete mode 100644 examples/solid/basic/tailwind.config.mjs
 delete mode 100644 examples/solid/kitchen-sink-file-based/tailwind.config.mjs
 delete mode 100644 examples/solid/kitchen-sink-solid-query-file-based/tailwind.config.mjs
 delete mode 100644 examples/solid/kitchen-sink-solid-query/tailwind.config.mjs
 delete mode 100644 examples/solid/quickstart-file-based/tailwind.config.mjs
 delete mode 100644 examples/solid/start-basic-auth/tailwind.config.mjs
 delete mode 100644 examples/solid/start-basic-cloudflare/tailwind.config.mjs
 delete mode 100644 examples/solid/start-basic-netlify/tailwind.config.mjs
 delete mode 100644 examples/solid/start-basic-nitro/tailwind.config.mjs
 delete mode 100644 examples/solid/start-basic-solid-query/tailwind.config.mjs
 delete mode 100644 examples/solid/start-basic-static/tailwind.config.cjs
 delete mode 100644 examples/solid/start-basic/tailwind.config.mjs

diff --git a/e2e/react-router/basic-file-based-code-splitting/package.json b/e2e/react-router/basic-file-based-code-splitting/package.json
index 97f45e7822..67f3b5222d 100644
--- a/e2e/react-router/basic-file-based-code-splitting/package.json
+++ b/e2e/react-router/basic-file-based-code-splitting/package.json
@@ -13,14 +13,14 @@
     "test:e2e": "rm -rf port*.txt; pnpm run test:e2e:verbose-routes:true && pnpm run test:e2e:verbose-routes:false"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
     "@tanstack/router-plugin": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/e2e/react-router/basic-file-based-code-splitting/postcss.config.mjs b/e2e/react-router/basic-file-based-code-splitting/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/basic-file-based-code-splitting/postcss.config.mjs
+++ b/e2e/react-router/basic-file-based-code-splitting/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/basic-file-based-code-splitting/src/styles.css b/e2e/react-router/basic-file-based-code-splitting/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/basic-file-based-code-splitting/src/styles.css
+++ b/e2e/react-router/basic-file-based-code-splitting/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/basic-file-based-code-splitting/tailwind.config.mjs b/e2e/react-router/basic-file-based-code-splitting/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/basic-file-based-code-splitting/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/basic-file-based/package.json b/e2e/react-router/basic-file-based/package.json
index 5a145f3610..90378fd875 100644
--- a/e2e/react-router/basic-file-based/package.json
+++ b/e2e/react-router/basic-file-based/package.json
@@ -11,16 +11,16 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
     "@tanstack/router-plugin": "workspace:^",
     "@tanstack/zod-adapter": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/e2e/react-router/basic-file-based/postcss.config.mjs b/e2e/react-router/basic-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/basic-file-based/postcss.config.mjs
+++ b/e2e/react-router/basic-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/basic-file-based/src/routes/anchor.tsx b/e2e/react-router/basic-file-based/src/routes/anchor.tsx
index d674230db4..aafad6cb6f 100644
--- a/e2e/react-router/basic-file-based/src/routes/anchor.tsx
+++ b/e2e/react-router/basic-file-based/src/routes/anchor.tsx
@@ -124,7 +124,7 @@ function AnchorComponent() {
             <label>
               <span>Target Anchor</span>
               <select
-                className="border border-opacity-50 rounded p-2 w-full"
+                className="border border-opacity-50 rounded-sm p-2 w-full"
                 data-testid="hash-select"
                 defaultValue={location.hash || anchors[0].id}
                 name="hash"
@@ -154,7 +154,7 @@ function AnchorComponent() {
                 <label>
                   <span>Behavior</span>
                   <select
-                    className="border border-opacity-50 rounded p-2 w-full"
+                    className="border border-opacity-50 rounded-sm p-2 w-full"
                     data-testid="behavior-select"
                     defaultValue="instant"
                     name="scrollBehavior"
@@ -170,7 +170,7 @@ function AnchorComponent() {
                 <label>
                   <span>Block</span>
                   <select
-                    className="border border-opacity-50 rounded p-2 w-full"
+                    className="border border-opacity-50 rounded-sm p-2 w-full"
                     data-testid="block-select"
                     defaultValue="start"
                     name="scrollBlock"
@@ -187,7 +187,7 @@ function AnchorComponent() {
                 <label>
                   <span>Inline</span>
                   <select
-                    className="border border-opacity-50 rounded p-2 w-full"
+                    className="border border-opacity-50 rounded-sm p-2 w-full"
                     data-testid="inline-select"
                     defaultValue="nearest"
                     name="scrollInline"
@@ -203,7 +203,7 @@ function AnchorComponent() {
           ) : null}
           <div>
             <button
-              className="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+              className="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
               data-testid="navigate-button"
             >
               Navigate
diff --git a/e2e/react-router/basic-file-based/src/styles.css b/e2e/react-router/basic-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/basic-file-based/src/styles.css
+++ b/e2e/react-router/basic-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/basic-file-based/tailwind.config.mjs b/e2e/react-router/basic-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/basic-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/basic-react-query-file-based/package.json b/e2e/react-router/basic-react-query-file-based/package.json
index 5afaa9b7f4..282e26cbcf 100644
--- a/e2e/react-router/basic-react-query-file-based/package.json
+++ b/e2e/react-router/basic-react-query-file-based/package.json
@@ -11,17 +11,17 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-query-devtools": "^5.66.0",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
     "@tanstack/router-plugin": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/e2e/react-router/basic-react-query-file-based/postcss.config.mjs b/e2e/react-router/basic-react-query-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/basic-react-query-file-based/postcss.config.mjs
+++ b/e2e/react-router/basic-react-query-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/basic-react-query-file-based/src/styles.css b/e2e/react-router/basic-react-query-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/basic-react-query-file-based/src/styles.css
+++ b/e2e/react-router/basic-react-query-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/basic-react-query-file-based/tailwind.config.mjs b/e2e/react-router/basic-react-query-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/basic-react-query-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/basic-react-query/package.json b/e2e/react-router/basic-react-query/package.json
index f35629e3a9..f266f9b915 100644
--- a/e2e/react-router/basic-react-query/package.json
+++ b/e2e/react-router/basic-react-query/package.json
@@ -11,16 +11,16 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-query-devtools": "^5.66.0",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/router-devtools": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
diff --git a/e2e/react-router/basic-react-query/postcss.config.mjs b/e2e/react-router/basic-react-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/basic-react-query/postcss.config.mjs
+++ b/e2e/react-router/basic-react-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/basic-react-query/src/styles.css b/e2e/react-router/basic-react-query/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/basic-react-query/src/styles.css
+++ b/e2e/react-router/basic-react-query/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/basic-react-query/tailwind.config.mjs b/e2e/react-router/basic-react-query/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/basic-react-query/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/basic-scroll-restoration/package.json b/e2e/react-router/basic-scroll-restoration/package.json
index ae7f7f2fea..9f5d03d444 100644
--- a/e2e/react-router/basic-scroll-restoration/package.json
+++ b/e2e/react-router/basic-scroll-restoration/package.json
@@ -11,15 +11,15 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "workspace:^",
-    "@tanstack/react-virtual": "^3.13.0",
     "@tanstack/react-router-devtools": "workspace:^",
+    "@tanstack/react-virtual": "^3.13.0",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
diff --git a/e2e/react-router/basic-scroll-restoration/postcss.config.mjs b/e2e/react-router/basic-scroll-restoration/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/basic-scroll-restoration/postcss.config.mjs
+++ b/e2e/react-router/basic-scroll-restoration/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/basic-scroll-restoration/src/styles.css b/e2e/react-router/basic-scroll-restoration/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/basic-scroll-restoration/src/styles.css
+++ b/e2e/react-router/basic-scroll-restoration/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/basic-scroll-restoration/tailwind.config.mjs b/e2e/react-router/basic-scroll-restoration/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/basic-scroll-restoration/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/basic-virtual-file-based/package.json b/e2e/react-router/basic-virtual-file-based/package.json
index f767498951..13889f0428 100644
--- a/e2e/react-router/basic-virtual-file-based/package.json
+++ b/e2e/react-router/basic-virtual-file-based/package.json
@@ -11,16 +11,16 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
     "@tanstack/router-plugin": "workspace:^",
     "@tanstack/virtual-file-routes": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/e2e/react-router/basic-virtual-file-based/postcss.config.mjs b/e2e/react-router/basic-virtual-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/basic-virtual-file-based/postcss.config.mjs
+++ b/e2e/react-router/basic-virtual-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/basic-virtual-file-based/src/styles.css b/e2e/react-router/basic-virtual-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/basic-virtual-file-based/src/styles.css
+++ b/e2e/react-router/basic-virtual-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/basic-virtual-file-based/tailwind.config.mjs b/e2e/react-router/basic-virtual-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/basic-virtual-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/basic-virtual-named-export-config-file-based/package.json b/e2e/react-router/basic-virtual-named-export-config-file-based/package.json
index 27825fa417..9b5c4025bc 100644
--- a/e2e/react-router/basic-virtual-named-export-config-file-based/package.json
+++ b/e2e/react-router/basic-virtual-named-export-config-file-based/package.json
@@ -11,16 +11,16 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
     "@tanstack/router-plugin": "workspace:^",
     "@tanstack/virtual-file-routes": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/e2e/react-router/basic-virtual-named-export-config-file-based/postcss.config.mjs b/e2e/react-router/basic-virtual-named-export-config-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/basic-virtual-named-export-config-file-based/postcss.config.mjs
+++ b/e2e/react-router/basic-virtual-named-export-config-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css b/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css
index 0b8e317099..aa0110f063 100644
--- a/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css
@@ -1,6 +1,24 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+@source './**/*.{js,jsx,ts,tsx}';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/basic-virtual-named-export-config-file-based/tailwind.config.mjs b/e2e/react-router/basic-virtual-named-export-config-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/basic-virtual-named-export-config-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/basic/package.json b/e2e/react-router/basic/package.json
index 4607dfc6ef..1729e59bc0 100644
--- a/e2e/react-router/basic/package.json
+++ b/e2e/react-router/basic/package.json
@@ -11,14 +11,14 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
diff --git a/e2e/react-router/basic/postcss.config.mjs b/e2e/react-router/basic/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/basic/postcss.config.mjs
+++ b/e2e/react-router/basic/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/basic/src/styles.css b/e2e/react-router/basic/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/basic/src/styles.css
+++ b/e2e/react-router/basic/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/basic/tailwind.config.mjs b/e2e/react-router/basic/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/basic/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/generator-cli-only/package.json b/e2e/react-router/generator-cli-only/package.json
index ecc72d9c06..86b94eceaf 100644
--- a/e2e/react-router/generator-cli-only/package.json
+++ b/e2e/react-router/generator-cli-only/package.json
@@ -11,15 +11,15 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
     "@tanstack/router-cli": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
diff --git a/e2e/react-router/generator-cli-only/postcss.config.mjs b/e2e/react-router/generator-cli-only/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/generator-cli-only/postcss.config.mjs
+++ b/e2e/react-router/generator-cli-only/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/generator-cli-only/src/styles.css b/e2e/react-router/generator-cli-only/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/generator-cli-only/src/styles.css
+++ b/e2e/react-router/generator-cli-only/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/generator-cli-only/tailwind.config.mjs b/e2e/react-router/generator-cli-only/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/generator-cli-only/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/js-only-file-based/package.json b/e2e/react-router/js-only-file-based/package.json
index 4e75e32682..8c5da1f2cf 100644
--- a/e2e/react-router/js-only-file-based/package.json
+++ b/e2e/react-router/js-only-file-based/package.json
@@ -11,19 +11,19 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
-    "@tanstack/router-plugin": "workspace:^",
     "@tanstack/router-e2e-utils": "workspace:^",
+    "@tanstack/router-plugin": "workspace:^",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
diff --git a/e2e/react-router/js-only-file-based/postcss.config.mjs b/e2e/react-router/js-only-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/js-only-file-based/postcss.config.mjs
+++ b/e2e/react-router/js-only-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/js-only-file-based/src/styles.css b/e2e/react-router/js-only-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/js-only-file-based/src/styles.css
+++ b/e2e/react-router/js-only-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/js-only-file-based/tailwind.config.mjs b/e2e/react-router/js-only-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/js-only-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/rspack-basic-file-based/package.json b/e2e/react-router/rspack-basic-file-based/package.json
index eac1ebd665..2efe36873c 100644
--- a/e2e/react-router/rspack-basic-file-based/package.json
+++ b/e2e/react-router/rspack-basic-file-based/package.json
@@ -18,15 +18,15 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
-    "@tanstack/router-e2e-utils": "workspace:^",
     "@rsbuild/core": "^1.2.4",
     "@rsbuild/plugin-react": "^1.1.0",
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/router-e2e-utils": "workspace:^",
     "@tanstack/router-plugin": "workspace:^",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2"
   }
 }
diff --git a/e2e/react-router/rspack-basic-file-based/postcss.config.mjs b/e2e/react-router/rspack-basic-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/rspack-basic-file-based/postcss.config.mjs
+++ b/e2e/react-router/rspack-basic-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/rspack-basic-file-based/src/styles.css b/e2e/react-router/rspack-basic-file-based/src/styles.css
index 0b8e317099..aa0110f063 100644
--- a/e2e/react-router/rspack-basic-file-based/src/styles.css
+++ b/e2e/react-router/rspack-basic-file-based/src/styles.css
@@ -1,6 +1,24 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+@source './**/*.{js,jsx,ts,tsx}';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/rspack-basic-file-based/tailwind.config.mjs b/e2e/react-router/rspack-basic-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/rspack-basic-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/package.json b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/package.json
index fc3b2068d4..b64f874fc0 100644
--- a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/package.json
+++ b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/package.json
@@ -18,16 +18,16 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
-    "@tanstack/router-e2e-utils": "workspace:^",
     "@rsbuild/core": "^1.2.4",
     "@rsbuild/plugin-react": "^1.1.0",
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/router-e2e-utils": "workspace:^",
     "@tanstack/router-plugin": "workspace:^",
     "@tanstack/virtual-file-routes": "workspace:^",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2"
   }
 }
diff --git a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/postcss.config.mjs b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/postcss.config.mjs
+++ b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
index 0b8e317099..aa0110f063 100644
--- a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
@@ -1,6 +1,24 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+@source './**/*.{js,jsx,ts,tsx}';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/tailwind.config.mjs b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/scroll-restoration-sandbox-vite/package.json b/e2e/react-router/scroll-restoration-sandbox-vite/package.json
index 363a29fc5b..1d515ce2f8 100644
--- a/e2e/react-router/scroll-restoration-sandbox-vite/package.json
+++ b/e2e/react-router/scroll-restoration-sandbox-vite/package.json
@@ -14,16 +14,16 @@
     "test:e2e": "rm -rf port*.txt; pnpm run test:e2e:browser && pnpm run test:e2e:hash"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
     "@tanstack/router-plugin": "workspace:^",
     "@tanstack/zod-adapter": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/e2e/react-router/scroll-restoration-sandbox-vite/postcss.config.mjs b/e2e/react-router/scroll-restoration-sandbox-vite/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/scroll-restoration-sandbox-vite/postcss.config.mjs
+++ b/e2e/react-router/scroll-restoration-sandbox-vite/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css b/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css
+++ b/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/scroll-restoration-sandbox-vite/tailwind.config.mjs b/e2e/react-router/scroll-restoration-sandbox-vite/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/scroll-restoration-sandbox-vite/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-router/sentry-integration/package.json b/e2e/react-router/sentry-integration/package.json
index 04f0de53a7..1d40447b46 100644
--- a/e2e/react-router/sentry-integration/package.json
+++ b/e2e/react-router/sentry-integration/package.json
@@ -14,14 +14,14 @@
     "@sentry/react": "^8.54.0",
     "@sentry/tracing": "^7.120.3",
     "@sentry/vite-plugin": "^3.1.2",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
diff --git a/e2e/react-router/sentry-integration/postcss.config.mjs b/e2e/react-router/sentry-integration/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-router/sentry-integration/postcss.config.mjs
+++ b/e2e/react-router/sentry-integration/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-router/sentry-integration/src/styles.css b/e2e/react-router/sentry-integration/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/react-router/sentry-integration/src/styles.css
+++ b/e2e/react-router/sentry-integration/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/react-router/sentry-integration/tailwind.config.mjs b/e2e/react-router/sentry-integration/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/react-router/sentry-integration/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/react-start/basic-auth/package.json b/e2e/react-start/basic-auth/package.json
index 7cea3aa986..e4aa43a844 100644
--- a/e2e/react-start/basic-auth/package.json
+++ b/e2e/react-start/basic-auth/package.json
@@ -25,14 +25,14 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-tsconfig-paths": "^5.1.4"
   }
diff --git a/e2e/react-start/basic-auth/postcss.config.mjs b/e2e/react-start/basic-auth/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/basic-auth/postcss.config.mjs
+++ b/e2e/react-start/basic-auth/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/basic-auth/src/components/Auth.tsx b/e2e/react-start/basic-auth/src/components/Auth.tsx
index eae24e06d8..39a4997346 100644
--- a/e2e/react-start/basic-auth/src/components/Auth.tsx
+++ b/e2e/react-start/basic-auth/src/components/Auth.tsx
@@ -28,7 +28,7 @@ export function Auth({
               type="email"
               name="email"
               id="email"
-              className="px-2 py-1 w-full rounded border border-gray-500/20 bg-white dark:bg-gray-800"
+              className="px-2 py-1 w-full rounded-sm border border-gray-500/20 bg-white dark:bg-gray-800"
             />
           </div>
           <div>
@@ -39,12 +39,12 @@ export function Auth({
               type="password"
               name="password"
               id="password"
-              className="px-2 py-1 w-full rounded border border-gray-500/20 bg-white dark:bg-gray-800"
+              className="px-2 py-1 w-full rounded-sm border border-gray-500/20 bg-white dark:bg-gray-800"
             />
           </div>
           <button
             type="submit"
-            className="w-full bg-cyan-600 text-white rounded py-2 font-black uppercase"
+            className="w-full bg-cyan-600 text-white rounded-sm py-2 font-black uppercase"
             disabled={status === 'pending'}
           >
             {status === 'pending' ? '...' : actionText}
diff --git a/e2e/react-start/basic-auth/src/components/DefaultCatchBoundary.tsx b/e2e/react-start/basic-auth/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/e2e/react-start/basic-auth/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/react-start/basic-auth/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/react-start/basic-auth/src/components/NotFound.tsx b/e2e/react-start/basic-auth/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/e2e/react-start/basic-auth/src/components/NotFound.tsx
+++ b/e2e/react-start/basic-auth/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/react-start/basic-auth/src/styles/app.css b/e2e/react-start/basic-auth/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/basic-auth/src/styles/app.css
+++ b/e2e/react-start/basic-auth/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/basic-auth/tailwind.config.mjs b/e2e/react-start/basic-auth/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/basic-auth/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/basic-cloudflare/package.json b/e2e/react-start/basic-cloudflare/package.json
index 5699a0fcd4..ffebb8fa7c 100644
--- a/e2e/react-start/basic-cloudflare/package.json
+++ b/e2e/react-start/basic-cloudflare/package.json
@@ -22,14 +22,14 @@
   "devDependencies": {
     "@cloudflare/vite-plugin": "^1.13.7",
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4",
diff --git a/e2e/react-start/basic-cloudflare/postcss.config.mjs b/e2e/react-start/basic-cloudflare/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/basic-cloudflare/postcss.config.mjs
+++ b/e2e/react-start/basic-cloudflare/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/basic-cloudflare/src/components/DefaultCatchBoundary.tsx b/e2e/react-start/basic-cloudflare/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/e2e/react-start/basic-cloudflare/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/react-start/basic-cloudflare/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/react-start/basic-cloudflare/src/components/NotFound.tsx b/e2e/react-start/basic-cloudflare/src/components/NotFound.tsx
index af4e0e7494..4e84e3f8e0 100644
--- a/e2e/react-start/basic-cloudflare/src/components/NotFound.tsx
+++ b/e2e/react-start/basic-cloudflare/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/react-start/basic-cloudflare/src/styles/app.css b/e2e/react-start/basic-cloudflare/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/basic-cloudflare/src/styles/app.css
+++ b/e2e/react-start/basic-cloudflare/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/basic-cloudflare/tailwind.config.mjs b/e2e/react-start/basic-cloudflare/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/basic-cloudflare/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/basic-react-query/package.json b/e2e/react-start/basic-react-query/package.json
index 804d9e261b..1c456f8949 100644
--- a/e2e/react-start/basic-react-query/package.json
+++ b/e2e/react-start/basic-react-query/package.json
@@ -25,15 +25,15 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-tsconfig-paths": "^5.1.4"
   }
diff --git a/e2e/react-start/basic-react-query/postcss.config.mjs b/e2e/react-start/basic-react-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/basic-react-query/postcss.config.mjs
+++ b/e2e/react-start/basic-react-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/basic-react-query/src/components/DefaultCatchBoundary.tsx b/e2e/react-start/basic-react-query/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/e2e/react-start/basic-react-query/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/react-start/basic-react-query/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/react-start/basic-react-query/src/components/NotFound.tsx b/e2e/react-start/basic-react-query/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/e2e/react-start/basic-react-query/src/components/NotFound.tsx
+++ b/e2e/react-start/basic-react-query/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/react-start/basic-react-query/src/styles/app.css b/e2e/react-start/basic-react-query/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/basic-react-query/src/styles/app.css
+++ b/e2e/react-start/basic-react-query/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/basic-react-query/tailwind.config.mjs b/e2e/react-start/basic-react-query/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/basic-react-query/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/basic-rsc/package.json b/e2e/react-start/basic-rsc/package.json
new file mode 100644
index 0000000000..59bc1b4cc9
--- /dev/null
+++ b/e2e/react-start/basic-rsc/package.json
@@ -0,0 +1,6 @@
+{
+	"dependencies": {
+		"@tailwindcss/postcss": "^4.1.15",
+		"tailwindcss": "^4.1.15"
+	}
+}
diff --git a/e2e/react-start/basic-rsc/postcss.config.mjs b/e2e/react-start/basic-rsc/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/basic-rsc/postcss.config.mjs
+++ b/e2e/react-start/basic-rsc/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/basic-rsc/src/components/DefaultCatchBoundary.tsx b/e2e/react-start/basic-rsc/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/e2e/react-start/basic-rsc/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/react-start/basic-rsc/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/react-start/basic-rsc/src/components/NotFound.tsx b/e2e/react-start/basic-rsc/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/e2e/react-start/basic-rsc/src/components/NotFound.tsx
+++ b/e2e/react-start/basic-rsc/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/react-start/basic-rsc/src/styles/app.css b/e2e/react-start/basic-rsc/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/basic-rsc/src/styles/app.css
+++ b/e2e/react-start/basic-rsc/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/basic-rsc/tailwind.config.mjs b/e2e/react-start/basic-rsc/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/basic-rsc/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/basic/package.json b/e2e/react-start/basic/package.json
index df7f459ed2..73497ac94d 100644
--- a/e2e/react-start/basic/package.json
+++ b/e2e/react-start/basic/package.json
@@ -27,16 +27,16 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "combinate": "^1.1.11",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4",
diff --git a/e2e/react-start/basic/postcss.config.mjs b/e2e/react-start/basic/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/basic/postcss.config.mjs
+++ b/e2e/react-start/basic/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/basic/src/components/DefaultCatchBoundary.tsx b/e2e/react-start/basic/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/e2e/react-start/basic/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/react-start/basic/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/react-start/basic/src/components/NotFound.tsx b/e2e/react-start/basic/src/components/NotFound.tsx
index af4e0e7494..4e84e3f8e0 100644
--- a/e2e/react-start/basic/src/components/NotFound.tsx
+++ b/e2e/react-start/basic/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/react-start/basic/src/styles/app.css b/e2e/react-start/basic/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/basic/src/styles/app.css
+++ b/e2e/react-start/basic/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/basic/tailwind.config.mjs b/e2e/react-start/basic/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/basic/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/custom-basepath/package.json b/e2e/react-start/custom-basepath/package.json
index c360992d95..495f024a7f 100644
--- a/e2e/react-start/custom-basepath/package.json
+++ b/e2e/react-start/custom-basepath/package.json
@@ -20,17 +20,17 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/express": "^5.0.3",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "cross-env": "^10.0.0",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "tsx": "^4.20.3",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
diff --git a/e2e/react-start/custom-basepath/postcss.config.mjs b/e2e/react-start/custom-basepath/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/custom-basepath/postcss.config.mjs
+++ b/e2e/react-start/custom-basepath/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/custom-basepath/src/components/DefaultCatchBoundary.tsx b/e2e/react-start/custom-basepath/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/e2e/react-start/custom-basepath/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/react-start/custom-basepath/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/react-start/custom-basepath/src/components/NotFound.tsx b/e2e/react-start/custom-basepath/src/components/NotFound.tsx
index af4e0e7494..4e84e3f8e0 100644
--- a/e2e/react-start/custom-basepath/src/components/NotFound.tsx
+++ b/e2e/react-start/custom-basepath/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/react-start/custom-basepath/src/styles/app.css b/e2e/react-start/custom-basepath/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/custom-basepath/src/styles/app.css
+++ b/e2e/react-start/custom-basepath/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/custom-basepath/tailwind.config.mjs b/e2e/react-start/custom-basepath/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/custom-basepath/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/query-integration/package.json b/e2e/react-start/query-integration/package.json
index 34080d78bf..ba57428df9 100644
--- a/e2e/react-start/query-integration/package.json
+++ b/e2e/react-start/query-integration/package.json
@@ -25,14 +25,14 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-tsconfig-paths": "^5.1.4"
   }
diff --git a/e2e/react-start/query-integration/postcss.config.mjs b/e2e/react-start/query-integration/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/query-integration/postcss.config.mjs
+++ b/e2e/react-start/query-integration/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/query-integration/src/styles/app.css b/e2e/react-start/query-integration/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/query-integration/src/styles/app.css
+++ b/e2e/react-start/query-integration/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/query-integration/tailwind.config.mjs b/e2e/react-start/query-integration/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/query-integration/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/scroll-restoration/package.json b/e2e/react-start/scroll-restoration/package.json
index d5e08af19f..c96ed06cd4 100644
--- a/e2e/react-start/scroll-restoration/package.json
+++ b/e2e/react-start/scroll-restoration/package.json
@@ -24,16 +24,16 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "combinate": "^1.1.11",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-tsconfig-paths": "^5.1.4"
   }
diff --git a/e2e/react-start/scroll-restoration/postcss.config.mjs b/e2e/react-start/scroll-restoration/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/scroll-restoration/postcss.config.mjs
+++ b/e2e/react-start/scroll-restoration/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/scroll-restoration/src/components/DefaultCatchBoundary.tsx b/e2e/react-start/scroll-restoration/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/e2e/react-start/scroll-restoration/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/react-start/scroll-restoration/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/react-start/scroll-restoration/src/components/NotFound.tsx b/e2e/react-start/scroll-restoration/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/e2e/react-start/scroll-restoration/src/components/NotFound.tsx
+++ b/e2e/react-start/scroll-restoration/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/react-start/scroll-restoration/src/styles/app.css b/e2e/react-start/scroll-restoration/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/scroll-restoration/src/styles/app.css
+++ b/e2e/react-start/scroll-restoration/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/scroll-restoration/tailwind.config.mjs b/e2e/react-start/scroll-restoration/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/scroll-restoration/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/selective-ssr/package.json b/e2e/react-start/selective-ssr/package.json
index dd908a1246..a9a2c4ff2f 100644
--- a/e2e/react-start/selective-ssr/package.json
+++ b/e2e/react-start/selective-ssr/package.json
@@ -21,14 +21,15 @@
     "zod": "^3.24.2"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
-    "@vitejs/plugin-react": "^4.3.4",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
+    "@vitejs/plugin-react": "^4.3.4",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2"
   }
 }
diff --git a/e2e/react-start/selective-ssr/postcss.config.mjs b/e2e/react-start/selective-ssr/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/selective-ssr/postcss.config.mjs
+++ b/e2e/react-start/selective-ssr/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/selective-ssr/src/styles/app.css b/e2e/react-start/selective-ssr/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/selective-ssr/src/styles/app.css
+++ b/e2e/react-start/selective-ssr/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/selective-ssr/tailwind.config.mjs b/e2e/react-start/selective-ssr/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/selective-ssr/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/serialization-adapters/package.json b/e2e/react-start/serialization-adapters/package.json
index 897ca774b8..22dd7bd3c3 100644
--- a/e2e/react-start/serialization-adapters/package.json
+++ b/e2e/react-start/serialization-adapters/package.json
@@ -21,14 +21,15 @@
     "zod": "^3.24.2"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
-    "@vitejs/plugin-react": "^4.3.4",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
+    "@vitejs/plugin-react": "^4.3.4",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2"
   }
 }
diff --git a/e2e/react-start/serialization-adapters/postcss.config.mjs b/e2e/react-start/serialization-adapters/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/serialization-adapters/postcss.config.mjs
+++ b/e2e/react-start/serialization-adapters/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/serialization-adapters/src/styles/app.css b/e2e/react-start/serialization-adapters/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/serialization-adapters/src/styles/app.css
+++ b/e2e/react-start/serialization-adapters/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/serialization-adapters/tailwind.config.mjs b/e2e/react-start/serialization-adapters/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/serialization-adapters/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/server-functions/package.json b/e2e/react-start/server-functions/package.json
index 40dcdeb273..7e63f41bdc 100644
--- a/e2e/react-start/server-functions/package.json
+++ b/e2e/react-start/server-functions/package.json
@@ -13,8 +13,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-router": "workspace:^",
-    "@tanstack/react-router-ssr-query": "workspace:^",
     "@tanstack/react-router-devtools": "workspace:^",
+    "@tanstack/react-router-ssr-query": "workspace:^",
     "@tanstack/react-start": "workspace:^",
     "js-cookie": "^3.0.5",
     "react": "^19.0.0",
@@ -26,17 +26,17 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/js-cookie": "^3.0.6",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "combinate": "^1.1.11",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-tsconfig-paths": "^5.1.4"
   }
diff --git a/e2e/react-start/server-functions/postcss.config.mjs b/e2e/react-start/server-functions/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/server-functions/postcss.config.mjs
+++ b/e2e/react-start/server-functions/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/server-functions/src/components/DefaultCatchBoundary.tsx b/e2e/react-start/server-functions/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/e2e/react-start/server-functions/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/react-start/server-functions/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/react-start/server-functions/src/components/NotFound.tsx b/e2e/react-start/server-functions/src/components/NotFound.tsx
index af4e0e7494..4e84e3f8e0 100644
--- a/e2e/react-start/server-functions/src/components/NotFound.tsx
+++ b/e2e/react-start/server-functions/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/react-start/server-functions/src/routes/consistent.tsx b/e2e/react-start/server-functions/src/routes/consistent.tsx
index b0d9116805..a090671489 100644
--- a/e2e/react-start/server-functions/src/routes/consistent.tsx
+++ b/e2e/react-start/server-functions/src/routes/consistent.tsx
@@ -97,7 +97,7 @@ function ConsistentServerFnCalls() {
       <button
         data-testid="test-consistent-server-fn-calls-btn"
         type="button"
-        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         onClick={() => {
           // GET calls
           cons_serverGetFn1({ data: { username: 'TEST' } }).then(
diff --git a/e2e/react-start/server-functions/src/routes/dead-code-preserve.tsx b/e2e/react-start/server-functions/src/routes/dead-code-preserve.tsx
index dcf4749d0a..69a23b7af5 100644
--- a/e2e/react-start/server-functions/src/routes/dead-code-preserve.tsx
+++ b/e2e/react-start/server-functions/src/routes/dead-code-preserve.tsx
@@ -44,7 +44,7 @@ function RouteComponent() {
         This server function writes to a file as a side effect, then reads it.
       </p>
       <button
-        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         data-testid="test-dead-code-fn-call-btn"
         onClick={async () => {
           await writeFileServerFn({ headers: { 'X-Test': 'test' } })
diff --git a/e2e/react-start/server-functions/src/routes/factory/index.tsx b/e2e/react-start/server-functions/src/routes/factory/index.tsx
index cf16c362b1..65d2d17730 100644
--- a/e2e/react-start/server-functions/src/routes/factory/index.tsx
+++ b/e2e/react-start/server-functions/src/routes/factory/index.tsx
@@ -160,7 +160,7 @@ function Test({ fn, type, expected }: TestCase) {
       <button
         data-testid={`btn-fn-${expected.name}`}
         type="button"
-        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         onClick={() => {
           fn().then(setResult)
         }}
diff --git a/e2e/react-start/server-functions/src/routes/formdata-redirect/index.tsx b/e2e/react-start/server-functions/src/routes/formdata-redirect/index.tsx
index 8420025983..0299daa21d 100644
--- a/e2e/react-start/server-functions/src/routes/formdata-redirect/index.tsx
+++ b/e2e/react-start/server-functions/src/routes/formdata-redirect/index.tsx
@@ -64,7 +64,7 @@ function SubmitPostFormDataFn() {
         <button
           type="submit"
           data-testid="test-submit-post-formdata-fn-calls-btn"
-          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Submit
         </button>
diff --git a/e2e/react-start/server-functions/src/routes/headers.tsx b/e2e/react-start/server-functions/src/routes/headers.tsx
index 79b05c0fcb..2aa654c203 100644
--- a/e2e/react-start/server-functions/src/routes/headers.tsx
+++ b/e2e/react-start/server-functions/src/routes/headers.tsx
@@ -56,7 +56,7 @@ function ResponseHeaders({
         <button
           type="submit"
           data-testid="test-headers-btn"
-          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Get Headers
         </button>
diff --git a/e2e/react-start/server-functions/src/routes/middleware/client-middleware-router.tsx b/e2e/react-start/server-functions/src/routes/middleware/client-middleware-router.tsx
index bfb5059da8..8964c74be7 100644
--- a/e2e/react-start/server-functions/src/routes/middleware/client-middleware-router.tsx
+++ b/e2e/react-start/server-functions/src/routes/middleware/client-middleware-router.tsx
@@ -67,7 +67,7 @@ function RouteComponent() {
       <button
         data-testid="btn-serverFn"
         type="button"
-        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         onClick={() => {
           serverFn().then(setServerFnClientResult)
         }}
diff --git a/e2e/react-start/server-functions/src/routes/middleware/send-serverFn.tsx b/e2e/react-start/server-functions/src/routes/middleware/send-serverFn.tsx
index 15fe6c80dc..833c68eaab 100644
--- a/e2e/react-start/server-functions/src/routes/middleware/send-serverFn.tsx
+++ b/e2e/react-start/server-functions/src/routes/middleware/send-serverFn.tsx
@@ -66,7 +66,7 @@ function RouteComponent() {
       <button
         data-testid="btn-serverFn"
         type="button"
-        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         onClick={() => {
           fooFn().then(setServerFnClientResult)
         }}
diff --git a/e2e/react-start/server-functions/src/routes/multipart.tsx b/e2e/react-start/server-functions/src/routes/multipart.tsx
index 34312ca658..f2602e9103 100644
--- a/e2e/react-start/server-functions/src/routes/multipart.tsx
+++ b/e2e/react-start/server-functions/src/routes/multipart.tsx
@@ -85,14 +85,14 @@ function MultipartServerFnCall() {
         />
         <button
           type="submit"
-          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Submit (native)
         </button>
         <button
           type="button"
           onClick={handleSubmit}
-          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Submit (onClick)
         </button>
diff --git a/e2e/react-start/server-functions/src/routes/raw-response.tsx b/e2e/react-start/server-functions/src/routes/raw-response.tsx
index f30ff6660e..bc088c781d 100644
--- a/e2e/react-start/server-functions/src/routes/raw-response.tsx
+++ b/e2e/react-start/server-functions/src/routes/raw-response.tsx
@@ -34,7 +34,7 @@ function RouteComponent() {
           setFormDataResult(text)
         }}
         data-testid="button"
-        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
       >
         Submit
       </button>
diff --git a/e2e/react-start/server-functions/src/routes/return-null.tsx b/e2e/react-start/server-functions/src/routes/return-null.tsx
index 6d83d2762f..867606a782 100644
--- a/e2e/react-start/server-functions/src/routes/return-null.tsx
+++ b/e2e/react-start/server-functions/src/routes/return-null.tsx
@@ -55,7 +55,7 @@ function AllowServerFnReturnNull() {
       <button
         data-testid="test-allow-server-fn-return-null-btn"
         type="button"
-        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         onClick={() => {
           $allow_return_null_getFn().then(setGetServerResult)
           $allow_return_null_postFn().then(setPostServerResult)
diff --git a/e2e/react-start/server-functions/src/routes/serialize-form-data.tsx b/e2e/react-start/server-functions/src/routes/serialize-form-data.tsx
index f5d7d75db6..39683c3e80 100644
--- a/e2e/react-start/server-functions/src/routes/serialize-form-data.tsx
+++ b/e2e/react-start/server-functions/src/routes/serialize-form-data.tsx
@@ -70,7 +70,7 @@ export function SerializeFormDataFnCall() {
         <button
           type="submit"
           data-testid="test-serialize-formdata-fn-calls-btn"
-          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Submit
         </button>
diff --git a/e2e/react-start/server-functions/src/routes/submit-post-formdata.tsx b/e2e/react-start/server-functions/src/routes/submit-post-formdata.tsx
index 826ec255d3..6bff33f35f 100644
--- a/e2e/react-start/server-functions/src/routes/submit-post-formdata.tsx
+++ b/e2e/react-start/server-functions/src/routes/submit-post-formdata.tsx
@@ -50,7 +50,7 @@ function SubmitPostFormDataFn() {
         <button
           type="submit"
           data-testid="test-submit-post-formdata-fn-calls-btn"
-          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Submit (native)
         </button>
diff --git a/e2e/react-start/server-functions/src/styles/app.css b/e2e/react-start/server-functions/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/server-functions/src/styles/app.css
+++ b/e2e/react-start/server-functions/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/server-functions/tailwind.config.mjs b/e2e/react-start/server-functions/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/server-functions/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/server-routes/package.json b/e2e/react-start/server-routes/package.json
index f639e907a4..1f764d6cdf 100644
--- a/e2e/react-start/server-routes/package.json
+++ b/e2e/react-start/server-routes/package.json
@@ -24,17 +24,17 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/js-cookie": "^3.0.6",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "combinate": "^1.1.11",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-tsconfig-paths": "^5.1.4"
   }
diff --git a/e2e/react-start/server-routes/postcss.config.mjs b/e2e/react-start/server-routes/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/server-routes/postcss.config.mjs
+++ b/e2e/react-start/server-routes/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/server-routes/src/components/DefaultCatchBoundary.tsx b/e2e/react-start/server-routes/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/e2e/react-start/server-routes/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/react-start/server-routes/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/react-start/server-routes/src/components/NotFound.tsx b/e2e/react-start/server-routes/src/components/NotFound.tsx
index af4e0e7494..4e84e3f8e0 100644
--- a/e2e/react-start/server-routes/src/components/NotFound.tsx
+++ b/e2e/react-start/server-routes/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/react-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx b/e2e/react-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx
index 5c358bb920..2bb43a82b2 100644
--- a/e2e/react-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx
+++ b/e2e/react-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx
@@ -27,7 +27,7 @@ function MergeServerFnMiddlewareContext() {
           type="button"
           onClick={fetchMiddlewareContext}
           data-testid="test-middleware-context-btn"
-          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          className="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Test Middleware Context
         </button>
@@ -37,7 +37,7 @@ function MergeServerFnMiddlewareContext() {
             <h4>API Response:</h4>
             <pre
               data-testid="api-response"
-              className="bg-gray-100 p-2 rounded text-black"
+              className="bg-gray-100 p-2 rounded-sm text-black"
             >
               {JSON.stringify(apiResponse, null, 2)}
             </pre>
@@ -46,17 +46,17 @@ function MergeServerFnMiddlewareContext() {
               <h4>Context Verification:</h4>
               <div
                 data-testid="context-result"
-                className="bg-gray-100 p-2 rounded text-black"
+                className="bg-gray-100 p-2 rounded-sm text-black"
               >
                 {JSON.stringify(apiResponse.context, null, 2)}
               </div>
 
-              <div data-testid="has-test-parent" className="p-2 border rounded">
+              <div data-testid="has-test-parent" className="p-2 border rounded-sm">
                 Has testParent:{' '}
                 {apiResponse.context?.testParent ? 'true' : 'false'}
               </div>
 
-              <div data-testid="has-test" className="p-2 border rounded">
+              <div data-testid="has-test" className="p-2 border rounded-sm">
                 Has test: {apiResponse.context?.test ? 'true' : 'false'}
               </div>
             </div>
diff --git a/e2e/react-start/server-routes/src/styles/app.css b/e2e/react-start/server-routes/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/server-routes/src/styles/app.css
+++ b/e2e/react-start/server-routes/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/server-routes/tailwind.config.mjs b/e2e/react-start/server-routes/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/server-routes/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/spa-mode/package.json b/e2e/react-start/spa-mode/package.json
index 2041fba36c..67d09254b8 100644
--- a/e2e/react-start/spa-mode/package.json
+++ b/e2e/react-start/spa-mode/package.json
@@ -18,12 +18,13 @@
     "react-dom": "^19.0.0"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/e2e/react-start/spa-mode/postcss.config.mjs b/e2e/react-start/spa-mode/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/spa-mode/postcss.config.mjs
+++ b/e2e/react-start/spa-mode/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/spa-mode/src/styles/app.css b/e2e/react-start/spa-mode/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/spa-mode/src/styles/app.css
+++ b/e2e/react-start/spa-mode/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/spa-mode/tailwind.config.mjs b/e2e/react-start/spa-mode/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/spa-mode/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/virtual-routes/package.json b/e2e/react-start/virtual-routes/package.json
index a9ef66b88c..d2df6979bd 100644
--- a/e2e/react-start/virtual-routes/package.json
+++ b/e2e/react-start/virtual-routes/package.json
@@ -24,16 +24,16 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "combinate": "^1.1.11",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-tsconfig-paths": "^5.1.4"
   }
diff --git a/e2e/react-start/virtual-routes/postcss.config.mjs b/e2e/react-start/virtual-routes/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/virtual-routes/postcss.config.mjs
+++ b/e2e/react-start/virtual-routes/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/virtual-routes/src/styles/app.css b/e2e/react-start/virtual-routes/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/virtual-routes/src/styles/app.css
+++ b/e2e/react-start/virtual-routes/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/virtual-routes/tailwind.config.mjs b/e2e/react-start/virtual-routes/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/virtual-routes/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/react-start/website/package.json b/e2e/react-start/website/package.json
index c431fbcb8f..fc732d7763 100644
--- a/e2e/react-start/website/package.json
+++ b/e2e/react-start/website/package.json
@@ -22,15 +22,15 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/e2e/react-start/website/postcss.config.mjs b/e2e/react-start/website/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/react-start/website/postcss.config.mjs
+++ b/e2e/react-start/website/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/react-start/website/src/components/DefaultCatchBoundary.tsx b/e2e/react-start/website/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/e2e/react-start/website/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/react-start/website/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/react-start/website/src/components/NotFound.tsx b/e2e/react-start/website/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/e2e/react-start/website/src/components/NotFound.tsx
+++ b/e2e/react-start/website/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/react-start/website/src/styles/app.css b/e2e/react-start/website/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/react-start/website/src/styles/app.css
+++ b/e2e/react-start/website/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/react-start/website/tailwind.config.mjs b/e2e/react-start/website/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/react-start/website/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/solid-router/basic-file-based-code-splitting/package.json b/e2e/solid-router/basic-file-based-code-splitting/package.json
index 5ea08b5f99..e933ea127e 100644
--- a/e2e/solid-router/basic-file-based-code-splitting/package.json
+++ b/e2e/solid-router/basic-file-based-code-splitting/package.json
@@ -13,13 +13,13 @@
     "test:e2e": "rm -rf port*.txt; pnpm run test:e2e:verbose-routes:true && pnpm run test:e2e:verbose-routes:false"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-plugin": "workspace:^",
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
     "solid-js": "^1.9.5",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/e2e/solid-router/basic-file-based-code-splitting/postcss.config.mjs b/e2e/solid-router/basic-file-based-code-splitting/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/basic-file-based-code-splitting/postcss.config.mjs
+++ b/e2e/solid-router/basic-file-based-code-splitting/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/basic-file-based-code-splitting/src/styles.css b/e2e/solid-router/basic-file-based-code-splitting/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/solid-router/basic-file-based-code-splitting/src/styles.css
+++ b/e2e/solid-router/basic-file-based-code-splitting/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/basic-file-based-code-splitting/tailwind.config.mjs b/e2e/solid-router/basic-file-based-code-splitting/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/basic-file-based-code-splitting/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-router/basic-file-based/package.json b/e2e/solid-router/basic-file-based/package.json
index 74856cb396..faa16e6ec1 100644
--- a/e2e/solid-router/basic-file-based/package.json
+++ b/e2e/solid-router/basic-file-based/package.json
@@ -11,22 +11,22 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/router-plugin": "workspace:^",
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
-    "@tanstack/router-plugin": "workspace:^",
     "@tanstack/zod-adapter": "workspace:^",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
+    "redaxios": "^0.5.1",
     "solid-js": "^1.9.5",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
     "@tanstack/router-e2e-utils": "workspace:^",
-    "vite-plugin-solid": "^2.11.10",
     "combinate": "^1.1.11",
-    "vite": "^7.1.7"
+    "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/e2e/solid-router/basic-file-based/postcss.config.mjs b/e2e/solid-router/basic-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/basic-file-based/postcss.config.mjs
+++ b/e2e/solid-router/basic-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/basic-file-based/src/routes/anchor.tsx b/e2e/solid-router/basic-file-based/src/routes/anchor.tsx
index 944182db7a..37ea2e5d56 100644
--- a/e2e/solid-router/basic-file-based/src/routes/anchor.tsx
+++ b/e2e/solid-router/basic-file-based/src/routes/anchor.tsx
@@ -128,7 +128,7 @@ function AnchorComponent() {
             <label>
               <span>Target Anchor</span>
               <select
-                class="border border-opacity-50 rounded p-2 w-full"
+                class="border border-opacity-50 rounded-sm p-2 w-full"
                 data-testid="hash-select"
                 value={location().hash || anchors[0].id}
                 name="hash"
@@ -156,7 +156,7 @@ function AnchorComponent() {
                 <label>
                   <span>Behavior</span>
                   <select
-                    class="border border-opacity-50 rounded p-2 w-full"
+                    class="border border-opacity-50 rounded-sm p-2 w-full"
                     data-testid="behavior-select"
                     value="instant"
                     name="scrollBehavior"
@@ -172,7 +172,7 @@ function AnchorComponent() {
                 <label>
                   <span>Block</span>
                   <select
-                    class="border border-opacity-50 rounded p-2 w-full"
+                    class="border border-opacity-50 rounded-sm p-2 w-full"
                     data-testid="block-select"
                     value="start"
                     name="scrollBlock"
@@ -189,7 +189,7 @@ function AnchorComponent() {
                 <label>
                   <span>Inline</span>
                   <select
-                    class="border border-opacity-50 rounded p-2 w-full"
+                    class="border border-opacity-50 rounded-sm p-2 w-full"
                     data-testid="inline-select"
                     value="nearest"
                     name="scrollInline"
@@ -205,7 +205,7 @@ function AnchorComponent() {
           ) : null}
           <div>
             <button
-              class="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+              class="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
               data-testid="navigate-button"
             >
               Navigate
diff --git a/e2e/solid-router/basic-file-based/src/styles.css b/e2e/solid-router/basic-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/solid-router/basic-file-based/src/styles.css
+++ b/e2e/solid-router/basic-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/basic-file-based/tailwind.config.mjs b/e2e/solid-router/basic-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/basic-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-router/basic-scroll-restoration/package.json b/e2e/solid-router/basic-scroll-restoration/package.json
index 7c8064ff1d..37dcbc3410 100644
--- a/e2e/solid-router/basic-scroll-restoration/package.json
+++ b/e2e/solid-router/basic-scroll-restoration/package.json
@@ -11,19 +11,19 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
     "@tanstack/solid-virtual": "^3.13.0",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
     "@tanstack/router-e2e-utils": "workspace:^",
-    "vite-plugin-solid": "^2.11.10",
-    "vite": "^7.1.7"
+    "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/e2e/solid-router/basic-scroll-restoration/postcss.config.mjs b/e2e/solid-router/basic-scroll-restoration/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/basic-scroll-restoration/postcss.config.mjs
+++ b/e2e/solid-router/basic-scroll-restoration/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/basic-scroll-restoration/src/styles.css b/e2e/solid-router/basic-scroll-restoration/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/solid-router/basic-scroll-restoration/src/styles.css
+++ b/e2e/solid-router/basic-scroll-restoration/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/basic-scroll-restoration/tailwind.config.mjs b/e2e/solid-router/basic-scroll-restoration/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/basic-scroll-restoration/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-router/basic-solid-query-file-based/package.json b/e2e/solid-router/basic-solid-query-file-based/package.json
index 77b10fa794..974543b5ad 100644
--- a/e2e/solid-router/basic-solid-query-file-based/package.json
+++ b/e2e/solid-router/basic-solid-query-file-based/package.json
@@ -11,22 +11,22 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/router-plugin": "workspace:^",
     "@tanstack/solid-query": "^5.71.9",
     "@tanstack/solid-query-devtools": "^5.71.9",
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
-    "@tanstack/router-plugin": "workspace:^",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
     "@tanstack/router-e2e-utils": "workspace:^",
-    "vite-plugin-solid": "^2.11.10",
-    "vite": "^7.1.7"
+    "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/e2e/solid-router/basic-solid-query-file-based/postcss.config.mjs b/e2e/solid-router/basic-solid-query-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/basic-solid-query-file-based/postcss.config.mjs
+++ b/e2e/solid-router/basic-solid-query-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/basic-solid-query-file-based/src/styles.css b/e2e/solid-router/basic-solid-query-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/solid-router/basic-solid-query-file-based/src/styles.css
+++ b/e2e/solid-router/basic-solid-query-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/basic-solid-query-file-based/tailwind.config.mjs b/e2e/solid-router/basic-solid-query-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/basic-solid-query-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-router/basic-solid-query/package.json b/e2e/solid-router/basic-solid-query/package.json
index 5e8a5dfddc..ac55cc36d7 100644
--- a/e2e/solid-router/basic-solid-query/package.json
+++ b/e2e/solid-router/basic-solid-query/package.json
@@ -11,20 +11,20 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-query": "^5.71.9",
     "@tanstack/solid-query-devtools": "^5.71.9",
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
     "@tanstack/router-e2e-utils": "workspace:^",
-    "vite-plugin-solid": "^2.11.10",
-    "vite": "^7.1.7"
+    "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/e2e/solid-router/basic-solid-query/postcss.config.mjs b/e2e/solid-router/basic-solid-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/basic-solid-query/postcss.config.mjs
+++ b/e2e/solid-router/basic-solid-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/basic-solid-query/src/styles.css b/e2e/solid-router/basic-solid-query/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/solid-router/basic-solid-query/src/styles.css
+++ b/e2e/solid-router/basic-solid-query/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/basic-solid-query/tailwind.config.mjs b/e2e/solid-router/basic-solid-query/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/basic-solid-query/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-router/basic-virtual-file-based/package.json b/e2e/solid-router/basic-virtual-file-based/package.json
index 82dae8891e..23bfa3d34c 100644
--- a/e2e/solid-router/basic-virtual-file-based/package.json
+++ b/e2e/solid-router/basic-virtual-file-based/package.json
@@ -11,21 +11,21 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/router-plugin": "workspace:^",
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
-    "@tanstack/router-plugin": "workspace:^",
     "@tanstack/virtual-file-routes": "workspace:^",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
     "@tanstack/router-e2e-utils": "workspace:^",
-    "vite-plugin-solid": "^2.11.10",
-    "vite": "^7.1.7"
+    "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/e2e/solid-router/basic-virtual-file-based/postcss.config.mjs b/e2e/solid-router/basic-virtual-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/basic-virtual-file-based/postcss.config.mjs
+++ b/e2e/solid-router/basic-virtual-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/basic-virtual-file-based/src/styles.css b/e2e/solid-router/basic-virtual-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/solid-router/basic-virtual-file-based/src/styles.css
+++ b/e2e/solid-router/basic-virtual-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/basic-virtual-file-based/tailwind.config.mjs b/e2e/solid-router/basic-virtual-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/basic-virtual-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-router/basic-virtual-named-export-config-file-based/package.json b/e2e/solid-router/basic-virtual-named-export-config-file-based/package.json
index e051c26191..7ac3b3fd04 100644
--- a/e2e/solid-router/basic-virtual-named-export-config-file-based/package.json
+++ b/e2e/solid-router/basic-virtual-named-export-config-file-based/package.json
@@ -11,21 +11,21 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/router-plugin": "workspace:^",
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
-    "@tanstack/router-plugin": "workspace:^",
     "@tanstack/virtual-file-routes": "workspace:^",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
     "@tanstack/router-e2e-utils": "workspace:^",
-    "vite-plugin-solid": "^2.11.10",
-    "vite": "^7.1.7"
+    "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/e2e/solid-router/basic-virtual-named-export-config-file-based/postcss.config.mjs b/e2e/solid-router/basic-virtual-named-export-config-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/basic-virtual-named-export-config-file-based/postcss.config.mjs
+++ b/e2e/solid-router/basic-virtual-named-export-config-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css b/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css
index 0b8e317099..aa0110f063 100644
--- a/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css
@@ -1,6 +1,24 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+@source './**/*.{js,jsx,ts,tsx}';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/basic-virtual-named-export-config-file-based/tailwind.config.mjs b/e2e/solid-router/basic-virtual-named-export-config-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/basic-virtual-named-export-config-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-router/basic/package.json b/e2e/solid-router/basic/package.json
index ef2113dc44..e18b0dae9f 100644
--- a/e2e/solid-router/basic/package.json
+++ b/e2e/solid-router/basic/package.json
@@ -11,18 +11,18 @@
     "test:e2e": "rm -rf port*.txt; playwright test --project=chromium"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
     "@tanstack/router-e2e-utils": "workspace:^",
-    "vite-plugin-solid": "^2.11.10",
-    "vite": "^7.1.7"
+    "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/e2e/solid-router/basic/postcss.config.mjs b/e2e/solid-router/basic/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/basic/postcss.config.mjs
+++ b/e2e/solid-router/basic/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/basic/src/styles.css b/e2e/solid-router/basic/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/solid-router/basic/src/styles.css
+++ b/e2e/solid-router/basic/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/basic/tailwind.config.mjs b/e2e/solid-router/basic/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/basic/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-router/rspack-basic-file-based/package.json b/e2e/solid-router/rspack-basic-file-based/package.json
index 041803f8a8..dac1dc3ce7 100644
--- a/e2e/solid-router/rspack-basic-file-based/package.json
+++ b/e2e/solid-router/rspack-basic-file-based/package.json
@@ -12,19 +12,19 @@
   "dependencies": {
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1"
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
-    "@tanstack/router-e2e-utils": "workspace:^",
     "@rsbuild/core": "^1.2.4",
     "@rsbuild/plugin-babel": "^1.0.3",
     "@rsbuild/plugin-solid": "^1.0.4",
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/router-e2e-utils": "workspace:^",
     "@tanstack/router-plugin": "workspace:^",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2"
   }
 }
diff --git a/e2e/solid-router/rspack-basic-file-based/postcss.config.mjs b/e2e/solid-router/rspack-basic-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/rspack-basic-file-based/postcss.config.mjs
+++ b/e2e/solid-router/rspack-basic-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/rspack-basic-file-based/src/styles.css b/e2e/solid-router/rspack-basic-file-based/src/styles.css
index 0b8e317099..aa0110f063 100644
--- a/e2e/solid-router/rspack-basic-file-based/src/styles.css
+++ b/e2e/solid-router/rspack-basic-file-based/src/styles.css
@@ -1,6 +1,24 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+@source './**/*.{js,jsx,ts,tsx}';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/rspack-basic-file-based/tailwind.config.mjs b/e2e/solid-router/rspack-basic-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/rspack-basic-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/package.json b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/package.json
index 711e0951ce..9912220adf 100644
--- a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/package.json
+++ b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/package.json
@@ -12,20 +12,20 @@
   "dependencies": {
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1"
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
-    "@tanstack/router-e2e-utils": "workspace:^",
     "@rsbuild/core": "^1.2.4",
     "@rsbuild/plugin-babel": "^1.0.3",
     "@rsbuild/plugin-solid": "^1.0.4",
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/router-e2e-utils": "workspace:^",
     "@tanstack/router-plugin": "workspace:^",
     "@tanstack/virtual-file-routes": "workspace:^",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2"
   }
 }
diff --git a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/postcss.config.mjs b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/postcss.config.mjs
+++ b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
index 0b8e317099..aa0110f063 100644
--- a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
@@ -1,6 +1,24 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+@source './**/*.{js,jsx,ts,tsx}';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/tailwind.config.mjs b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-router/scroll-restoration-sandbox-vite/package.json b/e2e/solid-router/scroll-restoration-sandbox-vite/package.json
index ad6ed182be..41e0eb8966 100644
--- a/e2e/solid-router/scroll-restoration-sandbox-vite/package.json
+++ b/e2e/solid-router/scroll-restoration-sandbox-vite/package.json
@@ -14,21 +14,21 @@
     "test:e2e": "rm -rf port*.txt; pnpm run test:e2e:browser && pnpm run test:e2e:hash"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/router-plugin": "workspace:^",
     "@tanstack/solid-router": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
-    "@tanstack/router-plugin": "workspace:^",
     "@tanstack/zod-adapter": "workspace:^",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
     "@tanstack/router-e2e-utils": "workspace:^",
-    "vite-plugin-solid": "^2.11.10",
-    "vite": "^7.1.7"
+    "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/e2e/solid-router/scroll-restoration-sandbox-vite/postcss.config.mjs b/e2e/solid-router/scroll-restoration-sandbox-vite/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-router/scroll-restoration-sandbox-vite/postcss.config.mjs
+++ b/e2e/solid-router/scroll-restoration-sandbox-vite/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css b/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css
+++ b/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/e2e/solid-router/scroll-restoration-sandbox-vite/tailwind.config.mjs b/e2e/solid-router/scroll-restoration-sandbox-vite/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/e2e/solid-router/scroll-restoration-sandbox-vite/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/e2e/solid-start/basic-auth/package.json b/e2e/solid-start/basic-auth/package.json
index 25a867a550..15526aaae5 100644
--- a/e2e/solid-start/basic-auth/package.json
+++ b/e2e/solid-start/basic-auth/package.json
@@ -17,20 +17,20 @@
     "@tanstack/solid-router-devtools": "workspace:^",
     "@tanstack/solid-start": "workspace:^",
     "prisma": "^5.22.0",
-    "solid-js": "^1.9.5",
     "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
     "tailwind-merge": "^2.6.0",
     "vite": "^7.1.7"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
-    "vite-plugin-solid": "^2.11.10",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
+    "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
   }
 }
diff --git a/e2e/solid-start/basic-auth/postcss.config.mjs b/e2e/solid-start/basic-auth/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/basic-auth/postcss.config.mjs
+++ b/e2e/solid-start/basic-auth/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/basic-auth/src/components/Auth.tsx b/e2e/solid-start/basic-auth/src/components/Auth.tsx
index 40e44b8c5a..de9d9e76f6 100644
--- a/e2e/solid-start/basic-auth/src/components/Auth.tsx
+++ b/e2e/solid-start/basic-auth/src/components/Auth.tsx
@@ -30,7 +30,7 @@ export function Auth({
               type="email"
               name="email"
               id="email"
-              class="px-2 py-1 w-full rounded border border-gray-500/20 bg-white dark:bg-gray-800"
+              class="px-2 py-1 w-full rounded-sm border border-gray-500/20 bg-white dark:bg-gray-800"
             />
           </div>
           <div>
@@ -41,12 +41,12 @@ export function Auth({
               type="password"
               name="password"
               id="password"
-              class="px-2 py-1 w-full rounded border border-gray-500/20 bg-white dark:bg-gray-800"
+              class="px-2 py-1 w-full rounded-sm border border-gray-500/20 bg-white dark:bg-gray-800"
             />
           </div>
           <button
             type="submit"
-            class="w-full bg-cyan-600 text-white rounded py-2 font-black uppercase"
+            class="w-full bg-cyan-600 text-white rounded-sm py-2 font-black uppercase"
             disabled={status === 'pending'}
           >
             {status === 'pending' ? '...' : actionText}
diff --git a/e2e/solid-start/basic-auth/src/components/DefaultCatchBoundary.tsx b/e2e/solid-start/basic-auth/src/components/DefaultCatchBoundary.tsx
index 32aed20e67..2c0d464a06 100644
--- a/e2e/solid-start/basic-auth/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/solid-start/basic-auth/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/solid-start/basic-auth/src/components/NotFound.tsx b/e2e/solid-start/basic-auth/src/components/NotFound.tsx
index ca4c1960fa..af5ad273c5 100644
--- a/e2e/solid-start/basic-auth/src/components/NotFound.tsx
+++ b/e2e/solid-start/basic-auth/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/solid-start/basic-auth/src/styles/app.css b/e2e/solid-start/basic-auth/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/solid-start/basic-auth/src/styles/app.css
+++ b/e2e/solid-start/basic-auth/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/solid-start/basic-auth/tailwind.config.mjs b/e2e/solid-start/basic-auth/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/solid-start/basic-auth/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/solid-start/basic-solid-query/package.json b/e2e/solid-start/basic-solid-query/package.json
index e116bb0ec0..6a00e47fd6 100644
--- a/e2e/solid-start/basic-solid-query/package.json
+++ b/e2e/solid-start/basic-solid-query/package.json
@@ -17,19 +17,19 @@
     "@tanstack/solid-router-devtools": "workspace:^",
     "@tanstack/solid-router-ssr-query": "workspace:^",
     "@tanstack/solid-start": "workspace:^",
-    "solid-js": "^1.9.5",
     "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
     "tailwind-merge": "^2.6.0",
     "vite": "^7.1.7"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/e2e/solid-start/basic-solid-query/postcss.config.mjs b/e2e/solid-start/basic-solid-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/basic-solid-query/postcss.config.mjs
+++ b/e2e/solid-start/basic-solid-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/basic-solid-query/src/components/NotFound.tsx b/e2e/solid-start/basic-solid-query/src/components/NotFound.tsx
index 8ca552b501..30fc274d06 100644
--- a/e2e/solid-start/basic-solid-query/src/components/NotFound.tsx
+++ b/e2e/solid-start/basic-solid-query/src/components/NotFound.tsx
@@ -10,13 +10,13 @@ export function NotFound(props?: { children?: JSX.Element }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/solid-start/basic-solid-query/src/styles/app.css b/e2e/solid-start/basic-solid-query/src/styles/app.css
index 401c9469b2..555ba6ddf0 100644
--- a/e2e/solid-start/basic-solid-query/src/styles/app.css
+++ b/e2e/solid-start/basic-solid-query/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 body {
   @apply text-base;
diff --git a/e2e/solid-start/basic-solid-query/tailwind.config.mjs b/e2e/solid-start/basic-solid-query/tailwind.config.mjs
deleted file mode 100644
index be882983bf..0000000000
--- a/e2e/solid-start/basic-solid-query/tailwind.config.mjs
+++ /dev/null
@@ -1,8 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-  theme: {
-    extend: {},
-  },
-  plugins: [],
-}
diff --git a/e2e/solid-start/basic/package.json b/e2e/solid-start/basic/package.json
index d91eee5363..4787fd60ba 100644
--- a/e2e/solid-start/basic/package.json
+++ b/e2e/solid-start/basic/package.json
@@ -28,13 +28,13 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
-    "autoprefixer": "^10.4.20",
     "combinate": "^1.1.11",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/e2e/solid-start/basic/postcss.config.mjs b/e2e/solid-start/basic/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/basic/postcss.config.mjs
+++ b/e2e/solid-start/basic/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/basic/src/components/DefaultCatchBoundary.tsx b/e2e/solid-start/basic/src/components/DefaultCatchBoundary.tsx
index 32aed20e67..2c0d464a06 100644
--- a/e2e/solid-start/basic/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/solid-start/basic/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/solid-start/basic/src/components/NotFound.tsx b/e2e/solid-start/basic/src/components/NotFound.tsx
index eb0a968d39..c48444862b 100644
--- a/e2e/solid-start/basic/src/components/NotFound.tsx
+++ b/e2e/solid-start/basic/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/solid-start/basic/src/styles/app.css b/e2e/solid-start/basic/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/solid-start/basic/src/styles/app.css
+++ b/e2e/solid-start/basic/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/solid-start/basic/tailwind.config.mjs b/e2e/solid-start/basic/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/solid-start/basic/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/solid-start/custom-basepath/package.json b/e2e/solid-start/custom-basepath/package.json
index 7a04454686..93905ac1e3 100644
--- a/e2e/solid-start/custom-basepath/package.json
+++ b/e2e/solid-start/custom-basepath/package.json
@@ -19,14 +19,14 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/express": "^5.0.3",
     "@types/node": "^22.10.2",
-    "autoprefixer": "^10.4.20",
     "cross-env": "^10.0.0",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "tsx": "^4.20.3",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
diff --git a/e2e/solid-start/custom-basepath/postcss.config.mjs b/e2e/solid-start/custom-basepath/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/custom-basepath/postcss.config.mjs
+++ b/e2e/solid-start/custom-basepath/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/custom-basepath/src/components/DefaultCatchBoundary.tsx b/e2e/solid-start/custom-basepath/src/components/DefaultCatchBoundary.tsx
index 32aed20e67..2c0d464a06 100644
--- a/e2e/solid-start/custom-basepath/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/solid-start/custom-basepath/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/solid-start/custom-basepath/src/components/NotFound.tsx b/e2e/solid-start/custom-basepath/src/components/NotFound.tsx
index eb0a968d39..c48444862b 100644
--- a/e2e/solid-start/custom-basepath/src/components/NotFound.tsx
+++ b/e2e/solid-start/custom-basepath/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/solid-start/custom-basepath/src/styles/app.css b/e2e/solid-start/custom-basepath/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/solid-start/custom-basepath/src/styles/app.css
+++ b/e2e/solid-start/custom-basepath/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/solid-start/custom-basepath/tailwind.config.mjs b/e2e/solid-start/custom-basepath/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/solid-start/custom-basepath/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/solid-start/query-integration/package.json b/e2e/solid-start/query-integration/package.json
index 0f55e1c140..f221ad9574 100644
--- a/e2e/solid-start/query-integration/package.json
+++ b/e2e/solid-start/query-integration/package.json
@@ -24,11 +24,11 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/e2e/solid-start/query-integration/postcss.config.mjs b/e2e/solid-start/query-integration/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/query-integration/postcss.config.mjs
+++ b/e2e/solid-start/query-integration/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/query-integration/src/styles/app.css b/e2e/solid-start/query-integration/src/styles/app.css
index 401c9469b2..555ba6ddf0 100644
--- a/e2e/solid-start/query-integration/src/styles/app.css
+++ b/e2e/solid-start/query-integration/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 body {
   @apply text-base;
diff --git a/e2e/solid-start/query-integration/tailwind.config.mjs b/e2e/solid-start/query-integration/tailwind.config.mjs
deleted file mode 100644
index be882983bf..0000000000
--- a/e2e/solid-start/query-integration/tailwind.config.mjs
+++ /dev/null
@@ -1,8 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-  theme: {
-    extend: {},
-  },
-  plugins: [],
-}
diff --git a/e2e/solid-start/scroll-restoration/package.json b/e2e/solid-start/scroll-restoration/package.json
index 72bcaf2a88..8d6824f7a3 100644
--- a/e2e/solid-start/scroll-restoration/package.json
+++ b/e2e/solid-start/scroll-restoration/package.json
@@ -23,13 +23,13 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
-    "autoprefixer": "^10.4.20",
     "combinate": "^1.1.11",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/e2e/solid-start/scroll-restoration/postcss.config.mjs b/e2e/solid-start/scroll-restoration/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/scroll-restoration/postcss.config.mjs
+++ b/e2e/solid-start/scroll-restoration/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/scroll-restoration/src/components/DefaultCatchBoundary.tsx b/e2e/solid-start/scroll-restoration/src/components/DefaultCatchBoundary.tsx
index 32aed20e67..2c0d464a06 100644
--- a/e2e/solid-start/scroll-restoration/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/solid-start/scroll-restoration/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/solid-start/scroll-restoration/src/components/NotFound.tsx b/e2e/solid-start/scroll-restoration/src/components/NotFound.tsx
index ca4c1960fa..af5ad273c5 100644
--- a/e2e/solid-start/scroll-restoration/src/components/NotFound.tsx
+++ b/e2e/solid-start/scroll-restoration/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/solid-start/scroll-restoration/src/styles/app.css b/e2e/solid-start/scroll-restoration/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/solid-start/scroll-restoration/src/styles/app.css
+++ b/e2e/solid-start/scroll-restoration/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/solid-start/scroll-restoration/tailwind.config.mjs b/e2e/solid-start/scroll-restoration/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/solid-start/scroll-restoration/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/solid-start/selective-ssr/package.json b/e2e/solid-start/selective-ssr/package.json
index 08216ab26c..8c8d3f1c3d 100644
--- a/e2e/solid-start/selective-ssr/package.json
+++ b/e2e/solid-start/selective-ssr/package.json
@@ -17,10 +17,11 @@
     "zod": "^3.24.2"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-plugin-solid": "^2.11.10",
diff --git a/e2e/solid-start/selective-ssr/postcss.config.mjs b/e2e/solid-start/selective-ssr/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/selective-ssr/postcss.config.mjs
+++ b/e2e/solid-start/selective-ssr/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/selective-ssr/src/styles/app.css b/e2e/solid-start/selective-ssr/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/solid-start/selective-ssr/src/styles/app.css
+++ b/e2e/solid-start/selective-ssr/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/solid-start/selective-ssr/tailwind.config.mjs b/e2e/solid-start/selective-ssr/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/solid-start/selective-ssr/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/solid-start/server-functions/package.json b/e2e/solid-start/server-functions/package.json
index 71015d3479..885da784d5 100644
--- a/e2e/solid-start/server-functions/package.json
+++ b/e2e/solid-start/server-functions/package.json
@@ -23,14 +23,14 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/js-cookie": "^3.0.6",
     "@types/node": "^22.10.2",
-    "autoprefixer": "^10.4.20",
     "combinate": "^1.1.11",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/e2e/solid-start/server-functions/postcss.config.mjs b/e2e/solid-start/server-functions/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/server-functions/postcss.config.mjs
+++ b/e2e/solid-start/server-functions/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/server-functions/src/components/DefaultCatchBoundary.tsx b/e2e/solid-start/server-functions/src/components/DefaultCatchBoundary.tsx
index 32aed20e67..2c0d464a06 100644
--- a/e2e/solid-start/server-functions/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/solid-start/server-functions/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/solid-start/server-functions/src/components/NotFound.tsx b/e2e/solid-start/server-functions/src/components/NotFound.tsx
index eb0a968d39..c48444862b 100644
--- a/e2e/solid-start/server-functions/src/components/NotFound.tsx
+++ b/e2e/solid-start/server-functions/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/solid-start/server-functions/src/routes/consistent.tsx b/e2e/solid-start/server-functions/src/routes/consistent.tsx
index 87fc44249c..9f4613422b 100644
--- a/e2e/solid-start/server-functions/src/routes/consistent.tsx
+++ b/e2e/solid-start/server-functions/src/routes/consistent.tsx
@@ -97,7 +97,7 @@ function ConsistentServerFnCalls() {
       <button
         data-testid="test-consistent-server-fn-calls-btn"
         type="button"
-        class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         onClick={() => {
           // GET calls
           cons_serverGetFn1({ data: { username: 'TEST' } }).then(
diff --git a/e2e/solid-start/server-functions/src/routes/dead-code-preserve.tsx b/e2e/solid-start/server-functions/src/routes/dead-code-preserve.tsx
index bfe5f6e61a..75806a65e3 100644
--- a/e2e/solid-start/server-functions/src/routes/dead-code-preserve.tsx
+++ b/e2e/solid-start/server-functions/src/routes/dead-code-preserve.tsx
@@ -45,7 +45,7 @@ function RouteComponent() {
         This server function writes to a file as a side effect, then reads it.
       </p>
       <button
-        class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         data-testid="test-dead-code-fn-call-btn"
         onClick={async () => {
           await writeFileServerFn({ headers: { 'X-Test': 'test' } })
diff --git a/e2e/solid-start/server-functions/src/routes/headers.tsx b/e2e/solid-start/server-functions/src/routes/headers.tsx
index 132f304fbe..3ba3f5fe1e 100644
--- a/e2e/solid-start/server-functions/src/routes/headers.tsx
+++ b/e2e/solid-start/server-functions/src/routes/headers.tsx
@@ -56,7 +56,7 @@ function ResponseHeaders({
         <button
           type="submit"
           data-testid="test-headers-btn"
-          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Get Headers
         </button>
diff --git a/e2e/solid-start/server-functions/src/routes/multipart.tsx b/e2e/solid-start/server-functions/src/routes/multipart.tsx
index 53da4a2e66..1ad7718aa8 100644
--- a/e2e/solid-start/server-functions/src/routes/multipart.tsx
+++ b/e2e/solid-start/server-functions/src/routes/multipart.tsx
@@ -85,14 +85,14 @@ function MultipartServerFnCall() {
         />
         <button
           type="submit"
-          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Submit (native)
         </button>
         <button
           type="button"
           onClick={handleSubmit}
-          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Submit (onClick)
         </button>
diff --git a/e2e/solid-start/server-functions/src/routes/raw-response.tsx b/e2e/solid-start/server-functions/src/routes/raw-response.tsx
index ad3cfdc419..aa321c70b4 100644
--- a/e2e/solid-start/server-functions/src/routes/raw-response.tsx
+++ b/e2e/solid-start/server-functions/src/routes/raw-response.tsx
@@ -34,7 +34,7 @@ function RouteComponent() {
           setFormDataResult(text)
         }}
         data-testid="button"
-        class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
       >
         Submit
       </button>
diff --git a/e2e/solid-start/server-functions/src/routes/return-null.tsx b/e2e/solid-start/server-functions/src/routes/return-null.tsx
index 2e789d2eef..793f251dab 100644
--- a/e2e/solid-start/server-functions/src/routes/return-null.tsx
+++ b/e2e/solid-start/server-functions/src/routes/return-null.tsx
@@ -55,7 +55,7 @@ function AllowServerFnReturnNull() {
       <button
         data-testid="test-allow-server-fn-return-null-btn"
         type="button"
-        class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+        class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         onClick={() => {
           $allow_return_null_getFn().then(setGetServerResult)
           $allow_return_null_postFn().then(setPostServerResult)
diff --git a/e2e/solid-start/server-functions/src/routes/serialize-form-data.tsx b/e2e/solid-start/server-functions/src/routes/serialize-form-data.tsx
index e6f1547ca7..519c9891f6 100644
--- a/e2e/solid-start/server-functions/src/routes/serialize-form-data.tsx
+++ b/e2e/solid-start/server-functions/src/routes/serialize-form-data.tsx
@@ -66,7 +66,7 @@ export function SerializeFormDataFnCall() {
         <button
           type="submit"
           data-testid="test-serialize-formdata-fn-calls-btn"
-          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Submit
         </button>
diff --git a/e2e/solid-start/server-functions/src/routes/submit-post-formdata.tsx b/e2e/solid-start/server-functions/src/routes/submit-post-formdata.tsx
index 8c10ba8874..610e62e28f 100644
--- a/e2e/solid-start/server-functions/src/routes/submit-post-formdata.tsx
+++ b/e2e/solid-start/server-functions/src/routes/submit-post-formdata.tsx
@@ -50,7 +50,7 @@ function SubmitPostFormDataFn() {
         <button
           type="submit"
           data-testid="test-submit-post-formdata-fn-calls-btn"
-          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Submit (native)
         </button>
diff --git a/e2e/solid-start/server-functions/src/styles/app.css b/e2e/solid-start/server-functions/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/solid-start/server-functions/src/styles/app.css
+++ b/e2e/solid-start/server-functions/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/solid-start/server-functions/tailwind.config.mjs b/e2e/solid-start/server-functions/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/solid-start/server-functions/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/solid-start/server-routes/package.json b/e2e/solid-start/server-routes/package.json
index bf9aa650eb..ba01120cdd 100644
--- a/e2e/solid-start/server-routes/package.json
+++ b/e2e/solid-start/server-routes/package.json
@@ -23,14 +23,14 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/js-cookie": "^3.0.6",
     "@types/node": "^22.10.2",
-    "autoprefixer": "^10.4.20",
     "combinate": "^1.1.11",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/e2e/solid-start/server-routes/postcss.config.mjs b/e2e/solid-start/server-routes/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/server-routes/postcss.config.mjs
+++ b/e2e/solid-start/server-routes/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/server-routes/src/components/DefaultCatchBoundary.tsx b/e2e/solid-start/server-routes/src/components/DefaultCatchBoundary.tsx
index 32aed20e67..2c0d464a06 100644
--- a/e2e/solid-start/server-routes/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/solid-start/server-routes/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/solid-start/server-routes/src/components/NotFound.tsx b/e2e/solid-start/server-routes/src/components/NotFound.tsx
index eb0a968d39..c48444862b 100644
--- a/e2e/solid-start/server-routes/src/components/NotFound.tsx
+++ b/e2e/solid-start/server-routes/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/solid-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx b/e2e/solid-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx
index a8aa2db966..549aa14e88 100644
--- a/e2e/solid-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx
+++ b/e2e/solid-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx
@@ -27,7 +27,7 @@ function MergeServerFnMiddlewareContext() {
           type="button"
           onClick={fetchMiddlewareContext}
           data-testid="test-middleware-context-btn"
-          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
+          class="rounded-md bg-white px-2.5 py-1.5 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
         >
           Test Middleware Context
         </button>
@@ -37,7 +37,7 @@ function MergeServerFnMiddlewareContext() {
             <h4>API Response:</h4>
             <pre
               data-testid="api-response"
-              class="bg-gray-100 p-2 rounded text-black"
+              class="bg-gray-100 p-2 rounded-sm text-black"
             >
               {JSON.stringify(apiResponse(), null, 2)}
             </pre>
@@ -46,17 +46,17 @@ function MergeServerFnMiddlewareContext() {
               <h4>Context Verification:</h4>
               <div
                 data-testid="context-result"
-                class="bg-gray-100 p-2 rounded text-black"
+                class="bg-gray-100 p-2 rounded-sm text-black"
               >
                 {JSON.stringify(apiResponse()?.context, null, 2)}
               </div>
 
-              <div data-testid="has-test-parent" class="p-2 border rounded">
+              <div data-testid="has-test-parent" class="p-2 border rounded-sm">
                 Has testParent:{' '}
                 {apiResponse()?.context?.testParent ? 'true' : 'false'}
               </div>
 
-              <div data-testid="has-test" class="p-2 border rounded">
+              <div data-testid="has-test" class="p-2 border rounded-sm">
                 Has test: {apiResponse()?.context?.test ? 'true' : 'false'}
               </div>
             </div>
diff --git a/e2e/solid-start/server-routes/src/styles/app.css b/e2e/solid-start/server-routes/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/solid-start/server-routes/src/styles/app.css
+++ b/e2e/solid-start/server-routes/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/solid-start/server-routes/tailwind.config.mjs b/e2e/solid-start/server-routes/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/solid-start/server-routes/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/solid-start/spa-mode/package.json b/e2e/solid-start/spa-mode/package.json
index 6f5dddaf31..ad39d761c3 100644
--- a/e2e/solid-start/spa-mode/package.json
+++ b/e2e/solid-start/spa-mode/package.json
@@ -12,18 +12,19 @@
   },
   "dependencies": {
     "@tanstack/solid-router": "workspace:^",
-    "@tanstack/solid-start": "workspace:^",
     "@tanstack/solid-router-devtools": "workspace:^",
+    "@tanstack/solid-start": "workspace:^",
     "solid-js": "^1.9.5",
     "zod": "^3.24.2"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
-    "vite-tsconfig-paths": "^5.1.4",
-    "vite-plugin-solid": "^2.11.10"
+    "vite-plugin-solid": "^2.11.10",
+    "vite-tsconfig-paths": "^5.1.4"
   }
 }
diff --git a/e2e/solid-start/spa-mode/postcss.config.mjs b/e2e/solid-start/spa-mode/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/spa-mode/postcss.config.mjs
+++ b/e2e/solid-start/spa-mode/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/spa-mode/src/styles/app.css b/e2e/solid-start/spa-mode/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/solid-start/spa-mode/src/styles/app.css
+++ b/e2e/solid-start/spa-mode/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/solid-start/spa-mode/tailwind.config.mjs b/e2e/solid-start/spa-mode/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/solid-start/spa-mode/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/solid-start/virtual-routes/package.json b/e2e/solid-start/virtual-routes/package.json
index 493bf06d3c..4daa690c9d 100644
--- a/e2e/solid-start/virtual-routes/package.json
+++ b/e2e/solid-start/virtual-routes/package.json
@@ -15,23 +15,23 @@
     "@tanstack/solid-router-devtools": "workspace:^",
     "@tanstack/solid-start": "workspace:^",
     "@tanstack/virtual-file-routes": "workspace:^",
-    "solid-js": "^1.9.5",
     "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
     "tailwind-merge": "^2.6.0",
     "vite": "^7.1.7",
     "zod": "^3.24.2"
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
-    "vite-plugin-solid": "^2.11.10",
-    "autoprefixer": "^10.4.20",
     "combinate": "^1.1.11",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
+    "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
   }
 }
diff --git a/e2e/solid-start/virtual-routes/postcss.config.mjs b/e2e/solid-start/virtual-routes/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/virtual-routes/postcss.config.mjs
+++ b/e2e/solid-start/virtual-routes/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/virtual-routes/src/styles/app.css b/e2e/solid-start/virtual-routes/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/solid-start/virtual-routes/src/styles/app.css
+++ b/e2e/solid-start/virtual-routes/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/solid-start/virtual-routes/tailwind.config.mjs b/e2e/solid-start/virtual-routes/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/solid-start/virtual-routes/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/e2e/solid-start/website/package.json b/e2e/solid-start/website/package.json
index 20c4463bf0..e8b2bf13d6 100644
--- a/e2e/solid-start/website/package.json
+++ b/e2e/solid-start/website/package.json
@@ -22,12 +22,12 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.50.1",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/router-e2e-utils": "workspace:^",
     "@types/node": "^22.10.2",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
     "srvx": "^0.8.6",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/e2e/solid-start/website/postcss.config.mjs b/e2e/solid-start/website/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/e2e/solid-start/website/postcss.config.mjs
+++ b/e2e/solid-start/website/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/e2e/solid-start/website/src/components/DefaultCatchBoundary.tsx b/e2e/solid-start/website/src/components/DefaultCatchBoundary.tsx
index 32aed20e67..2c0d464a06 100644
--- a/e2e/solid-start/website/src/components/DefaultCatchBoundary.tsx
+++ b/e2e/solid-start/website/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/e2e/solid-start/website/src/components/NotFound.tsx b/e2e/solid-start/website/src/components/NotFound.tsx
index ca4c1960fa..af5ad273c5 100644
--- a/e2e/solid-start/website/src/components/NotFound.tsx
+++ b/e2e/solid-start/website/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/e2e/solid-start/website/src/styles/app.css b/e2e/solid-start/website/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/e2e/solid-start/website/src/styles/app.css
+++ b/e2e/solid-start/website/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/e2e/solid-start/website/tailwind.config.mjs b/e2e/solid-start/website/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/e2e/solid-start/website/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/react/authenticated-routes-firebase/package.json b/examples/react/authenticated-routes-firebase/package.json
index ac55927bb0..884f2d5ff0 100644
--- a/examples/react/authenticated-routes-firebase/package.json
+++ b/examples/react/authenticated-routes-firebase/package.json
@@ -9,17 +9,17 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
-    "autoprefixer": "^10.4.20",
     "firebase": "^11.4.0",
     "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
     "simple-icons": "^14.9.0",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/authenticated-routes-firebase/postcss.config.mjs b/examples/react/authenticated-routes-firebase/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/authenticated-routes-firebase/postcss.config.mjs
+++ b/examples/react/authenticated-routes-firebase/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/authenticated-routes-firebase/src/routes/index.tsx b/examples/react/authenticated-routes-firebase/src/routes/index.tsx
index fa127b12f7..cc7499debb 100644
--- a/examples/react/authenticated-routes-firebase/src/routes/index.tsx
+++ b/examples/react/authenticated-routes-firebase/src/routes/index.tsx
@@ -53,13 +53,13 @@ function HomeComponent() {
         <div className="flex gap-4">
           <Link
             to="/login"
-            className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600"
+            className="px-4 py-2 bg-blue-500 text-white rounded-sm hover:bg-blue-600"
           >
             Login
           </Link>
           <Link
             to="/dashboard"
-            className="px-4 py-2 border border-gray-300 rounded hover:bg-gray-100 dark:hover:bg-gray-800"
+            className="px-4 py-2 border border-gray-300 rounded-sm hover:bg-gray-100 dark:hover:bg-gray-800"
           >
             Dashboard (Protected)
           </Link>
diff --git a/examples/react/authenticated-routes-firebase/src/routes/login.tsx b/examples/react/authenticated-routes-firebase/src/routes/login.tsx
index 6bdecc4747..68c6ff4868 100644
--- a/examples/react/authenticated-routes-firebase/src/routes/login.tsx
+++ b/examples/react/authenticated-routes-firebase/src/routes/login.tsx
@@ -56,7 +56,7 @@ function LoginComponent() {
   return (
     <div className="flex justify-center items-center min-h-screen">
       <div className="w-full max-w-md px-4 animate-fade-up relative z-10">
-        <div className="w-full backdrop-blur-sm bg-card/80 p-8 space-y-8 shadow-md border border-border">
+        <div className="w-full backdrop-blur-xs bg-card/80 p-8 space-y-8 shadow-md border border-border">
           <div className="space-y-4">
             {/* biome-ignore lint/a11y/useButtonType: <explanation> */}
             <button
diff --git a/examples/react/authenticated-routes-firebase/src/styles.css b/examples/react/authenticated-routes-firebase/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/authenticated-routes-firebase/src/styles.css
+++ b/examples/react/authenticated-routes-firebase/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/authenticated-routes-firebase/tailwind.config.mjs b/examples/react/authenticated-routes-firebase/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/authenticated-routes-firebase/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json
index 8598aae5c5..a0b9b4a0a3 100644
--- a/examples/react/authenticated-routes/package.json
+++ b/examples/react/authenticated-routes/package.json
@@ -9,15 +9,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/authenticated-routes/postcss.config.mjs b/examples/react/authenticated-routes/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/authenticated-routes/postcss.config.mjs
+++ b/examples/react/authenticated-routes/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/authenticated-routes/src/styles.css b/examples/react/authenticated-routes/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/authenticated-routes/src/styles.css
+++ b/examples/react/authenticated-routes/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/authenticated-routes/tailwind.config.mjs b/examples/react/authenticated-routes/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/authenticated-routes/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json
index 8109b199db..590fe5cb44 100644
--- a/examples/react/basic-default-search-params/package.json
+++ b/examples/react/basic-default-search-params/package.json
@@ -9,15 +9,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/basic-default-search-params/postcss.config.mjs b/examples/react/basic-default-search-params/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/basic-default-search-params/postcss.config.mjs
+++ b/examples/react/basic-default-search-params/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/basic-default-search-params/src/main.tsx b/examples/react/basic-default-search-params/src/main.tsx
index 20f8b4f068..d2ab9a00b6 100644
--- a/examples/react/basic-default-search-params/src/main.tsx
+++ b/examples/react/basic-default-search-params/src/main.tsx
@@ -57,7 +57,7 @@ const rootRoute = createRootRoute({
 
 function RootComponent() {
   return (
-    <div className="bg-gradient-to-r from-green-700 to-lime-600 text-white">
+    <div className="bg-linear-to-r from-green-700 to-lime-600 text-white">
       <div className="p-2 flex gap-2 text-lg bg-black/40 shadow-xl">
         <Link
           to="/"
@@ -128,7 +128,7 @@ function PostsLayoutComponent() {
                   color: index % 2 ? 'red' : undefined,
                 }}
                 className="block py-1 px-2 text-green-300 hover:text-green-200"
-                activeProps={{ className: '!text-white font-bold' }}
+                activeProps={{ className: 'text-white! font-bold' }}
               >
                 <div>{post.title.substring(0, 20)}</div>
               </Link>
diff --git a/examples/react/basic-default-search-params/src/styles.css b/examples/react/basic-default-search-params/src/styles.css
index b5c61c9567..ab3d907a06 100644
--- a/examples/react/basic-default-search-params/src/styles.css
+++ b/examples/react/basic-default-search-params/src/styles.css
@@ -1,3 +1,19 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
diff --git a/examples/react/basic-default-search-params/tailwind.config.mjs b/examples/react/basic-default-search-params/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/basic-default-search-params/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/basic-devtools-panel/package.json b/examples/react/basic-devtools-panel/package.json
index 09e0558453..2cdded6a9b 100644
--- a/examples/react/basic-devtools-panel/package.json
+++ b/examples/react/basic-devtools-panel/package.json
@@ -9,15 +9,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/react-query-devtools": "^5.67.2",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
-    "@tanstack/react-query-devtools": "^5.67.2",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@types/react": "^19.0.8",
diff --git a/examples/react/basic-devtools-panel/postcss.config.mjs b/examples/react/basic-devtools-panel/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/basic-devtools-panel/postcss.config.mjs
+++ b/examples/react/basic-devtools-panel/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/basic-devtools-panel/src/styles.css b/examples/react/basic-devtools-panel/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/basic-devtools-panel/src/styles.css
+++ b/examples/react/basic-devtools-panel/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/basic-devtools-panel/tailwind.config.mjs b/examples/react/basic-devtools-panel/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/basic-devtools-panel/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json
index 41ccfad0cd..a872067214 100644
--- a/examples/react/basic-file-based/package.json
+++ b/examples/react/basic-file-based/package.json
@@ -9,15 +9,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/basic-file-based/postcss.config.mjs b/examples/react/basic-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/basic-file-based/postcss.config.mjs
+++ b/examples/react/basic-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/basic-file-based/src/routes/anchor.tsx b/examples/react/basic-file-based/src/routes/anchor.tsx
index b865343adc..e055b99d98 100644
--- a/examples/react/basic-file-based/src/routes/anchor.tsx
+++ b/examples/react/basic-file-based/src/routes/anchor.tsx
@@ -119,7 +119,7 @@ function AnchorComponent() {
             <label>
               <span>Target Anchor</span>
               <select
-                className="border border-opacity-50 rounded p-2 w-full"
+                className="border border-opacity-50 rounded-sm p-2 w-full"
                 defaultValue={location.hash || anchors[0].id}
                 name="hash"
               >
@@ -147,7 +147,7 @@ function AnchorComponent() {
                 <label>
                   <span>Behavior</span>
                   <select
-                    className="border border-opacity-50 rounded p-2 w-full"
+                    className="border border-opacity-50 rounded-sm p-2 w-full"
                     defaultValue="instant"
                     name="scrollBehavior"
                   >
@@ -162,7 +162,7 @@ function AnchorComponent() {
                 <label>
                   <span>Block</span>
                   <select
-                    className="border border-opacity-50 rounded p-2 w-full"
+                    className="border border-opacity-50 rounded-sm p-2 w-full"
                     defaultValue="start"
                     name="scrollBlock"
                   >
@@ -178,7 +178,7 @@ function AnchorComponent() {
                 <label>
                   <span>Inline</span>
                   <select
-                    className="border border-opacity-50 rounded p-2 w-full"
+                    className="border border-opacity-50 rounded-sm p-2 w-full"
                     defaultValue="nearest"
                     name="scrollInline"
                   >
@@ -192,7 +192,7 @@ function AnchorComponent() {
             </>
           ) : null}
           <div>
-            <button className="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50">
+            <button className="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50">
               Navigate
             </button>
           </div>
diff --git a/examples/react/basic-file-based/src/styles.css b/examples/react/basic-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/basic-file-based/src/styles.css
+++ b/examples/react/basic-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/basic-file-based/tailwind.config.mjs b/examples/react/basic-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/basic-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/basic-non-nested-devtools/package.json b/examples/react/basic-non-nested-devtools/package.json
index c322279dff..7da564e9cc 100644
--- a/examples/react/basic-non-nested-devtools/package.json
+++ b/examples/react/basic-non-nested-devtools/package.json
@@ -9,14 +9,14 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@types/react": "^19.0.8",
diff --git a/examples/react/basic-non-nested-devtools/postcss.config.mjs b/examples/react/basic-non-nested-devtools/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/basic-non-nested-devtools/postcss.config.mjs
+++ b/examples/react/basic-non-nested-devtools/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/basic-non-nested-devtools/src/styles.css b/examples/react/basic-non-nested-devtools/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/basic-non-nested-devtools/src/styles.css
+++ b/examples/react/basic-non-nested-devtools/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/basic-non-nested-devtools/tailwind.config.mjs b/examples/react/basic-non-nested-devtools/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/basic-non-nested-devtools/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json
index 7d23d99df2..df6e676294 100644
--- a/examples/react/basic-react-query-file-based/package.json
+++ b/examples/react/basic-react-query-file-based/package.json
@@ -9,17 +9,17 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-query-devtools": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/basic-react-query-file-based/postcss.config.mjs b/examples/react/basic-react-query-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/basic-react-query-file-based/postcss.config.mjs
+++ b/examples/react/basic-react-query-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/basic-react-query-file-based/src/styles.css b/examples/react/basic-react-query-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/basic-react-query-file-based/src/styles.css
+++ b/examples/react/basic-react-query-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/basic-react-query-file-based/tailwind.config.mjs b/examples/react/basic-react-query-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/basic-react-query-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json
index 7848d02136..afdc28ed2f 100644
--- a/examples/react/basic-react-query/package.json
+++ b/examples/react/basic-react-query/package.json
@@ -9,16 +9,16 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-query-devtools": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@types/react": "^19.0.8",
diff --git a/examples/react/basic-react-query/postcss.config.mjs b/examples/react/basic-react-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/basic-react-query/postcss.config.mjs
+++ b/examples/react/basic-react-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/basic-react-query/src/styles.css b/examples/react/basic-react-query/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/basic-react-query/src/styles.css
+++ b/examples/react/basic-react-query/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/basic-react-query/tailwind.config.mjs b/examples/react/basic-react-query/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/basic-react-query/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json
index 751467487b..112947ab20 100644
--- a/examples/react/basic-virtual-file-based/package.json
+++ b/examples/react/basic-virtual-file-based/package.json
@@ -9,16 +9,16 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
     "@tanstack/virtual-file-routes": "^1.133.19",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/basic-virtual-file-based/postcss.config.mjs b/examples/react/basic-virtual-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/basic-virtual-file-based/postcss.config.mjs
+++ b/examples/react/basic-virtual-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/basic-virtual-file-based/src/styles.css b/examples/react/basic-virtual-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/basic-virtual-file-based/src/styles.css
+++ b/examples/react/basic-virtual-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/basic-virtual-file-based/tailwind.config.mjs b/examples/react/basic-virtual-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/basic-virtual-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json
index 84dcc71b24..7840e04510 100644
--- a/examples/react/basic-virtual-inside-file-based/package.json
+++ b/examples/react/basic-virtual-inside-file-based/package.json
@@ -9,16 +9,16 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
     "@tanstack/virtual-file-routes": "^1.133.19",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/basic-virtual-inside-file-based/postcss.config.mjs b/examples/react/basic-virtual-inside-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/basic-virtual-inside-file-based/postcss.config.mjs
+++ b/examples/react/basic-virtual-inside-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/basic-virtual-inside-file-based/src/styles.css b/examples/react/basic-virtual-inside-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/basic-virtual-inside-file-based/src/styles.css
+++ b/examples/react/basic-virtual-inside-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/basic-virtual-inside-file-based/tailwind.config.mjs b/examples/react/basic-virtual-inside-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/basic-virtual-inside-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json
index 536257c832..8c32bfff81 100644
--- a/examples/react/basic/package.json
+++ b/examples/react/basic/package.json
@@ -9,14 +9,14 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@types/react": "^19.0.8",
diff --git a/examples/react/basic/postcss.config.mjs b/examples/react/basic/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/basic/postcss.config.mjs
+++ b/examples/react/basic/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/basic/src/styles.css b/examples/react/basic/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/basic/src/styles.css
+++ b/examples/react/basic/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/basic/tailwind.config.mjs b/examples/react/basic/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/basic/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json
index c887758acc..175e5fb8f4 100644
--- a/examples/react/deferred-data/package.json
+++ b/examples/react/deferred-data/package.json
@@ -9,14 +9,14 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/deferred-data/postcss.config.mjs b/examples/react/deferred-data/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/deferred-data/postcss.config.mjs
+++ b/examples/react/deferred-data/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/deferred-data/src/styles.css b/examples/react/deferred-data/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/deferred-data/src/styles.css
+++ b/examples/react/deferred-data/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/deferred-data/tailwind.config.mjs b/examples/react/deferred-data/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/deferred-data/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json
index 77f7abcb1a..2c6e8fa601 100644
--- a/examples/react/kitchen-sink-file-based/package.json
+++ b/examples/react/kitchen-sink-file-based/package.json
@@ -9,16 +9,16 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
     "immer": "^10.1.1",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/kitchen-sink-file-based/postcss.config.mjs b/examples/react/kitchen-sink-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/kitchen-sink-file-based/postcss.config.mjs
+++ b/examples/react/kitchen-sink-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/kitchen-sink-file-based/src/components/InvoiceFields.tsx b/examples/react/kitchen-sink-file-based/src/components/InvoiceFields.tsx
index 8db3cdd000..88b210ba9a 100644
--- a/examples/react/kitchen-sink-file-based/src/components/InvoiceFields.tsx
+++ b/examples/react/kitchen-sink-file-based/src/components/InvoiceFields.tsx
@@ -16,7 +16,7 @@ export function InvoiceFields({
           name="title"
           defaultValue={invoice?.title}
           placeholder="Invoice Title"
-          className="border border-opacity-50 rounded p-2 w-full"
+          className="border border-opacity-50 rounded-sm p-2 w-full"
           disabled={disabled}
         />
       </h2>
@@ -26,7 +26,7 @@ export function InvoiceFields({
           defaultValue={invoice?.body}
           rows={6}
           placeholder="Invoice Body..."
-          className="border border-opacity-50 p-2 rounded w-full"
+          className="border border-opacity-50 p-2 rounded-sm w-full"
           disabled={disabled}
         />
       </div>
diff --git a/examples/react/kitchen-sink-file-based/src/main.tsx b/examples/react/kitchen-sink-file-based/src/main.tsx
index 5c3b93d56e..8ee899ed62 100644
--- a/examples/react/kitchen-sink-file-based/src/main.tsx
+++ b/examples/react/kitchen-sink-file-based/src/main.tsx
@@ -42,11 +42,11 @@ function App() {
 
   return (
     <>
-      <div className="text-xs fixed w-52 shadow-md shadow-black/20 rounded bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
+      <div className="text-xs fixed w-52 shadow-md shadow-black/20 rounded-sm bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
         <div className="p-2 space-y-2">
           <div className="flex gap-2">
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(150)
               }}
@@ -54,7 +54,7 @@ function App() {
               Fast
             </button>
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(500)
               }}
@@ -62,7 +62,7 @@ function App() {
               Fast 3G
             </button>
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(2000)
               }}
@@ -86,7 +86,7 @@ function App() {
         <div className="p-2 space-y-2">
           <div className="flex gap-2">
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setPendingMs(1000)
                 setPendingMinMs(500)
diff --git a/examples/react/kitchen-sink-file-based/src/routes/dashboard.invoices.$invoiceId.tsx b/examples/react/kitchen-sink-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
index d7938e72c5..9d6eff562c 100644
--- a/examples/react/kitchen-sink-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
+++ b/examples/react/kitchen-sink-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
@@ -87,7 +87,7 @@ function InvoiceComponent() {
                   setNotes(e.target.value)
                 }}
                 rows={5}
-                className="shadow w-full p-2 rounded"
+                className="shadow-sm w-full p-2 rounded-sm"
                 placeholder="Write some notes here..."
               />
               <div className="italic text-xs">
@@ -99,7 +99,7 @@ function InvoiceComponent() {
       </div>
       <div>
         <button
-          className="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+          className="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
           disabled={updateInvoiceMutation.status === 'pending'}
         >
           Save
@@ -108,11 +108,11 @@ function InvoiceComponent() {
       {updateInvoiceMutation.variables?.id === invoice.id ? (
         <div key={updateInvoiceMutation.submittedAt}>
           {updateInvoiceMutation.status === 'success' ? (
-            <div className="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Saved!
             </div>
           ) : updateInvoiceMutation.status === 'error' ? (
-            <div className="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to save.
             </div>
           ) : null}
diff --git a/examples/react/kitchen-sink-file-based/src/routes/dashboard.invoices.index.tsx b/examples/react/kitchen-sink-file-based/src/routes/dashboard.invoices.index.tsx
index 845308e983..bdb31519a4 100644
--- a/examples/react/kitchen-sink-file-based/src/routes/dashboard.invoices.index.tsx
+++ b/examples/react/kitchen-sink-file-based/src/routes/dashboard.invoices.index.tsx
@@ -38,7 +38,7 @@ function InvoicesIndexComponent() {
           <InvoiceFields invoice={{} as Invoice} />
           <div>
             <button
-              className="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+              className="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
               disabled={createInvoiceMutation.status === 'pending'}
             >
               {createInvoiceMutation.status === 'pending' ? (
@@ -51,11 +51,11 @@ function InvoicesIndexComponent() {
             </button>
           </div>
           {createInvoiceMutation.status === 'success' ? (
-            <div className="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Created!
             </div>
           ) : createInvoiceMutation.status === 'error' ? (
-            <div className="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to create.
             </div>
           ) : null}
diff --git a/examples/react/kitchen-sink-file-based/src/routes/dashboard.users.route.tsx b/examples/react/kitchen-sink-file-based/src/routes/dashboard.users.route.tsx
index 287f4ff0ec..ddbecfe6b2 100644
--- a/examples/react/kitchen-sink-file-based/src/routes/dashboard.users.route.tsx
+++ b/examples/react/kitchen-sink-file-based/src/routes/dashboard.users.route.tsx
@@ -88,7 +88,7 @@ function UsersComponent() {
           <select
             value={sortBy}
             onChange={(e) => setSortBy(e.target.value as UsersViewSortBy)}
-            className="flex-1 border p-1 px-2 rounded"
+            className="flex-1 border p-1 px-2 rounded-sm"
           >
             {['name', 'id', 'email'].map((d) => {
               return <option key={d} value={d} children={d} />
@@ -101,7 +101,7 @@ function UsersComponent() {
             value={filterDraft}
             onChange={(e) => setFilterDraft(e.target.value)}
             placeholder="Search Names..."
-            className="min-w-0 flex-1 border p-1 px-2 rounded"
+            className="min-w-0 flex-1 border p-1 px-2 rounded-sm"
           />
         </div>
         {users.map((user) => {
diff --git a/examples/react/kitchen-sink-file-based/src/routes/login.tsx b/examples/react/kitchen-sink-file-based/src/routes/login.tsx
index d4574d1461..d7833bae23 100644
--- a/examples/react/kitchen-sink-file-based/src/routes/login.tsx
+++ b/examples/react/kitchen-sink-file-based/src/routes/login.tsx
@@ -41,7 +41,7 @@ function LoginComponent() {
           auth.logout()
           router.invalidate()
         }}
-        className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+        className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
       >
         Log out
       </button>
@@ -56,11 +56,11 @@ function LoginComponent() {
           value={username}
           onChange={(e) => setUsername(e.target.value)}
           placeholder="Username"
-          className="border p-1 px-2 rounded"
+          className="border p-1 px-2 rounded-sm"
         />
         <button
           type="submit"
-          className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+          className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
         >
           Login
         </button>
diff --git a/examples/react/kitchen-sink-file-based/src/styles.css b/examples/react/kitchen-sink-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/kitchen-sink-file-based/src/styles.css
+++ b/examples/react/kitchen-sink-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/kitchen-sink-file-based/tailwind.config.mjs b/examples/react/kitchen-sink-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/kitchen-sink-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json
index 93c10c760b..cb14418afd 100644
--- a/examples/react/kitchen-sink-react-query-file-based/package.json
+++ b/examples/react/kitchen-sink-react-query-file-based/package.json
@@ -9,18 +9,18 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-query-devtools": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
     "immer": "^10.1.1",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/kitchen-sink-react-query-file-based/postcss.config.mjs b/examples/react/kitchen-sink-react-query-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/kitchen-sink-react-query-file-based/postcss.config.mjs
+++ b/examples/react/kitchen-sink-react-query-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/kitchen-sink-react-query-file-based/src/components/InvoiceFields.tsx b/examples/react/kitchen-sink-react-query-file-based/src/components/InvoiceFields.tsx
index 3e952af3e8..cb922414e1 100644
--- a/examples/react/kitchen-sink-react-query-file-based/src/components/InvoiceFields.tsx
+++ b/examples/react/kitchen-sink-react-query-file-based/src/components/InvoiceFields.tsx
@@ -15,7 +15,7 @@ export function InvoiceFields({
           name="title"
           defaultValue={invoice.title}
           placeholder="Invoice Title"
-          className="border border-opacity-50 rounded p-2 w-full"
+          className="border border-opacity-50 rounded-sm p-2 w-full"
           disabled={disabled}
         />
       </h2>
@@ -25,7 +25,7 @@ export function InvoiceFields({
           defaultValue={invoice.body}
           rows={6}
           placeholder="Invoice Body..."
-          className="border border-opacity-50 p-2 rounded w-full"
+          className="border border-opacity-50 p-2 rounded-sm w-full"
           disabled={disabled}
         />
       </div>
diff --git a/examples/react/kitchen-sink-react-query-file-based/src/main.tsx b/examples/react/kitchen-sink-react-query-file-based/src/main.tsx
index 869715a3be..6ae5ab0ff1 100644
--- a/examples/react/kitchen-sink-react-query-file-based/src/main.tsx
+++ b/examples/react/kitchen-sink-react-query-file-based/src/main.tsx
@@ -49,11 +49,11 @@ function App() {
 
   return (
     <>
-      <div className="text-xs fixed w-52 shadow-md shadow-black/20 rounded bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
+      <div className="text-xs fixed w-52 shadow-md shadow-black/20 rounded-sm bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
         <div className="p-2 space-y-2">
           <div className="flex gap-2">
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(150)
               }}
@@ -61,7 +61,7 @@ function App() {
               Fast
             </button>
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(500)
               }}
@@ -69,7 +69,7 @@ function App() {
               Fast 3G
             </button>
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(2000)
               }}
@@ -93,7 +93,7 @@ function App() {
         <div className="p-2 space-y-2">
           <div className="flex gap-2">
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setPendingMs(1000)
                 setPendingMinMs(500)
diff --git a/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.invoices.$invoiceId.tsx b/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
index 94bcda4130..8ba7396ebb 100644
--- a/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
+++ b/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
@@ -91,7 +91,7 @@ function InvoiceComponent() {
                   setNotes(e.target.value)
                 }}
                 rows={5}
-                className="shadow w-full p-2 rounded"
+                className="shadow-sm w-full p-2 rounded-sm"
                 placeholder="Write some notes here..."
               />
               <div className="italic text-xs">
@@ -103,7 +103,7 @@ function InvoiceComponent() {
       </div>
       <div>
         <button
-          className="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+          className="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
           disabled={updateInvoiceMutation.status === 'pending'}
         >
           Save
@@ -112,11 +112,11 @@ function InvoiceComponent() {
       {updateInvoiceMutation.variables?.id === invoice.id ? (
         <div key={updateInvoiceMutation.submittedAt}>
           {updateInvoiceMutation.status === 'success' ? (
-            <div className="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Saved!
             </div>
           ) : updateInvoiceMutation.status === 'error' ? (
-            <div className="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to save.
             </div>
           ) : null}
diff --git a/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.invoices.index.tsx b/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.invoices.index.tsx
index 87288b034a..cc40722865 100644
--- a/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.invoices.index.tsx
+++ b/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.invoices.index.tsx
@@ -32,7 +32,7 @@ function InvoicesIndexComponent() {
           <InvoiceFields invoice={{} as Invoice} />
           <div>
             <button
-              className="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+              className="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
               disabled={createInvoiceMutation.status === 'pending'}
             >
               {createInvoiceMutation.status === 'pending' ? (
@@ -45,11 +45,11 @@ function InvoicesIndexComponent() {
             </button>
           </div>
           {createInvoiceMutation.status === 'success' ? (
-            <div className="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Created!
             </div>
           ) : createInvoiceMutation.status === 'error' ? (
-            <div className="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to create.
             </div>
           ) : null}
diff --git a/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.users.route.tsx b/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.users.route.tsx
index 57b1966a5f..1d8f93fe6a 100644
--- a/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.users.route.tsx
+++ b/examples/react/kitchen-sink-react-query-file-based/src/routes/dashboard.users.route.tsx
@@ -103,7 +103,7 @@ function UsersComponent() {
           <select
             value={sortBy}
             onChange={(e) => setSortBy(e.target.value as UsersViewSortBy)}
-            className="flex-1 border p-1 px-2 rounded"
+            className="flex-1 border p-1 px-2 rounded-sm"
           >
             {['name', 'id', 'email'].map((d) => {
               return <option key={d} value={d} children={d} />
@@ -116,7 +116,7 @@ function UsersComponent() {
             value={filterDraft}
             onChange={(e) => setFilterDraft(e.target.value)}
             placeholder="Search Names..."
-            className="min-w-0 flex-1 border p-1 px-2 rounded"
+            className="min-w-0 flex-1 border p-1 px-2 rounded-sm"
           />
         </div>
         {filteredUsers?.map((user) => {
diff --git a/examples/react/kitchen-sink-react-query-file-based/src/routes/login.tsx b/examples/react/kitchen-sink-react-query-file-based/src/routes/login.tsx
index 03f439d65d..b60c46de31 100644
--- a/examples/react/kitchen-sink-react-query-file-based/src/routes/login.tsx
+++ b/examples/react/kitchen-sink-react-query-file-based/src/routes/login.tsx
@@ -40,7 +40,7 @@ function LoginComponent() {
           auth.logout()
           router.invalidate()
         }}
-        className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+        className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
       >
         Log out
       </button>
@@ -55,11 +55,11 @@ function LoginComponent() {
           value={username}
           onChange={(e) => setUsername(e.target.value)}
           placeholder="Username"
-          className="border p-1 px-2 rounded"
+          className="border p-1 px-2 rounded-sm"
         />
         <button
           type="submit"
-          className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+          className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
         >
           Login
         </button>
diff --git a/examples/react/kitchen-sink-react-query-file-based/src/styles.css b/examples/react/kitchen-sink-react-query-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/kitchen-sink-react-query-file-based/src/styles.css
+++ b/examples/react/kitchen-sink-react-query-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/kitchen-sink-react-query-file-based/tailwind.config.mjs b/examples/react/kitchen-sink-react-query-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/kitchen-sink-react-query-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json
index 9f2104fae7..643c06b7b4 100644
--- a/examples/react/kitchen-sink-react-query/package.json
+++ b/examples/react/kitchen-sink-react-query/package.json
@@ -9,17 +9,17 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-query-devtools": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "immer": "^10.1.1",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/kitchen-sink-react-query/postcss.config.mjs b/examples/react/kitchen-sink-react-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/kitchen-sink-react-query/postcss.config.mjs
+++ b/examples/react/kitchen-sink-react-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/kitchen-sink-react-query/src/main.tsx b/examples/react/kitchen-sink-react-query/src/main.tsx
index 3e9de11e7d..be34b9607a 100644
--- a/examples/react/kitchen-sink-react-query/src/main.tsx
+++ b/examples/react/kitchen-sink-react-query/src/main.tsx
@@ -377,7 +377,7 @@ function InvoicesIndexComponent() {
           <InvoiceFields invoice={{} as Invoice} />
           <div>
             <button
-              className="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+              className="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
               disabled={createInvoiceMutation.status === 'pending'}
             >
               {createInvoiceMutation.status === 'pending' ? (
@@ -390,11 +390,11 @@ function InvoicesIndexComponent() {
             </button>
           </div>
           {createInvoiceMutation.status === 'success' ? (
-            <div className="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Created!
             </div>
           ) : createInvoiceMutation.status === 'error' ? (
-            <div className="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to create.
             </div>
           ) : null}
@@ -488,7 +488,7 @@ function InvoiceComponent() {
                   setNotes(e.target.value)
                 }}
                 rows={5}
-                className="shadow w-full p-2 rounded"
+                className="shadow-sm w-full p-2 rounded-sm"
                 placeholder="Write some notes here..."
               />
               <div className="italic text-xs">
@@ -500,7 +500,7 @@ function InvoiceComponent() {
       </div>
       <div>
         <button
-          className="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+          className="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
           disabled={updateInvoiceMutation.status === 'pending'}
         >
           Save
@@ -509,11 +509,11 @@ function InvoiceComponent() {
       {updateInvoiceMutation.variables?.id === invoice.id ? (
         <div key={updateInvoiceMutation.submittedAt}>
           {updateInvoiceMutation.status === 'success' ? (
-            <div className="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Saved!
             </div>
           ) : updateInvoiceMutation.status === 'error' ? (
-            <div className="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to save.
             </div>
           ) : null}
@@ -619,7 +619,7 @@ function UsersComponent() {
           <select
             value={sortBy}
             onChange={(e) => setSortBy(e.target.value as UsersViewSortBy)}
-            className="flex-1 border p-1 px-2 rounded"
+            className="flex-1 border p-1 px-2 rounded-sm"
           >
             {['name', 'id', 'email'].map((d) => {
               return <option key={d} value={d} children={d} />
@@ -632,7 +632,7 @@ function UsersComponent() {
             value={filterDraft}
             onChange={(e) => setFilterDraft(e.target.value)}
             placeholder="Search Names..."
-            className="min-w-0 flex-1 border p-1 px-2 rounded"
+            className="min-w-0 flex-1 border p-1 px-2 rounded-sm"
           />
         </div>
         {filteredUsers.map((user) => {
@@ -819,7 +819,7 @@ function LoginComponent() {
       <div className="h-2" />
       <button
         onClick={() => auth.logout()}
-        className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+        className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
       >
         Log out
       </button>
@@ -834,11 +834,11 @@ function LoginComponent() {
           value={username}
           onChange={(e) => setUsername(e.target.value)}
           placeholder="Username"
-          className="border p-1 px-2 rounded"
+          className="border p-1 px-2 rounded-sm"
         />
         <button
           onClick={() => auth.logout()}
-          className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+          className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
         >
           Login
         </button>
@@ -952,11 +952,11 @@ function App() {
 
   return (
     <>
-      <div className="text-xs fixed w-52 shadow-md shadow-black/20 rounded bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
+      <div className="text-xs fixed w-52 shadow-md shadow-black/20 rounded-sm bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
         <div className="p-2 space-y-2">
           <div className="flex gap-2">
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(150)
               }}
@@ -964,7 +964,7 @@ function App() {
               Fast
             </button>
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(500)
               }}
@@ -972,7 +972,7 @@ function App() {
               Fast 3G
             </button>
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(2000)
               }}
@@ -996,7 +996,7 @@ function App() {
         <div className="p-2 space-y-2">
           <div className="flex gap-2">
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setPendingMs(1000)
                 setPendingMinMs(500)
@@ -1060,7 +1060,7 @@ function InvoiceFields({
           name="title"
           defaultValue={invoice.title}
           placeholder="Invoice Title"
-          className="border border-opacity-50 rounded p-2 w-full"
+          className="border border-opacity-50 rounded-sm p-2 w-full"
           disabled={disabled}
         />
       </h2>
@@ -1070,7 +1070,7 @@ function InvoiceFields({
           defaultValue={invoice.body}
           rows={6}
           placeholder="Invoice Body..."
-          className="border border-opacity-50 p-2 rounded w-full"
+          className="border border-opacity-50 p-2 rounded-sm w-full"
           disabled={disabled}
         />
       </div>
diff --git a/examples/react/kitchen-sink-react-query/src/styles.css b/examples/react/kitchen-sink-react-query/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/kitchen-sink-react-query/src/styles.css
+++ b/examples/react/kitchen-sink-react-query/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/kitchen-sink-react-query/tailwind.config.mjs b/examples/react/kitchen-sink-react-query/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/kitchen-sink-react-query/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json
index 7d232dbf54..d145c25cda 100644
--- a/examples/react/kitchen-sink/package.json
+++ b/examples/react/kitchen-sink/package.json
@@ -9,15 +9,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "immer": "^10.1.1",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/kitchen-sink/postcss.config.mjs b/examples/react/kitchen-sink/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/kitchen-sink/postcss.config.mjs
+++ b/examples/react/kitchen-sink/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/kitchen-sink/src/main.tsx b/examples/react/kitchen-sink/src/main.tsx
index 3465637ce0..e22afc9fc4 100644
--- a/examples/react/kitchen-sink/src/main.tsx
+++ b/examples/react/kitchen-sink/src/main.tsx
@@ -284,7 +284,7 @@ function InvoicesIndexComponent() {
           <InvoiceFields invoice={{} as Invoice} />
           <div>
             <button
-              className="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+              className="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
               disabled={createInvoiceMutation.status === 'pending'}
             >
               {createInvoiceMutation.status === 'pending' ? (
@@ -297,11 +297,11 @@ function InvoicesIndexComponent() {
             </button>
           </div>
           {createInvoiceMutation.status === 'success' ? (
-            <div className="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Created!
             </div>
           ) : createInvoiceMutation.status === 'error' ? (
-            <div className="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to create.
             </div>
           ) : null}
@@ -393,7 +393,7 @@ function InvoiceComponent() {
                   setNotes(e.target.value)
                 }}
                 rows={5}
-                className="shadow w-full p-2 rounded"
+                className="shadow-sm w-full p-2 rounded-sm"
                 placeholder="Write some notes here..."
               />
               <div className="italic text-xs">
@@ -405,7 +405,7 @@ function InvoiceComponent() {
       </div>
       <div>
         <button
-          className="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+          className="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
           disabled={updateInvoiceMutation.status === 'pending'}
         >
           Save
@@ -414,11 +414,11 @@ function InvoiceComponent() {
       {updateInvoiceMutation.variables?.id === invoice.id ? (
         <div key={updateInvoiceMutation.submittedAt}>
           {updateInvoiceMutation.status === 'success' ? (
-            <div className="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Saved!
             </div>
           ) : updateInvoiceMutation.status === 'error' ? (
-            <div className="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div className="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to save.
             </div>
           ) : null}
@@ -520,7 +520,7 @@ function UsersLayoutComponent() {
           <select
             value={sortBy}
             onChange={(e) => setSortBy(e.target.value as UsersViewSortBy)}
-            className="flex-1 border p-1 px-2 rounded"
+            className="flex-1 border p-1 px-2 rounded-sm"
           >
             {['name', 'id', 'email'].map((d) => {
               return <option key={d} value={d} children={d} />
@@ -533,7 +533,7 @@ function UsersLayoutComponent() {
             value={filterDraft}
             onChange={(e) => setFilterDraft(e.target.value)}
             placeholder="Search Names..."
-            className="min-w-0 flex-1 border p-1 px-2 rounded"
+            className="min-w-0 flex-1 border p-1 px-2 rounded-sm"
           />
         </div>
         {filteredUsers.map((user) => {
@@ -676,7 +676,7 @@ function ProfileComponent() {
         Username:<strong>{username}</strong>
       </div>
       <button
-        className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+        className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
         onClick={() => {
           auth.logout()
           router.invalidate()
@@ -728,7 +728,7 @@ function LoginComponent() {
           auth.logout()
           router.invalidate()
         }}
-        className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+        className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
       >
         Log out
       </button>
@@ -743,9 +743,9 @@ function LoginComponent() {
           value={username}
           onChange={(e) => setUsername(e.target.value)}
           placeholder="Username"
-          className="border p-1 px-2 rounded"
+          className="border p-1 px-2 rounded-sm"
         />
-        <button className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded">
+        <button className="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm">
           Login
         </button>
       </form>
@@ -852,11 +852,11 @@ function App() {
 
   return (
     <>
-      <div className="text-xs fixed w-52 shadow-md shadow-black/20 rounded bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
+      <div className="text-xs fixed w-52 shadow-md shadow-black/20 rounded-sm bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
         <div className="p-2 space-y-2">
           <div className="flex gap-2">
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(150)
               }}
@@ -864,7 +864,7 @@ function App() {
               Fast
             </button>
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(500)
               }}
@@ -872,7 +872,7 @@ function App() {
               Fast 3G
             </button>
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(2000)
               }}
@@ -896,7 +896,7 @@ function App() {
         <div className="p-2 space-y-2">
           <div className="flex gap-2">
             <button
-              className="bg-blue-500 text-white rounded p-1 px-2"
+              className="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setPendingMs(1000)
                 setPendingMinMs(500)
@@ -958,7 +958,7 @@ function InvoiceFields({
           name="title"
           defaultValue={invoice.title}
           placeholder="Invoice Title"
-          className="border border-opacity-50 rounded p-2 w-full"
+          className="border border-opacity-50 rounded-sm p-2 w-full"
           disabled={disabled}
         />
       </h2>
@@ -968,7 +968,7 @@ function InvoiceFields({
           defaultValue={invoice.body}
           rows={6}
           placeholder="Invoice Body..."
-          className="border border-opacity-50 p-2 rounded w-full"
+          className="border border-opacity-50 p-2 rounded-sm w-full"
           disabled={disabled}
         />
       </div>
diff --git a/examples/react/kitchen-sink/src/styles.css b/examples/react/kitchen-sink/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/kitchen-sink/src/styles.css
+++ b/examples/react/kitchen-sink/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/kitchen-sink/tailwind.config.mjs b/examples/react/kitchen-sink/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/kitchen-sink/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json
index 2930193e72..f500c62e16 100644
--- a/examples/react/large-file-based/package.json
+++ b/examples/react/large-file-based/package.json
@@ -11,16 +11,16 @@
     "test:types": "tsc --extendedDiagnostics"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/large-file-based/postcss.config.mjs b/examples/react/large-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/large-file-based/postcss.config.mjs
+++ b/examples/react/large-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/large-file-based/src/styles.css b/examples/react/large-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/large-file-based/src/styles.css
+++ b/examples/react/large-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/large-file-based/tailwind.config.mjs b/examples/react/large-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/large-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json
index cee84c630c..63c78f4f0d 100644
--- a/examples/react/location-masking/package.json
+++ b/examples/react/location-masking/package.json
@@ -10,15 +10,15 @@
   },
   "dependencies": {
     "@radix-ui/react-dialog": "^1.1.6",
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@types/react": "^19.0.8",
diff --git a/examples/react/location-masking/postcss.config.mjs b/examples/react/location-masking/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/location-masking/postcss.config.mjs
+++ b/examples/react/location-masking/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/location-masking/src/main.tsx b/examples/react/location-masking/src/main.tsx
index cabd014924..0970e4195f 100644
--- a/examples/react/location-masking/src/main.tsx
+++ b/examples/react/location-masking/src/main.tsx
@@ -144,7 +144,7 @@ function PhotosRoute() {
 
   return (
     <div className="p-2 space-y-2">
-      <ul className="grid [grid-template-columns:repeat(auto-fill,minmax(200px,1fr))] gap-2">
+      <ul className="grid grid-cols-[repeat(auto-fill,minmax(200px,1fr))] gap-2">
         {[
           ...photos,
           { id: 'i-do-not-exist', title: 'Missing Photo Test', url: '' },
@@ -164,7 +164,7 @@ function PhotosRoute() {
                 //     photoId: photo.id,
                 //   },
                 // }}
-                className="whitespace-nowrap border rounded-lg shadow-sm flex items-center hover:shadow-lg text-blue-600 hover:scale-[1.1] overflow-hidden transition-all"
+                className="whitespace-nowrap border rounded-lg shadow-xs flex items-center hover:shadow-lg text-blue-600 hover:scale-[1.1] overflow-hidden transition-all"
               >
                 <img src={photo.url} alt={photo.title} className="max-w-full" />
               </Link>
diff --git a/examples/react/location-masking/src/styles.css b/examples/react/location-masking/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/location-masking/src/styles.css
+++ b/examples/react/location-masking/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/location-masking/tailwind.config.mjs b/examples/react/location-masking/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/location-masking/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json
index f59bef6226..99806cdac7 100644
--- a/examples/react/navigation-blocking/package.json
+++ b/examples/react/navigation-blocking/package.json
@@ -9,15 +9,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@types/react": "^19.0.8",
diff --git a/examples/react/navigation-blocking/postcss.config.mjs b/examples/react/navigation-blocking/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/navigation-blocking/postcss.config.mjs
+++ b/examples/react/navigation-blocking/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/navigation-blocking/src/main.tsx b/examples/react/navigation-blocking/src/main.tsx
index 92cf3bd7c9..0524070249 100644
--- a/examples/react/navigation-blocking/src/main.tsx
+++ b/examples/react/navigation-blocking/src/main.tsx
@@ -93,13 +93,13 @@ function RootComponent() {
             Are you sure you want to leave editor 1 for /foo/123?hello=world ?
           </div>
           <button
-            className="bg-lime-500 text-white rounded p-1 px-2 mr-2"
+            className="bg-lime-500 text-white rounded-sm p-1 px-2 mr-2"
             onClick={proceed}
           >
             YES
           </button>
           <button
-            className="bg-red-500 text-white rounded p-1 px-2"
+            className="bg-red-500 text-white rounded-sm p-1 px-2"
             onClick={reset}
           >
             NO
@@ -170,13 +170,13 @@ function Editor1Component() {
             You are going from {current.pathname} to {next.pathname}
           </div>
           <button
-            className="bg-lime-500 text-white rounded p-1 px-2 mr-2"
+            className="bg-lime-500 text-white rounded-sm p-1 px-2 mr-2"
             onClick={proceed}
           >
             YES
           </button>
           <button
-            className="bg-red-500 text-white rounded p-1 px-2"
+            className="bg-red-500 text-white rounded-sm p-1 px-2"
             onClick={reset}
           >
             NO
diff --git a/examples/react/navigation-blocking/src/styles.css b/examples/react/navigation-blocking/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/navigation-blocking/src/styles.css
+++ b/examples/react/navigation-blocking/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/navigation-blocking/tailwind.config.mjs b/examples/react/navigation-blocking/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/navigation-blocking/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json
index 7255d09800..76b6534fa7 100644
--- a/examples/react/quickstart-file-based/package.json
+++ b/examples/react/quickstart-file-based/package.json
@@ -9,15 +9,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/quickstart-file-based/postcss.config.mjs b/examples/react/quickstart-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/quickstart-file-based/postcss.config.mjs
+++ b/examples/react/quickstart-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/quickstart-file-based/src/styles.css b/examples/react/quickstart-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/quickstart-file-based/src/styles.css
+++ b/examples/react/quickstart-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/quickstart-file-based/tailwind.config.mjs b/examples/react/quickstart-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/quickstart-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json
index 131457dd9e..262f16aff6 100644
--- a/examples/react/quickstart-rspack-file-based/package.json
+++ b/examples/react/quickstart-rspack-file-based/package.json
@@ -8,13 +8,13 @@
     "preview": "rsbuild preview"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@rsbuild/core": "1.2.4",
diff --git a/examples/react/quickstart-rspack-file-based/postcss.config.mjs b/examples/react/quickstart-rspack-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/quickstart-rspack-file-based/postcss.config.mjs
+++ b/examples/react/quickstart-rspack-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/quickstart-rspack-file-based/src/styles.css b/examples/react/quickstart-rspack-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/quickstart-rspack-file-based/src/styles.css
+++ b/examples/react/quickstart-rspack-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/quickstart-rspack-file-based/tailwind.config.mjs b/examples/react/quickstart-rspack-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/quickstart-rspack-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json
index d4ea600c4f..17f8f6b3b7 100644
--- a/examples/react/quickstart/package.json
+++ b/examples/react/quickstart/package.json
@@ -9,13 +9,13 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@types/react": "^19.0.8",
diff --git a/examples/react/quickstart/postcss.config.mjs b/examples/react/quickstart/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/quickstart/postcss.config.mjs
+++ b/examples/react/quickstart/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/quickstart/src/styles.css b/examples/react/quickstart/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/quickstart/src/styles.css
+++ b/examples/react/quickstart/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/quickstart/tailwind.config.mjs b/examples/react/quickstart/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/quickstart/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/router-monorepo-react-query/packages/app/package.json b/examples/react/router-monorepo-react-query/packages/app/package.json
index 0fbd125103..c23fd92800 100644
--- a/examples/react/router-monorepo-react-query/packages/app/package.json
+++ b/examples/react/router-monorepo-react-query/packages/app/package.json
@@ -9,21 +9,20 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-query": "^5.66.0",
     "@router-mono-react-query/post-feature": "workspace:*",
     "@router-mono-react-query/router": "workspace:*",
+    "@tanstack/react-query": "^5.66.0",
     "react": "^19.0.0",
     "react-dom": "^19.0.0"
   },
   "devDependencies": {
+    "@tanstack/react-router-devtools": "^1.133.22",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "typescript": "^5.7.2",
-    "@tanstack/react-router-devtools": "^1.133.22",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
+    "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-plugin-dts": "^4.5.4"
   },
diff --git a/examples/react/router-monorepo-react-query/packages/app/postcss.config.js b/examples/react/router-monorepo-react-query/packages/app/postcss.config.js
index 61e0dbc36d..5cf30693dd 100644
--- a/examples/react/router-monorepo-react-query/packages/app/postcss.config.js
+++ b/examples/react/router-monorepo-react-query/packages/app/postcss.config.js
@@ -3,6 +3,5 @@ export default {
     tailwindcss: {
       config: 'tailwind.config.js',
     },
-    autoprefixer: {},
   },
 }
diff --git a/examples/react/router-monorepo-react-query/packages/app/src/style.css b/examples/react/router-monorepo-react-query/packages/app/src/style.css
index 0b8e317099..9784181c41 100644
--- a/examples/react/router-monorepo-react-query/packages/app/src/style.css
+++ b/examples/react/router-monorepo-react-query/packages/app/src/style.css
@@ -1,6 +1,24 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+@source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/router-monorepo-react-query/packages/app/tailwind.config.js b/examples/react/router-monorepo-react-query/packages/app/tailwind.config.js
deleted file mode 100644
index 33c30f731f..0000000000
--- a/examples/react/router-monorepo-react-query/packages/app/tailwind.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: [
-    './src/**/*.{js,jsx,ts,tsx}',
-    '../post-feature/src/**/*.{js,jsx,ts,tsx}',
-  ],
-}
diff --git a/examples/react/router-monorepo-simple-lazy/packages/app/package.json b/examples/react/router-monorepo-simple-lazy/packages/app/package.json
index 2f11bae110..858e9b0cce 100644
--- a/examples/react/router-monorepo-simple-lazy/packages/app/package.json
+++ b/examples/react/router-monorepo-simple-lazy/packages/app/package.json
@@ -15,14 +15,13 @@
     "react-dom": "^19.0.0"
   },
   "devDependencies": {
+    "@tanstack/react-router-devtools": "^1.133.22",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "typescript": "^5.7.2",
-    "@tanstack/react-router-devtools": "^1.133.22",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
+    "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-plugin-dts": "^4.5.4"
   },
diff --git a/examples/react/router-monorepo-simple-lazy/packages/app/postcss.config.js b/examples/react/router-monorepo-simple-lazy/packages/app/postcss.config.js
index 61e0dbc36d..5cf30693dd 100644
--- a/examples/react/router-monorepo-simple-lazy/packages/app/postcss.config.js
+++ b/examples/react/router-monorepo-simple-lazy/packages/app/postcss.config.js
@@ -3,6 +3,5 @@ export default {
     tailwindcss: {
       config: 'tailwind.config.js',
     },
-    autoprefixer: {},
   },
 }
diff --git a/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css b/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
index 0b8e317099..9784181c41 100644
--- a/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
+++ b/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
@@ -1,6 +1,24 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+@source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/router-monorepo-simple-lazy/packages/app/tailwind.config.js b/examples/react/router-monorepo-simple-lazy/packages/app/tailwind.config.js
deleted file mode 100644
index 33c30f731f..0000000000
--- a/examples/react/router-monorepo-simple-lazy/packages/app/tailwind.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: [
-    './src/**/*.{js,jsx,ts,tsx}',
-    '../post-feature/src/**/*.{js,jsx,ts,tsx}',
-  ],
-}
diff --git a/examples/react/router-monorepo-simple/packages/app/package.json b/examples/react/router-monorepo-simple/packages/app/package.json
index 22167ea083..c26d3c8902 100644
--- a/examples/react/router-monorepo-simple/packages/app/package.json
+++ b/examples/react/router-monorepo-simple/packages/app/package.json
@@ -15,15 +15,14 @@
     "react-dom": "^19.0.0"
   },
   "devDependencies": {
+    "@tanstack/react-router-devtools": "^1.133.22",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
+    "postcss": "^8.5.1",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
-    "@tanstack/react-router-devtools": "^1.133.22",
     "vite": "^7.1.7",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
     "vite-plugin-dts": "^4.5.4"
   },
   "nx": {
diff --git a/examples/react/router-monorepo-simple/packages/app/postcss.config.js b/examples/react/router-monorepo-simple/packages/app/postcss.config.js
index 61e0dbc36d..5cf30693dd 100644
--- a/examples/react/router-monorepo-simple/packages/app/postcss.config.js
+++ b/examples/react/router-monorepo-simple/packages/app/postcss.config.js
@@ -3,6 +3,5 @@ export default {
     tailwindcss: {
       config: 'tailwind.config.js',
     },
-    autoprefixer: {},
   },
 }
diff --git a/examples/react/router-monorepo-simple/packages/app/src/style.css b/examples/react/router-monorepo-simple/packages/app/src/style.css
index 0b8e317099..9784181c41 100644
--- a/examples/react/router-monorepo-simple/packages/app/src/style.css
+++ b/examples/react/router-monorepo-simple/packages/app/src/style.css
@@ -1,6 +1,24 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+@source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/router-monorepo-simple/packages/app/tailwind.config.js b/examples/react/router-monorepo-simple/packages/app/tailwind.config.js
deleted file mode 100644
index 33c30f731f..0000000000
--- a/examples/react/router-monorepo-simple/packages/app/tailwind.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: [
-    './src/**/*.{js,jsx,ts,tsx}',
-    '../post-feature/src/**/*.{js,jsx,ts,tsx}',
-  ],
-}
diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json
index b7b79f08e6..a695269ff0 100644
--- a/examples/react/scroll-restoration/package.json
+++ b/examples/react/scroll-restoration/package.json
@@ -9,14 +9,14 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
-    "@tanstack/react-virtual": "^3.13.0",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "@tanstack/react-virtual": "^3.13.0",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@types/react": "^19.0.8",
diff --git a/examples/react/scroll-restoration/postcss.config.mjs b/examples/react/scroll-restoration/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/scroll-restoration/postcss.config.mjs
+++ b/examples/react/scroll-restoration/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/scroll-restoration/src/styles.css b/examples/react/scroll-restoration/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/scroll-restoration/src/styles.css
+++ b/examples/react/scroll-restoration/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/scroll-restoration/tailwind.config.mjs b/examples/react/scroll-restoration/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/scroll-restoration/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json
index a3e2a48d4d..9456ba48e2 100644
--- a/examples/react/search-validator-adapters/package.json
+++ b/examples/react/search-validator-adapters/package.json
@@ -10,6 +10,7 @@
     "test:unit": "vitest"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/arktype-adapter": "^1.133.22",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
@@ -18,11 +19,10 @@
     "@tanstack/valibot-adapter": "^1.133.22",
     "@tanstack/zod-adapter": "^1.133.22",
     "arktype": "^2.1.7",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "valibot": "1.0.0-beta.15",
     "zod": "^3.24.2"
   },
diff --git a/examples/react/search-validator-adapters/postcss.config.mjs b/examples/react/search-validator-adapters/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/search-validator-adapters/postcss.config.mjs
+++ b/examples/react/search-validator-adapters/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/search-validator-adapters/src/components/Search.tsx b/examples/react/search-validator-adapters/src/components/Search.tsx
index a7e799aa3e..54a8ba0bc0 100644
--- a/examples/react/search-validator-adapters/src/components/Search.tsx
+++ b/examples/react/search-validator-adapters/src/components/Search.tsx
@@ -9,7 +9,7 @@ export const Search = ({ search, onChange }: SearchProps) => {
       <label>Search</label>
       <input
         type="search"
-        className="border p-1 px-2 rounded"
+        className="border p-1 px-2 rounded-sm"
         value={search}
         onChange={(e) => onChange(e.target.value)}
       ></input>
diff --git a/examples/react/search-validator-adapters/src/styles.css b/examples/react/search-validator-adapters/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/search-validator-adapters/src/styles.css
+++ b/examples/react/search-validator-adapters/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/search-validator-adapters/tailwind.config.mjs b/examples/react/search-validator-adapters/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/search-validator-adapters/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json
index 09bb2fe120..45bba5b51c 100644
--- a/examples/react/start-basic-auth/package.json
+++ b/examples/react/start-basic-auth/package.json
@@ -21,13 +21,13 @@
     "tailwind-merge": "^2.6.0"
   },
   "devDependencies": {
-    "@vitejs/plugin-react": "^4.3.4",
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
+    "@vitejs/plugin-react": "^4.3.4",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/examples/react/start-basic-auth/postcss.config.mjs b/examples/react/start-basic-auth/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/start-basic-auth/postcss.config.mjs
+++ b/examples/react/start-basic-auth/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/start-basic-auth/src/components/Auth.tsx b/examples/react/start-basic-auth/src/components/Auth.tsx
index eae24e06d8..39a4997346 100644
--- a/examples/react/start-basic-auth/src/components/Auth.tsx
+++ b/examples/react/start-basic-auth/src/components/Auth.tsx
@@ -28,7 +28,7 @@ export function Auth({
               type="email"
               name="email"
               id="email"
-              className="px-2 py-1 w-full rounded border border-gray-500/20 bg-white dark:bg-gray-800"
+              className="px-2 py-1 w-full rounded-sm border border-gray-500/20 bg-white dark:bg-gray-800"
             />
           </div>
           <div>
@@ -39,12 +39,12 @@ export function Auth({
               type="password"
               name="password"
               id="password"
-              className="px-2 py-1 w-full rounded border border-gray-500/20 bg-white dark:bg-gray-800"
+              className="px-2 py-1 w-full rounded-sm border border-gray-500/20 bg-white dark:bg-gray-800"
             />
           </div>
           <button
             type="submit"
-            className="w-full bg-cyan-600 text-white rounded py-2 font-black uppercase"
+            className="w-full bg-cyan-600 text-white rounded-sm py-2 font-black uppercase"
             disabled={status === 'pending'}
           >
             {status === 'pending' ? '...' : actionText}
diff --git a/examples/react/start-basic-auth/src/components/DefaultCatchBoundary.tsx b/examples/react/start-basic-auth/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/examples/react/start-basic-auth/src/components/DefaultCatchBoundary.tsx
+++ b/examples/react/start-basic-auth/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/react/start-basic-auth/src/components/NotFound.tsx b/examples/react/start-basic-auth/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/examples/react/start-basic-auth/src/components/NotFound.tsx
+++ b/examples/react/start-basic-auth/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/react/start-basic-auth/src/styles/app.css b/examples/react/start-basic-auth/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/react/start-basic-auth/src/styles/app.css
+++ b/examples/react/start-basic-auth/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/react/start-basic-auth/tailwind.config.mjs b/examples/react/start-basic-auth/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/react/start-basic-auth/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/react/start-basic-cloudflare/package.json b/examples/react/start-basic-cloudflare/package.json
index 7790042b18..75754ce9ff 100644
--- a/examples/react/start-basic-cloudflare/package.json
+++ b/examples/react/start-basic-cloudflare/package.json
@@ -20,13 +20,13 @@
   },
   "devDependencies": {
     "@cloudflare/vite-plugin": "^1.13.7",
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.6.0",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4",
diff --git a/examples/react/start-basic-cloudflare/postcss.config.mjs b/examples/react/start-basic-cloudflare/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/start-basic-cloudflare/postcss.config.mjs
+++ b/examples/react/start-basic-cloudflare/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/start-basic-cloudflare/src/components/DefaultCatchBoundary.tsx b/examples/react/start-basic-cloudflare/src/components/DefaultCatchBoundary.tsx
index f750e7bd2b..260c2ea41f 100644
--- a/examples/react/start-basic-cloudflare/src/components/DefaultCatchBoundary.tsx
+++ b/examples/react/start-basic-cloudflare/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/react/start-basic-cloudflare/src/components/NotFound.tsx b/examples/react/start-basic-cloudflare/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/examples/react/start-basic-cloudflare/src/components/NotFound.tsx
+++ b/examples/react/start-basic-cloudflare/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/react/start-basic-cloudflare/src/styles/app.css b/examples/react/start-basic-cloudflare/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/react/start-basic-cloudflare/src/styles/app.css
+++ b/examples/react/start-basic-cloudflare/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/react/start-basic-cloudflare/tailwind.config.mjs b/examples/react/start-basic-cloudflare/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/react/start-basic-cloudflare/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json
index 7b9c259774..6e693fbee0 100644
--- a/examples/react/start-basic-react-query/package.json
+++ b/examples/react/start-basic-react-query/package.json
@@ -12,8 +12,8 @@
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-query-devtools": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
-    "@tanstack/react-router-ssr-query": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "@tanstack/react-router-ssr-query": "^1.133.22",
     "@tanstack/react-start": "^1.133.22",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
@@ -21,13 +21,13 @@
     "tailwind-merge": "^2.6.0"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/examples/react/start-basic-react-query/postcss.config.mjs b/examples/react/start-basic-react-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/start-basic-react-query/postcss.config.mjs
+++ b/examples/react/start-basic-react-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/start-basic-react-query/src/components/DefaultCatchBoundary.tsx b/examples/react/start-basic-react-query/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/examples/react/start-basic-react-query/src/components/DefaultCatchBoundary.tsx
+++ b/examples/react/start-basic-react-query/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/react/start-basic-react-query/src/components/NotFound.tsx b/examples/react/start-basic-react-query/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/examples/react/start-basic-react-query/src/components/NotFound.tsx
+++ b/examples/react/start-basic-react-query/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/react/start-basic-react-query/src/styles/app.css b/examples/react/start-basic-react-query/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/react/start-basic-react-query/src/styles/app.css
+++ b/examples/react/start-basic-react-query/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/react/start-basic-react-query/tailwind.config.mjs b/examples/react/start-basic-react-query/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/react/start-basic-react-query/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/react/start-basic-static/package.json b/examples/react/start-basic-static/package.json
index 60c003bcfa..bbd169887b 100644
--- a/examples/react/start-basic-static/package.json
+++ b/examples/react/start-basic-static/package.json
@@ -24,7 +24,7 @@
     "@types/react-dom": "^19.0.3",
     "autoprefixer": "^10.4.20",
     "postcss": "^8.4.49",
-    "tailwindcss": "^3.4.15",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.6.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.3"
diff --git a/examples/react/start-basic-static/src/components/DefaultCatchBoundary.tsx b/examples/react/start-basic-static/src/components/DefaultCatchBoundary.tsx
index f750e7bd2b..260c2ea41f 100644
--- a/examples/react/start-basic-static/src/components/DefaultCatchBoundary.tsx
+++ b/examples/react/start-basic-static/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/react/start-basic-static/src/components/NotFound.tsx b/examples/react/start-basic-static/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/examples/react/start-basic-static/src/components/NotFound.tsx
+++ b/examples/react/start-basic-static/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/react/start-basic-static/src/styles/app.css b/examples/react/start-basic-static/src/styles/app.css
index d6426ccb72..9437838dc9 100644
--- a/examples/react/start-basic-static/src/styles/app.css
+++ b/examples/react/start-basic-static/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html,
diff --git a/examples/react/start-basic-static/tailwind.config.cjs b/examples/react/start-basic-static/tailwind.config.cjs
deleted file mode 100644
index 10c9224f8c..0000000000
--- a/examples/react/start-basic-static/tailwind.config.cjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-module.exports = {
-  content: ['./src/**/*.{js,ts,jsx,tsx}'],
-}
diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json
index 4f4371a6f4..80de64eca4 100644
--- a/examples/react/start-basic/package.json
+++ b/examples/react/start-basic/package.json
@@ -18,13 +18,13 @@
     "zod": "^3.24.2"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.6.0",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/examples/react/start-basic/postcss.config.mjs b/examples/react/start-basic/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/start-basic/postcss.config.mjs
+++ b/examples/react/start-basic/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/start-basic/src/components/DefaultCatchBoundary.tsx b/examples/react/start-basic/src/components/DefaultCatchBoundary.tsx
index f750e7bd2b..260c2ea41f 100644
--- a/examples/react/start-basic/src/components/DefaultCatchBoundary.tsx
+++ b/examples/react/start-basic/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/react/start-basic/src/components/NotFound.tsx b/examples/react/start-basic/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/examples/react/start-basic/src/components/NotFound.tsx
+++ b/examples/react/start-basic/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/react/start-basic/src/styles/app.css b/examples/react/start-basic/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/react/start-basic/src/styles/app.css
+++ b/examples/react/start-basic/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/react/start-basic/tailwind.config.mjs b/examples/react/start-basic/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/react/start-basic/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json
index adfeedef46..b2503a66cc 100644
--- a/examples/react/start-clerk-basic/package.json
+++ b/examples/react/start-clerk-basic/package.json
@@ -17,16 +17,16 @@
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "tailwind-merge": "^2.6.0",
-    "srvx": "0.8.15"
+    "srvx": "0.8.15",
+    "tailwind-merge": "^2.6.0"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/examples/react/start-clerk-basic/postcss.config.mjs b/examples/react/start-clerk-basic/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/start-clerk-basic/postcss.config.mjs
+++ b/examples/react/start-clerk-basic/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/start-clerk-basic/src/components/DefaultCatchBoundary.tsx b/examples/react/start-clerk-basic/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/examples/react/start-clerk-basic/src/components/DefaultCatchBoundary.tsx
+++ b/examples/react/start-clerk-basic/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/react/start-clerk-basic/src/components/NotFound.tsx b/examples/react/start-clerk-basic/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/examples/react/start-clerk-basic/src/components/NotFound.tsx
+++ b/examples/react/start-clerk-basic/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/react/start-clerk-basic/src/styles/app.css b/examples/react/start-clerk-basic/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/react/start-clerk-basic/src/styles/app.css
+++ b/examples/react/start-clerk-basic/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/react/start-clerk-basic/tailwind.config.mjs b/examples/react/start-clerk-basic/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/react/start-clerk-basic/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json
index ae6cf7e597..727d5263f9 100644
--- a/examples/react/start-convex-trellaux/package.json
+++ b/examples/react/start-convex-trellaux/package.json
@@ -15,8 +15,8 @@
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-query-devtools": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
-    "@tanstack/react-router-ssr-query": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "@tanstack/react-router-ssr-query": "^1.133.22",
     "@tanstack/react-start": "^1.133.22",
     "concurrently": "^8.2.2",
     "convex": "^1.19.0",
@@ -31,13 +31,13 @@
     "zod": "^3.24.2"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
+    "@types/node": "22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
-    "@types/node": "22.10.2",
     "@vitejs/plugin-react": "^4.3.4",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/examples/react/start-convex-trellaux/postcss.config.mjs b/examples/react/start-convex-trellaux/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/start-convex-trellaux/postcss.config.mjs
+++ b/examples/react/start-convex-trellaux/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/start-convex-trellaux/src/components/Board.tsx b/examples/react/start-convex-trellaux/src/components/Board.tsx
index f7714d8172..327603e204 100644
--- a/examples/react/start-convex-trellaux/src/components/Board.tsx
+++ b/examples/react/start-convex-trellaux/src/components/Board.tsx
@@ -56,7 +56,7 @@ export function Board({ boardId }: { boardId: string }) {
 
   return (
     <div
-      className="flex-grow min-h-0 flex flex-col overflow-x-scroll"
+      className="grow min-h-0 flex flex-col overflow-x-scroll"
       ref={scrollContainerRef}
       style={{ backgroundColor: board.color }}
     >
@@ -82,7 +82,7 @@ export function Board({ boardId }: { boardId: string }) {
         />
       </h1>
 
-      <div className="flex flex-grow min-h-0 h-full items-start px-8 pb-4 w-fit">
+      <div className="flex grow min-h-0 h-full items-start px-8 pb-4 w-fit">
         {columns.map((col, index) => {
           return (
             <ColumnComponent
@@ -110,7 +110,7 @@ export function Board({ boardId }: { boardId: string }) {
       </div>
 
       {/* trolling you to add some extra margin to the right of the container with a whole dang div */}
-      <div data-lol className="w-8 h-1 flex-shrink-0" />
+      <div data-lol className="w-8 h-1 shrink-0" />
     </div>
   )
 }
diff --git a/examples/react/start-convex-trellaux/src/components/Card.tsx b/examples/react/start-convex-trellaux/src/components/Card.tsx
index cb0c508d89..eacf87d759 100644
--- a/examples/react/start-convex-trellaux/src/components/Card.tsx
+++ b/examples/react/start-convex-trellaux/src/components/Card.tsx
@@ -82,7 +82,7 @@ export const Card = forwardRef<HTMLLIElement, CardProps>(
       >
         <div
           draggable
-          className="bg-white shadow shadow-slate-300 border-slate-300 text-sm rounded-lg w-full py-1 px-2 relative"
+          className="bg-white shadow-sm shadow-slate-300 border-slate-300 text-sm rounded-lg w-full py-1 px-2 relative"
           onDragStart={(event) => {
             event.dataTransfer.effectAllowed = 'move'
             event.dataTransfer.setData(
diff --git a/examples/react/start-convex-trellaux/src/components/Column.tsx b/examples/react/start-convex-trellaux/src/components/Column.tsx
index 6f248103df..dd90e02ee7 100644
--- a/examples/react/start-convex-trellaux/src/components/Column.tsx
+++ b/examples/react/start-convex-trellaux/src/components/Column.tsx
@@ -134,7 +134,7 @@ export const Column = forwardRef<HTMLDivElement, ColumnProps>(
           setAcceptColumnDrop('none')
         }}
         className={twMerge(
-          'border-l-transparent border-r-transparent border-l-2 border-r-2 -mr-[2px] last:mr-0 cursor-grab active:cursor-grabbing px-2 flex-shrink-0 flex flex-col  max-h-full',
+          'border-l-transparent border-r-transparent border-l-2 border-r-2 -mr-[2px] last:mr-0 cursor-grab active:cursor-grabbing px-2 shrink-0 flex flex-col  max-h-full',
           acceptColumnDrop === 'left'
             ? 'border-l-red-500 border-r-transparent'
             : acceptColumnDrop === 'right'
@@ -153,8 +153,8 @@ export const Column = forwardRef<HTMLDivElement, ColumnProps>(
           }}
           {...(!items.length ? cardDndProps : {})}
           className={twMerge(
-            'flex-shrink-0 flex flex-col max-h-full w-80 border-slate-400 rounded-xl shadow-sm shadow-slate-400 bg-slate-100 relative',
-            acceptCardDrop && `outline outline-2 outline-red-500`,
+            'shrink-0 flex flex-col max-h-full w-80 border-slate-400 rounded-xl shadow-xs shadow-slate-400 bg-slate-100 relative',
+            acceptCardDrop && `outline-solid outline-2 outline-red-500`,
           )}
         >
           <div className="p-2" {...(items.length ? cardDndProps : {})}>
@@ -182,7 +182,7 @@ export const Column = forwardRef<HTMLDivElement, ColumnProps>(
             />
           </div>
 
-          <ul ref={listRef} className="flex-grow overflow-auto">
+          <ul ref={listRef} className="grow overflow-auto">
             {sortedItems.map((item, index, items) => (
               <Card
                 ref={itemRef}
diff --git a/examples/react/start-convex-trellaux/src/components/DefaultCatchBoundary.tsx b/examples/react/start-convex-trellaux/src/components/DefaultCatchBoundary.tsx
index 15f316681c..ef2daa1ea1 100644
--- a/examples/react/start-convex-trellaux/src/components/DefaultCatchBoundary.tsx
+++ b/examples/react/start-convex-trellaux/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/react/start-convex-trellaux/src/components/NewCard.tsx b/examples/react/start-convex-trellaux/src/components/NewCard.tsx
index 2a1c306ead..47cadcf5ae 100644
--- a/examples/react/start-convex-trellaux/src/components/NewCard.tsx
+++ b/examples/react/start-convex-trellaux/src/components/NewCard.tsx
@@ -62,7 +62,7 @@ export function NewCard({
         ref={textAreaRef}
         name={ItemMutationFields.title.name}
         placeholder="Enter a title for this card"
-        className="outline-none shadow text-sm rounded-lg w-full py-1 px-2 resize-none placeholder:text-sm placeholder:text-slate-500 h-14"
+        className="outline-hidden shadow-sm text-sm rounded-lg w-full py-1 px-2 resize-none placeholder:text-sm placeholder:text-slate-500 h-14"
         onKeyDown={(event) => {
           if (event.key === 'Enter') {
             event.preventDefault()
diff --git a/examples/react/start-convex-trellaux/src/components/NewColumn.tsx b/examples/react/start-convex-trellaux/src/components/NewColumn.tsx
index 34a024a86a..50a7d608c5 100644
--- a/examples/react/start-convex-trellaux/src/components/NewColumn.tsx
+++ b/examples/react/start-convex-trellaux/src/components/NewColumn.tsx
@@ -22,7 +22,7 @@ export function NewColumn({
 
   return editing ? (
     <form
-      className="ml-2 p-2 flex-shrink-0 flex flex-col gap-5 overflow-hidden max-h-full w-80 border rounded-xl shadow bg-slate-100"
+      className="ml-2 p-2 shrink-0 flex flex-col gap-5 overflow-hidden max-h-full w-80 border rounded-xl shadow-sm bg-slate-100"
       onSubmit={(event) => {
         event.preventDefault()
         invariant(inputRef.current, 'missing input ref')
@@ -62,7 +62,7 @@ export function NewColumn({
         setEditing(true)
       }}
       aria-label="Add new column"
-      className="ml-2 flex-shrink-0 flex justify-center h-16 w-16 bg-black hover:bg-white bg-opacity-10 hover:bg-opacity-5 rounded-xl"
+      className="ml-2 shrink-0 flex justify-center h-16 w-16 bg-black hover:bg-white bg-opacity-10 hover:bg-opacity-5 rounded-xl"
     >
       <Icon name="plus" size="xl" />
     </button>
diff --git a/examples/react/start-convex-trellaux/src/components/NotFound.tsx b/examples/react/start-convex-trellaux/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/examples/react/start-convex-trellaux/src/components/NotFound.tsx
+++ b/examples/react/start-convex-trellaux/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/react/start-convex-trellaux/src/routes/__root.tsx b/examples/react/start-convex-trellaux/src/routes/__root.tsx
index 04ffa3d5f4..ebce9ecea8 100644
--- a/examples/react/start-convex-trellaux/src/routes/__root.tsx
+++ b/examples/react/start-convex-trellaux/src/routes/__root.tsx
@@ -129,7 +129,7 @@ function RootDocument({ children }: { children: React.ReactNode }) {
             </div>
           </div>
 
-          <div className="flex-grow min-h-0 h-full flex flex-col">
+          <div className="grow min-h-0 h-full flex flex-col">
             {children}
             <Toaster />
           </div>
diff --git a/examples/react/start-convex-trellaux/src/styles/app.css b/examples/react/start-convex-trellaux/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/react/start-convex-trellaux/src/styles/app.css
+++ b/examples/react/start-convex-trellaux/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/react/start-convex-trellaux/tailwind.config.mjs b/examples/react/start-convex-trellaux/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/react/start-convex-trellaux/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/react/start-large/package.json b/examples/react/start-large/package.json
index 159a78a580..31c78f7d67 100644
--- a/examples/react/start-large/package.json
+++ b/examples/react/start-large/package.json
@@ -22,13 +22,13 @@
     "valibot": "^1.0.0-beta.15"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/examples/react/start-large/postcss.config.mjs b/examples/react/start-large/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/start-large/postcss.config.mjs
+++ b/examples/react/start-large/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/start-large/src/styles.css b/examples/react/start-large/src/styles.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/react/start-large/src/styles.css
+++ b/examples/react/start-large/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/react/start-large/tailwind.config.mjs b/examples/react/start-large/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/react/start-large/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json
index 935baca779..aefb6020d8 100644
--- a/examples/react/start-supabase-basic/package.json
+++ b/examples/react/start-supabase-basic/package.json
@@ -23,12 +23,12 @@
     "redaxios": "^0.5.1"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/examples/react/start-supabase-basic/postcss.config.mjs b/examples/react/start-supabase-basic/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/start-supabase-basic/postcss.config.mjs
+++ b/examples/react/start-supabase-basic/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/start-supabase-basic/src/components/Auth.tsx b/examples/react/start-supabase-basic/src/components/Auth.tsx
index 7504f8649b..8bac108c75 100644
--- a/examples/react/start-supabase-basic/src/components/Auth.tsx
+++ b/examples/react/start-supabase-basic/src/components/Auth.tsx
@@ -28,7 +28,7 @@ export function Auth({
               type="email"
               name="email"
               id="email"
-              className="px-2 py-1 w-full rounded border border-gray-500/20 bg-white dark:bg-gray-800"
+              className="px-2 py-1 w-full rounded-sm border border-gray-500/20 bg-white dark:bg-gray-800"
             />
           </div>
           <div>
@@ -39,12 +39,12 @@ export function Auth({
               type="password"
               name="password"
               id="password"
-              className="px-2 py-1 w-full rounded border border-gray-500/20 bg-white dark:bg-gray-800"
+              className="px-2 py-1 w-full rounded-sm border border-gray-500/20 bg-white dark:bg-gray-800"
             />
           </div>
           <button
             type="submit"
-            className="w-full bg-cyan-600 text-white rounded py-2 font-black uppercase"
+            className="w-full bg-cyan-600 text-white rounded-sm py-2 font-black uppercase"
             disabled={status === 'pending'}
           >
             {status === 'pending' ? '...' : actionText}
diff --git a/examples/react/start-supabase-basic/src/components/DefaultCatchBoundary.tsx b/examples/react/start-supabase-basic/src/components/DefaultCatchBoundary.tsx
index e14ef8d6c1..30e64b85b9 100644
--- a/examples/react/start-supabase-basic/src/components/DefaultCatchBoundary.tsx
+++ b/examples/react/start-supabase-basic/src/components/DefaultCatchBoundary.tsx
@@ -25,21 +25,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/react/start-supabase-basic/src/components/NotFound.tsx b/examples/react/start-supabase-basic/src/components/NotFound.tsx
index 68c83d0973..22348fa94f 100644
--- a/examples/react/start-supabase-basic/src/components/NotFound.tsx
+++ b/examples/react/start-supabase-basic/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: React.ReactNode }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/react/start-supabase-basic/src/styles/app.css b/examples/react/start-supabase-basic/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/react/start-supabase-basic/src/styles/app.css
+++ b/examples/react/start-supabase-basic/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/react/start-supabase-basic/tailwind.config.mjs b/examples/react/start-supabase-basic/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/react/start-supabase-basic/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json
index 0e98a3c706..3614ef4f6d 100644
--- a/examples/react/start-trellaux/package.json
+++ b/examples/react/start-trellaux/package.json
@@ -12,8 +12,8 @@
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-query-devtools": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
-    "@tanstack/react-router-ssr-query": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
+    "@tanstack/react-router-ssr-query": "^1.133.22",
     "@tanstack/react-start": "^1.133.22",
     "ky": "^1.7.4",
     "msw": "^2.7.0",
@@ -26,13 +26,13 @@
     "zod": "^3.24.2"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
+    "@types/node": "22.10.2",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
-    "@types/node": "22.10.2",
     "@vitejs/plugin-react": "^4.3.4",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.6.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/examples/react/start-trellaux/postcss.config.mjs b/examples/react/start-trellaux/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/start-trellaux/postcss.config.mjs
+++ b/examples/react/start-trellaux/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/start-trellaux/src/components/Board.tsx b/examples/react/start-trellaux/src/components/Board.tsx
index 3cf165639f..0b43e1d923 100644
--- a/examples/react/start-trellaux/src/components/Board.tsx
+++ b/examples/react/start-trellaux/src/components/Board.tsx
@@ -49,7 +49,7 @@ export function Board({ boardId }: { boardId: string }) {
 
   return (
     <div
-      className="flex-grow min-h-0 flex flex-col overflow-x-scroll"
+      className="grow min-h-0 flex flex-col overflow-x-scroll"
       ref={scrollContainerRef}
       style={{ backgroundColor: board.color }}
     >
@@ -78,7 +78,7 @@ export function Board({ boardId }: { boardId: string }) {
         />
       </h1>
 
-      <div className="flex flex-grow min-h-0 h-full items-start px-8 pb-4 w-fit">
+      <div className="flex grow min-h-0 h-full items-start px-8 pb-4 w-fit">
         {columns.map((col, index) => {
           return (
             <ColumnComponent
@@ -106,7 +106,7 @@ export function Board({ boardId }: { boardId: string }) {
       </div>
 
       {/* trolling you to add some extra margin to the right of the container with a whole dang div */}
-      <div data-lol className="w-8 h-1 flex-shrink-0" />
+      <div data-lol className="w-8 h-1 shrink-0" />
     </div>
   )
 }
diff --git a/examples/react/start-trellaux/src/components/Card.tsx b/examples/react/start-trellaux/src/components/Card.tsx
index 5010aa5404..6c73ca079f 100644
--- a/examples/react/start-trellaux/src/components/Card.tsx
+++ b/examples/react/start-trellaux/src/components/Card.tsx
@@ -84,7 +84,7 @@ export const Card = forwardRef<HTMLLIElement, CardProps>(
       >
         <div
           draggable
-          className="bg-white shadow shadow-slate-300 border-slate-300 text-sm rounded-lg w-full py-1 px-2 relative"
+          className="bg-white shadow-sm shadow-slate-300 border-slate-300 text-sm rounded-lg w-full py-1 px-2 relative"
           onDragStart={(event) => {
             event.dataTransfer.effectAllowed = 'move'
             event.dataTransfer.setData(
diff --git a/examples/react/start-trellaux/src/components/Column.tsx b/examples/react/start-trellaux/src/components/Column.tsx
index c90961be0d..f9fddaaf5f 100644
--- a/examples/react/start-trellaux/src/components/Column.tsx
+++ b/examples/react/start-trellaux/src/components/Column.tsx
@@ -138,7 +138,7 @@ export const Column = forwardRef<HTMLDivElement, ColumnProps>(
           setAcceptColumnDrop('none')
         }}
         className={twMerge(
-          'border-l-transparent border-r-transparent border-l-2 border-r-2 -mr-[2px] last:mr-0 cursor-grab active:cursor-grabbing px-2 flex-shrink-0 flex flex-col  max-h-full',
+          'border-l-transparent border-r-transparent border-l-2 border-r-2 -mr-[2px] last:mr-0 cursor-grab active:cursor-grabbing px-2 shrink-0 flex flex-col  max-h-full',
           acceptColumnDrop === 'left'
             ? 'border-l-red-500 border-r-transparent'
             : acceptColumnDrop === 'right'
@@ -157,8 +157,8 @@ export const Column = forwardRef<HTMLDivElement, ColumnProps>(
           }}
           {...(!items.length ? cardDndProps : {})}
           className={twMerge(
-            'flex-shrink-0 flex flex-col max-h-full w-80 border-slate-400 rounded-xl shadow-sm shadow-slate-400 bg-slate-100 relative',
-            acceptCardDrop && `outline outline-2 outline-red-500`,
+            'shrink-0 flex flex-col max-h-full w-80 border-slate-400 rounded-xl shadow-xs shadow-slate-400 bg-slate-100 relative',
+            acceptCardDrop && `outline-solid outline-2 outline-red-500`,
           )}
         >
           <div className="p-2" {...(items.length ? cardDndProps : {})}>
@@ -188,7 +188,7 @@ export const Column = forwardRef<HTMLDivElement, ColumnProps>(
             />
           </div>
 
-          <ul ref={listRef} className="flex-grow overflow-auto">
+          <ul ref={listRef} className="grow overflow-auto">
             {sortedItems.map((item, index, items) => (
               <Card
                 ref={itemRef}
diff --git a/examples/react/start-trellaux/src/components/DefaultCatchBoundary.tsx b/examples/react/start-trellaux/src/components/DefaultCatchBoundary.tsx
index f750e7bd2b..260c2ea41f 100644
--- a/examples/react/start-trellaux/src/components/DefaultCatchBoundary.tsx
+++ b/examples/react/start-trellaux/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/react/start-trellaux/src/components/NewCard.tsx b/examples/react/start-trellaux/src/components/NewCard.tsx
index 66e0df6008..8201083bb3 100644
--- a/examples/react/start-trellaux/src/components/NewCard.tsx
+++ b/examples/react/start-trellaux/src/components/NewCard.tsx
@@ -64,7 +64,7 @@ export function NewCard({
         ref={textAreaRef}
         name={ItemMutationFields.title.name}
         placeholder="Enter a title for this card"
-        className="outline-none shadow text-sm rounded-lg w-full py-1 px-2 resize-none placeholder:text-sm placeholder:text-slate-500 h-14"
+        className="outline-hidden shadow-sm text-sm rounded-lg w-full py-1 px-2 resize-none placeholder:text-sm placeholder:text-slate-500 h-14"
         onKeyDown={(event) => {
           if (event.key === 'Enter') {
             event.preventDefault()
diff --git a/examples/react/start-trellaux/src/components/NewColumn.tsx b/examples/react/start-trellaux/src/components/NewColumn.tsx
index abb3a49817..acb6c82cfb 100644
--- a/examples/react/start-trellaux/src/components/NewColumn.tsx
+++ b/examples/react/start-trellaux/src/components/NewColumn.tsx
@@ -22,7 +22,7 @@ export function NewColumn({
 
   return editing ? (
     <form
-      className="ml-2 p-2 flex-shrink-0 flex flex-col gap-5 overflow-hidden max-h-full w-80 border rounded-xl shadow bg-slate-100"
+      className="ml-2 p-2 shrink-0 flex flex-col gap-5 overflow-hidden max-h-full w-80 border rounded-xl shadow-sm bg-slate-100"
       onSubmit={(event) => {
         event.preventDefault()
         invariant(inputRef.current, 'missing input ref')
@@ -64,7 +64,7 @@ export function NewColumn({
         setEditing(true)
       }}
       aria-label="Add new column"
-      className="ml-2 flex-shrink-0 flex justify-center h-16 w-16 bg-black hover:bg-white bg-opacity-10 hover:bg-opacity-5 rounded-xl"
+      className="ml-2 shrink-0 flex justify-center h-16 w-16 bg-black hover:bg-white bg-opacity-10 hover:bg-opacity-5 rounded-xl"
     >
       <Icon name="plus" size="xl" />
     </button>
diff --git a/examples/react/start-trellaux/src/components/NotFound.tsx b/examples/react/start-trellaux/src/components/NotFound.tsx
index 7b54fa5680..fd4e75befe 100644
--- a/examples/react/start-trellaux/src/components/NotFound.tsx
+++ b/examples/react/start-trellaux/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/react/start-trellaux/src/routes/__root.tsx b/examples/react/start-trellaux/src/routes/__root.tsx
index 10879786ce..2880ca712e 100644
--- a/examples/react/start-trellaux/src/routes/__root.tsx
+++ b/examples/react/start-trellaux/src/routes/__root.tsx
@@ -129,7 +129,7 @@ function RootDocument({ children }: { children: React.ReactNode }) {
             </div>
           </div>
 
-          <div className="flex-grow min-h-0 h-full flex flex-col">
+          <div className="grow min-h-0 h-full flex flex-col">
             {children}
             <Toaster />
           </div>
diff --git a/examples/react/start-trellaux/src/styles/app.css b/examples/react/start-trellaux/src/styles/app.css
index 4dad0feeb0..cdd3a8af39 100644
--- a/examples/react/start-trellaux/src/styles/app.css
+++ b/examples/react/start-trellaux/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html,
diff --git a/examples/react/start-trellaux/tailwind.config.mjs b/examples/react/start-trellaux/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/react/start-trellaux/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/react/start-workos/package.json b/examples/react/start-workos/package.json
index e55e356064..725c519727 100644
--- a/examples/react/start-workos/package.json
+++ b/examples/react/start-workos/package.json
@@ -27,9 +27,6 @@
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.4"
diff --git a/examples/react/view-transitions/package.json b/examples/react/view-transitions/package.json
index c91b34398b..79443a50e9 100644
--- a/examples/react/view-transitions/package.json
+++ b/examples/react/view-transitions/package.json
@@ -9,15 +9,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/view-transitions/postcss.config.mjs b/examples/react/view-transitions/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/view-transitions/postcss.config.mjs
+++ b/examples/react/view-transitions/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/view-transitions/src/styles.css b/examples/react/view-transitions/src/styles.css
index 9c43f86dd0..3f1bb64b6c 100644
--- a/examples/react/view-transitions/src/styles.css
+++ b/examples/react/view-transitions/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/view-transitions/tailwind.config.mjs b/examples/react/view-transitions/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/view-transitions/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json
index ef8a157246..cf9c8e1269 100644
--- a/examples/react/with-framer-motion/package.json
+++ b/examples/react/with-framer-motion/package.json
@@ -9,15 +9,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "framer-motion": "^11.18.2",
+    "postcss": "^8.5.1",
     "react": "^19.0.0",
     "react-dom": "^19.0.0",
     "redaxios": "^0.5.1",
-    "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/with-framer-motion/postcss.config.mjs b/examples/react/with-framer-motion/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/with-framer-motion/postcss.config.mjs
+++ b/examples/react/with-framer-motion/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/with-framer-motion/src/styles.css b/examples/react/with-framer-motion/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/with-framer-motion/src/styles.css
+++ b/examples/react/with-framer-motion/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/with-framer-motion/tailwind.config.mjs b/examples/react/with-framer-motion/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/with-framer-motion/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json
index a2d1629744..c074a0472e 100644
--- a/examples/react/with-trpc-react-query/package.json
+++ b/examples/react/with-trpc-react-query/package.json
@@ -10,6 +10,7 @@
     "start": "NODE_ENV=production node dist/server/server.js"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-query": "^5.66.0",
     "@tanstack/react-query-devtools": "^5.66.0",
     "@tanstack/react-router": "^1.133.22",
@@ -18,13 +19,12 @@
     "@trpc/client": "^11.4.3",
     "@trpc/server": "^11.4.3",
     "@trpc/tanstack-react-query": "^11.4.3",
-    "autoprefixer": "^10.4.20",
     "express": "^4.21.2",
     "postcss": "^8.5.1",
     "react": "^19.1.0",
     "react-dom": "^19.1.0",
     "redaxios": "^0.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/with-trpc-react-query/postcss.config.mjs b/examples/react/with-trpc-react-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/with-trpc-react-query/postcss.config.mjs
+++ b/examples/react/with-trpc-react-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/with-trpc-react-query/src/routes/dashboard.posts.$postId.tsx b/examples/react/with-trpc-react-query/src/routes/dashboard.posts.$postId.tsx
index 896ceb94b2..aaacd225f5 100644
--- a/examples/react/with-trpc-react-query/src/routes/dashboard.posts.$postId.tsx
+++ b/examples/react/with-trpc-react-query/src/routes/dashboard.posts.$postId.tsx
@@ -46,7 +46,7 @@ function DashboardPostsPostIdComponent() {
         <h2 className="font-bold text-lg">
           <input
             defaultValue={post.id}
-            className="border border-opacity-50 rounded p-2 w-full"
+            className="border border-opacity-50 rounded-sm p-2 w-full"
             disabled
           />
         </h2>
@@ -54,7 +54,7 @@ function DashboardPostsPostIdComponent() {
           <textarea
             defaultValue={post.title}
             rows={6}
-            className="border border-opacity-50 p-2 rounded w-full"
+            className="border border-opacity-50 p-2 rounded-sm w-full"
             disabled
           />
         </div>
@@ -79,7 +79,7 @@ function DashboardPostsPostIdComponent() {
                 value={notes}
                 onChange={(e) => setNotes(e.target.value)}
                 rows={5}
-                className="shadow w-full p-2 rounded"
+                className="shadow-sm w-full p-2 rounded-sm"
                 placeholder="Write some notes here..."
               />
               <div className="italic text-xs">
diff --git a/examples/react/with-trpc-react-query/src/styles.css b/examples/react/with-trpc-react-query/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/with-trpc-react-query/src/styles.css
+++ b/examples/react/with-trpc-react-query/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/with-trpc-react-query/tailwind.config.mjs b/examples/react/with-trpc-react-query/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/with-trpc-react-query/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json
index 8c423474e2..210f8988d9 100644
--- a/examples/react/with-trpc/package.json
+++ b/examples/react/with-trpc/package.json
@@ -10,18 +10,18 @@
     "start": "NODE_ENV=production node dist/server/server.js"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/react-router": "^1.133.22",
     "@tanstack/react-router-devtools": "^1.133.22",
     "@tanstack/router-plugin": "^1.133.22",
     "@trpc/client": "^11.4.3",
     "@trpc/server": "^11.4.3",
-    "autoprefixer": "^10.4.20",
     "express": "^4.21.2",
     "postcss": "^8.5.1",
     "react": "^19.1.0",
     "react-dom": "^19.1.0",
     "redaxios": "^0.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/react/with-trpc/postcss.config.mjs b/examples/react/with-trpc/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/react/with-trpc/postcss.config.mjs
+++ b/examples/react/with-trpc/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/react/with-trpc/src/routes/dashboard.posts.$postId.tsx b/examples/react/with-trpc/src/routes/dashboard.posts.$postId.tsx
index e702db08c3..94150ea6c5 100644
--- a/examples/react/with-trpc/src/routes/dashboard.posts.$postId.tsx
+++ b/examples/react/with-trpc/src/routes/dashboard.posts.$postId.tsx
@@ -37,7 +37,7 @@ function DashboardPostsPostIdComponent() {
         <h2 className="font-bold text-lg">
           <input
             defaultValue={post.id}
-            className="border border-opacity-50 rounded p-2 w-full"
+            className="border border-opacity-50 rounded-sm p-2 w-full"
             disabled
           />
         </h2>
@@ -45,7 +45,7 @@ function DashboardPostsPostIdComponent() {
           <textarea
             defaultValue={post.title}
             rows={6}
-            className="border border-opacity-50 p-2 rounded w-full"
+            className="border border-opacity-50 p-2 rounded-sm w-full"
             disabled
           />
         </div>
@@ -70,7 +70,7 @@ function DashboardPostsPostIdComponent() {
                 value={notes}
                 onChange={(e) => setNotes(e.target.value)}
                 rows={5}
-                className="shadow w-full p-2 rounded"
+                className="shadow-sm w-full p-2 rounded-sm"
                 placeholder="Write some notes here..."
               />
               <div className="italic text-xs">
diff --git a/examples/react/with-trpc/src/styles.css b/examples/react/with-trpc/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/react/with-trpc/src/styles.css
+++ b/examples/react/with-trpc/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/with-trpc/tailwind.config.mjs b/examples/react/with-trpc/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/react/with-trpc/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/basic-devtools-panel/package.json b/examples/solid/basic-devtools-panel/package.json
index db2430ceb4..768a6a1109 100644
--- a/examples/solid/basic-devtools-panel/package.json
+++ b/examples/solid/basic-devtools-panel/package.json
@@ -9,17 +9,17 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
-    "vite-plugin-solid": "^2.11.10",
     "typescript": "^5.7.2",
-    "vite": "^7.1.7"
+    "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/examples/solid/basic-devtools-panel/postcss.config.mjs b/examples/solid/basic-devtools-panel/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/basic-devtools-panel/postcss.config.mjs
+++ b/examples/solid/basic-devtools-panel/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/basic-devtools-panel/src/styles.css b/examples/solid/basic-devtools-panel/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/basic-devtools-panel/src/styles.css
+++ b/examples/solid/basic-devtools-panel/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/basic-devtools-panel/tailwind.config.mjs b/examples/solid/basic-devtools-panel/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/basic-devtools-panel/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/basic-file-based/package.json b/examples/solid/basic-file-based/package.json
index f2760e18d4..056d142b2e 100644
--- a/examples/solid/basic-file-based/package.json
+++ b/examples/solid/basic-file-based/package.json
@@ -9,13 +9,13 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
     "redaxios": "^0.5.1",
     "solid-js": "^1.9.5",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/solid/basic-file-based/postcss.config.mjs b/examples/solid/basic-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/basic-file-based/postcss.config.mjs
+++ b/examples/solid/basic-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/basic-file-based/src/styles.css b/examples/solid/basic-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/basic-file-based/src/styles.css
+++ b/examples/solid/basic-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/basic-file-based/tailwind.config.mjs b/examples/solid/basic-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/basic-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/basic-non-nested-devtools/package.json b/examples/solid/basic-non-nested-devtools/package.json
index 17605bbcd3..6c2597f6a2 100644
--- a/examples/solid/basic-non-nested-devtools/package.json
+++ b/examples/solid/basic-non-nested-devtools/package.json
@@ -9,13 +9,13 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
+    "redaxios": "^0.5.1",
     "solid-js": "^1.9.5",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@types/react": "^19.0.8",
diff --git a/examples/solid/basic-non-nested-devtools/postcss.config.mjs b/examples/solid/basic-non-nested-devtools/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/basic-non-nested-devtools/postcss.config.mjs
+++ b/examples/solid/basic-non-nested-devtools/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/basic-non-nested-devtools/src/styles.css b/examples/solid/basic-non-nested-devtools/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/basic-non-nested-devtools/src/styles.css
+++ b/examples/solid/basic-non-nested-devtools/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/basic-non-nested-devtools/tailwind.config.mjs b/examples/solid/basic-non-nested-devtools/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/basic-non-nested-devtools/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/basic-solid-query-file-based/package.json b/examples/solid/basic-solid-query-file-based/package.json
index fc87126deb..e64e60a0ba 100644
--- a/examples/solid/basic-solid-query-file-based/package.json
+++ b/examples/solid/basic-solid-query-file-based/package.json
@@ -10,15 +10,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-query": "^5.71.9",
     "@tanstack/solid-query-devtools": "^5.71.9",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/solid/basic-solid-query-file-based/postcss.config.mjs b/examples/solid/basic-solid-query-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/basic-solid-query-file-based/postcss.config.mjs
+++ b/examples/solid/basic-solid-query-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/basic-solid-query-file-based/src/styles.css b/examples/solid/basic-solid-query-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/basic-solid-query-file-based/src/styles.css
+++ b/examples/solid/basic-solid-query-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/basic-solid-query-file-based/tailwind.config.mjs b/examples/solid/basic-solid-query-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/basic-solid-query-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/basic-solid-query/package.json b/examples/solid/basic-solid-query/package.json
index 3050609390..e47506a5b1 100644
--- a/examples/solid/basic-solid-query/package.json
+++ b/examples/solid/basic-solid-query/package.json
@@ -9,15 +9,15 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-query": "^5.71.9",
     "@tanstack/solid-query-devtools": "^5.71.9",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@tanstack/router-plugin": "^1.133.22",
diff --git a/examples/solid/basic-solid-query/postcss.config.mjs b/examples/solid/basic-solid-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/basic-solid-query/postcss.config.mjs
+++ b/examples/solid/basic-solid-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/basic-solid-query/src/styles.css b/examples/solid/basic-solid-query/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/basic-solid-query/src/styles.css
+++ b/examples/solid/basic-solid-query/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/basic-solid-query/tailwind.config.mjs b/examples/solid/basic-solid-query/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/basic-solid-query/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/basic-ssr-streaming-file-based/package.json b/examples/solid/basic-ssr-streaming-file-based/package.json
index 6f106ef292..03b6c487c8 100644
--- a/examples/solid/basic-ssr-streaming-file-based/package.json
+++ b/examples/solid/basic-ssr-streaming-file-based/package.json
@@ -11,9 +11,9 @@
     "debug": "node --inspect-brk server"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
-    "autoprefixer": "^10.4.20",
     "compression": "^1.7.5",
     "express": "^4.21.2",
     "get-port": "^7.1.0",
@@ -21,7 +21,7 @@
     "postcss": "^8.5.1",
     "redaxios": "^0.5.1",
     "solid-js": "^1.9.5",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/solid/basic-ssr-streaming-file-based/postcss.config.mjs b/examples/solid/basic-ssr-streaming-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/basic-ssr-streaming-file-based/postcss.config.mjs
+++ b/examples/solid/basic-ssr-streaming-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/basic-ssr-streaming-file-based/src/routes/-components/Counter.tsx b/examples/solid/basic-ssr-streaming-file-based/src/routes/-components/Counter.tsx
index c277fa9d9d..749fc9bc46 100644
--- a/examples/solid/basic-ssr-streaming-file-based/src/routes/-components/Counter.tsx
+++ b/examples/solid/basic-ssr-streaming-file-based/src/routes/-components/Counter.tsx
@@ -4,7 +4,7 @@ export default function Counter() {
   const [count, setCount] = createSignal(0)
   return (
     <button
-      class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
+      class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-sm"
       onClick={() => setCount(count() + 1)}
       type="button"
     >
diff --git a/examples/solid/basic-ssr-streaming-file-based/src/styles.css b/examples/solid/basic-ssr-streaming-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/basic-ssr-streaming-file-based/src/styles.css
+++ b/examples/solid/basic-ssr-streaming-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/basic-ssr-streaming-file-based/tailwind.config.mjs b/examples/solid/basic-ssr-streaming-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/basic-ssr-streaming-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/basic/package.json b/examples/solid/basic/package.json
index 49c68fb56e..361d89ee7f 100644
--- a/examples/solid/basic/package.json
+++ b/examples/solid/basic/package.json
@@ -9,13 +9,13 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
+    "redaxios": "^0.5.1",
     "solid-js": "^1.9.5",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17"
+    "tailwindcss": "^4.1.15"
   },
   "devDependencies": {
     "@types/react": "^19.0.8",
diff --git a/examples/solid/basic/postcss.config.mjs b/examples/solid/basic/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/basic/postcss.config.mjs
+++ b/examples/solid/basic/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/basic/src/styles.css b/examples/solid/basic/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/basic/src/styles.css
+++ b/examples/solid/basic/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/basic/tailwind.config.mjs b/examples/solid/basic/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/basic/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/kitchen-sink-file-based/package.json b/examples/solid/kitchen-sink-file-based/package.json
index 5f884834db..6a055ef8f4 100644
--- a/examples/solid/kitchen-sink-file-based/package.json
+++ b/examples/solid/kitchen-sink-file-based/package.json
@@ -9,14 +9,14 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
     "immer": "^10.1.1",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/solid/kitchen-sink-file-based/postcss.config.mjs b/examples/solid/kitchen-sink-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/kitchen-sink-file-based/postcss.config.mjs
+++ b/examples/solid/kitchen-sink-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/kitchen-sink-file-based/src/components/InvoiceFields.tsx b/examples/solid/kitchen-sink-file-based/src/components/InvoiceFields.tsx
index a3da836307..e7749265a8 100644
--- a/examples/solid/kitchen-sink-file-based/src/components/InvoiceFields.tsx
+++ b/examples/solid/kitchen-sink-file-based/src/components/InvoiceFields.tsx
@@ -9,7 +9,7 @@ export function InvoiceFields(props: { invoice: Invoice; disabled?: boolean }) {
           name="title"
           value={props.invoice?.title || ''}
           placeholder="Invoice Title"
-          class="border border-opacity-50 rounded p-2 w-full"
+          class="border border-opacity-50 rounded-sm p-2 w-full"
           disabled={props.disabled}
         />
       </h2>
@@ -19,7 +19,7 @@ export function InvoiceFields(props: { invoice: Invoice; disabled?: boolean }) {
           value={props.invoice?.body || ''}
           rows={6}
           placeholder="Invoice Body..."
-          class="border border-opacity-50 p-2 rounded w-full"
+          class="border border-opacity-50 p-2 rounded-sm w-full"
           disabled={props.disabled}
         />
       </div>
diff --git a/examples/solid/kitchen-sink-file-based/src/main.tsx b/examples/solid/kitchen-sink-file-based/src/main.tsx
index c30c1c6515..2ebe009eed 100644
--- a/examples/solid/kitchen-sink-file-based/src/main.tsx
+++ b/examples/solid/kitchen-sink-file-based/src/main.tsx
@@ -48,11 +48,11 @@ function App() {
 
   return (
     <>
-      <div class="text-xs fixed w-52 shadow-md shadow-black/20 rounded bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
+      <div class="text-xs fixed w-52 shadow-md shadow-black/20 rounded-sm bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
         <div class="p-2 space-y-2">
           <div class="flex gap-2">
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(() => 150)
               }}
@@ -60,7 +60,7 @@ function App() {
               Fast
             </button>
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(() => 500)
               }}
@@ -68,7 +68,7 @@ function App() {
               Fast 3G
             </button>
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(() => 2000)
               }}
@@ -92,7 +92,7 @@ function App() {
         <div class="p-2 space-y-2">
           <div class="flex gap-2">
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setPendingMs(() => 1000)
                 setPendingMinMs(() => 500)
diff --git a/examples/solid/kitchen-sink-file-based/src/routes/dashboard.invoices.$invoiceId.tsx b/examples/solid/kitchen-sink-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
index 1f8de1cd12..333a4fff2c 100644
--- a/examples/solid/kitchen-sink-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
+++ b/examples/solid/kitchen-sink-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
@@ -86,7 +86,7 @@ function InvoiceComponent() {
                   setNotes(() => e.target.value)
                 }}
                 rows={5}
-                class="shadow w-full p-2 rounded"
+                class="shadow-sm w-full p-2 rounded-sm"
                 placeholder="Write some notes here..."
               />
               <div class="italic text-xs">
@@ -98,7 +98,7 @@ function InvoiceComponent() {
       </div>
       <div>
         <button
-          class="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+          class="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
           disabled={updateInvoiceMutation.status() === 'pending'}
         >
           Save
@@ -107,11 +107,11 @@ function InvoiceComponent() {
       {updateInvoiceMutation.variables()?.id === invoice()?.id ? (
         <div>
           {updateInvoiceMutation.status() === 'success' ? (
-            <div class="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Saved!
             </div>
           ) : updateInvoiceMutation.status() === 'error' ? (
-            <div class="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to save.
             </div>
           ) : null}
diff --git a/examples/solid/kitchen-sink-file-based/src/routes/dashboard.invoices.index.tsx b/examples/solid/kitchen-sink-file-based/src/routes/dashboard.invoices.index.tsx
index 04f48fdb31..2e1564f604 100644
--- a/examples/solid/kitchen-sink-file-based/src/routes/dashboard.invoices.index.tsx
+++ b/examples/solid/kitchen-sink-file-based/src/routes/dashboard.invoices.index.tsx
@@ -38,7 +38,7 @@ function InvoicesIndexComponent() {
           <InvoiceFields invoice={{} as Invoice} />
           <div>
             <button
-              class="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+              class="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
               disabled={createInvoiceMutation.status() === 'pending'}
             >
               {createInvoiceMutation.status() === 'pending' ? (
@@ -51,11 +51,11 @@ function InvoicesIndexComponent() {
             </button>
           </div>
           {createInvoiceMutation.status() === 'success' ? (
-            <div class="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Created!
             </div>
           ) : createInvoiceMutation.status() === 'error' ? (
-            <div class="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to create.
             </div>
           ) : null}
diff --git a/examples/solid/kitchen-sink-file-based/src/routes/dashboard.users.route.tsx b/examples/solid/kitchen-sink-file-based/src/routes/dashboard.users.route.tsx
index 846d56dd48..e454d2ec2d 100644
--- a/examples/solid/kitchen-sink-file-based/src/routes/dashboard.users.route.tsx
+++ b/examples/solid/kitchen-sink-file-based/src/routes/dashboard.users.route.tsx
@@ -92,7 +92,7 @@ function UsersComponent() {
           <select
             value={sortBy()}
             onChange={(e) => setSortBy(e.target.value as UsersViewSortBy)}
-            class="flex-1 border p-1 px-2 rounded"
+            class="flex-1 border p-1 px-2 rounded-sm"
           >
             {['name', 'id', 'email'].map((d) => {
               return <option value={d} children={d} />
@@ -105,7 +105,7 @@ function UsersComponent() {
             value={filterDraft()}
             onChange={(e) => setFilterDraft(e.target.value)}
             placeholder="Search Names..."
-            class="min-w-0 flex-1 border p-1 px-2 rounded"
+            class="min-w-0 flex-1 border p-1 px-2 rounded-sm"
           />
         </div>
         <Solid.For each={users()}>
diff --git a/examples/solid/kitchen-sink-file-based/src/routes/login.tsx b/examples/solid/kitchen-sink-file-based/src/routes/login.tsx
index 8367e59e10..7b403ae66f 100644
--- a/examples/solid/kitchen-sink-file-based/src/routes/login.tsx
+++ b/examples/solid/kitchen-sink-file-based/src/routes/login.tsx
@@ -46,11 +46,11 @@ function LoginComponent() {
               value={username()}
               onChange={(e) => setUsername(e.target.value)}
               placeholder="Username"
-              class="border p-1 px-2 rounded"
+              class="border p-1 px-2 rounded-sm"
             />
             <button
               type="submit"
-              class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+              class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
             >
               Login
             </button>
@@ -66,7 +66,7 @@ function LoginComponent() {
             context().auth.logout()
             router.invalidate()
           }}
-          class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+          class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
         >
           Log out
         </button>
diff --git a/examples/solid/kitchen-sink-file-based/src/styles.css b/examples/solid/kitchen-sink-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/kitchen-sink-file-based/src/styles.css
+++ b/examples/solid/kitchen-sink-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/kitchen-sink-file-based/tailwind.config.mjs b/examples/solid/kitchen-sink-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/kitchen-sink-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/package.json b/examples/solid/kitchen-sink-solid-query-file-based/package.json
index 924a529564..eccbf73ee1 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/package.json
+++ b/examples/solid/kitchen-sink-solid-query-file-based/package.json
@@ -9,22 +9,22 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
+    "@tanstack/router-plugin": "^1.133.22",
     "@tanstack/solid-query": "^5.72.0",
     "@tanstack/solid-query-devtools": "^5.72.0",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
-    "@tanstack/router-plugin": "^1.133.22",
     "immer": "^10.1.1",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
-    "vite-plugin-solid": "^2.11.10",
     "typescript": "^5.7.2",
-    "vite": "^6.1.0"
+    "vite": "^6.1.0",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/postcss.config.mjs b/examples/solid/kitchen-sink-solid-query-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/postcss.config.mjs
+++ b/examples/solid/kitchen-sink-solid-query-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/src/components/InvoiceFields.tsx b/examples/solid/kitchen-sink-solid-query-file-based/src/components/InvoiceFields.tsx
index 96a5299c8f..de6246bd65 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/src/components/InvoiceFields.tsx
+++ b/examples/solid/kitchen-sink-solid-query-file-based/src/components/InvoiceFields.tsx
@@ -14,7 +14,7 @@ export function InvoiceFields({
           name="title"
           value={invoice?.title ?? ''}
           placeholder="Invoice Title"
-          class="border border-opacity-50 rounded p-2 w-full"
+          class="border border-opacity-50 rounded-sm p-2 w-full"
           disabled={disabled}
         />
       </h2>
@@ -24,7 +24,7 @@ export function InvoiceFields({
           value={invoice?.body ?? ''}
           rows={6}
           placeholder="Invoice Body..."
-          class="border border-opacity-50 p-2 rounded w-full"
+          class="border border-opacity-50 p-2 rounded-sm w-full"
           disabled={disabled}
         />
       </div>
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/src/main.tsx b/examples/solid/kitchen-sink-solid-query-file-based/src/main.tsx
index 1036706cf3..b7b0c1d5d0 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/src/main.tsx
+++ b/examples/solid/kitchen-sink-solid-query-file-based/src/main.tsx
@@ -48,11 +48,11 @@ function App() {
 
   return (
     <>
-      <div class="text-xs fixed w-52 shadow-md shadow-black/20 rounded bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
+      <div class="text-xs fixed w-52 shadow-md shadow-black/20 rounded-sm bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
         <div class="p-2 space-y-2">
           <div class="flex gap-2">
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(150)
               }}
@@ -60,7 +60,7 @@ function App() {
               Fast
             </button>
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(500)
               }}
@@ -68,7 +68,7 @@ function App() {
               Fast 3G
             </button>
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(2000)
               }}
@@ -92,7 +92,7 @@ function App() {
         <div class="p-2 space-y-2">
           <div class="flex gap-2">
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setPendingMs(1000)
                 setPendingMinMs(500)
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.invoices.$invoiceId.tsx b/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
index 2fe75cdfab..125ccf6ee0 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
+++ b/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.invoices.$invoiceId.tsx
@@ -89,7 +89,7 @@ function InvoiceComponent() {
                   setNotes(e.target.value)
                 }}
                 rows={5}
-                class="shadow w-full p-2 rounded"
+                class="shadow-sm w-full p-2 rounded-sm"
                 placeholder="Write some notes here..."
               />
               <div class="italic text-xs">
@@ -101,7 +101,7 @@ function InvoiceComponent() {
       </div>
       <div>
         <button
-          class="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+          class="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
           disabled={updateInvoiceMutation.status === 'pending'}
         >
           Save
@@ -110,11 +110,11 @@ function InvoiceComponent() {
       {updateInvoiceMutation.variables?.id === invoice!.id ? (
         <div>
           {updateInvoiceMutation.status === 'success' ? (
-            <div class="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Saved!
             </div>
           ) : updateInvoiceMutation.status === 'error' ? (
-            <div class="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to save.
             </div>
           ) : null}
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.invoices.index.tsx b/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.invoices.index.tsx
index e3d3e66247..97c7db8d14 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.invoices.index.tsx
+++ b/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.invoices.index.tsx
@@ -30,7 +30,7 @@ function InvoicesIndexComponent() {
           <InvoiceFields invoice={{} as Invoice} />
           <div>
             <button
-              class="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+              class="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
               disabled={createInvoiceMutation.status === 'pending'}
             >
               {createInvoiceMutation.status === 'pending' ? (
@@ -43,11 +43,11 @@ function InvoicesIndexComponent() {
             </button>
           </div>
           {createInvoiceMutation.status === 'success' ? (
-            <div class="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Created!
             </div>
           ) : createInvoiceMutation.status === 'error' ? (
-            <div class="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to create.
             </div>
           ) : null}
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.users.route.tsx b/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.users.route.tsx
index 400f673c98..c163792c08 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.users.route.tsx
+++ b/examples/solid/kitchen-sink-solid-query-file-based/src/routes/dashboard.users.route.tsx
@@ -103,7 +103,7 @@ function UsersComponent() {
           <select
             value={sortBy}
             onChange={(e) => setSortBy(e.target.value as UsersViewSortBy)}
-            class="flex-1 border p-1 px-2 rounded"
+            class="flex-1 border p-1 px-2 rounded-sm"
           >
             {['name', 'id', 'email'].map((d) => {
               return <option value={d} children={d} />
@@ -116,7 +116,7 @@ function UsersComponent() {
             value={filterDraft()}
             onChange={(e) => setFilterDraft(e.target.value)}
             placeholder="Search Names..."
-            class="min-w-0 flex-1 border p-1 px-2 rounded"
+            class="min-w-0 flex-1 border p-1 px-2 rounded-sm"
           />
         </div>
         {filteredUsers()?.map((user) => {
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/src/routes/login.tsx b/examples/solid/kitchen-sink-solid-query-file-based/src/routes/login.tsx
index b1e8dddd82..3dd460a877 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/src/routes/login.tsx
+++ b/examples/solid/kitchen-sink-solid-query-file-based/src/routes/login.tsx
@@ -40,7 +40,7 @@ function LoginComponent() {
           routeContext().auth.logout()
           router.invalidate()
         }}
-        class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+        class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
       >
         Log out
       </button>
@@ -55,11 +55,11 @@ function LoginComponent() {
           value={username()}
           onChange={(e) => setUsername(e.target.value)}
           placeholder="Username"
-          class="border p-1 px-2 rounded"
+          class="border p-1 px-2 rounded-sm"
         />
         <button
           type="submit"
-          class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+          class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
         >
           Login
         </button>
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css b/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css
+++ b/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/tailwind.config.mjs b/examples/solid/kitchen-sink-solid-query-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/kitchen-sink-solid-query-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/kitchen-sink-solid-query/package.json b/examples/solid/kitchen-sink-solid-query/package.json
index 78889d2ed7..ad4c54a76c 100644
--- a/examples/solid/kitchen-sink-solid-query/package.json
+++ b/examples/solid/kitchen-sink-solid-query/package.json
@@ -9,21 +9,21 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-query": "^5.72.0",
     "@tanstack/solid-query-devtools": "^5.72.0",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
     "immer": "^10.1.1",
-    "solid-js": "^1.9.5",
-    "redaxios": "^0.5.1",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
-    "vite-plugin-solid": "^2.11.10",
     "typescript": "^5.7.2",
-    "vite": "^6.1.0"
+    "vite": "^6.1.0",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/examples/solid/kitchen-sink-solid-query/postcss.config.mjs b/examples/solid/kitchen-sink-solid-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/kitchen-sink-solid-query/postcss.config.mjs
+++ b/examples/solid/kitchen-sink-solid-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/kitchen-sink-solid-query/src/main.tsx b/examples/solid/kitchen-sink-solid-query/src/main.tsx
index 9410ddf101..7c4fe6ea1c 100644
--- a/examples/solid/kitchen-sink-solid-query/src/main.tsx
+++ b/examples/solid/kitchen-sink-solid-query/src/main.tsx
@@ -376,7 +376,7 @@ function InvoicesIndexComponent() {
           <InvoiceFields invoice={{} as Invoice} />
           <div>
             <button
-              class="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+              class="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
               disabled={createInvoiceMutation.status === 'pending'}
             >
               {createInvoiceMutation.status === 'pending' ? (
@@ -389,11 +389,11 @@ function InvoicesIndexComponent() {
             </button>
           </div>
           {createInvoiceMutation.status === 'success' ? (
-            <div class="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Created!
             </div>
           ) : createInvoiceMutation.status === 'error' ? (
-            <div class="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to create.
             </div>
           ) : null}
@@ -486,7 +486,7 @@ function InvoiceComponent() {
                   setNotes(e.target.value)
                 }}
                 rows={5}
-                class="shadow w-full p-2 rounded"
+                class="shadow-sm w-full p-2 rounded-sm"
                 placeholder="Write some notes here..."
               />
               <div class="italic text-xs">
@@ -498,7 +498,7 @@ function InvoiceComponent() {
       </div>
       <div>
         <button
-          class="bg-blue-500 rounded p-2 uppercase text-white font-black disabled:opacity-50"
+          class="bg-blue-500 rounded-sm p-2 uppercase text-white font-black disabled:opacity-50"
           disabled={updateInvoiceMutation.status === 'pending'}
         >
           Save
@@ -507,11 +507,11 @@ function InvoiceComponent() {
       {updateInvoiceMutation.variables?.id === invoice?.id ? (
         <div>
           {updateInvoiceMutation.status === 'success' ? (
-            <div class="inline-block px-2 py-1 rounded bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-green-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Saved!
             </div>
           ) : updateInvoiceMutation.status === 'error' ? (
-            <div class="inline-block px-2 py-1 rounded bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
+            <div class="inline-block px-2 py-1 rounded-sm bg-red-500 text-white animate-bounce [animation-iteration-count:2.5] [animation-duration:.3s]">
               Failed to save.
             </div>
           ) : null}
@@ -617,7 +617,7 @@ function UsersComponent() {
           <select
             value={sortBy()}
             onChange={(e) => setSortBy(e.target.value as UsersViewSortBy)}
-            class="flex-1 border p-1 px-2 rounded"
+            class="flex-1 border p-1 px-2 rounded-sm"
           >
             {['name', 'id', 'email'].map((d) => {
               return <option value={d} children={d} />
@@ -630,7 +630,7 @@ function UsersComponent() {
             value={filterDraft()}
             onChange={(e) => setFilterDraft(e.target.value)}
             placeholder="Search Names..."
-            class="min-w-0 flex-1 border p-1 px-2 rounded"
+            class="min-w-0 flex-1 border p-1 px-2 rounded-sm"
           />
         </div>
         {filteredUsers().map((user) => {
@@ -817,7 +817,7 @@ function LoginComponent() {
       <div class="h-2" />
       <button
         onClick={() => routeContext().auth.logout()}
-        class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+        class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
       >
         Log out
       </button>
@@ -832,11 +832,11 @@ function LoginComponent() {
           value={username()}
           onChange={(e) => setUsername(e.target.value)}
           placeholder="Username"
-          class="border p-1 px-2 rounded"
+          class="border p-1 px-2 rounded-sm"
         />
         <button
           onClick={() => routeContext().auth.logout()}
-          class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded"
+          class="text-sm bg-blue-500 text-white border inline-block py-1 px-2 rounded-sm"
         >
           Login
         </button>
@@ -950,11 +950,11 @@ function App() {
 
   return (
     <>
-      <div class="text-xs fixed w-52 shadow-md shadow-black/20 rounded bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
+      <div class="text-xs fixed w-52 shadow-md shadow-black/20 rounded-sm bottom-2 left-2 bg-white dark:bg-gray-800 bg-opacity-75 border-b flex flex-col gap-1 flex-wrap items-left divide-y">
         <div class="p-2 space-y-2">
           <div class="flex gap-2">
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(150)
               }}
@@ -962,7 +962,7 @@ function App() {
               Fast
             </button>
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(500)
               }}
@@ -970,7 +970,7 @@ function App() {
               Fast 3G
             </button>
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setLoaderDelay(2000)
               }}
@@ -994,7 +994,7 @@ function App() {
         <div class="p-2 space-y-2">
           <div class="flex gap-2">
             <button
-              class="bg-blue-500 text-white rounded p-1 px-2"
+              class="bg-blue-500 text-white rounded-sm p-1 px-2"
               onClick={() => {
                 setPendingMs(1000)
                 setPendingMinMs(500)
@@ -1058,7 +1058,7 @@ function InvoiceFields({
           name="title"
           value={invoice.title}
           placeholder="Invoice Title"
-          class="border border-opacity-50 rounded p-2 w-full"
+          class="border border-opacity-50 rounded-sm p-2 w-full"
           disabled={disabled}
         />
       </h2>
@@ -1068,7 +1068,7 @@ function InvoiceFields({
           value={invoice.body}
           rows={6}
           placeholder="Invoice Body..."
-          class="border border-opacity-50 p-2 rounded w-full"
+          class="border border-opacity-50 p-2 rounded-sm w-full"
           disabled={disabled}
         />
       </div>
diff --git a/examples/solid/kitchen-sink-solid-query/src/styles.css b/examples/solid/kitchen-sink-solid-query/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/kitchen-sink-solid-query/src/styles.css
+++ b/examples/solid/kitchen-sink-solid-query/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/kitchen-sink-solid-query/tailwind.config.mjs b/examples/solid/kitchen-sink-solid-query/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/kitchen-sink-solid-query/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/quickstart-file-based/package.json b/examples/solid/quickstart-file-based/package.json
index 1cc1d723c6..9b6ae91918 100644
--- a/examples/solid/quickstart-file-based/package.json
+++ b/examples/solid/quickstart-file-based/package.json
@@ -9,13 +9,13 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
     "redaxios": "^0.5.1",
     "solid-js": "^1.9.5",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "zod": "^3.24.2"
   },
   "devDependencies": {
diff --git a/examples/solid/quickstart-file-based/postcss.config.mjs b/examples/solid/quickstart-file-based/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/quickstart-file-based/postcss.config.mjs
+++ b/examples/solid/quickstart-file-based/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/quickstart-file-based/src/styles.css b/examples/solid/quickstart-file-based/src/styles.css
index 0b8e317099..00b7ef394d 100644
--- a/examples/solid/quickstart-file-based/src/styles.css
+++ b/examples/solid/quickstart-file-based/src/styles.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 html {
   color-scheme: light dark;
diff --git a/examples/solid/quickstart-file-based/tailwind.config.mjs b/examples/solid/quickstart-file-based/tailwind.config.mjs
deleted file mode 100644
index 4986094b9d..0000000000
--- a/examples/solid/quickstart-file-based/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}', './index.html'],
-}
diff --git a/examples/solid/start-basic-auth/package.json b/examples/solid/start-basic-auth/package.json
index f8b3ec91cc..749f7d9575 100644
--- a/examples/solid/start-basic-auth/package.json
+++ b/examples/solid/start-basic-auth/package.json
@@ -15,18 +15,18 @@
     "@tanstack/solid-router-devtools": "^1.133.23",
     "@tanstack/solid-start": "^1.133.23",
     "prisma": "^5.22.0",
-    "solid-js": "^1.9.5",
     "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
     "tailwind-merge": "^2.6.0"
   },
   "devDependencies": {
-    "vite-plugin-solid": "^2.11.10",
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
   }
 }
diff --git a/examples/solid/start-basic-auth/postcss.config.mjs b/examples/solid/start-basic-auth/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/start-basic-auth/postcss.config.mjs
+++ b/examples/solid/start-basic-auth/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/start-basic-auth/src/components/Auth.tsx b/examples/solid/start-basic-auth/src/components/Auth.tsx
index 40e44b8c5a..de9d9e76f6 100644
--- a/examples/solid/start-basic-auth/src/components/Auth.tsx
+++ b/examples/solid/start-basic-auth/src/components/Auth.tsx
@@ -30,7 +30,7 @@ export function Auth({
               type="email"
               name="email"
               id="email"
-              class="px-2 py-1 w-full rounded border border-gray-500/20 bg-white dark:bg-gray-800"
+              class="px-2 py-1 w-full rounded-sm border border-gray-500/20 bg-white dark:bg-gray-800"
             />
           </div>
           <div>
@@ -41,12 +41,12 @@ export function Auth({
               type="password"
               name="password"
               id="password"
-              class="px-2 py-1 w-full rounded border border-gray-500/20 bg-white dark:bg-gray-800"
+              class="px-2 py-1 w-full rounded-sm border border-gray-500/20 bg-white dark:bg-gray-800"
             />
           </div>
           <button
             type="submit"
-            class="w-full bg-cyan-600 text-white rounded py-2 font-black uppercase"
+            class="w-full bg-cyan-600 text-white rounded-sm py-2 font-black uppercase"
             disabled={status === 'pending'}
           >
             {status === 'pending' ? '...' : actionText}
diff --git a/examples/solid/start-basic-auth/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic-auth/src/components/DefaultCatchBoundary.tsx
index 32aed20e67..2c0d464a06 100644
--- a/examples/solid/start-basic-auth/src/components/DefaultCatchBoundary.tsx
+++ b/examples/solid/start-basic-auth/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/solid/start-basic-auth/src/components/NotFound.tsx b/examples/solid/start-basic-auth/src/components/NotFound.tsx
index ca4c1960fa..af5ad273c5 100644
--- a/examples/solid/start-basic-auth/src/components/NotFound.tsx
+++ b/examples/solid/start-basic-auth/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/solid/start-basic-auth/src/styles/app.css b/examples/solid/start-basic-auth/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/solid/start-basic-auth/src/styles/app.css
+++ b/examples/solid/start-basic-auth/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/solid/start-basic-auth/tailwind.config.mjs b/examples/solid/start-basic-auth/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/solid/start-basic-auth/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/solid/start-basic-cloudflare/package.json b/examples/solid/start-basic-cloudflare/package.json
index 5a34909789..685122e6ce 100644
--- a/examples/solid/start-basic-cloudflare/package.json
+++ b/examples/solid/start-basic-cloudflare/package.json
@@ -19,13 +19,13 @@
   },
   "devDependencies": {
     "@cloudflare/vite-plugin": "^1.13.7",
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
-    "vite-plugin-solid": "^2.11.10",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4",
     "wrangler": "^4.40.2"
   }
diff --git a/examples/solid/start-basic-cloudflare/postcss.config.mjs b/examples/solid/start-basic-cloudflare/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/start-basic-cloudflare/postcss.config.mjs
+++ b/examples/solid/start-basic-cloudflare/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/start-basic-cloudflare/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic-cloudflare/src/components/DefaultCatchBoundary.tsx
index 0dff3919fd..1ae7a0cf94 100644
--- a/examples/solid/start-basic-cloudflare/src/components/DefaultCatchBoundary.tsx
+++ b/examples/solid/start-basic-cloudflare/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/solid/start-basic-cloudflare/src/components/NotFound.tsx b/examples/solid/start-basic-cloudflare/src/components/NotFound.tsx
index ca4c1960fa..af5ad273c5 100644
--- a/examples/solid/start-basic-cloudflare/src/components/NotFound.tsx
+++ b/examples/solid/start-basic-cloudflare/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/solid/start-basic-cloudflare/src/styles/app.css b/examples/solid/start-basic-cloudflare/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/solid/start-basic-cloudflare/src/styles/app.css
+++ b/examples/solid/start-basic-cloudflare/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/solid/start-basic-cloudflare/tailwind.config.mjs b/examples/solid/start-basic-cloudflare/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/solid/start-basic-cloudflare/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/solid/start-basic-netlify/package.json b/examples/solid/start-basic-netlify/package.json
index 9e01f2204b..1e59c0fd6f 100644
--- a/examples/solid/start-basic-netlify/package.json
+++ b/examples/solid/start-basic-netlify/package.json
@@ -16,13 +16,13 @@
   },
   "devDependencies": {
     "@netlify/vite-plugin-tanstack-start": "^1.1.4",
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
-    "vite-plugin-solid": "^2.11.10",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
   }
 }
diff --git a/examples/solid/start-basic-netlify/postcss.config.mjs b/examples/solid/start-basic-netlify/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/start-basic-netlify/postcss.config.mjs
+++ b/examples/solid/start-basic-netlify/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/start-basic-netlify/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic-netlify/src/components/DefaultCatchBoundary.tsx
index 0dff3919fd..1ae7a0cf94 100644
--- a/examples/solid/start-basic-netlify/src/components/DefaultCatchBoundary.tsx
+++ b/examples/solid/start-basic-netlify/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/solid/start-basic-netlify/src/components/NotFound.tsx b/examples/solid/start-basic-netlify/src/components/NotFound.tsx
index ca4c1960fa..af5ad273c5 100644
--- a/examples/solid/start-basic-netlify/src/components/NotFound.tsx
+++ b/examples/solid/start-basic-netlify/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/solid/start-basic-netlify/src/styles/app.css b/examples/solid/start-basic-netlify/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/solid/start-basic-netlify/src/styles/app.css
+++ b/examples/solid/start-basic-netlify/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/solid/start-basic-netlify/tailwind.config.mjs b/examples/solid/start-basic-netlify/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/solid/start-basic-netlify/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/solid/start-basic-nitro/package.json b/examples/solid/start-basic-nitro/package.json
index 1b7e90b09f..3df86e18ab 100644
--- a/examples/solid/start-basic-nitro/package.json
+++ b/examples/solid/start-basic-nitro/package.json
@@ -15,14 +15,14 @@
     "solid-js": "^1.9.5"
   },
   "devDependencies": {
-    "nitro": "^3.0.1-alpha.0",
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
-    "vite-plugin-solid": "^2.11.10",
-    "autoprefixer": "^10.4.20",
+    "nitro": "^3.0.1-alpha.0",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
   }
 }
diff --git a/examples/solid/start-basic-nitro/postcss.config.mjs b/examples/solid/start-basic-nitro/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/start-basic-nitro/postcss.config.mjs
+++ b/examples/solid/start-basic-nitro/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/start-basic-nitro/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic-nitro/src/components/DefaultCatchBoundary.tsx
index 0dff3919fd..1ae7a0cf94 100644
--- a/examples/solid/start-basic-nitro/src/components/DefaultCatchBoundary.tsx
+++ b/examples/solid/start-basic-nitro/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/solid/start-basic-nitro/src/components/NotFound.tsx b/examples/solid/start-basic-nitro/src/components/NotFound.tsx
index ca4c1960fa..af5ad273c5 100644
--- a/examples/solid/start-basic-nitro/src/components/NotFound.tsx
+++ b/examples/solid/start-basic-nitro/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/solid/start-basic-nitro/src/styles/app.css b/examples/solid/start-basic-nitro/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/solid/start-basic-nitro/src/styles/app.css
+++ b/examples/solid/start-basic-nitro/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/solid/start-basic-nitro/tailwind.config.mjs b/examples/solid/start-basic-nitro/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/solid/start-basic-nitro/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/solid/start-basic-solid-query/package.json b/examples/solid/start-basic-solid-query/package.json
index 0677aca8b1..f9afcebe64 100644
--- a/examples/solid/start-basic-solid-query/package.json
+++ b/examples/solid/start-basic-solid-query/package.json
@@ -12,21 +12,21 @@
     "@tanstack/solid-query": "^5.66.0",
     "@tanstack/solid-query-devtools": "^5.66.0",
     "@tanstack/solid-router": "^1.133.23",
-    "@tanstack/solid-router-ssr-query": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
+    "@tanstack/solid-router-ssr-query": "^1.133.23",
     "@tanstack/solid-start": "^1.133.23",
-    "solid-js": "^1.9.5",
     "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
     "tailwind-merge": "^2.6.0"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
-    "vite-plugin-solid": "^2.11.10",
     "postcss": "^8.5.1",
-    "autoprefixer": "^10.4.20",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
+    "vite-plugin-solid": "^2.11.10",
     "vite-tsconfig-paths": "^5.1.4"
   }
 }
diff --git a/examples/solid/start-basic-solid-query/postcss.config.mjs b/examples/solid/start-basic-solid-query/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/start-basic-solid-query/postcss.config.mjs
+++ b/examples/solid/start-basic-solid-query/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx
index 32aed20e67..2c0d464a06 100644
--- a/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx
+++ b/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/solid/start-basic-solid-query/src/components/NotFound.tsx b/examples/solid/start-basic-solid-query/src/components/NotFound.tsx
index ca4c1960fa..af5ad273c5 100644
--- a/examples/solid/start-basic-solid-query/src/components/NotFound.tsx
+++ b/examples/solid/start-basic-solid-query/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/solid/start-basic-solid-query/src/styles/app.css b/examples/solid/start-basic-solid-query/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/solid/start-basic-solid-query/src/styles/app.css
+++ b/examples/solid/start-basic-solid-query/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/solid/start-basic-solid-query/tailwind.config.mjs b/examples/solid/start-basic-solid-query/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/solid/start-basic-solid-query/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/examples/solid/start-basic-static/package.json b/examples/solid/start-basic-static/package.json
index 8a3efbd8b2..b6d4f806ef 100644
--- a/examples/solid/start-basic-static/package.json
+++ b/examples/solid/start-basic-static/package.json
@@ -13,18 +13,18 @@
     "@tanstack/solid-router-devtools": "^1.133.23",
     "@tanstack/solid-start": "^1.133.23",
     "@tanstack/start-static-server-functions": "^1.133.20",
-    "solid-js": "^1.9.5",
     "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
     "tailwind-merge": "^2.5.5"
   },
   "devDependencies": {
     "@types/node": "^22.5.4",
     "autoprefixer": "^10.4.20",
     "postcss": "^8.4.49",
-    "tailwindcss": "^3.4.15",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.6.2",
     "vite": "^7.1.7",
-    "vite-tsconfig-paths": "^5.1.3",
-    "vite-plugin-solid": "^2.11.10"
+    "vite-plugin-solid": "^2.11.10",
+    "vite-tsconfig-paths": "^5.1.3"
   }
 }
diff --git a/examples/solid/start-basic-static/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic-static/src/components/DefaultCatchBoundary.tsx
index 0dff3919fd..1ae7a0cf94 100644
--- a/examples/solid/start-basic-static/src/components/DefaultCatchBoundary.tsx
+++ b/examples/solid/start-basic-static/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/solid/start-basic-static/src/components/NotFound.tsx b/examples/solid/start-basic-static/src/components/NotFound.tsx
index ca4c1960fa..af5ad273c5 100644
--- a/examples/solid/start-basic-static/src/components/NotFound.tsx
+++ b/examples/solid/start-basic-static/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/solid/start-basic-static/src/styles/app.css b/examples/solid/start-basic-static/src/styles/app.css
index d6426ccb72..9437838dc9 100644
--- a/examples/solid/start-basic-static/src/styles/app.css
+++ b/examples/solid/start-basic-static/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html,
diff --git a/examples/solid/start-basic-static/tailwind.config.cjs b/examples/solid/start-basic-static/tailwind.config.cjs
deleted file mode 100644
index 10c9224f8c..0000000000
--- a/examples/solid/start-basic-static/tailwind.config.cjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-module.exports = {
-  content: ['./src/**/*.{js,ts,jsx,tsx}'],
-}
diff --git a/examples/solid/start-basic/package.json b/examples/solid/start-basic/package.json
index 64244e0a64..4b067f0c06 100644
--- a/examples/solid/start-basic/package.json
+++ b/examples/solid/start-basic/package.json
@@ -12,15 +12,15 @@
     "@tanstack/solid-router": "^1.133.23",
     "@tanstack/solid-router-devtools": "^1.133.23",
     "@tanstack/solid-start": "^1.133.23",
-    "solid-js": "^1.9.5",
     "redaxios": "^0.5.1",
+    "solid-js": "^1.9.5",
     "tailwind-merge": "^2.6.0"
   },
   "devDependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
     "@types/node": "^22.5.4",
-    "autoprefixer": "^10.4.20",
     "postcss": "^8.5.1",
-    "tailwindcss": "^3.4.17",
+    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
     "vite": "^7.1.7",
     "vite-plugin-solid": "^2.11.10",
diff --git a/examples/solid/start-basic/postcss.config.mjs b/examples/solid/start-basic/postcss.config.mjs
index 2e7af2b7f1..a7f73a2d1d 100644
--- a/examples/solid/start-basic/postcss.config.mjs
+++ b/examples/solid/start-basic/postcss.config.mjs
@@ -1,6 +1,5 @@
 export default {
   plugins: {
-    tailwindcss: {},
-    autoprefixer: {},
+    '@tailwindcss/postcss': {},
   },
 }
diff --git a/examples/solid/start-basic/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic/src/components/DefaultCatchBoundary.tsx
index 0dff3919fd..1ae7a0cf94 100644
--- a/examples/solid/start-basic/src/components/DefaultCatchBoundary.tsx
+++ b/examples/solid/start-basic/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/solid/start-basic/src/components/NotFound.tsx b/examples/solid/start-basic/src/components/NotFound.tsx
index ca4c1960fa..af5ad273c5 100644
--- a/examples/solid/start-basic/src/components/NotFound.tsx
+++ b/examples/solid/start-basic/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/solid/start-basic/src/styles/app.css b/examples/solid/start-basic/src/styles/app.css
index c53c870665..fbb4ba08a5 100644
--- a/examples/solid/start-basic/src/styles/app.css
+++ b/examples/solid/start-basic/src/styles/app.css
@@ -1,6 +1,22 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
+
+/*
+  The default border color has changed to `currentcolor` in Tailwind CSS v4,
+  so we've added these compatibility styles to make sure everything still
+  looks the same as it did with Tailwind CSS v3.
+
+  If we ever want to remove these styles, we need to add an explicit border
+  color utility to any element that depends on these defaults.
+*/
+@layer base {
+  *,
+  ::after,
+  ::before,
+  ::backdrop,
+  ::file-selector-button {
+    border-color: var(--color-gray-200, currentcolor);
+  }
+}
 
 @layer base {
   html {
diff --git a/examples/solid/start-basic/tailwind.config.mjs b/examples/solid/start-basic/tailwind.config.mjs
deleted file mode 100644
index e49f4eb776..0000000000
--- a/examples/solid/start-basic/tailwind.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
-  content: ['./src/**/*.{js,jsx,ts,tsx}'],
-}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8a26bed290..0e6bbfd501 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -66,7 +66,7 @@ importers:
         version: 1.52.0
       '@tanstack/config':
         specifier: 0.22.0
-        version: 0.22.0(@types/node@22.10.2)(eslint@9.22.0(jiti@2.6.1))(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 0.22.0(@types/node@22.10.2)(eslint@9.22.0(jiti@2.6.1))(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       '@tanstack/query-core':
         specifier: 5.66.0
         version: 5.66.0
@@ -84,7 +84,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitest/browser':
         specifier: ^3.0.6
-        version: 3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4)
+        version: 3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4)
       '@vitest/ui':
         specifier: ^3.0.6
         version: 3.0.6(vitest@3.2.4)
@@ -150,10 +150,10 @@ importers:
         version: typescript@5.8.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vitest:
         specifier: ^3.2.4
-        version: 3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.1)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/e2e-utils:
     devDependencies:
@@ -162,7 +162,7 @@ importers:
         version: 3.2.0
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/react-router/basepath-file-based:
     dependencies:
@@ -196,22 +196,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/basic:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -225,8 +225,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
@@ -242,10 +242,10 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/basic-esbuild-file-based:
     dependencies:
@@ -292,6 +292,9 @@ importers:
 
   e2e/react-router/basic-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -304,9 +307,6 @@ importers:
       '@tanstack/zod-adapter':
         specifier: workspace:*
         version: link:../../../packages/zod-adapter
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -320,8 +320,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -340,16 +340,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/basic-file-based-code-splitting:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -359,9 +362,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -372,8 +372,8 @@ importers:
         specifier: ^19.0.0
         version: 19.0.0(react@19.0.0)
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -392,13 +392,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/basic-react-query:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -411,9 +414,6 @@ importers:
       '@tanstack/router-devtools':
         specifier: workspace:*
         version: link:../../../packages/router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -427,8 +427,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
@@ -444,13 +444,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/basic-react-query-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -466,9 +469,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -482,8 +482,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -502,13 +502,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/basic-scroll-restoration:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -518,9 +521,6 @@ importers:
       '@tanstack/react-virtual':
         specifier: ^3.13.0
         version: 3.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -534,8 +534,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
@@ -551,13 +551,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/basic-virtual-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -570,9 +573,6 @@ importers:
       '@tanstack/virtual-file-routes':
         specifier: workspace:*
         version: link:../../../packages/virtual-file-routes
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -586,8 +586,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -606,13 +606,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/basic-virtual-named-export-config-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -625,9 +628,6 @@ importers:
       '@tanstack/virtual-file-routes':
         specifier: workspace:*
         version: link:../../../packages/virtual-file-routes
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -641,8 +641,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -661,13 +661,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/generator-cli-only:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -677,9 +680,6 @@ importers:
       '@tanstack/router-cli':
         specifier: workspace:*
         version: link:../../../packages/router-cli
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -693,8 +693,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
@@ -710,22 +710,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/js-only-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -739,8 +739,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
@@ -759,10 +759,10 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/rspack-basic-file-based:
     dependencies:
@@ -791,6 +791,9 @@ importers:
       '@rsbuild/plugin-react':
         specifier: ^1.1.0
         version: 1.1.0(@rsbuild/core@1.2.4)
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -803,15 +806,12 @@ importers:
       '@types/react-dom':
         specifier: ^19.0.3
         version: 19.0.3(@types/react@19.0.8)
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
@@ -843,6 +843,9 @@ importers:
       '@rsbuild/plugin-react':
         specifier: ^1.1.0
         version: 1.1.0(@rsbuild/core@1.2.4)
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -858,21 +861,21 @@ importers:
       '@types/react-dom':
         specifier: ^19.0.3
         version: 19.0.3(@types/react@19.0.8)
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
 
   e2e/react-router/scroll-restoration-sandbox-vite:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -885,9 +888,6 @@ importers:
       '@tanstack/zod-adapter':
         specifier: workspace:*
         version: link:../../../packages/zod-adapter
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -901,8 +901,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -921,10 +921,10 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-router/sentry-integration:
     dependencies:
@@ -937,15 +937,15 @@ importers:
       '@sentry/vite-plugin':
         specifier: ^3.1.2
         version: 3.1.2
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -959,8 +959,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
@@ -976,10 +976,10 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   e2e/react-start/basic:
     dependencies:
@@ -1014,6 +1014,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1028,10 +1031,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -1042,17 +1042,17 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -1088,11 +1088,14 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1107,22 +1110,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/react-start/basic-cloudflare:
     dependencies:
@@ -1144,10 +1144,13 @@ importers:
     devDependencies:
       '@cloudflare/vite-plugin':
         specifier: ^1.13.7
-        version: 1.13.7(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20250924.0)(wrangler@4.40.2)
+        version: 1.13.7(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20250924.0)(wrangler@4.40.2)
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1162,25 +1165,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       wrangler:
         specifier: ^4.40.2
         version: 4.40.2
@@ -1219,11 +1219,14 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1238,10 +1241,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -1249,14 +1249,23 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+
+  e2e/react-start/basic-rsc:
+    dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
+      tailwindcss:
+        specifier: ^4.1.15
+        version: 4.1.15
 
   e2e/react-start/basic-tsr-config:
     dependencies:
@@ -1274,7 +1283,7 @@ importers:
         version: 19.0.0(react@19.0.0)
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     devDependencies:
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
@@ -1322,6 +1331,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1339,10 +1351,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       cross-env:
         specifier: ^10.0.0
         version: 10.0.0
@@ -1353,8 +1362,8 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       tsx:
         specifier: ^4.20.3
         version: 4.20.3
@@ -1363,10 +1372,10 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/react-start/query-integration:
     dependencies:
@@ -1399,7 +1408,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -1407,6 +1416,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1421,22 +1433,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.3
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/react-start/scroll-restoration:
     dependencies:
@@ -1466,7 +1475,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -1474,6 +1483,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1488,10 +1500,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -1502,14 +1511,14 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/react-start/selective-ssr:
     dependencies:
@@ -1530,14 +1539,17 @@ importers:
         version: 19.0.0(react@19.0.0)
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       zod:
         specifier: ^3.24.2
         version: 3.25.57
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1552,7 +1564,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -1560,8 +1572,8 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.3
@@ -1585,14 +1597,17 @@ importers:
         version: 19.0.0(react@19.0.0)
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       zod:
         specifier: ^3.24.2
         version: 3.25.57
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1607,7 +1622,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -1615,8 +1630,8 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
@@ -1655,7 +1670,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -1663,6 +1678,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1680,10 +1698,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -1694,14 +1709,14 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/react-start/server-routes:
     dependencies:
@@ -1731,7 +1746,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -1739,6 +1754,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1756,10 +1774,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -1770,14 +1785,14 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.3
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/react-start/spa-mode:
     dependencies:
@@ -1797,6 +1812,9 @@ importers:
         specifier: ^19.0.0
         version: 19.0.0(react@19.0.0)
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1813,17 +1831,17 @@ importers:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/react-start/virtual-routes:
     dependencies:
@@ -1853,7 +1871,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -1861,6 +1879,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1875,10 +1896,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -1889,14 +1907,14 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/react-start/website:
     dependencies:
@@ -1928,6 +1946,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -1942,10 +1963,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -1953,29 +1971,29 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-router/basic:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-router':
         specifier: workspace:^
         version: link:../../../packages/solid-router
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -1986,8 +2004,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
@@ -1997,10 +2015,10 @@ importers:
         version: link:../../e2e-utils
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-router/basic-esbuild-file-based:
     dependencies:
@@ -2041,6 +2059,9 @@ importers:
 
   e2e/solid-router/basic-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
@@ -2053,9 +2074,6 @@ importers:
       '@tanstack/zod-adapter':
         specifier: workspace:*
         version: link:../../../packages/zod-adapter
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -2066,8 +2084,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -2083,13 +2101,16 @@ importers:
         version: 1.1.11
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-router/basic-file-based-code-splitting:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
@@ -2099,9 +2120,6 @@ importers:
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -2109,8 +2127,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -2123,13 +2141,16 @@ importers:
         version: link:../../e2e-utils
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-router/basic-scroll-restoration:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-router':
         specifier: workspace:^
         version: link:../../../packages/solid-router
@@ -2139,9 +2160,6 @@ importers:
       '@tanstack/solid-virtual':
         specifier: ^3.13.0
         version: 3.13.12(solid-js@1.9.5)
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
@@ -2152,8 +2170,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
@@ -2163,13 +2181,16 @@ importers:
         version: link:../../e2e-utils
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-router/basic-solid-query:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-query':
         specifier: ^5.71.9
         version: 5.72.2(solid-js@1.9.5)
@@ -2182,9 +2203,6 @@ importers:
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -2195,8 +2213,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
@@ -2206,13 +2224,16 @@ importers:
         version: link:../../e2e-utils
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-router/basic-solid-query-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
@@ -2228,9 +2249,6 @@ importers:
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -2241,8 +2259,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -2255,13 +2273,16 @@ importers:
         version: link:../../e2e-utils
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-router/basic-virtual-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
@@ -2274,9 +2295,6 @@ importers:
       '@tanstack/virtual-file-routes':
         specifier: workspace:*
         version: link:../../../packages/virtual-file-routes
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -2287,8 +2305,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -2301,13 +2319,16 @@ importers:
         version: link:../../e2e-utils
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-router/basic-virtual-named-export-config-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
@@ -2320,9 +2341,6 @@ importers:
       '@tanstack/virtual-file-routes':
         specifier: workspace:*
         version: link:../../../packages/virtual-file-routes
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -2333,8 +2351,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -2347,10 +2365,10 @@ importers:
         version: link:../../e2e-utils
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-router/rspack-basic-file-based:
     dependencies:
@@ -2379,21 +2397,21 @@ importers:
       '@rsbuild/plugin-solid':
         specifier: ^1.0.4
         version: 1.0.4(@babel/core@7.27.4)(@rsbuild/core@1.2.4)(solid-js@1.9.5)
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
@@ -2425,6 +2443,9 @@ importers:
       '@rsbuild/plugin-solid':
         specifier: ^1.0.4
         version: 1.0.4(@babel/core@7.28.4)(@rsbuild/core@1.2.4)(solid-js@1.9.5)
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -2434,21 +2455,21 @@ importers:
       '@tanstack/virtual-file-routes':
         specifier: workspace:*
         version: link:../../../packages/virtual-file-routes
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
 
   e2e/solid-router/scroll-restoration-sandbox-vite:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
@@ -2461,9 +2482,6 @@ importers:
       '@tanstack/zod-adapter':
         specifier: workspace:*
         version: link:../../../packages/zod-adapter
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -2474,8 +2492,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -2488,10 +2506,10 @@ importers:
         version: link:../../e2e-utils
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/basic:
     dependencies:
@@ -2521,7 +2539,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -2529,15 +2547,15 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -2548,17 +2566,17 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/basic-auth:
     dependencies:
@@ -2588,35 +2606,35 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/basic-solid-query:
     dependencies:
@@ -2649,20 +2667,20 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     devDependencies:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
@@ -2670,17 +2688,17 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/basic-tsr-config:
     dependencies:
@@ -2698,7 +2716,7 @@ importers:
         version: 1.9.5
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     devDependencies:
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
@@ -2714,10 +2732,10 @@ importers:
         version: 5.8.2
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/custom-basepath:
     dependencies:
@@ -2743,6 +2761,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -2752,9 +2773,6 @@ importers:
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       cross-env:
         specifier: ^10.0.0
         version: 10.0.0
@@ -2765,8 +2783,8 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       tsx:
         specifier: ^4.20.3
         version: 4.20.3
@@ -2775,13 +2793,13 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/query-integration:
     dependencies:
@@ -2811,7 +2829,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -2819,30 +2837,30 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/scroll-restoration:
     dependencies:
@@ -2869,7 +2887,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -2877,15 +2895,15 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -2896,17 +2914,17 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/selective-ssr:
     dependencies:
@@ -2923,6 +2941,9 @@ importers:
         specifier: ^3.24.2
         version: 3.25.57
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -2933,20 +2954,20 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/server-functions:
     dependencies:
@@ -2973,7 +2994,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -2981,6 +3002,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -2990,9 +3014,6 @@ importers:
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -3003,17 +3024,17 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/server-routes:
     dependencies:
@@ -3040,7 +3061,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3048,6 +3069,9 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -3057,9 +3081,6 @@ importers:
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -3070,17 +3091,17 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.3
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/spa-mode:
     dependencies:
@@ -3100,6 +3121,9 @@ importers:
         specifier: ^3.24.2
         version: 3.25.57
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -3107,20 +3131,20 @@ importers:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/virtual-routes:
     dependencies:
@@ -3147,7 +3171,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3155,15 +3179,15 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -3174,17 +3198,17 @@ importers:
         specifier: ^0.8.6
         version: 0.8.15
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   e2e/solid-start/website:
     dependencies:
@@ -3208,7 +3232,7 @@ importers:
         version: 2.6.0
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3216,15 +3240,15 @@ importers:
       '@playwright/test':
         specifier: ^1.52.0
         version: 1.52.0
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3232,20 +3256,23 @@ importers:
         specifier: ^0.8.6
         version: 0.8.7
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/authenticated-routes:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -3255,9 +3282,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3271,8 +3295,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3285,16 +3309,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/authenticated-routes-firebase:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -3304,9 +3331,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       firebase:
         specifier: ^11.4.0
         version: 11.4.0
@@ -3326,8 +3350,8 @@ importers:
         specifier: ^14.9.0
         version: 14.9.0
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3340,25 +3364,25 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3372,8 +3396,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@types/react':
         specifier: ^19.0.8
@@ -3383,16 +3407,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic-default-search-params:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -3402,9 +3429,6 @@ importers:
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3418,8 +3442,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3432,16 +3456,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic-devtools-panel:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query-devtools':
         specifier: ^5.67.2
         version: 5.67.2(@tanstack/react-query@5.66.0(react@19.0.0))(react@19.0.0)
@@ -3451,9 +3478,6 @@ importers:
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3467,8 +3491,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@types/react':
         specifier: ^19.0.8
@@ -3478,16 +3502,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -3497,9 +3524,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3513,8 +3537,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3527,25 +3551,25 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic-non-nested-devtools:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3559,8 +3583,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@types/react':
         specifier: ^19.0.8
@@ -3570,16 +3594,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic-react-query:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -3592,9 +3619,6 @@ importers:
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3608,8 +3632,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@types/react':
         specifier: ^19.0.8
@@ -3619,16 +3643,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic-react-query-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -3644,9 +3671,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3660,8 +3684,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3674,13 +3698,13 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic-ssr-file-based:
     dependencies:
@@ -3723,13 +3747,13 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.5.2
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.8.3
         version: 5.8.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic-ssr-streaming-file-based:
     dependencies:
@@ -3772,16 +3796,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic-virtual-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -3794,9 +3821,6 @@ importers:
       '@tanstack/virtual-file-routes':
         specifier: workspace:*
         version: link:../../../packages/virtual-file-routes
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3810,8 +3834,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3824,16 +3848,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/basic-virtual-inside-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -3846,9 +3873,6 @@ importers:
       '@tanstack/virtual-file-routes':
         specifier: workspace:*
         version: link:../../../packages/virtual-file-routes
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3862,8 +3886,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3876,25 +3900,25 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/deferred-data:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -3908,8 +3932,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -3922,19 +3946,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/i18n-paraglide:
     dependencies:
       '@tailwindcss/vite':
         specifier: ^4.1.13
-        version: 4.1.13(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.1.13(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -3965,25 +3989,25 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^5.0.3
-        version: 5.0.3(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.0.3(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.9.2
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/kitchen-sink:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       immer:
         specifier: ^10.1.1
         version: 10.1.1
@@ -4000,8 +4024,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -4014,16 +4038,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/kitchen-sink-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -4033,9 +4060,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       immer:
         specifier: ^10.1.1
         version: 10.1.1
@@ -4052,8 +4076,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -4066,16 +4090,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/kitchen-sink-react-query:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -4088,9 +4115,6 @@ importers:
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       immer:
         specifier: ^10.1.1
         version: 10.1.1
@@ -4107,8 +4131,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -4121,16 +4145,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/kitchen-sink-react-query-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -4146,9 +4173,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       immer:
         specifier: ^10.1.1
         version: 10.1.1
@@ -4165,8 +4189,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -4179,16 +4203,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/large-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -4201,9 +4228,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -4217,8 +4241,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -4231,19 +4255,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/location-masking:
     dependencies:
       '@radix-ui/react-dialog':
         specifier: ^1.1.6
         version: 1.1.7(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -4253,9 +4280,6 @@ importers:
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -4269,8 +4293,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@types/react':
         specifier: ^19.0.8
@@ -4280,16 +4304,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/navigation-blocking:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -4299,9 +4326,6 @@ importers:
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -4315,8 +4339,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@types/react':
         specifier: ^19.0.8
@@ -4326,25 +4350,25 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/quickstart:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -4355,8 +4379,8 @@ importers:
         specifier: ^19.0.0
         version: 19.0.0(react@19.0.0)
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@types/react':
         specifier: ^19.0.8
@@ -4366,13 +4390,13 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/quickstart-esbuild-file-based:
     dependencies:
@@ -4410,6 +4434,9 @@ importers:
 
   examples/react/quickstart-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -4419,9 +4446,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -4435,8 +4459,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -4449,25 +4473,25 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/quickstart-rspack-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -4478,8 +4502,8 @@ importers:
         specifier: ^19.0.0
         version: 19.0.0(react@19.0.0)
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@rsbuild/core':
         specifier: 1.2.4
@@ -4584,16 +4608,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-react-query/packages/app:
     dependencies:
@@ -4624,25 +4648,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-react-query/packages/post-feature:
     dependencies:
@@ -4670,16 +4691,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-react-query/packages/post-query:
     dependencies:
@@ -4695,13 +4716,13 @@ importers:
     devDependencies:
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/router-monorepo-react-query/packages/router:
     dependencies:
@@ -4741,16 +4762,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-simple:
     dependencies:
@@ -4784,16 +4805,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-simple-lazy:
     dependencies:
@@ -4827,16 +4848,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-simple-lazy/packages/app:
     dependencies:
@@ -4864,25 +4885,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-simple-lazy/packages/post-feature:
     dependencies:
@@ -4907,16 +4925,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-simple-lazy/packages/router:
     dependencies:
@@ -4950,16 +4968,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-simple/packages/app:
     dependencies:
@@ -4987,25 +5005,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-simple/packages/post-feature:
     dependencies:
@@ -5027,16 +5042,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-simple/packages/router:
     dependencies:
@@ -5070,19 +5085,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/scroll-restoration:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -5092,9 +5110,6 @@ importers:
       '@tanstack/react-virtual':
         specifier: ^3.13.0
         version: 3.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -5105,8 +5120,8 @@ importers:
         specifier: ^19.0.0
         version: 19.0.0(react@19.0.0)
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@types/react':
         specifier: ^19.0.8
@@ -5116,16 +5131,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/search-validator-adapters:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/arktype-adapter':
         specifier: workspace:*
         version: link:../../../packages/arktype-adapter
@@ -5150,9 +5168,6 @@ importers:
       arktype:
         specifier: ^2.1.7
         version: 2.1.7
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -5163,8 +5178,8 @@ importers:
         specifier: ^19.0.0
         version: 19.0.0(react@19.0.0)
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       valibot:
         specifier: 1.0.0-beta.15
         version: 1.0.0-beta.15(typescript@5.8.2)
@@ -5186,13 +5201,13 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/start-bare:
     dependencies:
@@ -5226,16 +5241,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-basic:
     dependencies:
@@ -5261,6 +5276,9 @@ importers:
         specifier: ^3.24.2
         version: 3.25.57
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
@@ -5272,25 +5290,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.6.0
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-basic-auth:
     dependencies:
@@ -5322,6 +5337,9 @@ importers:
         specifier: ^2.6.0
         version: 2.6.0
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
@@ -5333,25 +5351,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-basic-cloudflare:
     dependencies:
@@ -5373,7 +5388,10 @@ importers:
     devDependencies:
       '@cloudflare/vite-plugin':
         specifier: ^1.13.7
-        version: 1.13.7(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20250924.0)(wrangler@4.40.2)
+        version: 1.13.7(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20250924.0)(wrangler@4.40.2)
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
@@ -5385,25 +5403,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.6.0
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       wrangler:
         specifier: ^4.40.2
         version: 4.40.2
@@ -5441,6 +5456,9 @@ importers:
         specifier: ^2.6.0
         version: 2.6.0
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
@@ -5452,25 +5470,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-basic-static:
     dependencies:
@@ -5515,23 +5530,23 @@ importers:
         specifier: ^8.4.49
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.15
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.6.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.3
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-bun:
     dependencies:
       '@tailwindcss/vite':
         specifier: ^4.1.13
-        version: 4.1.13(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.1.13(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       '@tanstack/react-devtools':
         specifier: ^0.7.0
         version: 0.7.0(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(solid-js@1.9.5)
@@ -5561,7 +5576,7 @@ importers:
         version: 4.1.13
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
     devDependencies:
       '@tanstack/eslint-config':
         specifier: ^0.3.2
@@ -5586,7 +5601,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^5.0.3
-        version: 5.0.3(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.0.3(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       jsdom:
         specifier: ^27.0.0
         version: 27.0.0(postcss@8.5.6)
@@ -5598,10 +5613,10 @@ importers:
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vitest:
         specifier: ^3.2.4
-        version: 3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4))(@vitest/ui@3.0.6(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       web-vitals:
         specifier: ^5.1.0
         version: 5.1.0
@@ -5622,7 +5637,7 @@ importers:
         version: link:../../../packages/react-start
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       react:
         specifier: ^19.0.0
         version: 19.0.0
@@ -5639,6 +5654,9 @@ importers:
         specifier: ^2.6.0
         version: 2.6.0
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
@@ -5648,24 +5666,21 @@ importers:
       '@types/react-dom':
         specifier: ^19.0.3
         version: 19.0.3(@types/react@19.0.8)
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-convex-trellaux:
     dependencies:
@@ -5724,6 +5739,9 @@ importers:
         specifier: ^3.24.2
         version: 3.25.57
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
@@ -5735,25 +5753,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-counter:
     dependencies:
@@ -5784,13 +5799,13 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/start-i18n-paraglide:
     dependencies:
@@ -5818,7 +5833,7 @@ importers:
         version: 2.4.0(babel-plugin-macros@3.1.0)
       '@tailwindcss/vite':
         specifier: ^4.1.13
-        version: 4.1.13(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.1.13(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
@@ -5830,7 +5845,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.7.0
-        version: 4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       tailwindcss:
         specifier: ^4.1.13
         version: 4.1.13
@@ -5839,10 +5854,10 @@ importers:
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-large:
     dependencies:
@@ -5874,6 +5889,9 @@ importers:
         specifier: ^1.0.0-beta.15
         version: 1.0.0-beta.15(typescript@5.8.2)
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
@@ -5885,25 +5903,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-material-ui:
     dependencies:
@@ -5952,16 +5967,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-streaming-data-from-server-functions:
     dependencies:
@@ -5995,16 +6010,16 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-supabase-basic:
     dependencies:
@@ -6033,6 +6048,9 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/react':
         specifier: ^19.0.8
         version: 19.0.8
@@ -6041,25 +6059,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-tailwind-v4:
     dependencies:
@@ -6087,7 +6102,7 @@ importers:
     devDependencies:
       '@tailwindcss/vite':
         specifier: ^4.1.6
-        version: 4.1.6(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.1.6(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
@@ -6099,7 +6114,7 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       tailwindcss:
         specifier: ^4.1.6
         version: 4.1.6
@@ -6108,10 +6123,10 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-trellaux:
     dependencies:
@@ -6161,6 +6176,9 @@ importers:
         specifier: ^3.24.2
         version: 3.25.57
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
@@ -6172,25 +6190,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.6.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/start-workos:
     dependencies:
@@ -6230,28 +6245,22 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
-      postcss:
-        specifier: ^8.5.1
-        version: 8.5.3
-      tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/view-transitions:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -6261,9 +6270,6 @@ importers:
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -6277,8 +6283,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6291,25 +6297,25 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/with-framer-motion:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/react-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       framer-motion:
         specifier: ^11.18.2
         version: 11.18.2(@emotion/is-prop-valid@1.3.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -6326,8 +6332,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6340,16 +6346,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/with-trpc:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-router':
         specifier: workspace:*
         version: link:../../../packages/react-router
@@ -6365,9 +6374,6 @@ importers:
       '@trpc/server':
         specifier: ^11.4.3
         version: 11.4.3(typescript@5.9.2)
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       express:
         specifier: ^4.21.2
         version: 4.21.2
@@ -6384,8 +6390,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6401,16 +6407,19 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       tsx:
         specifier: ^4.20.3
         version: 4.20.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/react/with-trpc-react-query:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/react-query':
         specifier: 5.66.0
         version: 5.66.0(react@19.0.0)
@@ -6435,9 +6444,6 @@ importers:
       '@trpc/tanstack-react-query':
         specifier: ^11.4.3
         version: 11.4.3(@tanstack/react-query@5.66.0(react@19.0.0))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.4.3(typescript@5.9.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.9.2)
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       express:
         specifier: ^4.21.2
         version: 4.21.2
@@ -6454,8 +6460,8 @@ importers:
         specifier: ^0.5.1
         version: 0.5.1
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6471,25 +6477,25 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       tsx:
         specifier: ^4.20.3
         version: 4.20.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   examples/solid/basic:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-router':
         specifier: ^1.133.23
         version: link:../../../packages/solid-router
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -6500,8 +6506,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@types/react':
         specifier: ^19.0.8
@@ -6514,22 +6520,22 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/basic-devtools-panel:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-router':
         specifier: ^1.133.23
         version: link:../../../packages/solid-router
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -6540,30 +6546,30 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/basic-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-router':
         specifier: ^1.133.23
         version: link:../../../packages/solid-router
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -6574,8 +6580,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6588,22 +6594,22 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/basic-non-nested-devtools:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-router':
         specifier: ^1.133.23
         version: link:../../../packages/solid-router
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -6614,8 +6620,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@types/react':
         specifier: ^19.0.8
@@ -6628,13 +6634,16 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/basic-solid-query:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-query':
         specifier: ^5.71.9
         version: 5.72.2(solid-js@1.9.5)
@@ -6647,9 +6656,6 @@ importers:
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -6660,8 +6666,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
     devDependencies:
       '@tanstack/router-plugin':
         specifier: workspace:*
@@ -6671,13 +6677,16 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/basic-solid-query-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-query':
         specifier: ^5.71.9
         version: 5.72.2(solid-js@1.9.5)
@@ -6690,9 +6699,6 @@ importers:
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -6703,8 +6709,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6717,22 +6723,22 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/basic-ssr-streaming-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-router':
         specifier: ^1.133.23
         version: link:../../../packages/solid-router
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       compression:
         specifier: ^1.7.5
         version: 1.8.0
@@ -6755,8 +6761,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6772,22 +6778,22 @@ importers:
         version: 5.8.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/kitchen-sink-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-router':
         specifier: ^1.133.23
         version: link:../../../packages/solid-router
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       immer:
         specifier: ^10.1.1
         version: 10.1.1
@@ -6801,8 +6807,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6815,13 +6821,16 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/kitchen-sink-solid-query:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-query':
         specifier: ^5.72.0
         version: 5.72.0(solid-js@1.9.5)
@@ -6834,9 +6843,6 @@ importers:
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       immer:
         specifier: ^10.1.1
         version: 10.1.1
@@ -6850,8 +6856,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6861,13 +6867,16 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/kitchen-sink-solid-query-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/router-plugin':
         specifier: workspace:*
         version: link:../../../packages/router-plugin
@@ -6883,9 +6892,6 @@ importers:
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       immer:
         specifier: ^10.1.1
         version: 10.1.1
@@ -6899,8 +6905,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6910,22 +6916,22 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/quickstart-file-based:
     dependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@tanstack/solid-router':
         specifier: ^1.133.23
         version: link:../../../packages/solid-router
       '@tanstack/solid-router-devtools':
         specifier: workspace:^
         version: link:../../../packages/solid-router-devtools
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
@@ -6936,8 +6942,8 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       zod:
         specifier: ^3.24.2
         version: 3.25.57
@@ -6950,10 +6956,10 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/start-bare:
     dependencies:
@@ -6990,13 +6996,13 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/start-basic:
     dependencies:
@@ -7019,30 +7025,30 @@ importers:
         specifier: ^2.6.0
         version: 2.6.0
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/start-basic-auth:
     dependencies:
@@ -7071,30 +7077,30 @@ importers:
         specifier: ^2.6.0
         version: 2.6.0
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/start-basic-cloudflare:
     dependencies:
@@ -7113,31 +7119,31 @@ importers:
     devDependencies:
       '@cloudflare/vite-plugin':
         specifier: ^1.13.7
-        version: 1.13.7(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20250924.0)(wrangler@4.40.2)
+        version: 1.13.7(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20250924.0)(wrangler@4.40.2)
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       wrangler:
         specifier: ^4.40.2
         version: 4.40.2
@@ -7159,31 +7165,31 @@ importers:
     devDependencies:
       '@netlify/vite-plugin-tanstack-start':
         specifier: ^1.1.4
-        version: 1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4)(ioredis@5.8.0)(rollup@4.52.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4)(ioredis@5.8.0)(rollup@4.52.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/start-basic-nitro:
     dependencies:
@@ -7200,33 +7206,33 @@ importers:
         specifier: ^1.9.5
         version: 1.9.5
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       nitro:
         specifier: ^3.0.1-alpha.0
-        version: 3.0.1-alpha.0(@netlify/blobs@10.1.0)(chokidar@4.0.3)(ioredis@5.8.0)(lru-cache@11.2.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 3.0.1-alpha.0(@netlify/blobs@10.1.0)(chokidar@4.0.3)(ioredis@5.8.0)(lru-cache@11.2.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/start-basic-solid-query:
     dependencies:
@@ -7258,30 +7264,30 @@ importers:
         specifier: ^2.6.0
         version: 2.6.0
     devDependencies:
+      '@tailwindcss/postcss':
+        specifier: ^4.1.15
+        version: 4.1.15
       '@types/node':
         specifier: 22.10.2
         version: 22.10.2
-      autoprefixer:
-        specifier: ^10.4.20
-        version: 10.4.20(postcss@8.5.6)
       postcss:
         specifier: ^8.5.1
         version: 8.5.6
       tailwindcss:
-        specifier: ^3.4.17
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.7.2
         version: 5.9.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/solid/start-basic-static:
     dependencies:
@@ -7317,20 +7323,20 @@ importers:
         specifier: ^8.4.49
         version: 8.5.3
       tailwindcss:
-        specifier: ^3.4.15
-        version: 3.4.17
+        specifier: ^4.1.15
+        version: 4.1.15
       typescript:
         specifier: ^5.6.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       vite-tsconfig-paths:
         specifier: ^5.1.3
-        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   packages/arktype-adapter:
     devDependencies:
@@ -7394,7 +7400,7 @@ importers:
         version: 1.7.0(babel-plugin-macros@3.1.0)
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   packages/eslint-plugin-router:
     dependencies:
@@ -7424,7 +7430,7 @@ importers:
         version: 2.0.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   packages/react-router:
     dependencies:
@@ -7455,7 +7461,7 @@ importers:
         version: 16.2.0(@testing-library/dom@10.4.1)(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       combinate:
         specifier: ^1.1.11
         version: 1.1.11
@@ -7482,11 +7488,11 @@ importers:
         version: link:../router-devtools-core
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     devDependencies:
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       react:
         specifier: ^19.0.0
         version: 19.0.0
@@ -7511,7 +7517,7 @@ importers:
         version: link:../react-router
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       react:
         specifier: ^19.0.0
         version: 19.0.0
@@ -7553,7 +7559,7 @@ importers:
         version: 19.0.0(react@19.0.0)
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   packages/react-start-client:
     dependencies:
@@ -7584,7 +7590,7 @@ importers:
         version: 16.2.0(@testing-library/dom@10.4.1)(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   packages/react-start-server:
     dependencies:
@@ -7606,7 +7612,7 @@ importers:
     devDependencies:
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       react:
         specifier: ^19.0.0
         version: 19.0.0
@@ -7680,11 +7686,11 @@ importers:
         version: 2.1.16(csstype@3.1.3)
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     devDependencies:
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       react:
         specifier: ^19.0.0
         version: 19.0.0
@@ -7711,14 +7717,14 @@ importers:
         version: 1.3.3
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     devDependencies:
       solid-js:
         specifier: ^1.9.5
         version: 1.9.5
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   packages/router-generator:
     dependencies:
@@ -7800,10 +7806,10 @@ importers:
         version: 2.3.4
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       webpack:
         specifier: '>=5.92.0'
         version: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))
@@ -7969,7 +7975,7 @@ importers:
         version: 1.9.5
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       zod:
         specifier: ^3.23.8
         version: 3.25.57
@@ -7984,14 +7990,14 @@ importers:
         version: link:../solid-router
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     devDependencies:
       solid-js:
         specifier: ^1.9.5
         version: 1.9.5
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   packages/solid-router-ssr-query:
     dependencies:
@@ -8016,7 +8022,7 @@ importers:
         version: 1.9.5
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   packages/solid-start:
     dependencies:
@@ -8050,7 +8056,7 @@ importers:
         version: link:../router-utils
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   packages/solid-start-client:
     dependencies:
@@ -8081,7 +8087,7 @@ importers:
         version: 6.6.3
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   packages/solid-start-server:
     dependencies:
@@ -8112,7 +8118,7 @@ importers:
         version: 5.8.2
       vite-plugin-solid:
         specifier: ^2.11.10
-        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   packages/start-client-core:
     dependencies:
@@ -8190,7 +8196,7 @@ importers:
         version: 1.6.1
       vitefu:
         specifier: ^1.1.1
-        version: 1.1.1(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 1.1.1(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       xmlbuilder2:
         specifier: ^3.1.1
         version: 3.1.1
@@ -8206,7 +8212,7 @@ importers:
         version: 7.20.5
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   packages/start-server-core:
     dependencies:
@@ -12120,6 +12126,9 @@ packages:
   '@tailwindcss/node@4.1.13':
     resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==}
 
+  '@tailwindcss/node@4.1.15':
+    resolution: {integrity: sha512-HF4+7QxATZWY3Jr8OlZrBSXmwT3Watj0OogeDvdUY/ByXJHQ+LBtqA2brDb3sBxYslIFx6UP94BJ4X6a4L9Bmw==}
+
   '@tailwindcss/node@4.1.6':
     resolution: {integrity: sha512-ed6zQbgmKsjsVvodAS1q1Ld2BolEuxJOSyyNc+vhkjdmfNUDCmQnlXBfQkHrlzNmslxHsQU/bFmzcEbv4xXsLg==}
 
@@ -12129,6 +12138,12 @@ packages:
     cpu: [arm64]
     os: [android]
 
+  '@tailwindcss/oxide-android-arm64@4.1.15':
+    resolution: {integrity: sha512-TkUkUgAw8At4cBjCeVCRMc/guVLKOU1D+sBPrHt5uVcGhlbVKxrCaCW9OKUIBv1oWkjh4GbunD/u/Mf0ql6kEA==}
+    engines: {node: '>= 10'}
+    cpu: [arm64]
+    os: [android]
+
   '@tailwindcss/oxide-android-arm64@4.1.6':
     resolution: {integrity: sha512-VHwwPiwXtdIvOvqT/0/FLH/pizTVu78FOnI9jQo64kSAikFSZT7K4pjyzoDpSMaveJTGyAKvDjuhxJxKfmvjiQ==}
     engines: {node: '>= 10'}
@@ -12141,6 +12156,12 @@ packages:
     cpu: [arm64]
     os: [darwin]
 
+  '@tailwindcss/oxide-darwin-arm64@4.1.15':
+    resolution: {integrity: sha512-xt5XEJpn2piMSfvd1UFN6jrWXyaKCwikP4Pidcf+yfHTSzSpYhG3dcMktjNkQO3JiLCp+0bG0HoWGvz97K162w==}
+    engines: {node: '>= 10'}
+    cpu: [arm64]
+    os: [darwin]
+
   '@tailwindcss/oxide-darwin-arm64@4.1.6':
     resolution: {integrity: sha512-weINOCcqv1HVBIGptNrk7c6lWgSFFiQMcCpKM4tnVi5x8OY2v1FrV76jwLukfT6pL1hyajc06tyVmZFYXoxvhQ==}
     engines: {node: '>= 10'}
@@ -12153,6 +12174,12 @@ packages:
     cpu: [x64]
     os: [darwin]
 
+  '@tailwindcss/oxide-darwin-x64@4.1.15':
+    resolution: {integrity: sha512-TnWaxP6Bx2CojZEXAV2M01Yl13nYPpp0EtGpUrY+LMciKfIXiLL2r/SiSRpagE5Fp2gX+rflp/Os1VJDAyqymg==}
+    engines: {node: '>= 10'}
+    cpu: [x64]
+    os: [darwin]
+
   '@tailwindcss/oxide-darwin-x64@4.1.6':
     resolution: {integrity: sha512-3FzekhHG0ww1zQjQ1lPoq0wPrAIVXAbUkWdWM8u5BnYFZgb9ja5ejBqyTgjpo5mfy0hFOoMnMuVDI+7CXhXZaQ==}
     engines: {node: '>= 10'}
@@ -12165,6 +12192,12 @@ packages:
     cpu: [x64]
     os: [freebsd]
 
+  '@tailwindcss/oxide-freebsd-x64@4.1.15':
+    resolution: {integrity: sha512-quISQDWqiB6Cqhjc3iWptXVZHNVENsWoI77L1qgGEHNIdLDLFnw3/AfY7DidAiiCIkGX/MjIdB3bbBZR/G2aJg==}
+    engines: {node: '>= 10'}
+    cpu: [x64]
+    os: [freebsd]
+
   '@tailwindcss/oxide-freebsd-x64@4.1.6':
     resolution: {integrity: sha512-4m5F5lpkBZhVQJq53oe5XgJ+aFYWdrgkMwViHjRsES3KEu2m1udR21B1I77RUqie0ZYNscFzY1v9aDssMBZ/1w==}
     engines: {node: '>= 10'}
@@ -12177,6 +12210,12 @@ packages:
     cpu: [arm]
     os: [linux]
 
+  '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.15':
+    resolution: {integrity: sha512-ObG76+vPlab65xzVUQbExmDU9FIeYLQ5k2LrQdR2Ud6hboR+ZobXpDoKEYXf/uOezOfIYmy2Ta3w0ejkTg9yxg==}
+    engines: {node: '>= 10'}
+    cpu: [arm]
+    os: [linux]
+
   '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6':
     resolution: {integrity: sha512-qU0rHnA9P/ZoaDKouU1oGPxPWzDKtIfX7eOGi5jOWJKdxieUJdVV+CxWZOpDWlYTd4N3sFQvcnVLJWJ1cLP5TA==}
     engines: {node: '>= 10'}
@@ -12189,6 +12228,12 @@ packages:
     cpu: [arm64]
     os: [linux]
 
+  '@tailwindcss/oxide-linux-arm64-gnu@4.1.15':
+    resolution: {integrity: sha512-4WbBacRmk43pkb8/xts3wnOZMDKsPFyEH/oisCm2q3aLZND25ufvJKcDUpAu0cS+CBOL05dYa8D4U5OWECuH/Q==}
+    engines: {node: '>= 10'}
+    cpu: [arm64]
+    os: [linux]
+
   '@tailwindcss/oxide-linux-arm64-gnu@4.1.6':
     resolution: {integrity: sha512-jXy3TSTrbfgyd3UxPQeXC3wm8DAgmigzar99Km9Sf6L2OFfn/k+u3VqmpgHQw5QNfCpPe43em6Q7V76Wx7ogIQ==}
     engines: {node: '>= 10'}
@@ -12201,6 +12246,12 @@ packages:
     cpu: [arm64]
     os: [linux]
 
+  '@tailwindcss/oxide-linux-arm64-musl@4.1.15':
+    resolution: {integrity: sha512-AbvmEiteEj1nf42nE8skdHv73NoR+EwXVSgPY6l39X12Ex8pzOwwfi3Kc8GAmjsnsaDEbk+aj9NyL3UeyHcTLg==}
+    engines: {node: '>= 10'}
+    cpu: [arm64]
+    os: [linux]
+
   '@tailwindcss/oxide-linux-arm64-musl@4.1.6':
     resolution: {integrity: sha512-8kjivE5xW0qAQ9HX9reVFmZj3t+VmljDLVRJpVBEoTR+3bKMnvC7iLcoSGNIUJGOZy1mLVq7x/gerVg0T+IsYw==}
     engines: {node: '>= 10'}
@@ -12213,6 +12264,12 @@ packages:
     cpu: [x64]
     os: [linux]
 
+  '@tailwindcss/oxide-linux-x64-gnu@4.1.15':
+    resolution: {integrity: sha512-+rzMVlvVgrXtFiS+ES78yWgKqpThgV19ISKD58Ck+YO5pO5KjyxLt7AWKsWMbY0R9yBDC82w6QVGz837AKQcHg==}
+    engines: {node: '>= 10'}
+    cpu: [x64]
+    os: [linux]
+
   '@tailwindcss/oxide-linux-x64-gnu@4.1.6':
     resolution: {integrity: sha512-A4spQhwnWVpjWDLXnOW9PSinO2PTKJQNRmL/aIl2U/O+RARls8doDfs6R41+DAXK0ccacvRyDpR46aVQJJCoCg==}
     engines: {node: '>= 10'}
@@ -12225,6 +12282,12 @@ packages:
     cpu: [x64]
     os: [linux]
 
+  '@tailwindcss/oxide-linux-x64-musl@4.1.15':
+    resolution: {integrity: sha512-fPdEy7a8eQN9qOIK3Em9D3TO1z41JScJn8yxl/76mp4sAXFDfV4YXxsiptJcOwy6bGR+70ZSwFIZhTXzQeqwQg==}
+    engines: {node: '>= 10'}
+    cpu: [x64]
+    os: [linux]
+
   '@tailwindcss/oxide-linux-x64-musl@4.1.6':
     resolution: {integrity: sha512-YRee+6ZqdzgiQAHVSLfl3RYmqeeaWVCk796MhXhLQu2kJu2COHBkqlqsqKYx3p8Hmk5pGCQd2jTAoMWWFeyG2A==}
     engines: {node: '>= 10'}
@@ -12243,6 +12306,18 @@ packages:
       - '@emnapi/wasi-threads'
       - tslib
 
+  '@tailwindcss/oxide-wasm32-wasi@4.1.15':
+    resolution: {integrity: sha512-sJ4yd6iXXdlgIMfIBXuVGp/NvmviEoMVWMOAGxtxhzLPp9LOj5k0pMEMZdjeMCl4C6Up+RM8T3Zgk+BMQ0bGcQ==}
+    engines: {node: '>=14.0.0'}
+    cpu: [wasm32]
+    bundledDependencies:
+      - '@napi-rs/wasm-runtime'
+      - '@emnapi/core'
+      - '@emnapi/runtime'
+      - '@tybys/wasm-util'
+      - '@emnapi/wasi-threads'
+      - tslib
+
   '@tailwindcss/oxide-wasm32-wasi@4.1.6':
     resolution: {integrity: sha512-qAp4ooTYrBQ5pk5jgg54/U1rCJ/9FLYOkkQ/nTE+bVMseMfB6O7J8zb19YTpWuu4UdfRf5zzOrNKfl6T64MNrQ==}
     engines: {node: '>=14.0.0'}
@@ -12261,6 +12336,12 @@ packages:
     cpu: [arm64]
     os: [win32]
 
+  '@tailwindcss/oxide-win32-arm64-msvc@4.1.15':
+    resolution: {integrity: sha512-sJGE5faXnNQ1iXeqmRin7Ds/ru2fgCiaQZQQz3ZGIDtvbkeV85rAZ0QJFMDg0FrqsffZG96H1U9AQlNBRLsHVg==}
+    engines: {node: '>= 10'}
+    cpu: [arm64]
+    os: [win32]
+
   '@tailwindcss/oxide-win32-arm64-msvc@4.1.6':
     resolution: {integrity: sha512-nqpDWk0Xr8ELO/nfRUDjk1pc9wDJ3ObeDdNMHLaymc4PJBWj11gdPCWZFKSK2AVKjJQC7J2EfmSmf47GN7OuLg==}
     engines: {node: '>= 10'}
@@ -12273,6 +12354,12 @@ packages:
     cpu: [x64]
     os: [win32]
 
+  '@tailwindcss/oxide-win32-x64-msvc@4.1.15':
+    resolution: {integrity: sha512-NLeHE7jUV6HcFKS504bpOohyi01zPXi2PXmjFfkzTph8xRxDdxkRsXm/xDO5uV5K3brrE1cCwbUYmFUSHR3u1w==}
+    engines: {node: '>= 10'}
+    cpu: [x64]
+    os: [win32]
+
   '@tailwindcss/oxide-win32-x64-msvc@4.1.6':
     resolution: {integrity: sha512-5k9xF33xkfKpo9wCvYcegQ21VwIBU1/qEbYlVukfEIyQbEA47uK8AAwS7NVjNE3vHzcmxMYwd0l6L4pPjjm1rQ==}
     engines: {node: '>= 10'}
@@ -12283,10 +12370,17 @@ packages:
     resolution: {integrity: sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==}
     engines: {node: '>= 10'}
 
+  '@tailwindcss/oxide@4.1.15':
+    resolution: {integrity: sha512-krhX+UOOgnsUuks2SR7hFafXmLQrKxB4YyRTERuCE59JlYL+FawgaAlSkOYmDRJdf1Q+IFNDMl9iRnBW7QBDfQ==}
+    engines: {node: '>= 10'}
+
   '@tailwindcss/oxide@4.1.6':
     resolution: {integrity: sha512-0bpEBQiGx+227fW4G0fLQ8vuvyy5rsB1YIYNapTq3aRsJ9taF3f5cCaovDjN5pUGKKzcpMrZst/mhNaKAPOHOA==}
     engines: {node: '>= 10'}
 
+  '@tailwindcss/postcss@4.1.15':
+    resolution: {integrity: sha512-IZh8IT76KujRz6d15wZw4eoeViT4TqmzVWNNfpuNCTKiaZUwgr5vtPqO4HjuYDyx3MgGR5qgPt1HMzTeLJyA3g==}
+
   '@tailwindcss/vite@4.1.13':
     resolution: {integrity: sha512-0PmqLQ010N58SbMTJ7BVJ4I2xopiQn/5i6nlb4JmxzQf8zcS5+m2Cv6tqh+sfDwtIdjoEnOvwsGQ1hkUi8QEHQ==}
     peerDependencies:
@@ -13293,9 +13387,6 @@ packages:
     resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==}
     engines: {node: '>= 14'}
 
-  arg@5.0.2:
-    resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
-
   argparse@1.0.10:
     resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
 
@@ -13508,10 +13599,6 @@ packages:
   camel-case@4.1.2:
     resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
 
-  camelcase-css@2.0.1:
-    resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
-    engines: {node: '>= 6'}
-
   caniuse-lite@1.0.30001696:
     resolution: {integrity: sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==}
 
@@ -13678,10 +13765,6 @@ packages:
   commander@2.20.3:
     resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
 
-  commander@4.1.1:
-    resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
-    engines: {node: '>= 6'}
-
   commander@8.3.0:
     resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
     engines: {node: '>= 12'}
@@ -13897,11 +13980,6 @@ packages:
   css.escape@1.5.1:
     resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
 
-  cssesc@3.0.0:
-    resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
-    engines: {node: '>=4'}
-    hasBin: true
-
   cssfilter@0.0.10:
     resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==}
 
@@ -14166,16 +14244,10 @@ packages:
   dettle@1.0.5:
     resolution: {integrity: sha512-ZVyjhAJ7sCe1PNXEGveObOH9AC8QvMga3HJIghHawtG7mE4K5pW9nz/vDGAr/U7a3LWgdOzEE7ac9MURnyfaTA==}
 
-  didyoumean@1.2.2:
-    resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
-
   diff@8.0.2:
     resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==}
     engines: {node: '>=0.3.1'}
 
-  dlv@1.1.3:
-    resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
-
   dns-packet@5.6.1:
     resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
     engines: {node: '>=6'}
@@ -15457,10 +15529,6 @@ packages:
     resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
     engines: {node: '>= 10.13.0'}
 
-  jiti@1.21.7:
-    resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
-    hasBin: true
-
   jiti@2.4.2:
     resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
     hasBin: true
@@ -15654,6 +15722,12 @@ packages:
     resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
     engines: {node: '>= 0.8.0'}
 
+  lightningcss-android-arm64@1.30.2:
+    resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [arm64]
+    os: [android]
+
   lightningcss-darwin-arm64@1.29.2:
     resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==}
     engines: {node: '>= 12.0.0'}
@@ -15666,6 +15740,12 @@ packages:
     cpu: [arm64]
     os: [darwin]
 
+  lightningcss-darwin-arm64@1.30.2:
+    resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [arm64]
+    os: [darwin]
+
   lightningcss-darwin-x64@1.29.2:
     resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==}
     engines: {node: '>= 12.0.0'}
@@ -15678,6 +15758,12 @@ packages:
     cpu: [x64]
     os: [darwin]
 
+  lightningcss-darwin-x64@1.30.2:
+    resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [x64]
+    os: [darwin]
+
   lightningcss-freebsd-x64@1.29.2:
     resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==}
     engines: {node: '>= 12.0.0'}
@@ -15690,6 +15776,12 @@ packages:
     cpu: [x64]
     os: [freebsd]
 
+  lightningcss-freebsd-x64@1.30.2:
+    resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [x64]
+    os: [freebsd]
+
   lightningcss-linux-arm-gnueabihf@1.29.2:
     resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==}
     engines: {node: '>= 12.0.0'}
@@ -15702,6 +15794,12 @@ packages:
     cpu: [arm]
     os: [linux]
 
+  lightningcss-linux-arm-gnueabihf@1.30.2:
+    resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [arm]
+    os: [linux]
+
   lightningcss-linux-arm64-gnu@1.29.2:
     resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==}
     engines: {node: '>= 12.0.0'}
@@ -15714,6 +15812,12 @@ packages:
     cpu: [arm64]
     os: [linux]
 
+  lightningcss-linux-arm64-gnu@1.30.2:
+    resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [arm64]
+    os: [linux]
+
   lightningcss-linux-arm64-musl@1.29.2:
     resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==}
     engines: {node: '>= 12.0.0'}
@@ -15726,6 +15830,12 @@ packages:
     cpu: [arm64]
     os: [linux]
 
+  lightningcss-linux-arm64-musl@1.30.2:
+    resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [arm64]
+    os: [linux]
+
   lightningcss-linux-x64-gnu@1.29.2:
     resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==}
     engines: {node: '>= 12.0.0'}
@@ -15738,6 +15848,12 @@ packages:
     cpu: [x64]
     os: [linux]
 
+  lightningcss-linux-x64-gnu@1.30.2:
+    resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [x64]
+    os: [linux]
+
   lightningcss-linux-x64-musl@1.29.2:
     resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==}
     engines: {node: '>= 12.0.0'}
@@ -15750,6 +15866,12 @@ packages:
     cpu: [x64]
     os: [linux]
 
+  lightningcss-linux-x64-musl@1.30.2:
+    resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [x64]
+    os: [linux]
+
   lightningcss-win32-arm64-msvc@1.29.2:
     resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==}
     engines: {node: '>= 12.0.0'}
@@ -15762,6 +15884,12 @@ packages:
     cpu: [arm64]
     os: [win32]
 
+  lightningcss-win32-arm64-msvc@1.30.2:
+    resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [arm64]
+    os: [win32]
+
   lightningcss-win32-x64-msvc@1.29.2:
     resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==}
     engines: {node: '>= 12.0.0'}
@@ -15774,6 +15902,12 @@ packages:
     cpu: [x64]
     os: [win32]
 
+  lightningcss-win32-x64-msvc@1.30.2:
+    resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [x64]
+    os: [win32]
+
   lightningcss@1.29.2:
     resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==}
     engines: {node: '>= 12.0.0'}
@@ -15782,9 +15916,9 @@ packages:
     resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==}
     engines: {node: '>= 12.0.0'}
 
-  lilconfig@3.1.3:
-    resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
-    engines: {node: '>=14'}
+  lightningcss@1.30.2:
+    resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
+    engines: {node: '>= 12.0.0'}
 
   lines-and-columns@1.2.4:
     resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
@@ -16336,10 +16470,6 @@ packages:
     resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
     engines: {node: '>=0.10.0'}
 
-  object-hash@3.0.0:
-    resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
-    engines: {node: '>= 6'}
-
   object-inspect@1.13.3:
     resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==}
     engines: {node: '>= 0.4'}
@@ -16580,14 +16710,6 @@ packages:
   picoquery@2.5.0:
     resolution: {integrity: sha512-j1kgOFxtaCyoFCkpoYG2Oj3OdGakadO7HZ7o5CqyRazlmBekKhbDoUnNnXASE07xSY4nDImWZkrZv7toSxMi/g==}
 
-  pify@2.3.0:
-    resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
-    engines: {node: '>=0.10.0'}
-
-  pirates@4.0.6:
-    resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
-    engines: {node: '>= 6'}
-
   pkg-dir@4.2.0:
     resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
     engines: {node: '>=8'}
@@ -16612,40 +16734,6 @@ packages:
     resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
     engines: {node: '>=4'}
 
-  postcss-import@15.1.0:
-    resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
-    engines: {node: '>=14.0.0'}
-    peerDependencies:
-      postcss: ^8.0.0
-
-  postcss-js@4.0.1:
-    resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
-    engines: {node: ^12 || ^14 || >= 16}
-    peerDependencies:
-      postcss: ^8.4.21
-
-  postcss-load-config@4.0.2:
-    resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
-    engines: {node: '>= 14'}
-    peerDependencies:
-      postcss: '>=8.0.9'
-      ts-node: '>=9.0.0'
-    peerDependenciesMeta:
-      postcss:
-        optional: true
-      ts-node:
-        optional: true
-
-  postcss-nested@6.2.0:
-    resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
-    engines: {node: '>=12.0'}
-    peerDependencies:
-      postcss: ^8.2.14
-
-  postcss-selector-parser@6.1.2:
-    resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
-    engines: {node: '>=4'}
-
   postcss-value-parser@4.2.0:
     resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
 
@@ -16888,9 +16976,6 @@ packages:
     resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
     engines: {node: '>=0.10.0'}
 
-  read-cache@1.0.0:
-    resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
-
   read-package-up@11.0.0:
     resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==}
     engines: {node: '>=18'}
@@ -17446,11 +17531,6 @@ packages:
   stylis@4.2.0:
     resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
 
-  sucrase@3.35.0:
-    resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
-    engines: {node: '>=16 || 14 >=14.17'}
-    hasBin: true
-
   supports-color@10.0.0:
     resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==}
     engines: {node: '>=18'}
@@ -17497,14 +17577,12 @@ packages:
   tailwind-merge@2.6.0:
     resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==}
 
-  tailwindcss@3.4.17:
-    resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==}
-    engines: {node: '>=14.0.0'}
-    hasBin: true
-
   tailwindcss@4.1.13:
     resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==}
 
+  tailwindcss@4.1.15:
+    resolution: {integrity: sha512-k2WLnWkYFkdpRv+Oby3EBXIyQC8/s1HOFMBUViwtAh6Z5uAozeUSMQlIsn/c6Q2iJzqG6aJT3wdPaRNj70iYxQ==}
+
   tailwindcss@4.1.6:
     resolution: {integrity: sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==}
 
@@ -17707,9 +17785,6 @@ packages:
     peerDependencies:
       typescript: '>=4.0.0'
 
-  ts-interface-checker@0.1.13:
-    resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
-
   ts-pattern@5.6.2:
     resolution: {integrity: sha512-d4IxJUXROL5NCa3amvMg6VQW2HVtZYmUTPfvVtO7zJWGYLJ+mry9v2OmYm+z67aniQoQ8/yFNadiEwtNS9qQiw==}
 
@@ -19103,7 +19178,7 @@ snapshots:
     optionalDependencies:
       workerd: 1.20250924.0
 
-  '@cloudflare/vite-plugin@1.13.7(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20250924.0)(wrangler@4.40.2)':
+  '@cloudflare/vite-plugin@1.13.7(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20250924.0)(wrangler@4.40.2)':
     dependencies:
       '@cloudflare/unenv-preset': 2.7.4(unenv@2.0.0-rc.21)(workerd@1.20250924.0)
       '@remix-run/node-fetch-server': 0.8.1
@@ -19112,7 +19187,7 @@ snapshots:
       picocolors: 1.1.1
       tinyglobby: 0.2.15
       unenv: 2.0.0-rc.21
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       wrangler: 4.40.2
       ws: 8.18.0
     transitivePeerDependencies:
@@ -20407,8 +20482,8 @@ snapshots:
 
   '@jridgewell/remapping@2.3.5':
     dependencies:
-      '@jridgewell/gen-mapping': 0.3.8
-      '@jridgewell/trace-mapping': 0.3.25
+      '@jridgewell/gen-mapping': 0.3.13
+      '@jridgewell/trace-mapping': 0.3.31
 
   '@jridgewell/resolve-uri@3.1.2': {}
 
@@ -20416,8 +20491,8 @@ snapshots:
 
   '@jridgewell/source-map@0.3.6':
     dependencies:
-      '@jridgewell/gen-mapping': 0.3.8
-      '@jridgewell/trace-mapping': 0.3.25
+      '@jridgewell/gen-mapping': 0.3.13
+      '@jridgewell/trace-mapping': 0.3.31
 
   '@jridgewell/sourcemap-codec@1.5.0': {}
 
@@ -20878,10 +20953,10 @@ snapshots:
 
   '@netlify/types@2.1.0': {}
 
-  '@netlify/vite-plugin-tanstack-start@1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4)(ioredis@5.8.0)(rollup@4.52.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@netlify/vite-plugin-tanstack-start@1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4)(ioredis@5.8.0)(rollup@4.52.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
-      '@netlify/vite-plugin': 2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4)(ioredis@5.8.0)(rollup@4.52.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      '@netlify/vite-plugin': 2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4)(ioredis@5.8.0)(rollup@4.52.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     optionalDependencies:
       '@tanstack/solid-start': link:packages/solid-start
     transitivePeerDependencies:
@@ -20908,12 +20983,12 @@ snapshots:
       - supports-color
       - uploadthing
 
-  '@netlify/vite-plugin@2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4)(ioredis@5.8.0)(rollup@4.52.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@netlify/vite-plugin@2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4)(ioredis@5.8.0)(rollup@4.52.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@netlify/dev': 4.6.3(db0@0.3.4)(ioredis@5.8.0)(rollup@4.52.5)
       '@netlify/dev-utils': 4.3.0
       dedent: 1.7.0(babel-plugin-macros@3.1.0)
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - '@azure/app-configuration'
       - '@azure/cosmos'
@@ -22679,6 +22754,16 @@ snapshots:
       source-map-js: 1.2.1
       tailwindcss: 4.1.13
 
+  '@tailwindcss/node@4.1.15':
+    dependencies:
+      '@jridgewell/remapping': 2.3.5
+      enhanced-resolve: 5.18.3
+      jiti: 2.6.1
+      lightningcss: 1.30.2
+      magic-string: 0.30.19
+      source-map-js: 1.2.1
+      tailwindcss: 4.1.15
+
   '@tailwindcss/node@4.1.6':
     dependencies:
       '@ampproject/remapping': 2.3.0
@@ -22692,72 +22777,108 @@ snapshots:
   '@tailwindcss/oxide-android-arm64@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-android-arm64@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-android-arm64@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-darwin-arm64@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-darwin-arm64@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-darwin-arm64@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-darwin-x64@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-darwin-x64@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-darwin-x64@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-freebsd-x64@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-freebsd-x64@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-freebsd-x64@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-linux-arm64-gnu@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-linux-arm64-gnu@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-linux-arm64-gnu@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-linux-arm64-musl@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-linux-arm64-musl@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-linux-arm64-musl@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-linux-x64-gnu@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-linux-x64-gnu@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-linux-x64-gnu@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-linux-x64-musl@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-linux-x64-musl@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-linux-x64-musl@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-wasm32-wasi@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-wasm32-wasi@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-wasm32-wasi@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-win32-arm64-msvc@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-win32-arm64-msvc@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-win32-arm64-msvc@4.1.6':
     optional: true
 
   '@tailwindcss/oxide-win32-x64-msvc@4.1.13':
     optional: true
 
+  '@tailwindcss/oxide-win32-x64-msvc@4.1.15':
+    optional: true
+
   '@tailwindcss/oxide-win32-x64-msvc@4.1.6':
     optional: true
 
@@ -22779,6 +22900,21 @@ snapshots:
       '@tailwindcss/oxide-win32-arm64-msvc': 4.1.13
       '@tailwindcss/oxide-win32-x64-msvc': 4.1.13
 
+  '@tailwindcss/oxide@4.1.15':
+    optionalDependencies:
+      '@tailwindcss/oxide-android-arm64': 4.1.15
+      '@tailwindcss/oxide-darwin-arm64': 4.1.15
+      '@tailwindcss/oxide-darwin-x64': 4.1.15
+      '@tailwindcss/oxide-freebsd-x64': 4.1.15
+      '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.15
+      '@tailwindcss/oxide-linux-arm64-gnu': 4.1.15
+      '@tailwindcss/oxide-linux-arm64-musl': 4.1.15
+      '@tailwindcss/oxide-linux-x64-gnu': 4.1.15
+      '@tailwindcss/oxide-linux-x64-musl': 4.1.15
+      '@tailwindcss/oxide-wasm32-wasi': 4.1.15
+      '@tailwindcss/oxide-win32-arm64-msvc': 4.1.15
+      '@tailwindcss/oxide-win32-x64-msvc': 4.1.15
+
   '@tailwindcss/oxide@4.1.6':
     dependencies:
       detect-libc: 2.0.4
@@ -22797,26 +22933,34 @@ snapshots:
       '@tailwindcss/oxide-win32-arm64-msvc': 4.1.6
       '@tailwindcss/oxide-win32-x64-msvc': 4.1.6
 
-  '@tailwindcss/vite@4.1.13(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@tailwindcss/postcss@4.1.15':
+    dependencies:
+      '@alloc/quick-lru': 5.2.0
+      '@tailwindcss/node': 4.1.15
+      '@tailwindcss/oxide': 4.1.15
+      postcss: 8.5.6
+      tailwindcss: 4.1.15
+
+  '@tailwindcss/vite@4.1.13(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@tailwindcss/node': 4.1.13
       '@tailwindcss/oxide': 4.1.13
       tailwindcss: 4.1.13
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
-  '@tailwindcss/vite@4.1.6(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@tailwindcss/vite@4.1.6(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@tailwindcss/node': 4.1.6
       '@tailwindcss/oxide': 4.1.6
       tailwindcss: 4.1.6
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
-  '@tanstack/config@0.22.0(@types/node@22.10.2)(eslint@9.22.0(jiti@2.6.1))(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@tanstack/config@0.22.0(@types/node@22.10.2)(eslint@9.22.0(jiti@2.6.1))(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@tanstack/eslint-config': 0.3.2(@typescript-eslint/utils@8.44.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0(jiti@2.6.1))(typescript@5.9.2)
       '@tanstack/publish-config': 0.2.1
       '@tanstack/typedoc-config': 0.3.0(typescript@5.9.2)
-      '@tanstack/vite-config': 0.4.0(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      '@tanstack/vite-config': 0.4.0(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
     transitivePeerDependencies:
       - '@types/node'
       - '@typescript-eslint/utils'
@@ -22969,12 +23113,12 @@ snapshots:
 
   '@tanstack/virtual-core@3.13.12': {}
 
-  '@tanstack/vite-config@0.4.0(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@tanstack/vite-config@0.4.0(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       rollup-plugin-preserve-directives: 0.4.0(rollup@4.52.5)
-      vite-plugin-dts: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      vite-plugin-externalize-deps: 0.10.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
-      vite-tsconfig-paths: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      vite-plugin-dts: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      vite-plugin-externalize-deps: 0.10.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      vite-tsconfig-paths: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
     transitivePeerDependencies:
       - '@types/node'
       - rollup
@@ -23541,18 +23685,18 @@ snapshots:
       - rollup
       - supports-color
 
-  '@vitejs/plugin-react@4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@vitejs/plugin-react@4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@babel/core': 7.27.4
       '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.27.4)
       '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.27.4)
       '@types/babel__core': 7.20.5
       react-refresh: 0.14.2
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitejs/plugin-react@4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@vitejs/plugin-react@4.6.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@babel/core': 7.27.7
       '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.7)
@@ -23560,11 +23704,11 @@ snapshots:
       '@rolldown/pluginutils': 1.0.0-beta.19
       '@types/babel__core': 7.20.5
       react-refresh: 0.17.0
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitejs/plugin-react@4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@vitejs/plugin-react@4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@babel/core': 7.28.4
       '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4)
@@ -23572,11 +23716,11 @@ snapshots:
       '@rolldown/pluginutils': 1.0.0-beta.27
       '@types/babel__core': 7.20.5
       react-refresh: 0.17.0
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitejs/plugin-react@5.0.3(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@vitejs/plugin-react@5.0.3(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@babel/core': 7.28.4
       '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4)
@@ -23584,21 +23728,21 @@ snapshots:
       '@rolldown/pluginutils': 1.0.0-beta.35
       '@types/babel__core': 7.20.5
       react-refresh: 0.17.0
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitest/browser@3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4)':
+  '@vitest/browser@3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4)':
     dependencies:
       '@testing-library/dom': 10.4.1
       '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1)
-      '@vitest/mocker': 3.0.6(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      '@vitest/mocker': 3.0.6(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       '@vitest/utils': 3.0.6
       magic-string: 0.30.17
       msw: 2.7.0(@types/node@22.10.2)(typescript@5.9.2)
       sirv: 3.0.1
       tinyrainbow: 2.0.0
-      vitest: 3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.1)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vitest: 3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       ws: 8.18.0
     optionalDependencies:
       playwright: 1.52.0
@@ -23617,23 +23761,23 @@ snapshots:
       chai: 5.2.0
       tinyrainbow: 2.0.0
 
-  '@vitest/mocker@3.0.6(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@vitest/mocker@3.0.6(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@vitest/spy': 3.0.6
       estree-walker: 3.0.3
       magic-string: 0.30.19
     optionalDependencies:
       msw: 2.7.0(@types/node@22.10.2)(typescript@5.9.2)
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
-  '@vitest/mocker@3.2.4(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+  '@vitest/mocker@3.2.4(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@vitest/spy': 3.2.4
       estree-walker: 3.0.3
       magic-string: 0.30.17
     optionalDependencies:
       msw: 2.7.0(@types/node@22.10.2)(typescript@5.9.2)
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   '@vitest/pretty-format@3.0.6':
     dependencies:
@@ -23672,7 +23816,7 @@ snapshots:
       sirv: 3.0.1
       tinyglobby: 0.2.15
       tinyrainbow: 2.0.0
-      vitest: 3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.1)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vitest: 3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
   '@vitest/utils@3.0.6':
     dependencies:
@@ -24083,8 +24227,6 @@ snapshots:
       tar-stream: 3.1.7
       zip-stream: 6.0.1
 
-  arg@5.0.2: {}
-
   argparse@1.0.10:
     dependencies:
       sprintf-js: 1.0.3
@@ -24142,16 +24284,6 @@ snapshots:
       postcss: 8.5.3
       postcss-value-parser: 4.2.0
 
-  autoprefixer@10.4.20(postcss@8.5.6):
-    dependencies:
-      browserslist: 4.24.4
-      caniuse-lite: 1.0.30001696
-      fraction.js: 4.3.7
-      normalize-range: 0.1.2
-      picocolors: 1.1.1
-      postcss: 8.5.6
-      postcss-value-parser: 4.2.0
-
   axios@1.9.0:
     dependencies:
       follow-redirects: 1.15.9(debug@4.4.3)
@@ -24370,8 +24502,6 @@ snapshots:
       pascal-case: 3.1.2
       tslib: 2.8.1
 
-  camelcase-css@2.0.1: {}
-
   caniuse-lite@1.0.30001696: {}
 
   chai@5.2.0:
@@ -24553,8 +24683,6 @@ snapshots:
 
   commander@2.20.3: {}
 
-  commander@4.1.1: {}
-
   commander@8.3.0: {}
 
   comment-json@4.2.5:
@@ -24760,8 +24888,6 @@ snapshots:
 
   css.escape@1.5.1: {}
 
-  cssesc@3.0.0: {}
-
   cssfilter@0.0.10: {}
 
   csso@5.0.5:
@@ -24941,12 +25067,8 @@ snapshots:
 
   dettle@1.0.5: {}
 
-  didyoumean@1.2.2: {}
-
   diff@8.0.2: {}
 
-  dlv@1.1.3: {}
-
   dns-packet@5.6.1:
     dependencies:
       '@leichtgewicht/ip-codec': 2.0.5
@@ -26480,8 +26602,6 @@ snapshots:
       merge-stream: 2.0.0
       supports-color: 8.1.1
 
-  jiti@1.21.7: {}
-
   jiti@2.4.2: {}
 
   jiti@2.6.0: {}
@@ -26687,66 +26807,99 @@ snapshots:
       prelude-ls: 1.2.1
       type-check: 0.4.0
 
+  lightningcss-android-arm64@1.30.2:
+    optional: true
+
   lightningcss-darwin-arm64@1.29.2:
     optional: true
 
   lightningcss-darwin-arm64@1.30.1:
     optional: true
 
+  lightningcss-darwin-arm64@1.30.2:
+    optional: true
+
   lightningcss-darwin-x64@1.29.2:
     optional: true
 
   lightningcss-darwin-x64@1.30.1:
     optional: true
 
+  lightningcss-darwin-x64@1.30.2:
+    optional: true
+
   lightningcss-freebsd-x64@1.29.2:
     optional: true
 
   lightningcss-freebsd-x64@1.30.1:
     optional: true
 
+  lightningcss-freebsd-x64@1.30.2:
+    optional: true
+
   lightningcss-linux-arm-gnueabihf@1.29.2:
     optional: true
 
   lightningcss-linux-arm-gnueabihf@1.30.1:
     optional: true
 
+  lightningcss-linux-arm-gnueabihf@1.30.2:
+    optional: true
+
   lightningcss-linux-arm64-gnu@1.29.2:
     optional: true
 
   lightningcss-linux-arm64-gnu@1.30.1:
     optional: true
 
+  lightningcss-linux-arm64-gnu@1.30.2:
+    optional: true
+
   lightningcss-linux-arm64-musl@1.29.2:
     optional: true
 
   lightningcss-linux-arm64-musl@1.30.1:
     optional: true
 
+  lightningcss-linux-arm64-musl@1.30.2:
+    optional: true
+
   lightningcss-linux-x64-gnu@1.29.2:
     optional: true
 
   lightningcss-linux-x64-gnu@1.30.1:
     optional: true
 
+  lightningcss-linux-x64-gnu@1.30.2:
+    optional: true
+
   lightningcss-linux-x64-musl@1.29.2:
     optional: true
 
   lightningcss-linux-x64-musl@1.30.1:
     optional: true
 
+  lightningcss-linux-x64-musl@1.30.2:
+    optional: true
+
   lightningcss-win32-arm64-msvc@1.29.2:
     optional: true
 
   lightningcss-win32-arm64-msvc@1.30.1:
     optional: true
 
+  lightningcss-win32-arm64-msvc@1.30.2:
+    optional: true
+
   lightningcss-win32-x64-msvc@1.29.2:
     optional: true
 
   lightningcss-win32-x64-msvc@1.30.1:
     optional: true
 
+  lightningcss-win32-x64-msvc@1.30.2:
+    optional: true
+
   lightningcss@1.29.2:
     dependencies:
       detect-libc: 2.0.4
@@ -26777,7 +26930,21 @@ snapshots:
       lightningcss-win32-arm64-msvc: 1.30.1
       lightningcss-win32-x64-msvc: 1.30.1
 
-  lilconfig@3.1.3: {}
+  lightningcss@1.30.2:
+    dependencies:
+      detect-libc: 2.1.2
+    optionalDependencies:
+      lightningcss-android-arm64: 1.30.2
+      lightningcss-darwin-arm64: 1.30.2
+      lightningcss-darwin-x64: 1.30.2
+      lightningcss-freebsd-x64: 1.30.2
+      lightningcss-linux-arm-gnueabihf: 1.30.2
+      lightningcss-linux-arm64-gnu: 1.30.2
+      lightningcss-linux-arm64-musl: 1.30.2
+      lightningcss-linux-x64-gnu: 1.30.2
+      lightningcss-linux-x64-musl: 1.30.2
+      lightningcss-win32-arm64-msvc: 1.30.2
+      lightningcss-win32-x64-msvc: 1.30.2
 
   lines-and-columns@1.2.4: {}
 
@@ -27199,7 +27366,7 @@ snapshots:
 
   nf3@0.1.1: {}
 
-  nitro@3.0.1-alpha.0(@netlify/blobs@10.1.0)(chokidar@4.0.3)(ioredis@5.8.0)(lru-cache@11.2.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
+  nitro@3.0.1-alpha.0(@netlify/blobs@10.1.0)(chokidar@4.0.3)(ioredis@5.8.0)(lru-cache@11.2.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
     dependencies:
       consola: 3.4.2
       cookie-es: 2.0.0
@@ -27219,7 +27386,7 @@ snapshots:
       unenv: 2.0.0-rc.21
       unstorage: 2.0.0-alpha.3(@netlify/blobs@10.1.0)(chokidar@4.0.3)(db0@0.3.4)(ioredis@5.8.0)(lru-cache@11.2.2)(ofetch@1.4.1)
     optionalDependencies:
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - '@azure/app-configuration'
       - '@azure/cosmos'
@@ -27487,8 +27654,6 @@ snapshots:
 
   object-assign@4.1.1: {}
 
-  object-hash@3.0.0: {}
-
   object-inspect@1.13.3: {}
 
   obuf@1.1.2: {}
@@ -27717,10 +27882,6 @@ snapshots:
 
   picoquery@2.5.0: {}
 
-  pify@2.3.0: {}
-
-  pirates@4.0.6: {}
-
   pkg-dir@4.2.0:
     dependencies:
       find-up: 4.1.0
@@ -27747,35 +27908,6 @@ snapshots:
 
   pluralize@8.0.0: {}
 
-  postcss-import@15.1.0(postcss@8.5.6):
-    dependencies:
-      postcss: 8.5.6
-      postcss-value-parser: 4.2.0
-      read-cache: 1.0.0
-      resolve: 1.22.10
-
-  postcss-js@4.0.1(postcss@8.5.6):
-    dependencies:
-      camelcase-css: 2.0.1
-      postcss: 8.5.6
-
-  postcss-load-config@4.0.2(postcss@8.5.6):
-    dependencies:
-      lilconfig: 3.1.3
-      yaml: 2.7.0
-    optionalDependencies:
-      postcss: 8.5.6
-
-  postcss-nested@6.2.0(postcss@8.5.6):
-    dependencies:
-      postcss: 8.5.6
-      postcss-selector-parser: 6.1.2
-
-  postcss-selector-parser@6.1.2:
-    dependencies:
-      cssesc: 3.0.0
-      util-deprecate: 1.0.2
-
   postcss-value-parser@4.2.0: {}
 
   postcss-values-parser@6.0.2(postcss@8.5.6):
@@ -28075,10 +28207,6 @@ snapshots:
 
   react@19.0.0: {}
 
-  read-cache@1.0.0:
-    dependencies:
-      pify: 2.3.0
-
   read-package-up@11.0.0:
     dependencies:
       find-up-simple: 1.0.1
@@ -28767,16 +28895,6 @@ snapshots:
 
   stylis@4.2.0: {}
 
-  sucrase@3.35.0:
-    dependencies:
-      '@jridgewell/gen-mapping': 0.3.8
-      commander: 4.1.1
-      glob: 10.4.5
-      lines-and-columns: 1.2.4
-      mz: 2.7.0
-      pirates: 4.0.6
-      ts-interface-checker: 0.1.13
-
   supports-color@10.0.0: {}
 
   supports-color@7.2.0:
@@ -28822,35 +28940,10 @@ snapshots:
 
   tailwind-merge@2.6.0: {}
 
-  tailwindcss@3.4.17:
-    dependencies:
-      '@alloc/quick-lru': 5.2.0
-      arg: 5.0.2
-      chokidar: 3.6.0
-      didyoumean: 1.2.2
-      dlv: 1.1.3
-      fast-glob: 3.3.3
-      glob-parent: 6.0.2
-      is-glob: 4.0.3
-      jiti: 1.21.7
-      lilconfig: 3.1.3
-      micromatch: 4.0.8
-      normalize-path: 3.0.0
-      object-hash: 3.0.0
-      picocolors: 1.1.1
-      postcss: 8.5.6
-      postcss-import: 15.1.0(postcss@8.5.6)
-      postcss-js: 4.0.1(postcss@8.5.6)
-      postcss-load-config: 4.0.2(postcss@8.5.6)
-      postcss-nested: 6.2.0(postcss@8.5.6)
-      postcss-selector-parser: 6.1.2
-      resolve: 1.22.10
-      sucrase: 3.35.0
-    transitivePeerDependencies:
-      - ts-node
-
   tailwindcss@4.1.13: {}
 
+  tailwindcss@4.1.15: {}
+
   tailwindcss@4.1.6: {}
 
   tapable@2.2.1: {}
@@ -29038,8 +29131,6 @@ snapshots:
       picomatch: 4.0.3
       typescript: 5.9.2
 
-  ts-interface-checker@0.1.13: {}
-
   ts-pattern@5.6.2: {}
 
   tsconfck@3.1.4(typescript@5.8.2):
@@ -29071,8 +29162,8 @@ snapshots:
 
   tsx@4.20.3:
     dependencies:
-      esbuild: 0.25.4
-      get-tsconfig: 4.10.0
+      esbuild: 0.25.10
+      get-tsconfig: 4.10.1
     optionalDependencies:
       fsevents: 2.3.3
 
@@ -29402,13 +29493,13 @@ snapshots:
       import-meta-resolve: 4.1.0
       zod: 3.25.57
 
-  vite-node@3.2.4(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
+  vite-node@3.2.4(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
     dependencies:
       cac: 6.7.14
       debug: 4.4.3
       es-module-lexer: 1.7.0
       pathe: 2.0.3
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - '@types/node'
       - jiti
@@ -29423,7 +29514,7 @@ snapshots:
       - tsx
       - yaml
 
-  vite-plugin-dts@4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
+  vite-plugin-dts@4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
     dependencies:
       '@microsoft/api-extractor': 7.47.4(@types/node@22.10.2)
       '@rollup/pluginutils': 5.1.4(rollup@4.52.5)
@@ -29437,13 +29528,13 @@ snapshots:
       typescript: 5.8.2
       vue-tsc: 2.0.29(typescript@5.8.2)
     optionalDependencies:
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - '@types/node'
       - rollup
       - supports-color
 
-  vite-plugin-dts@4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
+  vite-plugin-dts@4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
     dependencies:
       '@microsoft/api-extractor': 7.47.4(@types/node@22.10.2)
       '@rollup/pluginutils': 5.1.4(rollup@4.52.5)
@@ -29457,17 +29548,17 @@ snapshots:
       typescript: 5.9.2
       vue-tsc: 2.0.29(typescript@5.9.2)
     optionalDependencies:
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - '@types/node'
       - rollup
       - supports-color
 
-  vite-plugin-externalize-deps@0.10.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
+  vite-plugin-externalize-deps@0.10.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
     dependencies:
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
-  vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
+  vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
     dependencies:
       '@babel/core': 7.28.4
       '@types/babel__core': 7.20.5
@@ -29475,47 +29566,47 @@ snapshots:
       merge-anything: 5.1.7
       solid-js: 1.9.5
       solid-refresh: 0.6.3(solid-js@1.9.5)
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
-      vitefu: 1.1.1(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vitefu: 1.1.1(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
     optionalDependencies:
       '@testing-library/jest-dom': 6.6.3
     transitivePeerDependencies:
       - supports-color
 
-  vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
+  vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
     dependencies:
       debug: 4.4.0
       globrex: 0.1.2
       tsconfck: 3.1.4(typescript@5.8.2)
     optionalDependencies:
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - supports-color
       - typescript
 
-  vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
+  vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
     dependencies:
       debug: 4.4.0
       globrex: 0.1.2
       tsconfck: 3.1.4(typescript@5.8.3)
     optionalDependencies:
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - supports-color
       - typescript
 
-  vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
+  vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
     dependencies:
       debug: 4.4.0
       globrex: 0.1.2
       tsconfck: 3.1.4(typescript@5.9.2)
     optionalDependencies:
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
     transitivePeerDependencies:
       - supports-color
       - typescript
 
-  vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
+  vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
     dependencies:
       esbuild: 0.25.10
       fdir: 6.5.0(picomatch@4.0.3)
@@ -29527,20 +29618,20 @@ snapshots:
       '@types/node': 22.10.2
       fsevents: 2.3.3
       jiti: 2.6.1
-      lightningcss: 1.30.1
+      lightningcss: 1.30.2
       terser: 5.37.0
       tsx: 4.20.3
       yaml: 2.8.1
 
-  vitefu@1.1.1(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
+  vitefu@1.1.1(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
     optionalDependencies:
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
-  vitest@3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.1)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
+  vitest@3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4))(@vitest/ui@3.0.6(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
     dependencies:
       '@types/chai': 5.2.2
       '@vitest/expect': 3.2.4
-      '@vitest/mocker': 3.2.4(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      '@vitest/mocker': 3.2.4(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       '@vitest/pretty-format': 3.2.4
       '@vitest/runner': 3.2.4
       '@vitest/snapshot': 3.2.4
@@ -29558,14 +29649,14 @@ snapshots:
       tinyglobby: 0.2.15
       tinypool: 1.1.1
       tinyrainbow: 2.0.0
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
-      vite-node: 3.2.4(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite-node: 3.2.4(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       why-is-node-running: 2.3.0
     optionalDependencies:
       '@types/node': 22.10.2
-      '@vitest/browser': 3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4)
+      '@vitest/browser': 3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4)
       '@vitest/ui': 3.0.6(vitest@3.2.4)
-      jsdom: 25.0.1
+      jsdom: 27.0.0(postcss@8.5.6)
     transitivePeerDependencies:
       - jiti
       - less
@@ -29580,11 +29671,11 @@ snapshots:
       - tsx
       - yaml
 
-  vitest@3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
+  vitest@3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
     dependencies:
       '@types/chai': 5.2.2
       '@vitest/expect': 3.2.4
-      '@vitest/mocker': 3.2.4(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      '@vitest/mocker': 3.2.4(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
       '@vitest/pretty-format': 3.2.4
       '@vitest/runner': 3.2.4
       '@vitest/snapshot': 3.2.4
@@ -29602,14 +29693,14 @@ snapshots:
       tinyglobby: 0.2.15
       tinypool: 1.1.1
       tinyrainbow: 2.0.0
-      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
-      vite-node: 3.2.4(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite-node: 3.2.4(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       why-is-node-running: 2.3.0
     optionalDependencies:
       '@types/node': 22.10.2
-      '@vitest/browser': 3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4)
+      '@vitest/browser': 3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4)
       '@vitest/ui': 3.0.6(vitest@3.2.4)
-      jsdom: 27.0.0(postcss@8.5.6)
+      jsdom: 25.0.1
     transitivePeerDependencies:
       - jiti
       - less

From 073b6d16a485e9b1ed64633cd790d72a3858f5e8 Mon Sep 17 00:00:00 2001
From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com>
Date: Wed, 22 Oct 2025 00:56:48 +0000
Subject: [PATCH 2/6] ci: apply automated fixes

---
 e2e/react-start/basic-rsc/package.json                    | 8 ++++----
 .../src/routes/merge-server-fn-middleware-context.tsx     | 5 ++++-
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/e2e/react-start/basic-rsc/package.json b/e2e/react-start/basic-rsc/package.json
index 59bc1b4cc9..c882b473fc 100644
--- a/e2e/react-start/basic-rsc/package.json
+++ b/e2e/react-start/basic-rsc/package.json
@@ -1,6 +1,6 @@
 {
-	"dependencies": {
-		"@tailwindcss/postcss": "^4.1.15",
-		"tailwindcss": "^4.1.15"
-	}
+  "dependencies": {
+    "@tailwindcss/postcss": "^4.1.15",
+    "tailwindcss": "^4.1.15"
+  }
 }
diff --git a/e2e/react-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx b/e2e/react-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx
index 2bb43a82b2..65c409cc8d 100644
--- a/e2e/react-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx
+++ b/e2e/react-start/server-routes/src/routes/merge-server-fn-middleware-context.tsx
@@ -51,7 +51,10 @@ function MergeServerFnMiddlewareContext() {
                 {JSON.stringify(apiResponse.context, null, 2)}
               </div>
 
-              <div data-testid="has-test-parent" className="p-2 border rounded-sm">
+              <div
+                data-testid="has-test-parent"
+                className="p-2 border rounded-sm"
+              >
                 Has testParent:{' '}
                 {apiResponse.context?.testParent ? 'true' : 'false'}
               </div>

From ed764e8d69dd63e9dc01e1f01af818ef12471d96 Mon Sep 17 00:00:00 2001
From: Birk Skyum <birk.skyum@pm.me>
Date: Wed, 22 Oct 2025 02:58:40 +0200
Subject: [PATCH 3/6] remove border comment

---
 .../basic-file-based-code-splitting/src/styles.css         | 7 -------
 e2e/react-router/basic-file-based/src/styles.css           | 7 -------
 .../basic-react-query-file-based/src/styles.css            | 7 -------
 e2e/react-router/basic-react-query/src/styles.css          | 7 -------
 e2e/react-router/basic-scroll-restoration/src/styles.css   | 7 -------
 e2e/react-router/basic-virtual-file-based/src/styles.css   | 7 -------
 .../src/styles.css                                         | 7 -------
 e2e/react-router/basic/src/styles.css                      | 7 -------
 e2e/react-router/generator-cli-only/src/styles.css         | 7 -------
 e2e/react-router/js-only-file-based/src/styles.css         | 7 -------
 e2e/react-router/rspack-basic-file-based/src/styles.css    | 7 -------
 .../src/styles.css                                         | 7 -------
 .../scroll-restoration-sandbox-vite/src/styles.css         | 7 -------
 e2e/react-router/sentry-integration/src/styles.css         | 7 -------
 e2e/react-start/basic-auth/src/styles/app.css              | 7 -------
 e2e/react-start/basic-cloudflare/src/styles/app.css        | 7 -------
 e2e/react-start/basic-react-query/src/styles/app.css       | 7 -------
 e2e/react-start/basic-rsc/src/styles/app.css               | 7 -------
 e2e/react-start/basic/src/styles/app.css                   | 7 -------
 e2e/react-start/custom-basepath/src/styles/app.css         | 7 -------
 e2e/react-start/query-integration/src/styles/app.css       | 7 -------
 e2e/react-start/scroll-restoration/src/styles/app.css      | 7 -------
 e2e/react-start/selective-ssr/src/styles/app.css           | 7 -------
 e2e/react-start/serialization-adapters/src/styles/app.css  | 7 -------
 e2e/react-start/server-functions/src/styles/app.css        | 7 -------
 e2e/react-start/server-routes/src/styles/app.css           | 7 -------
 e2e/react-start/spa-mode/src/styles/app.css                | 7 -------
 e2e/react-start/virtual-routes/src/styles/app.css          | 7 -------
 e2e/react-start/website/src/styles/app.css                 | 7 -------
 .../basic-file-based-code-splitting/src/styles.css         | 7 -------
 e2e/solid-router/basic-file-based/src/styles.css           | 7 -------
 e2e/solid-router/basic-scroll-restoration/src/styles.css   | 7 -------
 .../basic-solid-query-file-based/src/styles.css            | 7 -------
 e2e/solid-router/basic-solid-query/src/styles.css          | 7 -------
 e2e/solid-router/basic-virtual-file-based/src/styles.css   | 7 -------
 .../src/styles.css                                         | 7 -------
 e2e/solid-router/basic/src/styles.css                      | 7 -------
 e2e/solid-router/rspack-basic-file-based/src/styles.css    | 7 -------
 .../src/styles.css                                         | 7 -------
 .../scroll-restoration-sandbox-vite/src/styles.css         | 7 -------
 e2e/solid-start/basic-auth/src/styles/app.css              | 7 -------
 e2e/solid-start/basic-solid-query/src/styles/app.css       | 7 -------
 e2e/solid-start/basic/src/styles/app.css                   | 7 -------
 e2e/solid-start/custom-basepath/src/styles/app.css         | 7 -------
 e2e/solid-start/query-integration/src/styles/app.css       | 7 -------
 e2e/solid-start/scroll-restoration/src/styles/app.css      | 7 -------
 e2e/solid-start/selective-ssr/src/styles/app.css           | 7 -------
 e2e/solid-start/server-functions/src/styles/app.css        | 7 -------
 e2e/solid-start/server-routes/src/styles/app.css           | 7 -------
 e2e/solid-start/spa-mode/src/styles/app.css                | 7 -------
 e2e/solid-start/virtual-routes/src/styles/app.css          | 7 -------
 e2e/solid-start/website/src/styles/app.css                 | 7 -------
 .../react/authenticated-routes-firebase/src/styles.css     | 7 -------
 examples/react/authenticated-routes/src/styles.css         | 7 -------
 examples/react/basic-default-search-params/src/styles.css  | 7 -------
 examples/react/basic-devtools-panel/src/styles.css         | 7 -------
 examples/react/basic-file-based/src/styles.css             | 7 -------
 examples/react/basic-non-nested-devtools/src/styles.css    | 7 -------
 examples/react/basic-react-query-file-based/src/styles.css | 7 -------
 examples/react/basic-react-query/src/styles.css            | 7 -------
 examples/react/basic-virtual-file-based/src/styles.css     | 7 -------
 .../react/basic-virtual-inside-file-based/src/styles.css   | 7 -------
 examples/react/basic/src/styles.css                        | 7 -------
 examples/react/deferred-data/src/styles.css                | 7 -------
 examples/react/kitchen-sink-file-based/src/styles.css      | 7 -------
 .../kitchen-sink-react-query-file-based/src/styles.css     | 7 -------
 examples/react/kitchen-sink-react-query/src/styles.css     | 7 -------
 examples/react/kitchen-sink/src/styles.css                 | 7 -------
 examples/react/large-file-based/src/styles.css             | 7 -------
 examples/react/location-masking/src/styles.css             | 7 -------
 examples/react/navigation-blocking/src/styles.css          | 7 -------
 examples/react/quickstart-file-based/src/styles.css        | 7 -------
 examples/react/quickstart-rspack-file-based/src/styles.css | 7 -------
 examples/react/quickstart/src/styles.css                   | 7 -------
 .../router-monorepo-react-query/packages/app/src/style.css | 7 -------
 .../router-monorepo-simple-lazy/packages/app/src/style.css | 7 -------
 .../router-monorepo-simple/packages/app/src/style.css      | 7 -------
 examples/react/scroll-restoration/src/styles.css           | 7 -------
 examples/react/search-validator-adapters/src/styles.css    | 7 -------
 examples/react/start-basic-auth/src/styles/app.css         | 7 -------
 examples/react/start-basic-cloudflare/src/styles/app.css   | 7 -------
 examples/react/start-basic-react-query/src/styles/app.css  | 7 -------
 examples/react/start-basic-static/src/styles/app.css       | 7 -------
 examples/react/start-basic/src/styles/app.css              | 7 -------
 examples/react/start-clerk-basic/src/styles/app.css        | 7 -------
 examples/react/start-convex-trellaux/src/styles/app.css    | 7 -------
 examples/react/start-large/src/styles.css                  | 7 -------
 examples/react/start-supabase-basic/src/styles/app.css     | 7 -------
 examples/react/start-trellaux/src/styles/app.css           | 7 -------
 examples/react/view-transitions/src/styles.css             | 7 -------
 examples/react/with-framer-motion/src/styles.css           | 7 -------
 examples/react/with-trpc-react-query/src/styles.css        | 7 -------
 examples/react/with-trpc/src/styles.css                    | 7 -------
 examples/solid/basic-devtools-panel/src/styles.css         | 7 -------
 examples/solid/basic-file-based/src/styles.css             | 7 -------
 examples/solid/basic-non-nested-devtools/src/styles.css    | 7 -------
 examples/solid/basic-solid-query-file-based/src/styles.css | 7 -------
 examples/solid/basic-solid-query/src/styles.css            | 7 -------
 .../solid/basic-ssr-streaming-file-based/src/styles.css    | 7 -------
 examples/solid/basic/src/styles.css                        | 7 -------
 examples/solid/kitchen-sink-file-based/src/styles.css      | 7 -------
 .../kitchen-sink-solid-query-file-based/src/styles.css     | 7 -------
 examples/solid/kitchen-sink-solid-query/src/styles.css     | 7 -------
 examples/solid/quickstart-file-based/src/styles.css        | 7 -------
 examples/solid/start-basic-auth/src/styles/app.css         | 7 -------
 examples/solid/start-basic-cloudflare/src/styles/app.css   | 7 -------
 examples/solid/start-basic-netlify/src/styles/app.css      | 7 -------
 examples/solid/start-basic-nitro/src/styles/app.css        | 7 -------
 examples/solid/start-basic-solid-query/src/styles/app.css  | 7 -------
 examples/solid/start-basic-static/src/styles/app.css       | 7 -------
 examples/solid/start-basic/src/styles/app.css              | 7 -------
 111 files changed, 777 deletions(-)

diff --git a/e2e/react-router/basic-file-based-code-splitting/src/styles.css b/e2e/react-router/basic-file-based-code-splitting/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/basic-file-based-code-splitting/src/styles.css
+++ b/e2e/react-router/basic-file-based-code-splitting/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-file-based/src/styles.css b/e2e/react-router/basic-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/basic-file-based/src/styles.css
+++ b/e2e/react-router/basic-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-react-query-file-based/src/styles.css b/e2e/react-router/basic-react-query-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/basic-react-query-file-based/src/styles.css
+++ b/e2e/react-router/basic-react-query-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-react-query/src/styles.css b/e2e/react-router/basic-react-query/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/basic-react-query/src/styles.css
+++ b/e2e/react-router/basic-react-query/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-scroll-restoration/src/styles.css b/e2e/react-router/basic-scroll-restoration/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/basic-scroll-restoration/src/styles.css
+++ b/e2e/react-router/basic-scroll-restoration/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-virtual-file-based/src/styles.css b/e2e/react-router/basic-virtual-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/basic-virtual-file-based/src/styles.css
+++ b/e2e/react-router/basic-virtual-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css b/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css
index aa0110f063..13d1b9d038 100644
--- a/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css
@@ -2,14 +2,7 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic/src/styles.css b/e2e/react-router/basic/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/basic/src/styles.css
+++ b/e2e/react-router/basic/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/generator-cli-only/src/styles.css b/e2e/react-router/generator-cli-only/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/generator-cli-only/src/styles.css
+++ b/e2e/react-router/generator-cli-only/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/js-only-file-based/src/styles.css b/e2e/react-router/js-only-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/js-only-file-based/src/styles.css
+++ b/e2e/react-router/js-only-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/rspack-basic-file-based/src/styles.css b/e2e/react-router/rspack-basic-file-based/src/styles.css
index aa0110f063..13d1b9d038 100644
--- a/e2e/react-router/rspack-basic-file-based/src/styles.css
+++ b/e2e/react-router/rspack-basic-file-based/src/styles.css
@@ -2,14 +2,7 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
index aa0110f063..13d1b9d038 100644
--- a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
@@ -2,14 +2,7 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css b/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css
+++ b/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/sentry-integration/src/styles.css b/e2e/react-router/sentry-integration/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/react-router/sentry-integration/src/styles.css
+++ b/e2e/react-router/sentry-integration/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/basic-auth/src/styles/app.css b/e2e/react-start/basic-auth/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/basic-auth/src/styles/app.css
+++ b/e2e/react-start/basic-auth/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/basic-cloudflare/src/styles/app.css b/e2e/react-start/basic-cloudflare/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/basic-cloudflare/src/styles/app.css
+++ b/e2e/react-start/basic-cloudflare/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/basic-react-query/src/styles/app.css b/e2e/react-start/basic-react-query/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/basic-react-query/src/styles/app.css
+++ b/e2e/react-start/basic-react-query/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/basic-rsc/src/styles/app.css b/e2e/react-start/basic-rsc/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/basic-rsc/src/styles/app.css
+++ b/e2e/react-start/basic-rsc/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/basic/src/styles/app.css b/e2e/react-start/basic/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/basic/src/styles/app.css
+++ b/e2e/react-start/basic/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/custom-basepath/src/styles/app.css b/e2e/react-start/custom-basepath/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/custom-basepath/src/styles/app.css
+++ b/e2e/react-start/custom-basepath/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/query-integration/src/styles/app.css b/e2e/react-start/query-integration/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/query-integration/src/styles/app.css
+++ b/e2e/react-start/query-integration/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/scroll-restoration/src/styles/app.css b/e2e/react-start/scroll-restoration/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/scroll-restoration/src/styles/app.css
+++ b/e2e/react-start/scroll-restoration/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/selective-ssr/src/styles/app.css b/e2e/react-start/selective-ssr/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/selective-ssr/src/styles/app.css
+++ b/e2e/react-start/selective-ssr/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/serialization-adapters/src/styles/app.css b/e2e/react-start/serialization-adapters/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/serialization-adapters/src/styles/app.css
+++ b/e2e/react-start/serialization-adapters/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/server-functions/src/styles/app.css b/e2e/react-start/server-functions/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/server-functions/src/styles/app.css
+++ b/e2e/react-start/server-functions/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/server-routes/src/styles/app.css b/e2e/react-start/server-routes/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/server-routes/src/styles/app.css
+++ b/e2e/react-start/server-routes/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/spa-mode/src/styles/app.css b/e2e/react-start/spa-mode/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/spa-mode/src/styles/app.css
+++ b/e2e/react-start/spa-mode/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/virtual-routes/src/styles/app.css b/e2e/react-start/virtual-routes/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/virtual-routes/src/styles/app.css
+++ b/e2e/react-start/virtual-routes/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/website/src/styles/app.css b/e2e/react-start/website/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/react-start/website/src/styles/app.css
+++ b/e2e/react-start/website/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-file-based-code-splitting/src/styles.css b/e2e/solid-router/basic-file-based-code-splitting/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/solid-router/basic-file-based-code-splitting/src/styles.css
+++ b/e2e/solid-router/basic-file-based-code-splitting/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-file-based/src/styles.css b/e2e/solid-router/basic-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/solid-router/basic-file-based/src/styles.css
+++ b/e2e/solid-router/basic-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-scroll-restoration/src/styles.css b/e2e/solid-router/basic-scroll-restoration/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/solid-router/basic-scroll-restoration/src/styles.css
+++ b/e2e/solid-router/basic-scroll-restoration/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-solid-query-file-based/src/styles.css b/e2e/solid-router/basic-solid-query-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/solid-router/basic-solid-query-file-based/src/styles.css
+++ b/e2e/solid-router/basic-solid-query-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-solid-query/src/styles.css b/e2e/solid-router/basic-solid-query/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/solid-router/basic-solid-query/src/styles.css
+++ b/e2e/solid-router/basic-solid-query/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-virtual-file-based/src/styles.css b/e2e/solid-router/basic-virtual-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/solid-router/basic-virtual-file-based/src/styles.css
+++ b/e2e/solid-router/basic-virtual-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css b/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css
index aa0110f063..13d1b9d038 100644
--- a/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css
@@ -2,14 +2,7 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic/src/styles.css b/e2e/solid-router/basic/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/solid-router/basic/src/styles.css
+++ b/e2e/solid-router/basic/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/rspack-basic-file-based/src/styles.css b/e2e/solid-router/rspack-basic-file-based/src/styles.css
index aa0110f063..13d1b9d038 100644
--- a/e2e/solid-router/rspack-basic-file-based/src/styles.css
+++ b/e2e/solid-router/rspack-basic-file-based/src/styles.css
@@ -2,14 +2,7 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
index aa0110f063..13d1b9d038 100644
--- a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
@@ -2,14 +2,7 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css b/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css
+++ b/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/basic-auth/src/styles/app.css b/e2e/solid-start/basic-auth/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/solid-start/basic-auth/src/styles/app.css
+++ b/e2e/solid-start/basic-auth/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/basic-solid-query/src/styles/app.css b/e2e/solid-start/basic-solid-query/src/styles/app.css
index 555ba6ddf0..2b2c8673bc 100644
--- a/e2e/solid-start/basic-solid-query/src/styles/app.css
+++ b/e2e/solid-start/basic-solid-query/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/basic/src/styles/app.css b/e2e/solid-start/basic/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/solid-start/basic/src/styles/app.css
+++ b/e2e/solid-start/basic/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/custom-basepath/src/styles/app.css b/e2e/solid-start/custom-basepath/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/solid-start/custom-basepath/src/styles/app.css
+++ b/e2e/solid-start/custom-basepath/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/query-integration/src/styles/app.css b/e2e/solid-start/query-integration/src/styles/app.css
index 555ba6ddf0..2b2c8673bc 100644
--- a/e2e/solid-start/query-integration/src/styles/app.css
+++ b/e2e/solid-start/query-integration/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/scroll-restoration/src/styles/app.css b/e2e/solid-start/scroll-restoration/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/solid-start/scroll-restoration/src/styles/app.css
+++ b/e2e/solid-start/scroll-restoration/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/selective-ssr/src/styles/app.css b/e2e/solid-start/selective-ssr/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/solid-start/selective-ssr/src/styles/app.css
+++ b/e2e/solid-start/selective-ssr/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/server-functions/src/styles/app.css b/e2e/solid-start/server-functions/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/solid-start/server-functions/src/styles/app.css
+++ b/e2e/solid-start/server-functions/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/server-routes/src/styles/app.css b/e2e/solid-start/server-routes/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/solid-start/server-routes/src/styles/app.css
+++ b/e2e/solid-start/server-routes/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/spa-mode/src/styles/app.css b/e2e/solid-start/spa-mode/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/solid-start/spa-mode/src/styles/app.css
+++ b/e2e/solid-start/spa-mode/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/virtual-routes/src/styles/app.css b/e2e/solid-start/virtual-routes/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/solid-start/virtual-routes/src/styles/app.css
+++ b/e2e/solid-start/virtual-routes/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/website/src/styles/app.css b/e2e/solid-start/website/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/e2e/solid-start/website/src/styles/app.css
+++ b/e2e/solid-start/website/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/authenticated-routes-firebase/src/styles.css b/examples/react/authenticated-routes-firebase/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/authenticated-routes-firebase/src/styles.css
+++ b/examples/react/authenticated-routes-firebase/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/authenticated-routes/src/styles.css b/examples/react/authenticated-routes/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/authenticated-routes/src/styles.css
+++ b/examples/react/authenticated-routes/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-default-search-params/src/styles.css b/examples/react/basic-default-search-params/src/styles.css
index ab3d907a06..1bd6bcc38d 100644
--- a/examples/react/basic-default-search-params/src/styles.css
+++ b/examples/react/basic-default-search-params/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-devtools-panel/src/styles.css b/examples/react/basic-devtools-panel/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/basic-devtools-panel/src/styles.css
+++ b/examples/react/basic-devtools-panel/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-file-based/src/styles.css b/examples/react/basic-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/basic-file-based/src/styles.css
+++ b/examples/react/basic-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-non-nested-devtools/src/styles.css b/examples/react/basic-non-nested-devtools/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/basic-non-nested-devtools/src/styles.css
+++ b/examples/react/basic-non-nested-devtools/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-react-query-file-based/src/styles.css b/examples/react/basic-react-query-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/basic-react-query-file-based/src/styles.css
+++ b/examples/react/basic-react-query-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-react-query/src/styles.css b/examples/react/basic-react-query/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/basic-react-query/src/styles.css
+++ b/examples/react/basic-react-query/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-virtual-file-based/src/styles.css b/examples/react/basic-virtual-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/basic-virtual-file-based/src/styles.css
+++ b/examples/react/basic-virtual-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-virtual-inside-file-based/src/styles.css b/examples/react/basic-virtual-inside-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/basic-virtual-inside-file-based/src/styles.css
+++ b/examples/react/basic-virtual-inside-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic/src/styles.css b/examples/react/basic/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/basic/src/styles.css
+++ b/examples/react/basic/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/deferred-data/src/styles.css b/examples/react/deferred-data/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/deferred-data/src/styles.css
+++ b/examples/react/deferred-data/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/kitchen-sink-file-based/src/styles.css b/examples/react/kitchen-sink-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/kitchen-sink-file-based/src/styles.css
+++ b/examples/react/kitchen-sink-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/kitchen-sink-react-query-file-based/src/styles.css b/examples/react/kitchen-sink-react-query-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/kitchen-sink-react-query-file-based/src/styles.css
+++ b/examples/react/kitchen-sink-react-query-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/kitchen-sink-react-query/src/styles.css b/examples/react/kitchen-sink-react-query/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/kitchen-sink-react-query/src/styles.css
+++ b/examples/react/kitchen-sink-react-query/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/kitchen-sink/src/styles.css b/examples/react/kitchen-sink/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/kitchen-sink/src/styles.css
+++ b/examples/react/kitchen-sink/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/large-file-based/src/styles.css b/examples/react/large-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/large-file-based/src/styles.css
+++ b/examples/react/large-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/location-masking/src/styles.css b/examples/react/location-masking/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/location-masking/src/styles.css
+++ b/examples/react/location-masking/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/navigation-blocking/src/styles.css b/examples/react/navigation-blocking/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/navigation-blocking/src/styles.css
+++ b/examples/react/navigation-blocking/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/quickstart-file-based/src/styles.css b/examples/react/quickstart-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/quickstart-file-based/src/styles.css
+++ b/examples/react/quickstart-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/quickstart-rspack-file-based/src/styles.css b/examples/react/quickstart-rspack-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/quickstart-rspack-file-based/src/styles.css
+++ b/examples/react/quickstart-rspack-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/quickstart/src/styles.css b/examples/react/quickstart/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/quickstart/src/styles.css
+++ b/examples/react/quickstart/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/router-monorepo-react-query/packages/app/src/style.css b/examples/react/router-monorepo-react-query/packages/app/src/style.css
index 9784181c41..91a266da93 100644
--- a/examples/react/router-monorepo-react-query/packages/app/src/style.css
+++ b/examples/react/router-monorepo-react-query/packages/app/src/style.css
@@ -2,14 +2,7 @@
 
 @source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css b/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
index 9784181c41..91a266da93 100644
--- a/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
+++ b/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
@@ -2,14 +2,7 @@
 
 @source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/router-monorepo-simple/packages/app/src/style.css b/examples/react/router-monorepo-simple/packages/app/src/style.css
index 9784181c41..91a266da93 100644
--- a/examples/react/router-monorepo-simple/packages/app/src/style.css
+++ b/examples/react/router-monorepo-simple/packages/app/src/style.css
@@ -2,14 +2,7 @@
 
 @source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/scroll-restoration/src/styles.css b/examples/react/scroll-restoration/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/scroll-restoration/src/styles.css
+++ b/examples/react/scroll-restoration/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/search-validator-adapters/src/styles.css b/examples/react/search-validator-adapters/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/search-validator-adapters/src/styles.css
+++ b/examples/react/search-validator-adapters/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-basic-auth/src/styles/app.css b/examples/react/start-basic-auth/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/react/start-basic-auth/src/styles/app.css
+++ b/examples/react/start-basic-auth/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-basic-cloudflare/src/styles/app.css b/examples/react/start-basic-cloudflare/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/react/start-basic-cloudflare/src/styles/app.css
+++ b/examples/react/start-basic-cloudflare/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-basic-react-query/src/styles/app.css b/examples/react/start-basic-react-query/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/react/start-basic-react-query/src/styles/app.css
+++ b/examples/react/start-basic-react-query/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-basic-static/src/styles/app.css b/examples/react/start-basic-static/src/styles/app.css
index 9437838dc9..ad2738ac0e 100644
--- a/examples/react/start-basic-static/src/styles/app.css
+++ b/examples/react/start-basic-static/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-basic/src/styles/app.css b/examples/react/start-basic/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/react/start-basic/src/styles/app.css
+++ b/examples/react/start-basic/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-clerk-basic/src/styles/app.css b/examples/react/start-clerk-basic/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/react/start-clerk-basic/src/styles/app.css
+++ b/examples/react/start-clerk-basic/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-convex-trellaux/src/styles/app.css b/examples/react/start-convex-trellaux/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/react/start-convex-trellaux/src/styles/app.css
+++ b/examples/react/start-convex-trellaux/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-large/src/styles.css b/examples/react/start-large/src/styles.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/react/start-large/src/styles.css
+++ b/examples/react/start-large/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-supabase-basic/src/styles/app.css b/examples/react/start-supabase-basic/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/react/start-supabase-basic/src/styles/app.css
+++ b/examples/react/start-supabase-basic/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-trellaux/src/styles/app.css b/examples/react/start-trellaux/src/styles/app.css
index cdd3a8af39..6a026a23ad 100644
--- a/examples/react/start-trellaux/src/styles/app.css
+++ b/examples/react/start-trellaux/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/view-transitions/src/styles.css b/examples/react/view-transitions/src/styles.css
index 3f1bb64b6c..82a76bdd65 100644
--- a/examples/react/view-transitions/src/styles.css
+++ b/examples/react/view-transitions/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/with-framer-motion/src/styles.css b/examples/react/with-framer-motion/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/with-framer-motion/src/styles.css
+++ b/examples/react/with-framer-motion/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/with-trpc-react-query/src/styles.css b/examples/react/with-trpc-react-query/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/with-trpc-react-query/src/styles.css
+++ b/examples/react/with-trpc-react-query/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/react/with-trpc/src/styles.css b/examples/react/with-trpc/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/react/with-trpc/src/styles.css
+++ b/examples/react/with-trpc/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-devtools-panel/src/styles.css b/examples/solid/basic-devtools-panel/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/basic-devtools-panel/src/styles.css
+++ b/examples/solid/basic-devtools-panel/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-file-based/src/styles.css b/examples/solid/basic-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/basic-file-based/src/styles.css
+++ b/examples/solid/basic-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-non-nested-devtools/src/styles.css b/examples/solid/basic-non-nested-devtools/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/basic-non-nested-devtools/src/styles.css
+++ b/examples/solid/basic-non-nested-devtools/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-solid-query-file-based/src/styles.css b/examples/solid/basic-solid-query-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/basic-solid-query-file-based/src/styles.css
+++ b/examples/solid/basic-solid-query-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-solid-query/src/styles.css b/examples/solid/basic-solid-query/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/basic-solid-query/src/styles.css
+++ b/examples/solid/basic-solid-query/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-ssr-streaming-file-based/src/styles.css b/examples/solid/basic-ssr-streaming-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/basic-ssr-streaming-file-based/src/styles.css
+++ b/examples/solid/basic-ssr-streaming-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic/src/styles.css b/examples/solid/basic/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/basic/src/styles.css
+++ b/examples/solid/basic/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/kitchen-sink-file-based/src/styles.css b/examples/solid/kitchen-sink-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/kitchen-sink-file-based/src/styles.css
+++ b/examples/solid/kitchen-sink-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css b/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css
+++ b/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/kitchen-sink-solid-query/src/styles.css b/examples/solid/kitchen-sink-solid-query/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/kitchen-sink-solid-query/src/styles.css
+++ b/examples/solid/kitchen-sink-solid-query/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/quickstart-file-based/src/styles.css b/examples/solid/quickstart-file-based/src/styles.css
index 00b7ef394d..2505ad056f 100644
--- a/examples/solid/quickstart-file-based/src/styles.css
+++ b/examples/solid/quickstart-file-based/src/styles.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-auth/src/styles/app.css b/examples/solid/start-basic-auth/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/solid/start-basic-auth/src/styles/app.css
+++ b/examples/solid/start-basic-auth/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-cloudflare/src/styles/app.css b/examples/solid/start-basic-cloudflare/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/solid/start-basic-cloudflare/src/styles/app.css
+++ b/examples/solid/start-basic-cloudflare/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-netlify/src/styles/app.css b/examples/solid/start-basic-netlify/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/solid/start-basic-netlify/src/styles/app.css
+++ b/examples/solid/start-basic-netlify/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-nitro/src/styles/app.css b/examples/solid/start-basic-nitro/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/solid/start-basic-nitro/src/styles/app.css
+++ b/examples/solid/start-basic-nitro/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-solid-query/src/styles/app.css b/examples/solid/start-basic-solid-query/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/solid/start-basic-solid-query/src/styles/app.css
+++ b/examples/solid/start-basic-solid-query/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-static/src/styles/app.css b/examples/solid/start-basic-static/src/styles/app.css
index 9437838dc9..ad2738ac0e 100644
--- a/examples/solid/start-basic-static/src/styles/app.css
+++ b/examples/solid/start-basic-static/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic/src/styles/app.css b/examples/solid/start-basic/src/styles/app.css
index fbb4ba08a5..3374df2f30 100644
--- a/examples/solid/start-basic/src/styles/app.css
+++ b/examples/solid/start-basic/src/styles/app.css
@@ -1,13 +1,6 @@
 @import 'tailwindcss';
 
-/*
-  The default border color has changed to `currentcolor` in Tailwind CSS v4,
-  so we've added these compatibility styles to make sure everything still
-  looks the same as it did with Tailwind CSS v3.
 
-  If we ever want to remove these styles, we need to add an explicit border
-  color utility to any element that depends on these defaults.
-*/
 @layer base {
   *,
   ::after,

From 5791fa8215da756102c60ce8b6132293f328c267 Mon Sep 17 00:00:00 2001
From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com>
Date: Wed, 22 Oct 2025 01:02:05 +0000
Subject: [PATCH 4/6] ci: apply automated fixes

---
 e2e/react-router/basic-file-based-code-splitting/src/styles.css  | 1 -
 e2e/react-router/basic-file-based/src/styles.css                 | 1 -
 e2e/react-router/basic-react-query-file-based/src/styles.css     | 1 -
 e2e/react-router/basic-react-query/src/styles.css                | 1 -
 e2e/react-router/basic-scroll-restoration/src/styles.css         | 1 -
 e2e/react-router/basic-virtual-file-based/src/styles.css         | 1 -
 .../basic-virtual-named-export-config-file-based/src/styles.css  | 1 -
 e2e/react-router/basic/src/styles.css                            | 1 -
 e2e/react-router/generator-cli-only/src/styles.css               | 1 -
 e2e/react-router/js-only-file-based/src/styles.css               | 1 -
 e2e/react-router/rspack-basic-file-based/src/styles.css          | 1 -
 .../src/styles.css                                               | 1 -
 e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css  | 1 -
 e2e/react-router/sentry-integration/src/styles.css               | 1 -
 e2e/react-start/basic-auth/src/styles/app.css                    | 1 -
 e2e/react-start/basic-cloudflare/src/styles/app.css              | 1 -
 e2e/react-start/basic-react-query/src/styles/app.css             | 1 -
 e2e/react-start/basic-rsc/src/styles/app.css                     | 1 -
 e2e/react-start/basic/src/styles/app.css                         | 1 -
 e2e/react-start/custom-basepath/src/styles/app.css               | 1 -
 e2e/react-start/query-integration/src/styles/app.css             | 1 -
 e2e/react-start/scroll-restoration/src/styles/app.css            | 1 -
 e2e/react-start/selective-ssr/src/styles/app.css                 | 1 -
 e2e/react-start/serialization-adapters/src/styles/app.css        | 1 -
 e2e/react-start/server-functions/src/styles/app.css              | 1 -
 e2e/react-start/server-routes/src/styles/app.css                 | 1 -
 e2e/react-start/spa-mode/src/styles/app.css                      | 1 -
 e2e/react-start/virtual-routes/src/styles/app.css                | 1 -
 e2e/react-start/website/src/styles/app.css                       | 1 -
 e2e/solid-router/basic-file-based-code-splitting/src/styles.css  | 1 -
 e2e/solid-router/basic-file-based/src/styles.css                 | 1 -
 e2e/solid-router/basic-scroll-restoration/src/styles.css         | 1 -
 e2e/solid-router/basic-solid-query-file-based/src/styles.css     | 1 -
 e2e/solid-router/basic-solid-query/src/styles.css                | 1 -
 e2e/solid-router/basic-virtual-file-based/src/styles.css         | 1 -
 .../basic-virtual-named-export-config-file-based/src/styles.css  | 1 -
 e2e/solid-router/basic/src/styles.css                            | 1 -
 e2e/solid-router/rspack-basic-file-based/src/styles.css          | 1 -
 .../src/styles.css                                               | 1 -
 e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css  | 1 -
 e2e/solid-start/basic-auth/src/styles/app.css                    | 1 -
 e2e/solid-start/basic-solid-query/src/styles/app.css             | 1 -
 e2e/solid-start/basic/src/styles/app.css                         | 1 -
 e2e/solid-start/custom-basepath/src/styles/app.css               | 1 -
 e2e/solid-start/query-integration/src/styles/app.css             | 1 -
 e2e/solid-start/scroll-restoration/src/styles/app.css            | 1 -
 e2e/solid-start/selective-ssr/src/styles/app.css                 | 1 -
 e2e/solid-start/server-functions/src/styles/app.css              | 1 -
 e2e/solid-start/server-routes/src/styles/app.css                 | 1 -
 e2e/solid-start/spa-mode/src/styles/app.css                      | 1 -
 e2e/solid-start/virtual-routes/src/styles/app.css                | 1 -
 e2e/solid-start/website/src/styles/app.css                       | 1 -
 examples/react/authenticated-routes-firebase/src/styles.css      | 1 -
 examples/react/authenticated-routes/src/styles.css               | 1 -
 examples/react/basic-default-search-params/src/styles.css        | 1 -
 examples/react/basic-devtools-panel/src/styles.css               | 1 -
 examples/react/basic-file-based/src/styles.css                   | 1 -
 examples/react/basic-non-nested-devtools/src/styles.css          | 1 -
 examples/react/basic-react-query-file-based/src/styles.css       | 1 -
 examples/react/basic-react-query/src/styles.css                  | 1 -
 examples/react/basic-virtual-file-based/src/styles.css           | 1 -
 examples/react/basic-virtual-inside-file-based/src/styles.css    | 1 -
 examples/react/basic/src/styles.css                              | 1 -
 examples/react/deferred-data/src/styles.css                      | 1 -
 examples/react/kitchen-sink-file-based/src/styles.css            | 1 -
 .../react/kitchen-sink-react-query-file-based/src/styles.css     | 1 -
 examples/react/kitchen-sink-react-query/src/styles.css           | 1 -
 examples/react/kitchen-sink/src/styles.css                       | 1 -
 examples/react/large-file-based/src/styles.css                   | 1 -
 examples/react/location-masking/src/styles.css                   | 1 -
 examples/react/navigation-blocking/src/styles.css                | 1 -
 examples/react/quickstart-file-based/src/styles.css              | 1 -
 examples/react/quickstart-rspack-file-based/src/styles.css       | 1 -
 examples/react/quickstart/src/styles.css                         | 1 -
 .../react/router-monorepo-react-query/packages/app/src/style.css | 1 -
 .../react/router-monorepo-simple-lazy/packages/app/src/style.css | 1 -
 examples/react/router-monorepo-simple/packages/app/src/style.css | 1 -
 examples/react/scroll-restoration/src/styles.css                 | 1 -
 examples/react/search-validator-adapters/src/styles.css          | 1 -
 examples/react/start-basic-auth/src/styles/app.css               | 1 -
 examples/react/start-basic-cloudflare/src/styles/app.css         | 1 -
 examples/react/start-basic-react-query/src/styles/app.css        | 1 -
 examples/react/start-basic-static/src/styles/app.css             | 1 -
 examples/react/start-basic/src/styles/app.css                    | 1 -
 examples/react/start-clerk-basic/src/styles/app.css              | 1 -
 examples/react/start-convex-trellaux/src/styles/app.css          | 1 -
 examples/react/start-large/src/styles.css                        | 1 -
 examples/react/start-supabase-basic/src/styles/app.css           | 1 -
 examples/react/start-trellaux/src/styles/app.css                 | 1 -
 examples/react/view-transitions/src/styles.css                   | 1 -
 examples/react/with-framer-motion/src/styles.css                 | 1 -
 examples/react/with-trpc-react-query/src/styles.css              | 1 -
 examples/react/with-trpc/src/styles.css                          | 1 -
 examples/solid/basic-devtools-panel/src/styles.css               | 1 -
 examples/solid/basic-file-based/src/styles.css                   | 1 -
 examples/solid/basic-non-nested-devtools/src/styles.css          | 1 -
 examples/solid/basic-solid-query-file-based/src/styles.css       | 1 -
 examples/solid/basic-solid-query/src/styles.css                  | 1 -
 examples/solid/basic-ssr-streaming-file-based/src/styles.css     | 1 -
 examples/solid/basic/src/styles.css                              | 1 -
 examples/solid/kitchen-sink-file-based/src/styles.css            | 1 -
 .../solid/kitchen-sink-solid-query-file-based/src/styles.css     | 1 -
 examples/solid/kitchen-sink-solid-query/src/styles.css           | 1 -
 examples/solid/quickstart-file-based/src/styles.css              | 1 -
 examples/solid/start-basic-auth/src/styles/app.css               | 1 -
 examples/solid/start-basic-cloudflare/src/styles/app.css         | 1 -
 examples/solid/start-basic-netlify/src/styles/app.css            | 1 -
 examples/solid/start-basic-nitro/src/styles/app.css              | 1 -
 examples/solid/start-basic-solid-query/src/styles/app.css        | 1 -
 examples/solid/start-basic-static/src/styles/app.css             | 1 -
 examples/solid/start-basic/src/styles/app.css                    | 1 -
 111 files changed, 111 deletions(-)

diff --git a/e2e/react-router/basic-file-based-code-splitting/src/styles.css b/e2e/react-router/basic-file-based-code-splitting/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/basic-file-based-code-splitting/src/styles.css
+++ b/e2e/react-router/basic-file-based-code-splitting/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-file-based/src/styles.css b/e2e/react-router/basic-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/basic-file-based/src/styles.css
+++ b/e2e/react-router/basic-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-react-query-file-based/src/styles.css b/e2e/react-router/basic-react-query-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/basic-react-query-file-based/src/styles.css
+++ b/e2e/react-router/basic-react-query-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-react-query/src/styles.css b/e2e/react-router/basic-react-query/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/basic-react-query/src/styles.css
+++ b/e2e/react-router/basic-react-query/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-scroll-restoration/src/styles.css b/e2e/react-router/basic-scroll-restoration/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/basic-scroll-restoration/src/styles.css
+++ b/e2e/react-router/basic-scroll-restoration/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-virtual-file-based/src/styles.css b/e2e/react-router/basic-virtual-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/basic-virtual-file-based/src/styles.css
+++ b/e2e/react-router/basic-virtual-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css b/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css
index 13d1b9d038..4fea791308 100644
--- a/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/react-router/basic-virtual-named-export-config-file-based/src/styles.css
@@ -2,7 +2,6 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/basic/src/styles.css b/e2e/react-router/basic/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/basic/src/styles.css
+++ b/e2e/react-router/basic/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/generator-cli-only/src/styles.css b/e2e/react-router/generator-cli-only/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/generator-cli-only/src/styles.css
+++ b/e2e/react-router/generator-cli-only/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/js-only-file-based/src/styles.css b/e2e/react-router/js-only-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/js-only-file-based/src/styles.css
+++ b/e2e/react-router/js-only-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/rspack-basic-file-based/src/styles.css b/e2e/react-router/rspack-basic-file-based/src/styles.css
index 13d1b9d038..4fea791308 100644
--- a/e2e/react-router/rspack-basic-file-based/src/styles.css
+++ b/e2e/react-router/rspack-basic-file-based/src/styles.css
@@ -2,7 +2,6 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
index 13d1b9d038..4fea791308 100644
--- a/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/react-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
@@ -2,7 +2,6 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css b/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css
+++ b/e2e/react-router/scroll-restoration-sandbox-vite/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-router/sentry-integration/src/styles.css b/e2e/react-router/sentry-integration/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/react-router/sentry-integration/src/styles.css
+++ b/e2e/react-router/sentry-integration/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/basic-auth/src/styles/app.css b/e2e/react-start/basic-auth/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/basic-auth/src/styles/app.css
+++ b/e2e/react-start/basic-auth/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/basic-cloudflare/src/styles/app.css b/e2e/react-start/basic-cloudflare/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/basic-cloudflare/src/styles/app.css
+++ b/e2e/react-start/basic-cloudflare/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/basic-react-query/src/styles/app.css b/e2e/react-start/basic-react-query/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/basic-react-query/src/styles/app.css
+++ b/e2e/react-start/basic-react-query/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/basic-rsc/src/styles/app.css b/e2e/react-start/basic-rsc/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/basic-rsc/src/styles/app.css
+++ b/e2e/react-start/basic-rsc/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/basic/src/styles/app.css b/e2e/react-start/basic/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/basic/src/styles/app.css
+++ b/e2e/react-start/basic/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/custom-basepath/src/styles/app.css b/e2e/react-start/custom-basepath/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/custom-basepath/src/styles/app.css
+++ b/e2e/react-start/custom-basepath/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/query-integration/src/styles/app.css b/e2e/react-start/query-integration/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/query-integration/src/styles/app.css
+++ b/e2e/react-start/query-integration/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/scroll-restoration/src/styles/app.css b/e2e/react-start/scroll-restoration/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/scroll-restoration/src/styles/app.css
+++ b/e2e/react-start/scroll-restoration/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/selective-ssr/src/styles/app.css b/e2e/react-start/selective-ssr/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/selective-ssr/src/styles/app.css
+++ b/e2e/react-start/selective-ssr/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/serialization-adapters/src/styles/app.css b/e2e/react-start/serialization-adapters/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/serialization-adapters/src/styles/app.css
+++ b/e2e/react-start/serialization-adapters/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/server-functions/src/styles/app.css b/e2e/react-start/server-functions/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/server-functions/src/styles/app.css
+++ b/e2e/react-start/server-functions/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/server-routes/src/styles/app.css b/e2e/react-start/server-routes/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/server-routes/src/styles/app.css
+++ b/e2e/react-start/server-routes/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/spa-mode/src/styles/app.css b/e2e/react-start/spa-mode/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/spa-mode/src/styles/app.css
+++ b/e2e/react-start/spa-mode/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/virtual-routes/src/styles/app.css b/e2e/react-start/virtual-routes/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/virtual-routes/src/styles/app.css
+++ b/e2e/react-start/virtual-routes/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/react-start/website/src/styles/app.css b/e2e/react-start/website/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/react-start/website/src/styles/app.css
+++ b/e2e/react-start/website/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-file-based-code-splitting/src/styles.css b/e2e/solid-router/basic-file-based-code-splitting/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/solid-router/basic-file-based-code-splitting/src/styles.css
+++ b/e2e/solid-router/basic-file-based-code-splitting/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-file-based/src/styles.css b/e2e/solid-router/basic-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/solid-router/basic-file-based/src/styles.css
+++ b/e2e/solid-router/basic-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-scroll-restoration/src/styles.css b/e2e/solid-router/basic-scroll-restoration/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/solid-router/basic-scroll-restoration/src/styles.css
+++ b/e2e/solid-router/basic-scroll-restoration/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-solid-query-file-based/src/styles.css b/e2e/solid-router/basic-solid-query-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/solid-router/basic-solid-query-file-based/src/styles.css
+++ b/e2e/solid-router/basic-solid-query-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-solid-query/src/styles.css b/e2e/solid-router/basic-solid-query/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/solid-router/basic-solid-query/src/styles.css
+++ b/e2e/solid-router/basic-solid-query/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-virtual-file-based/src/styles.css b/e2e/solid-router/basic-virtual-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/solid-router/basic-virtual-file-based/src/styles.css
+++ b/e2e/solid-router/basic-virtual-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css b/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css
index 13d1b9d038..4fea791308 100644
--- a/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/solid-router/basic-virtual-named-export-config-file-based/src/styles.css
@@ -2,7 +2,6 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/basic/src/styles.css b/e2e/solid-router/basic/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/solid-router/basic/src/styles.css
+++ b/e2e/solid-router/basic/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/rspack-basic-file-based/src/styles.css b/e2e/solid-router/rspack-basic-file-based/src/styles.css
index 13d1b9d038..4fea791308 100644
--- a/e2e/solid-router/rspack-basic-file-based/src/styles.css
+++ b/e2e/solid-router/rspack-basic-file-based/src/styles.css
@@ -2,7 +2,6 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
index 13d1b9d038..4fea791308 100644
--- a/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
+++ b/e2e/solid-router/rspack-basic-virtual-named-export-config-file-based/src/styles.css
@@ -2,7 +2,6 @@
 
 @source './**/*.{js,jsx,ts,tsx}';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css b/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css
+++ b/e2e/solid-router/scroll-restoration-sandbox-vite/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/basic-auth/src/styles/app.css b/e2e/solid-start/basic-auth/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/solid-start/basic-auth/src/styles/app.css
+++ b/e2e/solid-start/basic-auth/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/basic-solid-query/src/styles/app.css b/e2e/solid-start/basic-solid-query/src/styles/app.css
index 2b2c8673bc..3b1c037f8a 100644
--- a/e2e/solid-start/basic-solid-query/src/styles/app.css
+++ b/e2e/solid-start/basic-solid-query/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/basic/src/styles/app.css b/e2e/solid-start/basic/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/solid-start/basic/src/styles/app.css
+++ b/e2e/solid-start/basic/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/custom-basepath/src/styles/app.css b/e2e/solid-start/custom-basepath/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/solid-start/custom-basepath/src/styles/app.css
+++ b/e2e/solid-start/custom-basepath/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/query-integration/src/styles/app.css b/e2e/solid-start/query-integration/src/styles/app.css
index 2b2c8673bc..3b1c037f8a 100644
--- a/e2e/solid-start/query-integration/src/styles/app.css
+++ b/e2e/solid-start/query-integration/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/scroll-restoration/src/styles/app.css b/e2e/solid-start/scroll-restoration/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/solid-start/scroll-restoration/src/styles/app.css
+++ b/e2e/solid-start/scroll-restoration/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/selective-ssr/src/styles/app.css b/e2e/solid-start/selective-ssr/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/solid-start/selective-ssr/src/styles/app.css
+++ b/e2e/solid-start/selective-ssr/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/server-functions/src/styles/app.css b/e2e/solid-start/server-functions/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/solid-start/server-functions/src/styles/app.css
+++ b/e2e/solid-start/server-functions/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/server-routes/src/styles/app.css b/e2e/solid-start/server-routes/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/solid-start/server-routes/src/styles/app.css
+++ b/e2e/solid-start/server-routes/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/spa-mode/src/styles/app.css b/e2e/solid-start/spa-mode/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/solid-start/spa-mode/src/styles/app.css
+++ b/e2e/solid-start/spa-mode/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/virtual-routes/src/styles/app.css b/e2e/solid-start/virtual-routes/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/solid-start/virtual-routes/src/styles/app.css
+++ b/e2e/solid-start/virtual-routes/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/e2e/solid-start/website/src/styles/app.css b/e2e/solid-start/website/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/e2e/solid-start/website/src/styles/app.css
+++ b/e2e/solid-start/website/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/authenticated-routes-firebase/src/styles.css b/examples/react/authenticated-routes-firebase/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/authenticated-routes-firebase/src/styles.css
+++ b/examples/react/authenticated-routes-firebase/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/authenticated-routes/src/styles.css b/examples/react/authenticated-routes/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/authenticated-routes/src/styles.css
+++ b/examples/react/authenticated-routes/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-default-search-params/src/styles.css b/examples/react/basic-default-search-params/src/styles.css
index 1bd6bcc38d..a43da4d776 100644
--- a/examples/react/basic-default-search-params/src/styles.css
+++ b/examples/react/basic-default-search-params/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-devtools-panel/src/styles.css b/examples/react/basic-devtools-panel/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/basic-devtools-panel/src/styles.css
+++ b/examples/react/basic-devtools-panel/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-file-based/src/styles.css b/examples/react/basic-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/basic-file-based/src/styles.css
+++ b/examples/react/basic-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-non-nested-devtools/src/styles.css b/examples/react/basic-non-nested-devtools/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/basic-non-nested-devtools/src/styles.css
+++ b/examples/react/basic-non-nested-devtools/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-react-query-file-based/src/styles.css b/examples/react/basic-react-query-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/basic-react-query-file-based/src/styles.css
+++ b/examples/react/basic-react-query-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-react-query/src/styles.css b/examples/react/basic-react-query/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/basic-react-query/src/styles.css
+++ b/examples/react/basic-react-query/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-virtual-file-based/src/styles.css b/examples/react/basic-virtual-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/basic-virtual-file-based/src/styles.css
+++ b/examples/react/basic-virtual-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic-virtual-inside-file-based/src/styles.css b/examples/react/basic-virtual-inside-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/basic-virtual-inside-file-based/src/styles.css
+++ b/examples/react/basic-virtual-inside-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/basic/src/styles.css b/examples/react/basic/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/basic/src/styles.css
+++ b/examples/react/basic/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/deferred-data/src/styles.css b/examples/react/deferred-data/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/deferred-data/src/styles.css
+++ b/examples/react/deferred-data/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/kitchen-sink-file-based/src/styles.css b/examples/react/kitchen-sink-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/kitchen-sink-file-based/src/styles.css
+++ b/examples/react/kitchen-sink-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/kitchen-sink-react-query-file-based/src/styles.css b/examples/react/kitchen-sink-react-query-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/kitchen-sink-react-query-file-based/src/styles.css
+++ b/examples/react/kitchen-sink-react-query-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/kitchen-sink-react-query/src/styles.css b/examples/react/kitchen-sink-react-query/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/kitchen-sink-react-query/src/styles.css
+++ b/examples/react/kitchen-sink-react-query/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/kitchen-sink/src/styles.css b/examples/react/kitchen-sink/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/kitchen-sink/src/styles.css
+++ b/examples/react/kitchen-sink/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/large-file-based/src/styles.css b/examples/react/large-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/large-file-based/src/styles.css
+++ b/examples/react/large-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/location-masking/src/styles.css b/examples/react/location-masking/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/location-masking/src/styles.css
+++ b/examples/react/location-masking/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/navigation-blocking/src/styles.css b/examples/react/navigation-blocking/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/navigation-blocking/src/styles.css
+++ b/examples/react/navigation-blocking/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/quickstart-file-based/src/styles.css b/examples/react/quickstart-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/quickstart-file-based/src/styles.css
+++ b/examples/react/quickstart-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/quickstart-rspack-file-based/src/styles.css b/examples/react/quickstart-rspack-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/quickstart-rspack-file-based/src/styles.css
+++ b/examples/react/quickstart-rspack-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/quickstart/src/styles.css b/examples/react/quickstart/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/quickstart/src/styles.css
+++ b/examples/react/quickstart/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/router-monorepo-react-query/packages/app/src/style.css b/examples/react/router-monorepo-react-query/packages/app/src/style.css
index 91a266da93..87028b46e9 100644
--- a/examples/react/router-monorepo-react-query/packages/app/src/style.css
+++ b/examples/react/router-monorepo-react-query/packages/app/src/style.css
@@ -2,7 +2,6 @@
 
 @source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css b/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
index 91a266da93..87028b46e9 100644
--- a/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
+++ b/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
@@ -2,7 +2,6 @@
 
 @source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/router-monorepo-simple/packages/app/src/style.css b/examples/react/router-monorepo-simple/packages/app/src/style.css
index 91a266da93..87028b46e9 100644
--- a/examples/react/router-monorepo-simple/packages/app/src/style.css
+++ b/examples/react/router-monorepo-simple/packages/app/src/style.css
@@ -2,7 +2,6 @@
 
 @source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/scroll-restoration/src/styles.css b/examples/react/scroll-restoration/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/scroll-restoration/src/styles.css
+++ b/examples/react/scroll-restoration/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/search-validator-adapters/src/styles.css b/examples/react/search-validator-adapters/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/search-validator-adapters/src/styles.css
+++ b/examples/react/search-validator-adapters/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-basic-auth/src/styles/app.css b/examples/react/start-basic-auth/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/react/start-basic-auth/src/styles/app.css
+++ b/examples/react/start-basic-auth/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-basic-cloudflare/src/styles/app.css b/examples/react/start-basic-cloudflare/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/react/start-basic-cloudflare/src/styles/app.css
+++ b/examples/react/start-basic-cloudflare/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-basic-react-query/src/styles/app.css b/examples/react/start-basic-react-query/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/react/start-basic-react-query/src/styles/app.css
+++ b/examples/react/start-basic-react-query/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-basic-static/src/styles/app.css b/examples/react/start-basic-static/src/styles/app.css
index ad2738ac0e..cf6807d2dc 100644
--- a/examples/react/start-basic-static/src/styles/app.css
+++ b/examples/react/start-basic-static/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-basic/src/styles/app.css b/examples/react/start-basic/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/react/start-basic/src/styles/app.css
+++ b/examples/react/start-basic/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-clerk-basic/src/styles/app.css b/examples/react/start-clerk-basic/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/react/start-clerk-basic/src/styles/app.css
+++ b/examples/react/start-clerk-basic/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-convex-trellaux/src/styles/app.css b/examples/react/start-convex-trellaux/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/react/start-convex-trellaux/src/styles/app.css
+++ b/examples/react/start-convex-trellaux/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-large/src/styles.css b/examples/react/start-large/src/styles.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/react/start-large/src/styles.css
+++ b/examples/react/start-large/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-supabase-basic/src/styles/app.css b/examples/react/start-supabase-basic/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/react/start-supabase-basic/src/styles/app.css
+++ b/examples/react/start-supabase-basic/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/start-trellaux/src/styles/app.css b/examples/react/start-trellaux/src/styles/app.css
index 6a026a23ad..333e3db649 100644
--- a/examples/react/start-trellaux/src/styles/app.css
+++ b/examples/react/start-trellaux/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/view-transitions/src/styles.css b/examples/react/view-transitions/src/styles.css
index 82a76bdd65..818667133d 100644
--- a/examples/react/view-transitions/src/styles.css
+++ b/examples/react/view-transitions/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/with-framer-motion/src/styles.css b/examples/react/with-framer-motion/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/with-framer-motion/src/styles.css
+++ b/examples/react/with-framer-motion/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/with-trpc-react-query/src/styles.css b/examples/react/with-trpc-react-query/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/with-trpc-react-query/src/styles.css
+++ b/examples/react/with-trpc-react-query/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/react/with-trpc/src/styles.css b/examples/react/with-trpc/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/react/with-trpc/src/styles.css
+++ b/examples/react/with-trpc/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-devtools-panel/src/styles.css b/examples/solid/basic-devtools-panel/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/basic-devtools-panel/src/styles.css
+++ b/examples/solid/basic-devtools-panel/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-file-based/src/styles.css b/examples/solid/basic-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/basic-file-based/src/styles.css
+++ b/examples/solid/basic-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-non-nested-devtools/src/styles.css b/examples/solid/basic-non-nested-devtools/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/basic-non-nested-devtools/src/styles.css
+++ b/examples/solid/basic-non-nested-devtools/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-solid-query-file-based/src/styles.css b/examples/solid/basic-solid-query-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/basic-solid-query-file-based/src/styles.css
+++ b/examples/solid/basic-solid-query-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-solid-query/src/styles.css b/examples/solid/basic-solid-query/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/basic-solid-query/src/styles.css
+++ b/examples/solid/basic-solid-query/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic-ssr-streaming-file-based/src/styles.css b/examples/solid/basic-ssr-streaming-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/basic-ssr-streaming-file-based/src/styles.css
+++ b/examples/solid/basic-ssr-streaming-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/basic/src/styles.css b/examples/solid/basic/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/basic/src/styles.css
+++ b/examples/solid/basic/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/kitchen-sink-file-based/src/styles.css b/examples/solid/kitchen-sink-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/kitchen-sink-file-based/src/styles.css
+++ b/examples/solid/kitchen-sink-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css b/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css
+++ b/examples/solid/kitchen-sink-solid-query-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/kitchen-sink-solid-query/src/styles.css b/examples/solid/kitchen-sink-solid-query/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/kitchen-sink-solid-query/src/styles.css
+++ b/examples/solid/kitchen-sink-solid-query/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/quickstart-file-based/src/styles.css b/examples/solid/quickstart-file-based/src/styles.css
index 2505ad056f..37a1064738 100644
--- a/examples/solid/quickstart-file-based/src/styles.css
+++ b/examples/solid/quickstart-file-based/src/styles.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-auth/src/styles/app.css b/examples/solid/start-basic-auth/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/solid/start-basic-auth/src/styles/app.css
+++ b/examples/solid/start-basic-auth/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-cloudflare/src/styles/app.css b/examples/solid/start-basic-cloudflare/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/solid/start-basic-cloudflare/src/styles/app.css
+++ b/examples/solid/start-basic-cloudflare/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-netlify/src/styles/app.css b/examples/solid/start-basic-netlify/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/solid/start-basic-netlify/src/styles/app.css
+++ b/examples/solid/start-basic-netlify/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-nitro/src/styles/app.css b/examples/solid/start-basic-nitro/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/solid/start-basic-nitro/src/styles/app.css
+++ b/examples/solid/start-basic-nitro/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-solid-query/src/styles/app.css b/examples/solid/start-basic-solid-query/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/solid/start-basic-solid-query/src/styles/app.css
+++ b/examples/solid/start-basic-solid-query/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic-static/src/styles/app.css b/examples/solid/start-basic-static/src/styles/app.css
index ad2738ac0e..cf6807d2dc 100644
--- a/examples/solid/start-basic-static/src/styles/app.css
+++ b/examples/solid/start-basic-static/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,
diff --git a/examples/solid/start-basic/src/styles/app.css b/examples/solid/start-basic/src/styles/app.css
index 3374df2f30..c36c737cd4 100644
--- a/examples/solid/start-basic/src/styles/app.css
+++ b/examples/solid/start-basic/src/styles/app.css
@@ -1,6 +1,5 @@
 @import 'tailwindcss';
 
-
 @layer base {
   *,
   ::after,

From 30bd5bbc72c7d72ffa056e88e8eb5a053351af95 Mon Sep 17 00:00:00 2001
From: Birk Skyum <birk.skyum@pm.me>
Date: Wed, 22 Oct 2025 03:17:27 +0200
Subject: [PATCH 5/6] reset monorepo and static examples

---
 .../packages/app/package.json                 |   9 +-
 .../packages/app/postcss.config.js            |   1 +
 .../packages/app/src/style.css                |  16 +-
 .../packages/app/package.json                 |   7 +-
 .../packages/app/postcss.config.js            |   1 +
 .../packages/app/src/style.css                |  16 +-
 .../packages/app/package.json                 |   7 +-
 .../packages/app/postcss.config.js            |   1 +
 .../packages/app/src/style.css                |  16 +-
 .../react/start-basic-static/package.json     |   2 +-
 .../src/components/DefaultCatchBoundary.tsx   |   6 +-
 .../src/components/NotFound.tsx               |   4 +-
 .../start-basic-static/src/styles/app.css     |  14 +-
 .../start-basic-static/tailwind.config.cjs    |   4 +
 .../solid/start-basic-static/package.json     |   8 +-
 .../src/components/DefaultCatchBoundary.tsx   |   6 +-
 .../src/components/NotFound.tsx               |   4 +-
 .../start-basic-static/src/styles/app.css     |  14 +-
 .../start-basic-static/tailwind.config.cjs    |   4 +
 pnpm-lock.yaml                                | 288 ++++++++++++++++--
 20 files changed, 324 insertions(+), 104 deletions(-)
 create mode 100644 examples/react/start-basic-static/tailwind.config.cjs
 create mode 100644 examples/solid/start-basic-static/tailwind.config.cjs

diff --git a/examples/react/router-monorepo-react-query/packages/app/package.json b/examples/react/router-monorepo-react-query/packages/app/package.json
index c23fd92800..0fbd125103 100644
--- a/examples/react/router-monorepo-react-query/packages/app/package.json
+++ b/examples/react/router-monorepo-react-query/packages/app/package.json
@@ -9,20 +9,21 @@
     "start": "vite"
   },
   "dependencies": {
+    "@tanstack/react-query": "^5.66.0",
     "@router-mono-react-query/post-feature": "workspace:*",
     "@router-mono-react-query/router": "workspace:*",
-    "@tanstack/react-query": "^5.66.0",
     "react": "^19.0.0",
     "react-dom": "^19.0.0"
   },
   "devDependencies": {
-    "@tanstack/react-router-devtools": "^1.133.22",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "postcss": "^8.5.1",
-    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
+    "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
+    "autoprefixer": "^10.4.20",
+    "tailwindcss": "^3.4.17",
     "vite": "^7.1.7",
     "vite-plugin-dts": "^4.5.4"
   },
diff --git a/examples/react/router-monorepo-react-query/packages/app/postcss.config.js b/examples/react/router-monorepo-react-query/packages/app/postcss.config.js
index 5cf30693dd..61e0dbc36d 100644
--- a/examples/react/router-monorepo-react-query/packages/app/postcss.config.js
+++ b/examples/react/router-monorepo-react-query/packages/app/postcss.config.js
@@ -3,5 +3,6 @@ export default {
     tailwindcss: {
       config: 'tailwind.config.js',
     },
+    autoprefixer: {},
   },
 }
diff --git a/examples/react/router-monorepo-react-query/packages/app/src/style.css b/examples/react/router-monorepo-react-query/packages/app/src/style.css
index 87028b46e9..0b8e317099 100644
--- a/examples/react/router-monorepo-react-query/packages/app/src/style.css
+++ b/examples/react/router-monorepo-react-query/packages/app/src/style.css
@@ -1,16 +1,6 @@
-@import 'tailwindcss';
-
-@source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
-
-@layer base {
-  *,
-  ::after,
-  ::before,
-  ::backdrop,
-  ::file-selector-button {
-    border-color: var(--color-gray-200, currentcolor);
-  }
-}
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/router-monorepo-simple-lazy/packages/app/package.json b/examples/react/router-monorepo-simple-lazy/packages/app/package.json
index 858e9b0cce..2f11bae110 100644
--- a/examples/react/router-monorepo-simple-lazy/packages/app/package.json
+++ b/examples/react/router-monorepo-simple-lazy/packages/app/package.json
@@ -15,13 +15,14 @@
     "react-dom": "^19.0.0"
   },
   "devDependencies": {
-    "@tanstack/react-router-devtools": "^1.133.22",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "postcss": "^8.5.1",
-    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
+    "@tanstack/react-router-devtools": "^1.133.22",
+    "postcss": "^8.5.1",
+    "autoprefixer": "^10.4.20",
+    "tailwindcss": "^3.4.17",
     "vite": "^7.1.7",
     "vite-plugin-dts": "^4.5.4"
   },
diff --git a/examples/react/router-monorepo-simple-lazy/packages/app/postcss.config.js b/examples/react/router-monorepo-simple-lazy/packages/app/postcss.config.js
index 5cf30693dd..61e0dbc36d 100644
--- a/examples/react/router-monorepo-simple-lazy/packages/app/postcss.config.js
+++ b/examples/react/router-monorepo-simple-lazy/packages/app/postcss.config.js
@@ -3,5 +3,6 @@ export default {
     tailwindcss: {
       config: 'tailwind.config.js',
     },
+    autoprefixer: {},
   },
 }
diff --git a/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css b/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
index 87028b46e9..0b8e317099 100644
--- a/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
+++ b/examples/react/router-monorepo-simple-lazy/packages/app/src/style.css
@@ -1,16 +1,6 @@
-@import 'tailwindcss';
-
-@source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
-
-@layer base {
-  *,
-  ::after,
-  ::before,
-  ::backdrop,
-  ::file-selector-button {
-    border-color: var(--color-gray-200, currentcolor);
-  }
-}
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/router-monorepo-simple/packages/app/package.json b/examples/react/router-monorepo-simple/packages/app/package.json
index c26d3c8902..22167ea083 100644
--- a/examples/react/router-monorepo-simple/packages/app/package.json
+++ b/examples/react/router-monorepo-simple/packages/app/package.json
@@ -15,14 +15,15 @@
     "react-dom": "^19.0.0"
   },
   "devDependencies": {
-    "@tanstack/react-router-devtools": "^1.133.22",
     "@types/react": "^19.0.8",
     "@types/react-dom": "^19.0.3",
     "@vitejs/plugin-react": "^4.3.4",
-    "postcss": "^8.5.1",
-    "tailwindcss": "^4.1.15",
     "typescript": "^5.7.2",
+    "@tanstack/react-router-devtools": "^1.133.22",
     "vite": "^7.1.7",
+    "postcss": "^8.5.1",
+    "autoprefixer": "^10.4.20",
+    "tailwindcss": "^3.4.17",
     "vite-plugin-dts": "^4.5.4"
   },
   "nx": {
diff --git a/examples/react/router-monorepo-simple/packages/app/postcss.config.js b/examples/react/router-monorepo-simple/packages/app/postcss.config.js
index 5cf30693dd..61e0dbc36d 100644
--- a/examples/react/router-monorepo-simple/packages/app/postcss.config.js
+++ b/examples/react/router-monorepo-simple/packages/app/postcss.config.js
@@ -3,5 +3,6 @@ export default {
     tailwindcss: {
       config: 'tailwind.config.js',
     },
+    autoprefixer: {},
   },
 }
diff --git a/examples/react/router-monorepo-simple/packages/app/src/style.css b/examples/react/router-monorepo-simple/packages/app/src/style.css
index 87028b46e9..0b8e317099 100644
--- a/examples/react/router-monorepo-simple/packages/app/src/style.css
+++ b/examples/react/router-monorepo-simple/packages/app/src/style.css
@@ -1,16 +1,6 @@
-@import 'tailwindcss';
-
-@source '../../post-feature/src/**/*.{js,jsx,ts,tsx}';
-
-@layer base {
-  *,
-  ::after,
-  ::before,
-  ::backdrop,
-  ::file-selector-button {
-    border-color: var(--color-gray-200, currentcolor);
-  }
-}
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
 
 html {
   color-scheme: light dark;
diff --git a/examples/react/start-basic-static/package.json b/examples/react/start-basic-static/package.json
index bbd169887b..60c003bcfa 100644
--- a/examples/react/start-basic-static/package.json
+++ b/examples/react/start-basic-static/package.json
@@ -24,7 +24,7 @@
     "@types/react-dom": "^19.0.3",
     "autoprefixer": "^10.4.20",
     "postcss": "^8.4.49",
-    "tailwindcss": "^4.1.15",
+    "tailwindcss": "^3.4.15",
     "typescript": "^5.6.2",
     "vite": "^7.1.7",
     "vite-tsconfig-paths": "^5.1.3"
diff --git a/examples/react/start-basic-static/src/components/DefaultCatchBoundary.tsx b/examples/react/start-basic-static/src/components/DefaultCatchBoundary.tsx
index 260c2ea41f..f750e7bd2b 100644
--- a/examples/react/start-basic-static/src/components/DefaultCatchBoundary.tsx
+++ b/examples/react/start-basic-static/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
+          className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot ? (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
+            className={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/react/start-basic-static/src/components/NotFound.tsx b/examples/react/start-basic-static/src/components/NotFound.tsx
index fd4e75befe..7b54fa5680 100644
--- a/examples/react/start-basic-static/src/components/NotFound.tsx
+++ b/examples/react/start-basic-static/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p className="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          className="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
+          className="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          className="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
+          className="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/react/start-basic-static/src/styles/app.css b/examples/react/start-basic-static/src/styles/app.css
index cf6807d2dc..d6426ccb72 100644
--- a/examples/react/start-basic-static/src/styles/app.css
+++ b/examples/react/start-basic-static/src/styles/app.css
@@ -1,14 +1,6 @@
-@import 'tailwindcss';
-
-@layer base {
-  *,
-  ::after,
-  ::before,
-  ::backdrop,
-  ::file-selector-button {
-    border-color: var(--color-gray-200, currentcolor);
-  }
-}
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
 
 @layer base {
   html,
diff --git a/examples/react/start-basic-static/tailwind.config.cjs b/examples/react/start-basic-static/tailwind.config.cjs
new file mode 100644
index 0000000000..10c9224f8c
--- /dev/null
+++ b/examples/react/start-basic-static/tailwind.config.cjs
@@ -0,0 +1,4 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+  content: ['./src/**/*.{js,ts,jsx,tsx}'],
+}
diff --git a/examples/solid/start-basic-static/package.json b/examples/solid/start-basic-static/package.json
index b6d4f806ef..8a3efbd8b2 100644
--- a/examples/solid/start-basic-static/package.json
+++ b/examples/solid/start-basic-static/package.json
@@ -13,18 +13,18 @@
     "@tanstack/solid-router-devtools": "^1.133.23",
     "@tanstack/solid-start": "^1.133.23",
     "@tanstack/start-static-server-functions": "^1.133.20",
-    "redaxios": "^0.5.1",
     "solid-js": "^1.9.5",
+    "redaxios": "^0.5.1",
     "tailwind-merge": "^2.5.5"
   },
   "devDependencies": {
     "@types/node": "^22.5.4",
     "autoprefixer": "^10.4.20",
     "postcss": "^8.4.49",
-    "tailwindcss": "^4.1.15",
+    "tailwindcss": "^3.4.15",
     "typescript": "^5.6.2",
     "vite": "^7.1.7",
-    "vite-plugin-solid": "^2.11.10",
-    "vite-tsconfig-paths": "^5.1.3"
+    "vite-tsconfig-paths": "^5.1.3",
+    "vite-plugin-solid": "^2.11.10"
   }
 }
diff --git a/examples/solid/start-basic-static/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic-static/src/components/DefaultCatchBoundary.tsx
index 1ae7a0cf94..0dff3919fd 100644
--- a/examples/solid/start-basic-static/src/components/DefaultCatchBoundary.tsx
+++ b/examples/solid/start-basic-static/src/components/DefaultCatchBoundary.tsx
@@ -24,21 +24,21 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
           onClick={() => {
             router.invalidate()
           }}
-          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
         >
           Try Again
         </button>
         {isRoot() ? (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
           >
             Home
           </Link>
         ) : (
           <Link
             to="/"
-            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded-sm text-white uppercase font-extrabold`}
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
             onClick={(e) => {
               e.preventDefault()
               window.history.back()
diff --git a/examples/solid/start-basic-static/src/components/NotFound.tsx b/examples/solid/start-basic-static/src/components/NotFound.tsx
index af5ad273c5..ca4c1960fa 100644
--- a/examples/solid/start-basic-static/src/components/NotFound.tsx
+++ b/examples/solid/start-basic-static/src/components/NotFound.tsx
@@ -9,13 +9,13 @@ export function NotFound({ children }: { children?: any }) {
       <p class="flex items-center gap-2 flex-wrap">
         <button
           onClick={() => window.history.back()}
-          class="bg-emerald-500 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
+          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
         >
           Go back
         </button>
         <Link
           to="/"
-          class="bg-cyan-600 text-white px-2 py-1 rounded-sm uppercase font-black text-sm"
+          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
         >
           Start Over
         </Link>
diff --git a/examples/solid/start-basic-static/src/styles/app.css b/examples/solid/start-basic-static/src/styles/app.css
index cf6807d2dc..d6426ccb72 100644
--- a/examples/solid/start-basic-static/src/styles/app.css
+++ b/examples/solid/start-basic-static/src/styles/app.css
@@ -1,14 +1,6 @@
-@import 'tailwindcss';
-
-@layer base {
-  *,
-  ::after,
-  ::before,
-  ::backdrop,
-  ::file-selector-button {
-    border-color: var(--color-gray-200, currentcolor);
-  }
-}
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
 
 @layer base {
   html,
diff --git a/examples/solid/start-basic-static/tailwind.config.cjs b/examples/solid/start-basic-static/tailwind.config.cjs
new file mode 100644
index 0000000000..10c9224f8c
--- /dev/null
+++ b/examples/solid/start-basic-static/tailwind.config.cjs
@@ -0,0 +1,4 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+  content: ['./src/**/*.{js,ts,jsx,tsx}'],
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0e6bbfd501..84a0c112b8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4648,22 +4648,25 @@ importers:
         version: 19.0.3(@types/react@19.0.8)
       '@vitejs/plugin-react':
         specifier: ^4.3.4
-        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      autoprefixer:
+        specifier: ^10.4.20
+        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^4.1.15
-        version: 4.1.15
+        specifier: ^3.4.17
+        version: 3.4.18(tsx@4.20.3)(yaml@2.8.1)
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
       vite:
         specifier: ^7.1.7
-        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 7.1.7(@types/node@22.10.2)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vite-plugin-dts:
         specifier: 4.0.3
-        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+        version: 4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
   examples/react/router-monorepo-react-query/packages/post-feature:
     dependencies:
@@ -4886,12 +4889,15 @@ importers:
       '@vitejs/plugin-react':
         specifier: ^4.3.4
         version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      autoprefixer:
+        specifier: ^10.4.20
+        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^4.1.15
-        version: 4.1.15
+        specifier: ^3.4.17
+        version: 3.4.18(tsx@4.20.3)(yaml@2.8.1)
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
@@ -5006,12 +5012,15 @@ importers:
       '@vitejs/plugin-react':
         specifier: ^4.3.4
         version: 4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      autoprefixer:
+        specifier: ^10.4.20
+        version: 10.4.20(postcss@8.5.3)
       postcss:
         specifier: ^8.5.1
         version: 8.5.3
       tailwindcss:
-        specifier: ^4.1.15
-        version: 4.1.15
+        specifier: ^3.4.17
+        version: 3.4.18(tsx@4.20.3)(yaml@2.8.1)
       typescript:
         specifier: ^5.7.2
         version: 5.8.2
@@ -5530,8 +5539,8 @@ importers:
         specifier: ^8.4.49
         version: 8.5.3
       tailwindcss:
-        specifier: ^4.1.15
-        version: 4.1.15
+        specifier: ^3.4.15
+        version: 3.4.18(tsx@4.20.3)(yaml@2.8.1)
       typescript:
         specifier: ^5.6.2
         version: 5.8.2
@@ -5616,7 +5625,7 @@ importers:
         version: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       vitest:
         specifier: ^3.2.4
-        version: 3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4))(@vitest/ui@3.0.6(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+        version: 3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
       web-vitals:
         specifier: ^5.1.0
         version: 5.1.0
@@ -7323,8 +7332,8 @@ importers:
         specifier: ^8.4.49
         version: 8.5.3
       tailwindcss:
-        specifier: ^4.1.15
-        version: 4.1.15
+        specifier: ^3.4.15
+        version: 3.4.18(tsx@4.20.3)(yaml@2.8.1)
       typescript:
         specifier: ^5.6.2
         version: 5.8.2
@@ -13387,6 +13396,9 @@ packages:
     resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==}
     engines: {node: '>= 14'}
 
+  arg@5.0.2:
+    resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+
   argparse@1.0.10:
     resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
 
@@ -13599,6 +13611,10 @@ packages:
   camel-case@4.1.2:
     resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
 
+  camelcase-css@2.0.1:
+    resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
+    engines: {node: '>= 6'}
+
   caniuse-lite@1.0.30001696:
     resolution: {integrity: sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==}
 
@@ -13765,6 +13781,10 @@ packages:
   commander@2.20.3:
     resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
 
+  commander@4.1.1:
+    resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+    engines: {node: '>= 6'}
+
   commander@8.3.0:
     resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
     engines: {node: '>= 12'}
@@ -13980,6 +14000,11 @@ packages:
   css.escape@1.5.1:
     resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
 
+  cssesc@3.0.0:
+    resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+    engines: {node: '>=4'}
+    hasBin: true
+
   cssfilter@0.0.10:
     resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==}
 
@@ -14244,10 +14269,16 @@ packages:
   dettle@1.0.5:
     resolution: {integrity: sha512-ZVyjhAJ7sCe1PNXEGveObOH9AC8QvMga3HJIghHawtG7mE4K5pW9nz/vDGAr/U7a3LWgdOzEE7ac9MURnyfaTA==}
 
+  didyoumean@1.2.2:
+    resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+
   diff@8.0.2:
     resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==}
     engines: {node: '>=0.3.1'}
 
+  dlv@1.1.3:
+    resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+
   dns-packet@5.6.1:
     resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
     engines: {node: '>=6'}
@@ -15529,6 +15560,10 @@ packages:
     resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
     engines: {node: '>= 10.13.0'}
 
+  jiti@1.21.7:
+    resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
+    hasBin: true
+
   jiti@2.4.2:
     resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
     hasBin: true
@@ -15920,6 +15955,10 @@ packages:
     resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
     engines: {node: '>= 12.0.0'}
 
+  lilconfig@3.1.3:
+    resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
+    engines: {node: '>=14'}
+
   lines-and-columns@1.2.4:
     resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
 
@@ -16470,6 +16509,10 @@ packages:
     resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
     engines: {node: '>=0.10.0'}
 
+  object-hash@3.0.0:
+    resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+    engines: {node: '>= 6'}
+
   object-inspect@1.13.3:
     resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==}
     engines: {node: '>= 0.4'}
@@ -16710,6 +16753,14 @@ packages:
   picoquery@2.5.0:
     resolution: {integrity: sha512-j1kgOFxtaCyoFCkpoYG2Oj3OdGakadO7HZ7o5CqyRazlmBekKhbDoUnNnXASE07xSY4nDImWZkrZv7toSxMi/g==}
 
+  pify@2.3.0:
+    resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+    engines: {node: '>=0.10.0'}
+
+  pirates@4.0.7:
+    resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
+    engines: {node: '>= 6'}
+
   pkg-dir@4.2.0:
     resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
     engines: {node: '>=8'}
@@ -16734,6 +16785,46 @@ packages:
     resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
     engines: {node: '>=4'}
 
+  postcss-import@15.1.0:
+    resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+    engines: {node: '>=14.0.0'}
+    peerDependencies:
+      postcss: ^8.0.0
+
+  postcss-js@4.1.0:
+    resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==}
+    engines: {node: ^12 || ^14 || >= 16}
+    peerDependencies:
+      postcss: ^8.4.21
+
+  postcss-load-config@6.0.1:
+    resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
+    engines: {node: '>= 18'}
+    peerDependencies:
+      jiti: '>=1.21.0'
+      postcss: '>=8.0.9'
+      tsx: ^4.8.1
+      yaml: ^2.4.2
+    peerDependenciesMeta:
+      jiti:
+        optional: true
+      postcss:
+        optional: true
+      tsx:
+        optional: true
+      yaml:
+        optional: true
+
+  postcss-nested@6.2.0:
+    resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
+    engines: {node: '>=12.0'}
+    peerDependencies:
+      postcss: ^8.2.14
+
+  postcss-selector-parser@6.1.2:
+    resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
+    engines: {node: '>=4'}
+
   postcss-value-parser@4.2.0:
     resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
 
@@ -16976,6 +17067,9 @@ packages:
     resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
     engines: {node: '>=0.10.0'}
 
+  read-cache@1.0.0:
+    resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+
   read-package-up@11.0.0:
     resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==}
     engines: {node: '>=18'}
@@ -17531,6 +17625,11 @@ packages:
   stylis@4.2.0:
     resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
 
+  sucrase@3.35.0:
+    resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
+    engines: {node: '>=16 || 14 >=14.17'}
+    hasBin: true
+
   supports-color@10.0.0:
     resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==}
     engines: {node: '>=18'}
@@ -17577,6 +17676,11 @@ packages:
   tailwind-merge@2.6.0:
     resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==}
 
+  tailwindcss@3.4.18:
+    resolution: {integrity: sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==}
+    engines: {node: '>=14.0.0'}
+    hasBin: true
+
   tailwindcss@4.1.13:
     resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==}
 
@@ -17785,6 +17889,9 @@ packages:
     peerDependencies:
       typescript: '>=4.0.0'
 
+  ts-interface-checker@0.1.13:
+    resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+
   ts-pattern@5.6.2:
     resolution: {integrity: sha512-d4IxJUXROL5NCa3amvMg6VQW2HVtZYmUTPfvVtO7zJWGYLJ+mry9v2OmYm+z67aniQoQ8/yFNadiEwtNS9qQiw==}
 
@@ -23685,6 +23792,17 @@ snapshots:
       - rollup
       - supports-color
 
+  '@vitejs/plugin-react@4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
+    dependencies:
+      '@babel/core': 7.27.4
+      '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.27.4)
+      '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.27.4)
+      '@types/babel__core': 7.20.5
+      react-refresh: 0.14.2
+      vite: 7.1.7(@types/node@22.10.2)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+    transitivePeerDependencies:
+      - supports-color
+
   '@vitejs/plugin-react@4.3.4(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))':
     dependencies:
       '@babel/core': 7.27.4
@@ -24227,6 +24345,8 @@ snapshots:
       tar-stream: 3.1.7
       zip-stream: 6.0.1
 
+  arg@5.0.2: {}
+
   argparse@1.0.10:
     dependencies:
       sprintf-js: 1.0.3
@@ -24502,6 +24622,8 @@ snapshots:
       pascal-case: 3.1.2
       tslib: 2.8.1
 
+  camelcase-css@2.0.1: {}
+
   caniuse-lite@1.0.30001696: {}
 
   chai@5.2.0:
@@ -24683,6 +24805,8 @@ snapshots:
 
   commander@2.20.3: {}
 
+  commander@4.1.1: {}
+
   commander@8.3.0: {}
 
   comment-json@4.2.5:
@@ -24888,6 +25012,8 @@ snapshots:
 
   css.escape@1.5.1: {}
 
+  cssesc@3.0.0: {}
+
   cssfilter@0.0.10: {}
 
   csso@5.0.5:
@@ -25067,8 +25193,12 @@ snapshots:
 
   dettle@1.0.5: {}
 
+  didyoumean@1.2.2: {}
+
   diff@8.0.2: {}
 
+  dlv@1.1.3: {}
+
   dns-packet@5.6.1:
     dependencies:
       '@leichtgewicht/ip-codec': 2.0.5
@@ -26602,6 +26732,8 @@ snapshots:
       merge-stream: 2.0.0
       supports-color: 8.1.1
 
+  jiti@1.21.7: {}
+
   jiti@2.4.2: {}
 
   jiti@2.6.0: {}
@@ -26946,6 +27078,8 @@ snapshots:
       lightningcss-win32-arm64-msvc: 1.30.2
       lightningcss-win32-x64-msvc: 1.30.2
 
+  lilconfig@3.1.3: {}
+
   lines-and-columns@1.2.4: {}
 
   lines-and-columns@2.0.3: {}
@@ -27654,6 +27788,8 @@ snapshots:
 
   object-assign@4.1.1: {}
 
+  object-hash@3.0.0: {}
+
   object-inspect@1.13.3: {}
 
   obuf@1.1.2: {}
@@ -27882,6 +28018,10 @@ snapshots:
 
   picoquery@2.5.0: {}
 
+  pify@2.3.0: {}
+
+  pirates@4.0.7: {}
+
   pkg-dir@4.2.0:
     dependencies:
       find-up: 4.1.0
@@ -27908,6 +28048,37 @@ snapshots:
 
   pluralize@8.0.0: {}
 
+  postcss-import@15.1.0(postcss@8.5.6):
+    dependencies:
+      postcss: 8.5.6
+      postcss-value-parser: 4.2.0
+      read-cache: 1.0.0
+      resolve: 1.22.10
+
+  postcss-js@4.1.0(postcss@8.5.6):
+    dependencies:
+      camelcase-css: 2.0.1
+      postcss: 8.5.6
+
+  postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.1):
+    dependencies:
+      lilconfig: 3.1.3
+    optionalDependencies:
+      jiti: 1.21.7
+      postcss: 8.5.6
+      tsx: 4.20.3
+      yaml: 2.8.1
+
+  postcss-nested@6.2.0(postcss@8.5.6):
+    dependencies:
+      postcss: 8.5.6
+      postcss-selector-parser: 6.1.2
+
+  postcss-selector-parser@6.1.2:
+    dependencies:
+      cssesc: 3.0.0
+      util-deprecate: 1.0.2
+
   postcss-value-parser@4.2.0: {}
 
   postcss-values-parser@6.0.2(postcss@8.5.6):
@@ -28207,6 +28378,10 @@ snapshots:
 
   react@19.0.0: {}
 
+  read-cache@1.0.0:
+    dependencies:
+      pify: 2.3.0
+
   read-package-up@11.0.0:
     dependencies:
       find-up-simple: 1.0.1
@@ -28895,6 +29070,16 @@ snapshots:
 
   stylis@4.2.0: {}
 
+  sucrase@3.35.0:
+    dependencies:
+      '@jridgewell/gen-mapping': 0.3.13
+      commander: 4.1.1
+      glob: 10.4.5
+      lines-and-columns: 1.2.4
+      mz: 2.7.0
+      pirates: 4.0.7
+      ts-interface-checker: 0.1.13
+
   supports-color@10.0.0: {}
 
   supports-color@7.2.0:
@@ -28940,6 +29125,34 @@ snapshots:
 
   tailwind-merge@2.6.0: {}
 
+  tailwindcss@3.4.18(tsx@4.20.3)(yaml@2.8.1):
+    dependencies:
+      '@alloc/quick-lru': 5.2.0
+      arg: 5.0.2
+      chokidar: 3.6.0
+      didyoumean: 1.2.2
+      dlv: 1.1.3
+      fast-glob: 3.3.3
+      glob-parent: 6.0.2
+      is-glob: 4.0.3
+      jiti: 1.21.7
+      lilconfig: 3.1.3
+      micromatch: 4.0.8
+      normalize-path: 3.0.0
+      object-hash: 3.0.0
+      picocolors: 1.1.1
+      postcss: 8.5.6
+      postcss-import: 15.1.0(postcss@8.5.6)
+      postcss-js: 4.1.0(postcss@8.5.6)
+      postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.1)
+      postcss-nested: 6.2.0(postcss@8.5.6)
+      postcss-selector-parser: 6.1.2
+      resolve: 1.22.10
+      sucrase: 3.35.0
+    transitivePeerDependencies:
+      - tsx
+      - yaml
+
   tailwindcss@4.1.13: {}
 
   tailwindcss@4.1.15: {}
@@ -29131,6 +29344,8 @@ snapshots:
       picomatch: 4.0.3
       typescript: 5.9.2
 
+  ts-interface-checker@0.1.13: {}
+
   ts-pattern@5.6.2: {}
 
   tsconfck@3.1.4(typescript@5.8.2):
@@ -29514,6 +29729,26 @@ snapshots:
       - tsx
       - yaml
 
+  vite-plugin-dts@4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
+    dependencies:
+      '@microsoft/api-extractor': 7.47.4(@types/node@22.10.2)
+      '@rollup/pluginutils': 5.1.4(rollup@4.52.5)
+      '@volar/typescript': 2.4.11
+      '@vue/language-core': 2.0.29(typescript@5.8.2)
+      compare-versions: 6.1.1
+      debug: 4.4.3
+      kolorist: 1.8.0
+      local-pkg: 0.5.1
+      magic-string: 0.30.19
+      typescript: 5.8.2
+      vue-tsc: 2.0.29(typescript@5.8.2)
+    optionalDependencies:
+      vite: 7.1.7(@types/node@22.10.2)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+    transitivePeerDependencies:
+      - '@types/node'
+      - rollup
+      - supports-color
+
   vite-plugin-dts@4.0.3(@types/node@22.10.2)(rollup@4.52.5)(typescript@5.8.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)):
     dependencies:
       '@microsoft/api-extractor': 7.47.4(@types/node@22.10.2)
@@ -29606,6 +29841,23 @@ snapshots:
       - supports-color
       - typescript
 
+  vite@7.1.7(@types/node@22.10.2)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
+    dependencies:
+      esbuild: 0.25.10
+      fdir: 6.5.0(picomatch@4.0.3)
+      picomatch: 4.0.3
+      postcss: 8.5.6
+      rollup: 4.52.2
+      tinyglobby: 0.2.15
+    optionalDependencies:
+      '@types/node': 22.10.2
+      fsevents: 2.3.3
+      jiti: 1.21.7
+      lightningcss: 1.30.2
+      terser: 5.37.0
+      tsx: 4.20.3
+      yaml: 2.8.1
+
   vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
     dependencies:
       esbuild: 0.25.10
@@ -29627,7 +29879,7 @@ snapshots:
     optionalDependencies:
       vite: 7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
 
-  vitest@3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4))(@vitest/ui@3.0.6(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
+  vitest@3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
     dependencies:
       '@types/chai': 5.2.2
       '@vitest/expect': 3.2.4
@@ -29656,7 +29908,7 @@ snapshots:
       '@types/node': 22.10.2
       '@vitest/browser': 3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4)
       '@vitest/ui': 3.0.6(vitest@3.2.4)
-      jsdom: 27.0.0(postcss@8.5.6)
+      jsdom: 25.0.1
     transitivePeerDependencies:
       - jiti
       - less
@@ -29671,7 +29923,7 @@ snapshots:
       - tsx
       - yaml
 
-  vitest@3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
+  vitest@3.2.4(@types/node@22.10.2)(@vitest/browser@3.0.6)(@vitest/ui@3.0.6)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@22.10.2)(typescript@5.9.2))(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1):
     dependencies:
       '@types/chai': 5.2.2
       '@vitest/expect': 3.2.4
@@ -29700,7 +29952,7 @@ snapshots:
       '@types/node': 22.10.2
       '@vitest/browser': 3.0.6(@types/node@22.10.2)(playwright@1.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@3.2.4)
       '@vitest/ui': 3.0.6(vitest@3.2.4)
-      jsdom: 25.0.1
+      jsdom: 27.0.0(postcss@8.5.6)
     transitivePeerDependencies:
       - jiti
       - less

From 1c1bdf68e2a885588c275711c74dea14577eed7d Mon Sep 17 00:00:00 2001
From: Birk Skyum <birk.skyum@pm.me>
Date: Wed, 22 Oct 2025 03:39:34 +0200
Subject: [PATCH 6/6] add back tailwind config

---
 .../packages/app/tailwind.config.js                        | 7 +++++++
 .../packages/app/tailwind.config.js                        | 7 +++++++
 .../router-monorepo-simple/packages/app/tailwind.config.js | 7 +++++++
 3 files changed, 21 insertions(+)
 create mode 100644 examples/react/router-monorepo-react-query/packages/app/tailwind.config.js
 create mode 100644 examples/react/router-monorepo-simple-lazy/packages/app/tailwind.config.js
 create mode 100644 examples/react/router-monorepo-simple/packages/app/tailwind.config.js

diff --git a/examples/react/router-monorepo-react-query/packages/app/tailwind.config.js b/examples/react/router-monorepo-react-query/packages/app/tailwind.config.js
new file mode 100644
index 0000000000..33c30f731f
--- /dev/null
+++ b/examples/react/router-monorepo-react-query/packages/app/tailwind.config.js
@@ -0,0 +1,7 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+  content: [
+    './src/**/*.{js,jsx,ts,tsx}',
+    '../post-feature/src/**/*.{js,jsx,ts,tsx}',
+  ],
+}
diff --git a/examples/react/router-monorepo-simple-lazy/packages/app/tailwind.config.js b/examples/react/router-monorepo-simple-lazy/packages/app/tailwind.config.js
new file mode 100644
index 0000000000..33c30f731f
--- /dev/null
+++ b/examples/react/router-monorepo-simple-lazy/packages/app/tailwind.config.js
@@ -0,0 +1,7 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+  content: [
+    './src/**/*.{js,jsx,ts,tsx}',
+    '../post-feature/src/**/*.{js,jsx,ts,tsx}',
+  ],
+}
diff --git a/examples/react/router-monorepo-simple/packages/app/tailwind.config.js b/examples/react/router-monorepo-simple/packages/app/tailwind.config.js
new file mode 100644
index 0000000000..33c30f731f
--- /dev/null
+++ b/examples/react/router-monorepo-simple/packages/app/tailwind.config.js
@@ -0,0 +1,7 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+  content: [
+    './src/**/*.{js,jsx,ts,tsx}',
+    '../post-feature/src/**/*.{js,jsx,ts,tsx}',
+  ],
+}
