diff --git a/packages/app-shell-core/src/components/ui/table.jsx b/packages/app-shell-core/src/components/ui/table.jsx
index 7c3659402..afd765d7d 100644
--- a/packages/app-shell-core/src/components/ui/table.jsx
+++ b/packages/app-shell-core/src/components/ui/table.jsx
@@ -13,7 +13,8 @@ const Table = React.forwardRef(({ className, ...props }, ref) => (
Table.displayName = "Table"
const TableHeader = React.forwardRef(({ className, ...props }, ref) => (
-
+ // WARN(a11y): border-border-subtle, not border-border-structural — see TableRow below.
+
))
TableHeader.displayName = "TableHeader"
@@ -26,9 +27,10 @@ const TableBody = React.forwardRef(({ className, ...props }, ref) => (
TableBody.displayName = "TableBody"
const TableFooter = React.forwardRef(({ className, ...props }, ref) => (
+ // WARN(a11y): border-border-subtle, not border-border-structural — see TableRow below.
tr]:last:border-b-0", className)}
+ className={cn("border-t border-border-subtle font-medium [&>tr]:last:border-b-0", className)}
{...props} />
))
TableFooter.displayName = "TableFooter"
@@ -36,8 +38,15 @@ TableFooter.displayName = "TableFooter"
const TableRow = React.forwardRef(({ className, ...props }, ref) => (
diff --git a/packages/app-shell-core/src/styles.css b/packages/app-shell-core/src/styles.css
index 6e699755c..10a10b4ac 100644
--- a/packages/app-shell-core/src/styles.css
+++ b/packages/app-shell-core/src/styles.css
@@ -286,7 +286,7 @@
:root {
--background: 220 14% 96%;
- --foreground: 222 47% 11%;
+ --foreground: 222 47% 11%; /* #0F1729 — matches staging (go.staging.etendo.cloud), the original design spec's color */
--card: 0 0% 100%;
--card-foreground: 222 47% 11%;
--popover: 0 0% 100%;
@@ -296,7 +296,7 @@
--secondary: 210 40% 96%;
--secondary-foreground: 222 47% 11%;
--muted: 210 40% 96%;
- --muted-foreground: 215 16% 47%;
+ --muted-foreground: 240 12% 48%; /* #6C6C89 — NOT staging's #65758B: that fails WCAG AA (4.3:1) against --background (only passes 4.7:1 against white --card); this is the a11y-review fix, matches --text-secondary */
--accent: 210 40% 96%;
--accent-foreground: 222 47% 11%;
--destructive: 0 84% 60%;
@@ -306,10 +306,20 @@
--inverse-muted: 215 16% 72%;
--inverse-border: 215 20% 30%;
/* Semantic accessibility contract v1 (ETP-4554). */
- --border-control: 215 16% 47%;
+ /* WARN(a11y): --border-control (and --input, which aliases it) is back to
+ staging's original light color. It drives BOTH real form-control borders
+ AND the shared outline-button border (shadcn's `border-input` convention),
+ so darkening it for WCAG 1.4.11 compliance visually affected buttons too,
+ which the design didn't want. Known gap: at this value, --border-control
+ only reaches ~1.5:1 contrast against --background/--card, short of the
+ 3:1 WCAG 1.4.11 non-text contrast minimum for control boundaries. Revisit
+ by splitting a dedicated (darker) token for real /