Website parity check
The rebuild in website/ matches https://foodfutures.framer.website/ to the subpixel. Keep it that way unless Vineeth asks for a deliberate change.
- Serve the site:
cd website && python3 -m http.server 8000(run in the background). - Run
.venv/bin/python tools/parity/parity.py 1440 1000 810 390. First time:python3 -m venv .venv && .venv/bin/pip install playwright pillow. - Read the result:
layout: identicaland page heights equal is the bar.- Pixel diffs under about 1% are anti-aliasing. The live site renders large statements on a GPU layer, so they look slightly softer.
- "How it Works" auto-advances every 5s, so frames that catch different cards will differ. That is timing, not a bug.
- When a position is off, compare computed styles of that element on both sites before editing. Lessons from the first build:
- Use
emline-heights, not unitless. Chrome rounds1.3embut floors1.3, which drifts 0.05px per line. - Framer images are
object-fit: cover(its "fill") orcontain(its "fit"). svg[hidden]needs[hidden] { display: none }oncesvg { display: block }is set.- CSS
scroll-behavior: smoothalso smooths scripted scrolls, so tests must scroll withbehavior: 'instant'.
- Use
Intentional differences (do not "fix"): no Made in Framer badge; added focus rings, selection color and reduced-motion support; the phone mockup screen is empty on phones, as on the live site.