Index: app/(app)/analytics/analytics-client.tsx
===================================================================
--- app/(app)/analytics/analytics-client.tsx	(revision b04ba1e157677d8749211da255f2549e103aec19)
+++ app/(app)/analytics/analytics-client.tsx	(revision e87b42dcffb5d640a4209783c782f34ac2118970)
@@ -23,6 +23,4 @@
     const pathname = usePathname();
     const { replace } = useRouter();
-    const startInputRef = useRef<HTMLInputElement>(null);
-    const endInputRef = useRef<HTMLInputElement>(null);
     const [trendZoomOpen, setTrendZoomOpen] = useState(false);
 
@@ -185,6 +183,4 @@
                                 label="Start Date"
                                 value={startDate}
-                                inputRef={startInputRef}
-                                onClick={() => startInputRef.current?.showPicker?.() ?? startInputRef.current?.click()}
                                 onChange={(value) => setRangeDate('startDate', value)}
                             />
@@ -192,6 +188,4 @@
                                 label="End Date"
                                 value={endDate}
-                                inputRef={endInputRef}
-                                onClick={() => endInputRef.current?.showPicker?.() ?? endInputRef.current?.click()}
                                 onChange={(value) => setRangeDate('endDate', value)}
                             />
@@ -279,15 +273,39 @@
     label,
     value,
-    inputRef,
     onChange,
-    onClick,
 }: {
     label: string;
     value: string;
-    inputRef: React.RefObject<HTMLInputElement | null>;
     onChange: (value: string) => void;
-    onClick: () => void;
 }) {
+    const inputRef = useRef<HTMLInputElement>(null);
     const displayValue = value ? formatDateForButton(value) : 'Pick date';
+    const useDirectTapInput = useMemo(() => {
+        if (typeof navigator === 'undefined' || typeof window === 'undefined') {
+            return false;
+        }
+
+        const ua = navigator.userAgent || '';
+        const isIOS =
+            /iPad|iPhone|iPod/.test(ua)
+            || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
+        const isTouch = window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0;
+
+        // iOS/PWA is more reliable with a direct tap on a native date input.
+        return isIOS && isTouch;
+    }, []);
+
+    function openPicker() {
+        const input = inputRef.current;
+        if (!input) return;
+
+        if (typeof input.showPicker === 'function') {
+            input.showPicker();
+            return;
+        }
+
+        input.focus();
+        input.click();
+    }
 
     return (
@@ -295,5 +313,5 @@
             <button
                 type="button"
-                onClick={onClick}
+                onClick={openPicker}
                 aria-label={label}
                 className="flex w-full items-center justify-center gap-3 rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-sm text-white/80 hover:bg-white/10 transition"
@@ -305,5 +323,8 @@
                 ref={inputRef}
                 type="date"
-                className="pointer-events-none absolute h-0 w-0 opacity-0"
+                aria-label={label}
+                className={useDirectTapInput
+                    ? 'absolute inset-0 h-full w-full cursor-pointer opacity-0'
+                    : 'pointer-events-none absolute h-0 w-0 opacity-0'}
                 value={value}
                 onChange={(e) => onChange(e.target.value)}
