diff --git a/web/src/fields/fields-page.test.tsx b/web/src/fields/fields-page.test.tsx
new file mode 100644
index 0000000..21f10a4
--- /dev/null
+++ b/web/src/fields/fields-page.test.tsx
@@ -0,0 +1,17 @@
+import { expect, test } from "vitest";
+import { screen } from "@testing-library/react";
+
+import { renderApp } from "../test/render";
+import { FieldsPage } from "./fields-page";
+
+test("renders the field list and form in a responsive grid", async () => {
+ const { container } = renderApp();
+
+ // both panes are present (master list + detail form)
+ expect(await screen.findByText(/fields/i)).toBeInTheDocument();
+
+ // responsive: single-column by default, two-column at lg
+ const grid = container.querySelector("div.grid");
+ expect(grid?.className).toContain("grid-cols-1");
+ expect(grid?.className).toContain("lg:grid-cols-[20rem_1fr]");
+});
diff --git a/web/src/fields/fields-page.tsx b/web/src/fields/fields-page.tsx
index 47adb86..3da3f6c 100644
--- a/web/src/fields/fields-page.tsx
+++ b/web/src/fields/fields-page.tsx
@@ -20,8 +20,8 @@ export function FieldsPage() {
return (