diff --git a/packages/wxt/e2e/tests/output-structure.test.ts b/packages/wxt/e2e/tests/output-structure.test.ts
index 4fd96d354..2c08556ff 100644
--- a/packages/wxt/e2e/tests/output-structure.test.ts
+++ b/packages/wxt/e2e/tests/output-structure.test.ts
@@ -220,6 +220,77 @@ describe('Output Directory Structure', () => {
     expect(await project.fileExists('.output/chrome-mv3/unlisted.js'));
   });
 
+  it('should support CSS entrypoints', async () => {
+    const project = new TestProject();
+
+    project.addFile(
+      'entrypoints/plain-one.css',
+      `body {
+        font: 100% Helvetica, sans-serif;
+        color: #333;
+      }`,
+    );
+
+    project.addFile(
+      'entrypoints/plain-two.content.css',
+      `body {
+        font: 100% Helvetica, sans-serif;
+        color: #333;
+      }`,
+    );
+
+    project.addFile(
+      'entrypoints/sass-one.scss',
+      `$font-stack: Helvetica, sans-serif;
+      $primary-color: #333;
+
+      body {
+        font: 100% $font-stack;
+        color: $primary-color;
+      }`,
+    );
+
+    project.addFile(
+      'entrypoints/sass-two.content.scss',
+      `$font-stack: Helvetica, sans-serif;
+      $primary-color: #333;
+
+      body {
+        font: 100% $font-stack;
+        color: $primary-color;
+      }`,
+    );
+
+    await project.build();
+
+    expect(await project.serializeOutput(['.output/chrome-mv3/manifest.json']))
+      .toMatchInlineSnapshot(`
+        ".output/chrome-mv3/assets/plain-one.css
+        ----------------------------------------
+        body{font:100% Helvetica,sans-serif;color:#333}
+
+        ================================================================================
+        .output/chrome-mv3/assets/sass-one.css
+        ----------------------------------------
+        body{font:100% Helvetica,sans-serif;color:#333}
+
+        ================================================================================
+        .output/chrome-mv3/content-scripts/plain-two.css
+        ----------------------------------------
+        body{font:100% Helvetica,sans-serif;color:#333}
+
+        ================================================================================
+        .output/chrome-mv3/content-scripts/sass-two.css
+        ----------------------------------------
+        body{font:100% Helvetica,sans-serif;color:#333}
+
+        ================================================================================
+        .output/chrome-mv3/manifest.json
+        ----------------------------------------
+        <contents-ignored>"
+      `);
+  });
+
   it("should output to a custom directory when overriding 'outDir'", async () => {
     const project = new TestProject();
     project.addFile('entrypoints/unlisted.html', '<html></html>');
diff --git a/packages/wxt/src/core/builders/vite/index.ts b/packages/wxt/src/core/builders/vite/index.ts
index 8eb2068ab..c798749da 100644
--- a/packages/wxt/src/core/builders/vite/index.ts
+++ b/packages/wxt/src/core/builders/vite/index.ts
@@ -308,7 +308,10 @@ export async function createViteBuilder(
     async build(group) {
       let entryConfig;
       if (Array.isArray(group)) entryConfig = getMultiPageConfig(group);
-      else if (group.inputPath.endsWith('.css'))
+      else if (
+        group.type === 'content-script-style' ||
+        group.type === 'unlisted-style'
+      )
         entryConfig = getCssConfig(group);
       else entryConfig = getLibModeConfig(group);