diff --git a/src/app/ckb-v2-tokens.css b/src/app/ckb-v2-tokens.css index 16dc2344c1..c33b25ee0a 100644 --- a/src/app/ckb-v2-tokens.css +++ b/src/app/ckb-v2-tokens.css @@ -57,6 +57,11 @@ --measure: 68ch; /* prose measure - never wider */ --header-h: 4rem; /* 64 */ + /* Responsive breakpoint tokens - standard named scale (Task #336) */ + --bp-phone: 640px; + --bp-tablet: 768px; + --bp-desktop: 1024px; + /* Type - 7 steps, each with its own line-height and tracking */ --text-xs: 0.75rem; --text-xs-lh: 1rem; diff --git a/src/app/globals.css b/src/app/globals.css index 4fef90d7ad..4bc854abde 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -72,6 +72,11 @@ * New overlays go through components/ui/sheet.tsx rather than a new layer. */ @theme { + /* Named responsive breakpoint tokens (Task #336) */ + --breakpoint-phone: 640px; + --breakpoint-tablet: 768px; + --breakpoint-desktop: 1024px; + /* Radius ladder: 4 · 6 · 10 · 12 · 16 · 20 — the 4px grid with two deliberate half-steps. `sm` is 6px, for chips and pills that read as too heavy at 8. `md` is 10px because it is the control rung, and it is the one value the v2 @@ -277,6 +282,11 @@ /* Theme tokens */ :root { + /* Named responsive breakpoint tokens (Task #336) */ + --bp-phone: 640px; + --bp-tablet: 768px; + --bp-desktop: 1024px; + /* Layout constraints */ --content-max-width: 1440px; --rail-width: 480px; diff --git a/src/components/clinical-dashboard/search-results-header-band.tsx b/src/components/clinical-dashboard/search-results-header-band.tsx index ae70d088bb..91150ecaf3 100644 --- a/src/components/clinical-dashboard/search-results-header-band.tsx +++ b/src/components/clinical-dashboard/search-results-header-band.tsx @@ -802,7 +802,7 @@ export function ResultSortControl({ * floor from `sm`, exactly like the filter controls. */ const emptyStateAction = - "inline-flex min-h-tap items-center gap-1.5 rounded-lg border border-[color:var(--border)] px-3 text-xs font-extrabold text-[color:var(--text-muted)] hover:text-[color:var(--text)] sm:min-h-10"; + "inline-flex min-h-tap items-center gap-1.5 rounded-lg border border-[color:var(--border)] px-3 text-xs font-semibold text-[color:var(--text-muted)] hover:text-[color:var(--text)] sm:min-h-10"; export function SearchResultsEmptyState({ modeId, @@ -978,7 +978,7 @@ export function SearchResultsEmptyState({ )} - {emptyTitle} + {emptyTitle}

{emptyBody}

{!filtered ? (
@@ -999,7 +999,7 @@ export function SearchResultsEmptyState({ onClick={lastFilter.onRemove} data-testid="search-results-empty-remove-filter" className={cn( - "inline-flex min-h-9 items-center gap-1.5 rounded-lg border border-[color:var(--clinical-accent-border)] bg-[color:var(--clinical-accent-soft)] px-3 text-xs font-extrabold text-[color:var(--clinical-accent)] hover:border-[color:var(--clinical-accent)]", + "inline-flex min-h-tap items-center gap-1.5 rounded-lg border border-[color:var(--clinical-accent-border)] bg-[color:var(--clinical-accent-soft)] px-3 text-xs font-semibold text-[color:var(--clinical-accent)] hover:border-[color:var(--clinical-accent)] sm:min-h-9", focusRing, )} > diff --git a/src/components/forms/form-detail-page.tsx b/src/components/forms/form-detail-page.tsx index f98a06840e..0f117ad414 100644 --- a/src/components/forms/form-detail-page.tsx +++ b/src/components/forms/form-detail-page.tsx @@ -335,7 +335,7 @@ function DetailCard({