# Apple Human Interface Guidelines (HIG) - Core Principles for iOS @Context: Mobile Whisky Tasting App (Dark Mode) ## 1. Layout & Structure - **Safe Areas:** Always respect the top (Dynamic Island/Notch) and bottom (Home Indicator) safe areas. Never place interactive elements (like the "Save Tasting" sticky button) directly on the bottom edge; add bottom padding. - **Modality (Sheets):** For the "Session Context" (Step C in our flow), use native-style Sheets. Supports "detents" (medium/large). Sheets should be dismissible by dragging down. - **Navigation:** Use a Navigation Bar for hierarchy. The title (e.g., "Tasting Editor") should be large (Large Title) on top of the scroll view and collapse to a small title on scroll. ## 2. Touch & Interaction - **Hit Targets:** Minimum tappable area is **44x44 pt**. Ensure the "Smart Tags" in the form are large enough. - **Feedback:** Use Haptics (Haptic Feedback) for significant actions (e.g., `success` haptic when "Save Tasting" is clicked, `selection` haptic when moving sliders). - **Gestures:** Support "Swipe Back" to navigate to the previous screen. Do not block this gesture with custom UI. ## 3. Visual Design (Dark Mode) - **Colors:** - Never use pure black (`#000000`) for backgrounds. Use semantic system colors or generic dark grays (e.g., `systemBackground` / `#1C1C1E`). - Use `systemGray` to `systemGray6` for elevation levels (cards on top of background). - **Typography:** - Use San Francisco (SF Pro) or the defined app fonts (Inter/Playfair). - Respect Dynamic Type sizes so users can scale text. - **Icons:** Use SF Symbols (or Lucide variants closely matching SF Symbols) with consistent stroke weights (usually "Medium" or "Semibold" for active states). ## 4. Specific Component Rules - **Buttons:** - "Primary" buttons (Save) should use high-contrast background colors. - "Secondary" buttons (Cancel/Back) should be plain text or tinted glyphs. - Avoid using multiple primary buttons on one screen. - **Inputs:** - Text fields must clearly indicate focus. - Keyboard: Use the correct keyboard type (e.g., `decimalPad` for ABV input).