{result.title}
@@ -563,7 +563,7 @@ function BestAnswerCard({
Open page
@@ -600,7 +600,7 @@ function SafetyCard({ safety, query }: { safety: string; query: string }) {
{safety}
View presentation guide
@@ -646,7 +646,7 @@ function UrgencyCard({ results }: { results: DifferentialResult[] }) {
{result.title}
@@ -718,7 +718,7 @@ function SourceStatusCard({
type="button"
onClick={onRunSourceSearch}
disabled={loading}
- className="mt-3 inline-flex min-h-10 w-full items-center justify-center gap-2 rounded-lg border border-[color:var(--clinical-accent-border)] bg-[color:var(--clinical-accent-soft)] px-3 text-sm font-extrabold text-[color:var(--clinical-accent)] transition hover:border-[color:var(--clinical-accent)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)] disabled:cursor-wait disabled:opacity-60"
+ className="mt-3 inline-flex min-h-tap w-full items-center justify-center gap-2 rounded-lg border border-[color:var(--clinical-accent-border)] bg-[color:var(--clinical-accent-soft)] px-3 text-sm font-extrabold text-[color:var(--clinical-accent)] transition hover:border-[color:var(--clinical-accent)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)] disabled:cursor-wait disabled:opacity-60"
>
{loading ? "Searching sources" : "Run source search"}
@@ -931,14 +931,14 @@ function SearchResultsView({
Browse presentations
Browse diagnoses
@@ -947,7 +947,7 @@ function SearchResultsView({
type="button"
onClick={rerunSearch}
disabled={loading}
- className="inline-flex min-h-10 items-center gap-1.5 rounded-lg border border-[color:var(--border)] bg-[color:var(--surface)] px-3 text-sm font-bold text-[color:var(--text-heading)] disabled:cursor-wait disabled:opacity-60"
+ className="inline-flex min-h-tap items-center gap-1.5 rounded-lg border border-[color:var(--border)] bg-[color:var(--surface)] px-3 text-sm font-bold text-[color:var(--text-heading)] disabled:cursor-wait disabled:opacity-60"
>
{loading ? "Searching sources" : "Run source search"}
@@ -982,7 +982,7 @@ function SearchResultsView({
type="button"
onClick={rerunSearch}
disabled={loading}
- className="inline-flex min-h-10 items-center gap-2 rounded-lg border border-[color:var(--clinical-accent-border)] bg-[color:var(--surface)] px-3 text-sm font-bold text-[color:var(--clinical-accent)] shadow-[var(--shadow-inset)] transition hover:border-[color:var(--clinical-accent)] disabled:cursor-wait disabled:opacity-60"
+ className="inline-flex min-h-tap items-center gap-2 rounded-lg border border-[color:var(--clinical-accent-border)] bg-[color:var(--surface)] px-3 text-sm font-bold text-[color:var(--clinical-accent)] shadow-[var(--shadow-inset)] transition hover:border-[color:var(--clinical-accent)] disabled:cursor-wait disabled:opacity-60"
>
{loading ? "Searching sources" : "Run source search"}
@@ -1044,7 +1044,7 @@ function SearchResultsView({
type="button"
onClick={rerunSearch}
disabled={loading}
- className="inline-flex min-h-10 shrink-0 items-center gap-1.5 rounded-lg border border-[color:var(--clinical-accent-border)] bg-[color:var(--surface)] px-2.5 text-xs font-extrabold text-[color:var(--clinical-accent)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)] disabled:cursor-wait disabled:opacity-60"
+ className="inline-flex min-h-tap shrink-0 items-center gap-1.5 rounded-lg border border-[color:var(--clinical-accent-border)] bg-[color:var(--surface)] px-2.5 text-xs font-extrabold text-[color:var(--clinical-accent)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)] disabled:cursor-wait disabled:opacity-60"
>
{loading ? "Searching…" : "Run source search"}
@@ -1253,7 +1253,7 @@ export function DifferentialsHome({
-
+
{isWorkflowHeader ? (
<>
setActiveFilter("best")}
- className="inline-flex min-h-8 items-center gap-1.5 rounded-lg border border-[color:var(--clinical-accent)] bg-[color:var(--clinical-accent-soft)] px-3 text-xs font-semibold text-[color:var(--clinical-accent)] transition hover:bg-[color:var(--clinical-accent-soft)]/70 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]"
+ className="inline-flex min-h-tap items-center gap-1.5 rounded-lg border border-[color:var(--clinical-accent)] bg-[color:var(--clinical-accent-soft)] px-3 text-xs font-semibold text-[color:var(--clinical-accent)] transition hover:bg-[color:var(--clinical-accent-soft)]/70 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]"
>
Show all {totalAvailable} matches
diff --git a/src/components/clinical-dashboard/patient-profile-panel.tsx b/src/components/clinical-dashboard/patient-profile-panel.tsx
index 1e2e01cce..dcad3a6cd 100644
--- a/src/components/clinical-dashboard/patient-profile-panel.tsx
+++ b/src/components/clinical-dashboard/patient-profile-panel.tsx
@@ -238,7 +238,7 @@ export function PatientProfilePanel({
type="button"
onClick={clear}
disabled={isEmpty}
- className="ml-auto inline-flex min-h-8 items-center gap-1.5 rounded-lg border border-[color:var(--border)] px-2.5 text-2xs font-semibold text-[color:var(--text-muted)] transition hover:border-[color:var(--border-strong)] hover:text-[color:var(--text-heading)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)] disabled:cursor-not-allowed disabled:opacity-50"
+ className="ml-auto inline-flex min-h-tap items-center gap-1.5 rounded-lg border border-[color:var(--border)] px-2.5 text-2xs font-semibold text-[color:var(--text-muted)] transition hover:border-[color:var(--border-strong)] hover:text-[color:var(--text-heading)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)] disabled:cursor-not-allowed disabled:opacity-50"
>
Clear
diff --git a/src/components/forms/form-detail-page.tsx b/src/components/forms/form-detail-page.tsx
index a5b092ea5..f464eafdb 100644
--- a/src/components/forms/form-detail-page.tsx
+++ b/src/components/forms/form-detail-page.tsx
@@ -533,7 +533,7 @@ export function FormDetailPage({ form }: { form: FormRecord }) {
type="button"
onClick={() => setNotice(null)}
aria-label="Dismiss form notification"
- className="grid h-8 w-8 place-items-center rounded-md transition hover:bg-[color:var(--surface)]/70 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]"
+ className="grid size-tap place-items-center rounded-md transition hover:bg-[color:var(--surface)]/70 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]"
>
diff --git a/src/components/forms/forms-search-results-page.tsx b/src/components/forms/forms-search-results-page.tsx
index df1358da1..984dfc9cf 100644
--- a/src/components/forms/forms-search-results-page.tsx
+++ b/src/components/forms/forms-search-results-page.tsx
@@ -175,7 +175,7 @@ function RefineBar({ open, onToggle, panelId }: { open: boolean; onToggle: () =>
aria-controls={panelId}
onClick={onToggle}
className={cn(
- "inline-flex h-10 shrink-0 items-center gap-2 rounded-lg border px-3.5 text-sm font-extrabold transition",
+ "inline-flex min-h-tap shrink-0 items-center gap-2 rounded-lg border px-3.5 text-sm font-extrabold transition",
searchFocusRing,
open
? "border-[color:var(--clinical-accent-border)] bg-[color:var(--clinical-accent-soft)] text-[color:var(--clinical-accent)]"
@@ -498,7 +498,7 @@ function MobileCards({ matches, query }: { matches: FormSearchMatch[]; query: st
@@ -602,7 +602,7 @@ function RegistryStatusNotice({ status }: { status: RegistryRequestStatus }) {
{notice.action ? (
{notice.action.label}
diff --git a/src/components/formulation/formulation-builder-page.tsx b/src/components/formulation/formulation-builder-page.tsx
index 674c8b90e..f5bae5b0f 100644
--- a/src/components/formulation/formulation-builder-page.tsx
+++ b/src/components/formulation/formulation-builder-page.tsx
@@ -328,7 +328,7 @@ export function FormulationBuilderPage({
type="button"
onClick={() => toggleMechanism(mechanism.id)}
aria-label={`Remove ${mechanism.name}`}
- className="inline-flex min-h-9 items-center gap-2 rounded-lg border border-[color:var(--clinical-accent-border)] bg-[color:var(--surface)] px-3 text-xs font-bold text-[color:var(--text-heading)]"
+ className="inline-flex min-h-tap items-center gap-2 rounded-lg border border-[color:var(--clinical-accent-border)] bg-[color:var(--surface)] px-3 text-xs font-bold text-[color:var(--text-heading)]"
>
{mechanism.name}
@@ -516,7 +516,7 @@ export function FormulationBuilderPage({
applySuggestions(section.id)}
- className="inline-flex min-h-9 items-center gap-1.5 rounded-md border border-[color:var(--clinical-accent-border)] bg-[color:var(--clinical-accent-soft)] px-2.5 text-xs font-bold text-[color:var(--clinical-accent)]"
+ className="inline-flex min-h-tap items-center gap-1.5 rounded-md border border-[color:var(--clinical-accent-border)] bg-[color:var(--clinical-accent-soft)] px-2.5 text-xs font-bold text-[color:var(--clinical-accent)]"
>
Use suggestions
@@ -634,7 +634,7 @@ export function FormulationBuilderPage({
setEditedDraft(generatedDraft)}
- className="inline-flex min-h-9 items-center gap-1.5 rounded-md border border-[color:var(--border-strong)] bg-[color:var(--surface)] px-3 text-xs font-bold text-[color:var(--text-muted)]"
+ className="inline-flex min-h-tap items-center gap-1.5 rounded-md border border-[color:var(--border-strong)] bg-[color:var(--surface)] px-3 text-xs font-bold text-[color:var(--text-muted)]"
>
Regenerate
@@ -642,7 +642,7 @@ export function FormulationBuilderPage({
{copied ? "Copied" : "Copy draft"}
diff --git a/src/components/formulation/formulation-home-page.tsx b/src/components/formulation/formulation-home-page.tsx
index 9c41a5cdd..a64b0e3fb 100644
--- a/src/components/formulation/formulation-home-page.tsx
+++ b/src/components/formulation/formulation-home-page.tsx
@@ -213,7 +213,7 @@ function FormulationResults({ query }: { query: string }) {
{preset.label}
diff --git a/src/components/services/service-detail-page.tsx b/src/components/services/service-detail-page.tsx
index ccf02b9d9..cebf21d25 100644
--- a/src/components/services/service-detail-page.tsx
+++ b/src/components/services/service-detail-page.tsx
@@ -526,7 +526,7 @@ export function ServiceDetailPage({ service }: { service: ServiceRecord }) {
type="button"
onClick={() => setNotice(null)}
aria-label="Dismiss service notification"
- className="grid h-8 w-8 place-items-center rounded-md transition hover:bg-[color:var(--surface)]/70 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]"
+ className="grid size-tap place-items-center rounded-md transition hover:bg-[color:var(--surface)]/70 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]"
>
diff --git a/src/components/services/services-navigator-page.tsx b/src/components/services/services-navigator-page.tsx
index 87b090573..26a3b617b 100644
--- a/src/components/services/services-navigator-page.tsx
+++ b/src/components/services/services-navigator-page.tsx
@@ -220,7 +220,7 @@ function ServiceCard({
onToggleSelected(service.slug)}
- className="grid h-9 w-9 place-items-center rounded-lg text-[color:var(--text)] hover:bg-[color:var(--surface-subtle)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]"
+ className="grid size-tap place-items-center rounded-lg text-[color:var(--text)] hover:bg-[color:var(--surface-subtle)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]"
aria-label={selected ? `Remove ${service.title} from selected services` : `Save ${service.title}`}
>
Open
@@ -288,7 +288,7 @@ function ServiceCard({
onToggleSelected(service.slug)}
- className="inline-flex h-9 min-w-[94px] items-center justify-center gap-1.5 rounded-lg bg-[color:var(--clinical-accent)] px-3 text-xs font-bold text-[color:var(--clinical-accent-contrast)] shadow-[var(--shadow-tight)] hover:bg-[color:var(--clinical-accent-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]"
+ className="inline-flex min-h-tap min-w-[94px] items-center justify-center gap-1.5 rounded-lg bg-[color:var(--clinical-accent)] px-3 text-xs font-bold text-[color:var(--clinical-accent-contrast)] shadow-[var(--shadow-tight)] hover:bg-[color:var(--clinical-accent-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]"
>
{selected ? "Selected" : "Select"}
diff --git a/src/components/therapy-compass/bindings.tsx b/src/components/therapy-compass/bindings.tsx
index 6e5945321..7cf2d999e 100644
--- a/src/components/therapy-compass/bindings.tsx
+++ b/src/components/therapy-compass/bindings.tsx
@@ -161,7 +161,7 @@ const TcContext = createContext(null);
function navStyle(active: boolean): CSSProperties {
const base =
- "display:inline-flex;align-items:center;gap:8px;flex:none;padding:8px 13px;border:1px solid transparent;border-radius:10px;background:transparent;font-family:inherit;font-size:13.5px;white-space:nowrap;cursor:pointer;text-decoration:none;transition:background .12s ease,color .12s ease,border-color .12s ease;";
+ "display:inline-flex;align-items:center;gap:8px;flex:none;min-height:44px;box-sizing:border-box;padding:8px 13px;border:1px solid transparent;border-radius:10px;background:transparent;font-family:inherit;font-size:13.5px;white-space:nowrap;cursor:pointer;text-decoration:none;transition:background .12s ease,color .12s ease,border-color .12s ease;";
return s(
active
? base +
@@ -171,7 +171,7 @@ function navStyle(active: boolean): CSSProperties {
}
function tabStyle(active: boolean): CSSProperties {
const base =
- "padding:10px 4px;border:none;background:transparent;font-size:14px;cursor:pointer;font-family:inherit;transition:color .12s ease;";
+ "display:inline-flex;align-items:center;justify-content:center;min-height:44px;box-sizing:border-box;padding:10px 4px;border:none;background:transparent;font-size:14px;cursor:pointer;font-family:inherit;transition:color .12s ease;";
return s(
active
? base + "color:var(--clinical-accent-hover);font-weight:650;border-bottom:2px solid var(--clinical-accent);"
@@ -180,7 +180,7 @@ function tabStyle(active: boolean): CSSProperties {
}
function segStyle(active: boolean): CSSProperties {
const base =
- "padding:7px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:none;font-family:inherit;transition:all .12s ease;";
+ "display:inline-flex;align-items:center;justify-content:center;min-height:44px;box-sizing:border-box;padding:7px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:none;font-family:inherit;transition:all .12s ease;";
return s(
active
? base + "background:var(--surface);color:var(--clinical-accent-hover);box-shadow:var(--shadow-tight);"
@@ -189,7 +189,7 @@ function segStyle(active: boolean): CSSProperties {
}
function chipStyle(on: boolean): CSSProperties {
const base =
- "padding:8px 14px;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .12s ease;";
+ "display:inline-flex;align-items:center;justify-content:center;min-height:44px;box-sizing:border-box;padding:8px 14px;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .12s ease;";
return s(
on
? base +
diff --git a/src/components/therapy-compass/controls.ts b/src/components/therapy-compass/controls.ts
index 8241e2ed0..1a8039eca 100644
--- a/src/components/therapy-compass/controls.ts
+++ b/src/components/therapy-compass/controls.ts
@@ -12,7 +12,7 @@ export const outlineControl =
"display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 16px;border:1px solid var(--border-strong);border-radius:11px;background:var(--surface);color:var(--text);font-size:13.5px;font-weight:600;cursor:pointer;font-family:inherit;";
export const softControl =
- "display:inline-flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 16px;border:1px solid var(--border);border-radius:11px;background:var(--surface);color:var(--text-muted);font-size:13.5px;font-weight:500;cursor:pointer;font-family:inherit;transition:background .12s ease,border-color .12s ease,color .12s ease;";
+ "display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 16px;border:1px solid var(--border);border-radius:11px;background:var(--surface);color:var(--text-muted);font-size:13.5px;font-weight:500;cursor:pointer;font-family:inherit;transition:background .12s ease,border-color .12s ease,color .12s ease;";
export const iconControl =
"display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--text-soft);cursor:pointer;font-family:inherit;";
diff --git a/src/components/therapy-compass/screens/brief-screen.tsx b/src/components/therapy-compass/screens/brief-screen.tsx
index 738a500a1..2e08fbba5 100644
--- a/src/components/therapy-compass/screens/brief-screen.tsx
+++ b/src/components/therapy-compass/screens/brief-screen.tsx
@@ -100,7 +100,10 @@ export function BriefScreen() {
-
+
{/* records list */}
b.open(t.slug)}
- style={s(outlineControl + "height:36px;padding:0 13px;font-size:12.5px;")}
+ style={s(outlineControl + "height:44px;padding:0 13px;font-size:12.5px;")}
>
Open full record
diff --git a/src/components/therapy-compass/screens/compare-screen.tsx b/src/components/therapy-compass/screens/compare-screen.tsx
index 500348cfb..bd7a12f85 100644
--- a/src/components/therapy-compass/screens/compare-screen.tsx
+++ b/src/components/therapy-compass/screens/compare-screen.tsx
@@ -167,7 +167,7 @@ export function CompareScreen() {
onClick={() => b.removeCompare(t.slug)}
title={`Remove ${t.name}`}
style={s(
- `display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;color:var(--text-soft);cursor:pointer;border-radius:7px;`,
+ `display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:none;background:transparent;color:var(--text-soft);cursor:pointer;border-radius:7px;`,
)}
>
@@ -222,6 +222,7 @@ export function CompareScreen() {
{/* table */}
-
+
{/* HERO */}
diff --git a/src/components/therapy-compass/screens/other-screen.tsx b/src/components/therapy-compass/screens/other-screen.tsx
index 9c48bf664..bf068be16 100644
--- a/src/components/therapy-compass/screens/other-screen.tsx
+++ b/src/components/therapy-compass/screens/other-screen.tsx
@@ -78,6 +78,7 @@ export function OtherScreen() {
{queue.map((t) => (
(
-
+
{/* BUILDER */}
diff --git a/src/components/therapy-compass/styles.tsx b/src/components/therapy-compass/styles.tsx
index 42859b8d5..16371255c 100644
--- a/src/components/therapy-compass/styles.tsx
+++ b/src/components/therapy-compass/styles.tsx
@@ -28,6 +28,17 @@ const CSS = `
@media (max-width: 640px) {
.tc-root .tc-main { padding: 20px 16px 32px !important; }
.tc-root .tc-topnav { padding: 12px 16px !important; gap: 12px !important; }
+ /* Phone: multi-column grids with fixed/minmax tracks would otherwise overflow
+ a 390px viewport and clip clinical content (contraindications, review
+ columns). Collapse them to a single stacked column. */
+ .tc-root .tc-stack-sm { grid-template-columns: 1fr !important; }
+ /* Phone: the comparison table must keep its column structure, so make the
+ table scroll horizontally instead of clipping the right-hand therapies. */
+ .tc-root .tc-scroll-sm {
+ overflow-x: auto !important;
+ overscroll-behavior-x: contain;
+ -webkit-overflow-scrolling: touch;
+ }
}
@media print {
@page { size: A4 portrait; margin: 14mm; }
diff --git a/src/components/therapy-compass/therapy-card.tsx b/src/components/therapy-compass/therapy-card.tsx
index 31c321b53..e48cb47c1 100644
--- a/src/components/therapy-compass/therapy-card.tsx
+++ b/src/components/therapy-compass/therapy-card.tsx
@@ -30,6 +30,7 @@ export function ResultCard({ therapy }: { therapy: Therapy }) {
)}
>