diff --git a/infra-sk/BUILD.bazel b/infra-sk/BUILD.bazel
index 3f4fdfb..f2dd4c1 100644
--- a/infra-sk/BUILD.bazel
+++ b/infra-sk/BUILD.bazel
@@ -1,38 +1,5 @@
 load("//infra-sk:index.bzl", "sass_library")
 
-package(default_visibility = ["//visibility:public"])
-
-#keep
-sass_library(
-    name = "elements-sk_scss",
-    # This list of files was generated by running the following command from the repository's root
-    # directory:
-    #
-    #     $ find node_modules/elements-sk -name *.scss | sed -E "s/(.*)/@npm\/\/:\1/" | sort
-    #
-    # Please update if the files in the elements-sk NPM package ever change.
-    srcs = [
-        "@npm//:node_modules/elements-sk/checkbox-sk/checkbox-sk.scss",
-        "@npm//:node_modules/elements-sk/collapse-sk/collapse-sk.scss",
-        "@npm//:node_modules/elements-sk/colors.scss",
-        "@npm//:node_modules/elements-sk/error-toast-sk/error-toast-sk.scss",
-        "@npm//:node_modules/elements-sk/icon/icon-sk.scss",
-        "@npm//:node_modules/elements-sk/multi-select-sk/multi-select-sk.scss",
-        "@npm//:node_modules/elements-sk/nav-links-sk/nav-links-sk.scss",
-        "@npm//:node_modules/elements-sk/radio-sk/radio-sk.scss",
-        "@npm//:node_modules/elements-sk/select-sk/select-sk.scss",
-        "@npm//:node_modules/elements-sk/spinner-sk/spinner-sk.scss",
-        "@npm//:node_modules/elements-sk/styles/buttons/buttons.scss",
-        "@npm//:node_modules/elements-sk/styles/select/select.scss",
-        "@npm//:node_modules/elements-sk/styles/table/table.scss",
-        "@npm//:node_modules/elements-sk/tabs-panel-sk/tabs-panel-sk.scss",
-        "@npm//:node_modules/elements-sk/tabs-sk/tabs-sk.scss",
-        "@npm//:node_modules/elements-sk/themes/color-palette.scss",
-        "@npm//:node_modules/elements-sk/themes/themes.scss",
-        "@npm//:node_modules/elements-sk/toast-sk/toast-sk.scss",
-    ],
-)
-
 sass_library(
     name = "themes_sass_lib",
     srcs = ["themes.scss"],
diff --git a/infra-sk/esbuild/esbuild.config.mjs b/infra-sk/esbuild/esbuild.config.mjs
index f00eaa4..977bcff 100644
--- a/infra-sk/esbuild/esbuild.config.mjs
+++ b/infra-sk/esbuild/esbuild.config.mjs
@@ -1,42 +1,8 @@
 /** Configuration module for esbuild. */
 
-/**
- * An ad-hoc esbuild plugin that ignores any *.scss or *.css imports from JavaScript or TypeScript.
- *
- * Without this, esbuild chokes when it sees Webpack-style imports such as:
- *
- *     import './styles.scss';
- *
- * When this plugin sees a *.scss or *.css import, it tells esbuild to resolve it as an empty
- * JavaScript file, which is effectively the same as pretending it was never there to begin with.
- *
- * We should delete this plugin once we've cleaned up all Webpack-style CSS/SCSS imports from
- * TypeScript files.
- *
- * Inspired by https://github.com/evanw/esbuild/issues/808#issuecomment-806086039.
- *
- * See https://esbuild.github.io/plugins for reference.
- */
-const ignoreScssImportsPlugin = {
-  name: 'ignore-scss-imports',
-  setup(build) {
-    build.onResolve({ filter: /\.(scss|css)$/ }, args => ({
-      path: args.path,
-      namespace: 'ignored-scss-imports-ns',
-    }))
-    build.onLoad({ filter: /.*/, namespace: 'ignored-scss-imports-ns' }, async (args) => {
-      return {
-        contents: '',
-        loader: 'js',
-      }
-    })
-  },
-};
-
 export default {
   define: {
     // Prevent "global is not defined" errors. See https://github.com/evanw/esbuild/issues/73.
     "global": "window",
   },
-  plugins: [ignoreScssImportsPlugin],
 }
diff --git a/infra-sk/generate_elements_sk_scss_imports/BUILD.bazel b/infra-sk/generate_elements_sk_scss_imports/BUILD.bazel
deleted file mode 100644
index 6a4afa9..0000000
--- a/infra-sk/generate_elements_sk_scss_imports/BUILD.bazel
+++ /dev/null
@@ -1,27 +0,0 @@
-load("//bazel/go:go_test.bzl", "go_test")
-load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
-
-go_library(
-    name = "generate_elements_sk_scss_imports_lib",
-    srcs = ["generate_elements_sk_scss_imports.go"],
-    importpath = "go.skia.org/infra/infra-sk/generate_elements_sk_scss_imports",
-    visibility = ["//visibility:private"],
-    deps = [
-        "//bazel/gazelle/frontend/parsers",
-        "//go/sklog",
-        "//go/util",
-    ],
-)
-
-go_binary(
-    name = "generate_elements_sk_scss_imports",
-    embed = [":generate_elements_sk_scss_imports_lib"],
-    visibility = ["//visibility:public"],
-)
-
-go_test(
-    name = "generate_elements_sk_scss_imports_test",
-    srcs = ["generate_elements_sk_scss_imports_test.go"],
-    embed = [":generate_elements_sk_scss_imports_lib"],
-    deps = ["@com_github_stretchr_testify//assert"],
-)
diff --git a/infra-sk/generate_elements_sk_scss_imports/generate_elements_sk_scss_imports.go b/infra-sk/generate_elements_sk_scss_imports/generate_elements_sk_scss_imports.go
deleted file mode 100644
index 5e30998..0000000
--- a/infra-sk/generate_elements_sk_scss_imports/generate_elements_sk_scss_imports.go
+++ /dev/null
@@ -1,126 +0,0 @@
-// This program takes as inputs one or more TypeScript source files, determines whether they depend
-// on any elements-sk modules, and writes to standard output a Sass stylesheet that imports the
-// stylesheets required by any such elements-sk module.
-//
-// This program is used by the sk_element and sk_page Bazel rules to automatically generate a Sass
-// stylesheet with any necessary elements-sk imports. This is necessary because the underlying
-// Bazel rules ignore Webpack-style Sass imports from TypeScript files.
-package main
-
-import (
-	"fmt"
-	"io/ioutil"
-	"os"
-	"path/filepath"
-	"sort"
-	"strings"
-
-	"go.skia.org/infra/bazel/gazelle/frontend/parsers"
-	"go.skia.org/infra/go/sklog"
-	"go.skia.org/infra/go/util"
-)
-
-// knownStylesheets is the list of Sass stylesheets we would like to import automatically based on
-// the TypeScript imports found in a TypeScript source file.
-//
-// This list can be regenerated with the following command, which must be run from an elements-sk
-// repository checkout:
-//
-//	$ find src | grep \.scss$ | sed -E "s/^src/elements-sk/" | sort
-var knownStylesheets = []string{
-	"elements-sk/checkbox-sk/checkbox-sk.scss",
-	"elements-sk/collapse-sk/collapse-sk.scss",
-	"elements-sk/colors.scss",
-	"elements-sk/error-toast-sk/error-toast-sk.scss",
-	"elements-sk/icon/icon-sk.scss",
-	"elements-sk/multi-select-sk/multi-select-sk.scss",
-	"elements-sk/nav-links-sk/nav-links-sk.scss",
-	"elements-sk/radio-sk/radio-sk.scss",
-	"elements-sk/select-sk/select-sk.scss",
-	"elements-sk/spinner-sk/spinner-sk.scss",
-	"elements-sk/styles/buttons/buttons.scss",
-	"elements-sk/styles/select/select.scss",
-	"elements-sk/styles/table/table.scss",
-	"elements-sk/tabs-panel-sk/tabs-panel-sk.scss",
-	"elements-sk/tabs-sk/tabs-sk.scss",
-	"elements-sk/themes/color-palette.scss",
-	"elements-sk/themes/themes.scss",
-	"elements-sk/toast-sk/toast-sk.scss",
-}
-
-// elementsSkStylesheetsFromTsImport takes the verbatim path of a TypeScript import statement, and
-// if the path corresponds to an elements-sk module, returns the list of Sass stylesheets required
-// by the elements-sk module, or nil otherwise.
-func elementsSkStylesheetsFromTsImport(tsImport string) []string {
-	var stylesheets []string
-
-	// Heuristic: if a TypeScript import is prefixed by the parent directory of a known
-	// stylesheet, we assume that the stylesheet must be imported as well.
-	//
-	// Example input TypeScript source file:
-	//
-	//     // Resolves to "elements-sk/checkbox-sk/checkbox-sk.ts".
-	//     import 'elements-sk/checkbox-sk/checkbox-sk';
-	//
-	//     // Resolves to "elements-sk/styles/buttons/index.ts".
-	//     import 'elements-sk/styles/buttons';
-	//
-	// Expected Sass imports:
-	//
-	//     @import 'node_modules/elements-sk/checkbox-sk/checkbox-sk.scss';
-	//     @import 'node_modules/elements-sk/styles/buttons/buttons.scss';
-	for _, stylesheet := range knownStylesheets {
-		// Exclude top-level stylesheets (e.g. "elements-sk/colors.scss").
-		if filepath.Dir(stylesheet) == "elements-sk" {
-			continue
-		}
-
-		if strings.HasPrefix(tsImport, filepath.Dir(stylesheet)) {
-			stylesheets = append(stylesheets, stylesheet)
-		}
-	}
-
-	// In addition, we must account for dependencies between components. There are only a few
-	// such dependencies, and they change infrequently, so we handle them in an ad-hoc way.
-	if strings.HasPrefix(tsImport, "elements-sk/error-toast-sk") {
-		stylesheets = append(stylesheets, "elements-sk/toast-sk/toast-sk.scss")
-	}
-	if strings.HasPrefix(tsImport, "elements-sk/radio-sk") {
-		stylesheets = append(stylesheets, "elements-sk/checkbox-sk/checkbox-sk.scss")
-	}
-
-	return stylesheets
-}
-
-func main() {
-	tsSources := os.Args[1:]
-	if len(tsSources) == 0 {
-		sklog.Fatalf("Usage: %s <one or more TypeScript source files>", os.Args[0])
-	}
-
-	var outputSassImports []string
-
-	// Iterate over all the input files.
-	for _, tsSource := range tsSources {
-		// Read in the current TypeScript source file, and extract the paths of its import statements.
-		b, err := ioutil.ReadFile(tsSource)
-		if err != nil {
-			sklog.Fatalf("Error while reading file %q: %v", tsSource, err)
-		}
-		tsImports := parsers.ParseTSImports(string(b))
-
-		// Map each TypeScript import to zero or more elements-sk Sass imports.
-		for _, tsImport := range tsImports {
-			for _, stylesheet := range elementsSkStylesheetsFromTsImport(tsImport) {
-				outputSassImports = append(outputSassImports, fmt.Sprintf("@import 'node_modules/%s';", stylesheet))
-			}
-		}
-	}
-
-	// Print out the Sass import statements for any required elements-sk stylesheets.
-	outputSassImports = util.SSliceDedup(outputSassImports)
-	sort.Strings(outputSassImports)
-	for _, imp := range outputSassImports {
-		fmt.Println(imp)
-	}
-}
diff --git a/infra-sk/generate_elements_sk_scss_imports/generate_elements_sk_scss_imports_test.go b/infra-sk/generate_elements_sk_scss_imports/generate_elements_sk_scss_imports_test.go
deleted file mode 100644
index 2bd87e6..0000000
--- a/infra-sk/generate_elements_sk_scss_imports/generate_elements_sk_scss_imports_test.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package main
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestElementsSkStylesheetsFromTsImport_NotAnElementsSkImport_ReturnsEmptySlice(t *testing.T) {
-	assert.Empty(t, elementsSkStylesheetsFromTsImport("path/to/foo"))
-}
-
-func TestElementsSkStylesheetsFromTsImport_ModuleWithNoDeps_ReturnsOneStylesheet(t *testing.T) {
-	expected := []string{"elements-sk/collapse-sk/collapse-sk.scss"}
-	assert.ElementsMatch(t, expected, elementsSkStylesheetsFromTsImport("elements-sk/collapse-sk"))
-	assert.ElementsMatch(t, expected, elementsSkStylesheetsFromTsImport("elements-sk/collapse-sk/collapse-sk"))
-}
-
-func TestElementsSkStylesheetsFromTsImport_ModuleWithDeps_ReturnsMultipleStylesheets(t *testing.T) {
-	expected := []string{
-		"elements-sk/error-toast-sk/error-toast-sk.scss",
-		"elements-sk/toast-sk/toast-sk.scss",
-	}
-	assert.ElementsMatch(t, expected, elementsSkStylesheetsFromTsImport("elements-sk/error-toast-sk"))
-}
diff --git a/infra-sk/index.bzl b/infra-sk/index.bzl
index 8a7c121..012435f 100644
--- a/infra-sk/index.bzl
+++ b/infra-sk/index.bzl
@@ -33,12 +33,11 @@
     This is just a convenience macro that generates the ts_library and sass_library targets
     required to build a custom element.
 
-    This macro generates a "ghost" Sass stylesheet which includes `@import` statements for each
-    sk_element dependency (sk_element_deps argument), and for any elements-sk modules imported from
-    the TypeScript sources (ts_srcs argument). This ghost stylesheet will be included in the CSS
+    This macro generates a "ghost" Sass stylesheet with `@import` statements for each sk_element
+    dependency (sk_element_deps argument). This ghost stylesheet will be included in the CSS
     bundles produced by any sk_page targets that depend on this element (directly or transitively).
     It is therefore *not* necessary to explicitly import the stylesheets of any depended on
-    sk_elements or elements-sk modules.
+    sk_elements.
 
     Args:
       name: The name of the target.
@@ -52,36 +51,17 @@
       visibility: Visibility of the generated ts_library and sass_library targets.
     """
 
-    # Generate a Sass stylesheet with import statements for each elements-sk module required by the
-    # TypeScript sources (ts_srcs argument).
-    generate_sass_stylesheet_with_elements_sk_imports_from_typescript_sources(
-        name = name + "_elements_sk_deps_scss",
-        ts_srcs = ts_srcs,
-        scss_output_file = name + "__generated_elements_sk_deps.scss",
-    )
-
-    # Add all elements-sk styles as dependencies to satisfy the imports from the Sass stylesheet
-    # generated in the previous step.
-    elements_sk_scss_label = "//infra-sk:elements-sk_scss"
-    if elements_sk_scss_label not in sass_deps:
-        # We cannot use sass_deps.append() or sass_deps += [...] because that causes the following
-        # Starlark error:
-        #
-        #     Error: trying to mutate a frozen list value
-        sass_deps = sass_deps + [elements_sk_scss_label]
-
     # Generate a "ghost" Sass entry-point stylesheet with import statements for the following
     # files:
     #
     #  - Each file in the sass_srcs argument.
-    #  - The generated Sass stylesheet with elements-sk imports.
     #  - The "ghost" entry-point stylesheets of each sk_element in the sk_element_deps argument.
     #
     # This stylesheet will be included in the CSS bundles generated by any sk_page targets that
     # depend on this sk_element directly or transitively.
     generate_sass_stylesheet_with_imports(
         name = name + "_ghost_entrypoint_scss",
-        scss_files_to_import = sass_srcs + [name + "_elements_sk_deps_scss"] +
+        scss_files_to_import = sass_srcs +
                                [
                                    make_label_target_explicit(dep) + "_ghost_entrypoint_scss"
                                    for dep in sk_element_deps
@@ -107,32 +87,11 @@
 
     sass_library(
         name = name + "_styles",
-        srcs = sass_srcs + [
-            name + "_elements_sk_deps_scss",
-            name + "_ghost_entrypoint_scss",
-        ],
+        srcs = sass_srcs + [name + "_ghost_entrypoint_scss"],
         deps = all_sass_deps,
         visibility = visibility,
     )
 
-def generate_sass_stylesheet_with_elements_sk_imports_from_typescript_sources(
-        name,
-        ts_srcs,
-        scss_output_file):
-    """Generates a .scss file with `@import` statements for the elements-sk imports in the ts_srcs.
-
-    Args:
-      name: The name of the target.
-      ts_srcs: A list of .ts files.
-      scss_output_file: Name of the .scss file to generate.
-    """
-    native.genrule(
-        name = name,
-        srcs = ts_srcs + ["//infra-sk/generate_elements_sk_scss_imports"],
-        outs = [scss_output_file],
-        cmd = "$(location //infra-sk/generate_elements_sk_scss_imports) $(SRCS) > $@",
-    )
-
 def generate_sass_stylesheet_with_imports(name, scss_files_to_import, scss_output_file, visibility = None):
     """Generates a .scss file with one `@import` statement for each file in scss_files_to_import.
 
@@ -468,31 +427,10 @@
             cmd = "touch $@",
         )
 
