diff --git a/e2e/settings-mobile-consistency.spec.ts b/e2e/settings-mobile-consistency.spec.ts
index f449677aa..008be4067 100644
--- a/e2e/settings-mobile-consistency.spec.ts
+++ b/e2e/settings-mobile-consistency.spec.ts
@@ -115,15 +115,16 @@ test.describe("Settings mobile consistency (Pixel 5)", () => {
}
});
- test("/settings/account: Sprache select is in its own row, not paired with date-of-birth", async ({
+ test("/settings/account: Sprache select shares one grid row with date-of-birth", async ({
page,
}) => {
await page.goto("/settings/account", { waitUntil: "networkidle" });
await page.waitForLoadState("networkidle");
- // The Sprache native select must NOT live inside the same `grid`
- // ancestor as the date-of-birth input. Pre-fix they shared
- // `
dob | language
`.
+ // The v1.4.27 R1 settings audit pairs date-of-birth with language
+ // in a single `grid sm:grid-cols-2` row so the profile form keeps
+ // a uniform two-column rhythm and the language field no longer
+ // sits alone at the bottom with a `sm:max-w-xs` clamp.
const sharedGrid = await page.evaluate(() => {
const lang = document.getElementById("language-select");
const dob = document.getElementById("dob");
@@ -137,8 +138,8 @@ test.describe("Settings mobile consistency (Pixel 5)", () => {
});
expect(sharedGrid.found, "language + dob fields must exist").toBe(true);
- expect(sharedGrid.sharedGrid, "language + dob must NOT share a grid").toBe(
- false,
+ expect(sharedGrid.sharedGrid, "language + dob must share a grid").toBe(
+ true,
);
});
diff --git a/src/components/settings/account-section.tsx b/src/components/settings/account-section.tsx
index 37ab2484b..ce5fc0679 100644
--- a/src/components/settings/account-section.tsx
+++ b/src/components/settings/account-section.tsx
@@ -402,13 +402,12 @@ export function AccountSection() {
- {/* Date of birth pairs with the height/gender block above —
- all three are "biological profile" data the app uses for
- BMI + BP target calculations. Language is handled as its
- own row below: it's a UI preference (cookie-backed),
- not a profile attribute, so v1.4.19 A6 lifted it out of
- the dob/language pair where users mistook it for a
- per-account locale setting. */}
+ {/* Date of birth + language share one paired grid row so the
+ profile form keeps a single rhythm (every row two cells
+ wide on sm+). Date of birth is the bottom of the
+ biological-profile block; language is the only UI
+ preference on this card. They sit together to close the
+ "single-cell row" gap that broke the form's grid. */}
@@ -422,29 +421,28 @@ export function AccountSection() {
{t("settings.dateOfBirthHint")}