diff --git a/src/app/globals.css b/src/app/globals.css index 83e1858..e234c47 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -12,6 +12,9 @@ --success: #22c55e; --warning: #eab308; --danger: #ef4444; + + /* Apple HIG Touch Target */ + --touch-target: 44px; } @theme inline { @@ -24,20 +27,26 @@ --color-success: var(--success); --color-warning: var(--warning); --color-danger: var(--danger); - --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; + /* Apple HIG: SF Pro is the system font */ + --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", system-ui, sans-serif; + --font-mono: "SF Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; } body { background: var(--background); color: var(--foreground); font-family: var(--font-sans); + /* Apple HIG: 17pt default body text */ + font-size: 17px; + line-height: 1.4; + /* Apple HIG: -0.43px tracking for 17pt */ + letter-spacing: -0.43px; min-height: 100dvh; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } -/* Clean card - no glassmorphism */ +/* Clean card */ .glass-card { background: var(--card); border: 1px solid var(--border); diff --git a/src/components/Button.tsx b/src/components/Button.tsx index 6360602..952894b 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -17,7 +17,7 @@ export default function Button({ disabled = false, type = 'button', }: ButtonProps) { - const baseStyles = 'font-medium rounded-lg flex items-center justify-center active:scale-[0.98] disabled:opacity-50 disabled:cursor-not-allowed'; + const baseStyles = 'font-medium rounded-xl flex items-center justify-center active:scale-[0.98] disabled:opacity-50 disabled:cursor-not-allowed'; const variants = { primary: 'bg-white text-black hover:bg-zinc-200', @@ -26,10 +26,11 @@ export default function Button({ ghost: 'bg-transparent hover:bg-zinc-800 text-zinc-400', }; + // Apple HIG: 44pt minimum touch target, 17pt text const sizes = { - sm: 'px-3 py-1.5 text-xs', - md: 'px-4 py-2 text-sm', - lg: 'px-5 py-2.5 text-sm', + sm: 'px-4 py-2 text-[15px] min-h-[36px]', // Compact: 15pt, 36px height + md: 'px-5 py-3 text-[17px] min-h-[44px]', // Standard: 17pt, 44px min + lg: 'px-6 py-3.5 text-[17px] min-h-[50px]', // Large: 17pt, 50px height }; return ( diff --git a/src/components/Input.tsx b/src/components/Input.tsx index d2a1bf0..aff8d0f 100644 --- a/src/components/Input.tsx +++ b/src/components/Input.tsx @@ -28,7 +28,8 @@ export default function Input({ return (
{label && ( - + // Apple HIG: 13pt for labels/captions + )}
{suffix && ( - + {suffix} )}