01A content layer that cannot invent a number
Every product, spec and application fact lives in one typed layer, cited back to the brief by section. I write absent values as `null` plus a `[TBD]` marker and render them as "Available on request" instead of a plausible-sounding figure; the fertilizer codebase still carries over 140 such markers. I locked a CANON document that fixes the hex palette, route slugs and CTA strings so parallel work could not quietly diverge.
02Ten clips, one palette
Ten pages, ten stock clips, ten colour casts fighting the brand. I strip each clip to luminance with `grayscale(1)` and recolour it toward brand gold through a `mix-blend-mode: color` layer, so a blue lab shot and a green forest canopy resolve to the same world. The still poster paints first, which keeps the video out of the LCP path, and under reduced motion I never mount the video element.
03Scroll-pinning without wheel interception
The applications showcase pins six industry slides: a 700svh wrapper with a `sticky top-0 h-svh` stage inside, so native scroll drives Framer's `scrollYProgress` and nothing intercepts the wheel, which is what lets it coexist with Lenis. I left a comment in the file recording why I could not reuse the shared `.hero-band` class: it sets `position: relative`, which overrides Tailwind's `sticky` at the same specificity and silently breaks the pin. Below `lg` and under reduced motion the parent switches to a plain grid.
04Shipping HTML, not source
Hostinger's Git integration clones a branch into the web root and runs nothing. Pointed at `main`, the site served `package.json` and TypeScript source with no `index.html`, because `out/` is generated at build time and gitignored. A GitHub Action I wrote now builds the export, checks that `out/index.html`, `out/404.html` and `out/.htaccess` exist, then force-pushes the contents of `out/` to a `deploy` branch whose root is the finished site.
05An .htaccess for a server that fails quietly
Shared hosting runs LiteSpeed, which reads .htaccess like Apache but ignores directives it does not support instead of erroring, so a file that works locally can 500 in production. I wrap every module-dependent block in `<IfModule>`, and never use `Options` or `DirectorySlash`. My cache policy splits on a real distinction: hashed build output gets a year and `immutable`, while `/assets/**` filenames are stable, so replacing a hero photo must still be able to expire.