-    # Generate a Sass stylesheet with any elements-sk imports required by the TypeScript
-    # entry-point file.
-    generate_sass_stylesheet_with_elements_sk_imports_from_typescript_sources(
-        name = name + "_elements_sk_deps_scss",
-        ts_srcs = [ts_entry_point],
-        scss_output_file = name + "__generated_elements_sk_deps.scss",
-    )
-
-    # Add all elements-sk styles as dependencies to satisfy the imports from the Sass stylesheet
-    # generated in the previous step.
-    elements_sk_scss_label = "//infra-sk:elements-sk_scss"
-    if elements_sk_scss_label not in sass_deps:
-        # We cannot use sass_deps.append() or sass_deps += [...] because that causes the following
-        # Starlark error:
-        #
-        #     Error: trying to mutate a frozen list value
-        sass_deps = sass_deps + [elements_sk_scss_label]
-
     # Create a sass_library including the scss_entry_point file, and all the Sass dependencies.
     sass_library(
         name = name + "_styles",
-        srcs = [
-            scss_entry_point,
-            name + "_elements_sk_deps_scss",
-        ],
+        srcs = [scss_entry_point],
         deps = all_sass_deps,
     )
 
@@ -500,14 +438,12 @@
     # files:
     #
     #  - This page's Sass entry-point file (scss_entry_point argument).
-    #  - The generated Sass stylesheet with elements-sk imports.
     #  - The "ghost" entry-point stylesheets of each sk_element in the sk_element_deps argument.
     #
     # We will use this generated stylesheet as the entry-points for the sass_binaries below.
     generate_sass_stylesheet_with_imports(
         name = name + "_ghost_entrypoint_scss",
-        scss_files_to_import = ([scss_entry_point] if scss_entry_point else []) +
-                               [name + "_elements_sk_deps_scss"] +
+        scss_files_to_import = [scss_entry_point] +
                                [
                                    make_label_target_explicit(dep) + "_ghost_entrypoint_scss"
                                    for dep in sk_element_deps
