@@ -161,7 +161,7 @@ export default function AccessPage() {
})}
-
+
Keep your care team in the loop
diff --git a/src/app/(marketing)/how-it-works/page.tsx b/src/app/(marketing)/how-it-works/page.tsx
index 9681e46..20af116 100644
--- a/src/app/(marketing)/how-it-works/page.tsx
+++ b/src/app/(marketing)/how-it-works/page.tsx
@@ -1,16 +1,17 @@
import type { Metadata } from "next";
import {
ArrowRight,
- Camera,
+ CalendarDays,
Check,
- FileText,
- Keyboard,
- Mic,
+ ListChecks,
+ MessageCircleQuestion,
+ RotateCcw,
ShieldAlert,
} from "lucide-react";
import Link from "next/link";
import { PhoneMockup } from "~/components/phone-mockup";
+import { QuestionsPreview } from "~/components/questions-preview";
import { SectionLabel } from "~/components/section-label";
import { Badge } from "~/components/ui/badge";
import { Button } from "~/components/ui/button";
@@ -21,26 +22,26 @@ export const metadata: Metadata = {
"See how Medscribe brings visits, medication routines, and important context into one reviewable record.",
};
-const inputs = [
+const dailyRhythm = [
{
- icon: Keyboard,
- title: "Type or paste",
- body: "Start from notes you already have and keep the original details easy to revisit.",
+ icon: CalendarDays,
+ title: "Start with the moment",
+ body: "Give each visit a clear place so the details remain easy to find later.",
},
{
- icon: Camera,
- title: "Import a screenshot",
- body: "Bring in a portal summary or prescription label, then correct extracted fields.",
+ icon: ListChecks,
+ title: "Review what matters",
+ body: "Check the useful details and keep your own judgment in the loop.",
},
{
- icon: FileText,
- title: "Attach a document",
- body: "Bring a photo or document into a guided review workflow.",
+ icon: MessageCircleQuestion,
+ title: "Keep the next question",
+ body: "Save what you want to ask while it is still fresh in your mind.",
},
{
- icon: Mic,
- title: "Record with consent",
- body: "With permission, turn optional visit audio into notes you can review.",
+ icon: RotateCcw,
+ title: "Return when needed",
+ body: "Revisit the same picture before the next appointment or handoff.",
},
] as const;
@@ -68,20 +69,20 @@ export default function HowItWorksPage() {
-
+
- Start where the information is
+ Start with what matters
- Four ways in. One clear place to review.
+ A clear rhythm from the moment to the next conversation.
- You review summaries and medication details before they become
- part of the record you carry.
+ You review the details before they become part of the picture you
+ carry.
@@ -126,13 +127,13 @@ export default function HowItWorksPage() {
The visit remains available beside the summary so you can check
wording, follow-ups, and the details you want to remember.
-
+
Stay oriented: move
between the transcript and summary whenever you want the fuller
context.
-
+
-
+
- Medscribe records timing supplied by a label, pharmacist, or
- prescribing team. It does not calculate or shift medication
- times.
+ Keep medication timing easy to read and confirm changes with
+ the care professional who gave you the instructions.
+
+
+ Keep the next question
+
+ Save it while it is on your mind.
+
+
+ Add questions as they come up between visits. If Ask reaches a
+ question that needs professional judgment, Medscribe can offer
+ to save it and suggest who may be helpful to ask.
+
+
+ Your list is ready when the appointment starts, so the most
+ important question does not disappear in the moment.
+
+
+
+
+
Prepare the handoff
@@ -190,7 +209,7 @@ export default function HowItWorksPage() {
it, and when the conversation happens.
The connected picture
@@ -184,11 +183,11 @@ export default function HomePage() {
Turn what happened into something you can check.
- Bring in typed notes, a portal screenshot, a document, or an
- optional consent-gated recording. You decide what is useful and
- what belongs in your record.
+ Bring the important details from a visit into one reviewable
+ record. You decide what is useful and what belongs in the picture
+ you carry forward.
-
+
The safety loop:{" "}
review generated information before acting. Medscribe does not
@@ -201,7 +200,7 @@ export default function HomePage() {
{visitMoments.map((moment, index) => (
@@ -272,7 +271,7 @@ export default function HomePage() {
-
+
{[
{
title: "Keep schedules easy to understand",
@@ -289,7 +288,7 @@ export default function HomePage() {
].map((item) => (
@@ -305,32 +304,44 @@ export default function HomePage() {
-
-
-
+
+
+
- Ask from the record
+ Questions for the doctor
- Better questions begin with your context.
+ Ask now. Save what belongs in the room.
- Ask about a visit or medication using the context you have already
- collected. Answers help you prepare for a clearer conversation.
-
-
- Informational only. Medication changes still belong with a
- clinician or pharmacist.
+ Ask about a visit or medication. When the answer needs a care
+ professional's judgment, Medscribe can suggest saving the
+ question and who may be helpful to ask.
+
+
+
+
+
+ Keep a calm, ready list for your next appointment instead of
+ relying on memory when the conversation begins.
+
+
-
-
+
+
+
+
+
@@ -361,7 +372,7 @@ export default function HomePage() {
to review together.
-
+
-
+
-
+
(
{number}
@@ -447,11 +458,11 @@ export default function HomePage() {
See how Medscribe fits into the day.
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index e0bfe01..94850a8 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,6 +1,6 @@
import "~/styles/globals.css";
-import { type Metadata } from "next";
+import { type Metadata, type Viewport } from "next";
import { Instrument_Sans, Playfair_Display } from "next/font/google";
import { UmamiAnalytics } from "~/components/umami-analytics";
@@ -42,6 +42,13 @@ export const metadata: Metadata = {
},
};
+export const viewport: Viewport = {
+ themeColor: [
+ { media: "(prefers-color-scheme: light)", color: "#f4f9f7" },
+ { media: "(prefers-color-scheme: dark)", color: "#071415" },
+ ],
+};
+
export default function RootLayout({
children,
}: Readonly<{ children: React.ReactNode }>) {
diff --git a/src/components/feature-showcase.tsx b/src/components/feature-showcase.tsx
index da5b79d..f503858 100644
--- a/src/components/feature-showcase.tsx
+++ b/src/components/feature-showcase.tsx
@@ -20,7 +20,7 @@ const features = [
icon: CalendarDays,
title: "Turn a visit into context you can review",
description:
- "Type or paste notes, import a portal screenshot or document, or use consent-gated recording to create a summary you can check.",
+ "Keep the important details from a visit together in a summary you can check and revisit.",
points: [
"Keep the visit and summary easy to revisit",
"Review important details before relying on them",
@@ -53,13 +53,13 @@ const features = [
id: "questions",
label: "Questions",
icon: MessageCircle,
- title: "Facts first, fluent answers second",
+ title: "Keep the question for the right conversation",
description:
- "Ask about a visit or medication using the context you have already collected. Dosing changes, diagnosis, and treatment decisions stay with a clinician or pharmacist.",
+ "Ask about a visit or medication. When professional judgment is needed, save the question and keep guidance on who may be helpful to ask.",
points: [
- "Keep answers connected to your own context",
- "Prepare for a clearer care conversation",
- "High-risk or unsupported questions defer to a professional",
+ "Capture questions as they come up",
+ "Keep a ready list for the next appointment",
+ "See whether a doctor, prescriber, or pharmacist may be helpful",
],
image: "/screenshots/product-bezel-2026-08-23-complete/ask-black.webp",
darkImage:
@@ -143,10 +143,10 @@ export function FeatureShowcase() {
onClick={() => setActiveId(feature.id)}
onKeyDown={onTabKeyDown}
className={cn(
- "focus-visible:ring-primary/40 inline-flex min-h-11 shrink-0 items-center gap-2 rounded-full border px-4 py-2 text-sm font-semibold transition-colors outline-none focus-visible:ring-2",
+ "focus-visible:ring-primary/40 inline-flex min-h-11 shrink-0 items-center gap-2 rounded-full px-4 py-2 text-sm font-semibold transition-colors outline-none focus-visible:ring-2",
isActive
- ? "border-primary-button bg-primary-button text-white shadow-sm"
- : "border-border-soft bg-surface/75 text-muted-foreground hover:border-primary/30 hover:text-foreground backdrop-blur-xl",
+ ? "bg-primary-button text-white shadow-sm"
+ : "bg-surface/75 text-muted-foreground hover:bg-surface-soft hover:text-foreground backdrop-blur-xl",
)}
>
@@ -190,7 +190,7 @@ export function FeatureShowcase() {
-
+
-
+
@@ -81,7 +81,6 @@ export function LoginForm({ redirectTo }: LoginFormProps) {
name="password"
type="password"
autoComplete="current-password"
- autoFocus
required
value={password}
onChange={(event) => setPassword(event.target.value)}
@@ -103,7 +102,7 @@ export function LoginForm({ redirectTo }: LoginFormProps) {
className="w-full"
disabled={isSubmitting || password.length === 0}
>
- {isSubmitting ? "Checking..." : "Continue"}
+ {isSubmitting ? "Checking…" : "Continue"}
diff --git a/src/components/questions-preview.tsx b/src/components/questions-preview.tsx
new file mode 100644
index 0000000..16c5b99
--- /dev/null
+++ b/src/components/questions-preview.tsx
@@ -0,0 +1,76 @@
+import { ArrowUpRight, Check, MessageCircleQuestion, Plus } from "lucide-react";
+
+import { cn } from "~/lib/utils";
+
+const questions = [
+ {
+ question: "Could this change be related to my medication?",
+ recipient: "Prescriber",
+ },
+ {
+ question: "What should I expect at the follow-up?",
+ recipient: "Care team",
+ },
+ {
+ question: "Is this still the right time to take it?",
+ recipient: "Pharmacist",
+ },
+] as const;
+
+export function QuestionsPreview({ className }: { className?: string }) {
+ return (
+
+
+
+
+ Questions
+
+
+ Ready for the conversation
+
+
+
+
+
+
+
+
+ {questions.map((item, index) => (
+
0 && "border-border-soft/55 border-t",
+ )}
+ >
+
+
+ {item.question}
+
+
+ Ask your {item.recipient.toLowerCase()}
+
+
+
+
+
+
+
+ ))}
+
+
+
+
+
+
+ Save a question the moment it comes to you.
+