{" "}
{/* No sticky - last chapter */}
```
### Shadow/depth effect
Each Chapter (except Chapter 1) gets a top shadow to enhance the "sliding over" illusion:
```css
.chapter-overlay {
box-shadow: 0 -8px 30px -10px rgba(0, 0, 0, 0.1);
}
```
## Mobile Considerations
- Use `100dvh` (dynamic viewport height) instead of `100vh` to avoid iOS address bar issues
- Carousel CSS scroll-snap is touch-native and works well on mobile
- Sticky positioning works on mobile browsers (iOS Safari, Chrome Android)
- If performance is poor on low-end devices, sticky can be disabled via a CSS class
## Accessibility
- `prefers-reduced-motion: reduce` disables sticky pinning behavior (falls back to normal scroll)
- Carousel maintains keyboard navigation (arrow keys, tab through cards)
- ARIA attributes preserved: `role="region"`, `aria-roledescription="carousel"`, slide labels
- Scroll-snap does not interfere with screen readers
## Files to Modify
| File | Change |
| ------------------------------------------------------- | --------------------------------------- |
| `features/landing-page/views/PublicLandingView.tsx` | Wrap sections in Chapter components |
| `features/landing-page/components/ServicesCarousel.tsx` | Rebuild with CSS scroll-snap |
| `features/landing-page/components/HeroSection.tsx` | Adjust to fill chapter space (flex-1) |
| `features/landing-page/components/TrustStrip.tsx` | Adjust to anchor at bottom of Chapter 1 |
| `features/landing-page/hooks/useInfiniteCarousel.ts` | Replace with scroll-snap hook or remove |
| `features/landing-page/components/index.ts` | Export new Chapter component |
| New: `features/landing-page/components/Chapter.tsx` | Chapter wrapper component |
| New: `features/landing-page/hooks/useSnapCarousel.ts` | Hook for scroll-snap carousel state |