Cursor rule
Keep GSAP animations from Webflow intact; initialize in useEffect with proper cleanup.
Cursor rule
Keep GSAP animations from Webflow intact; initialize in useEffect with proper cleanup.
Cursor rule
Global-effect hooks belong in MarketingSiteRoot, not scattered across sections.
Cursor rule
Netlify + TanStack Start — netlify.toml at repo root with [build] base; MISSION CRITICAL — dashboard Build settings (Base, Publish, Build command, Functions directory, etc.) must stay empty or deploys break.
Cursor rule
Netlify (and most CI) runs npm ci in web/ when web/package-lock.json exists. npm ci installs exactly what the lockfile pins — not “whatever npm install resolves today”.
Cursor rule
Core Web Vitals — font preload, deferred analytics, optional CLS overrides, LCP images; expectations for render-blocking CSS on Webflow migrations.
Cursor rule
SOT component CSS ownership — Storybook preview must match live routes without per-page token overrides.
Cursor rule
Repeating UI chrome (buttons, headings, chips) — one SOT + variant Storybook stories before routes.
Cursor rule
Self-hosted fonts in Vite/TanStack Start — file location, @font-face import order, Webflow legacy family names.
Cursor rule
Netlify SSR (TanStack Start) — fix Cannot use import statement outside a module / ERRREQUIREESM by adding the offending package to ssr.noExternal in web/vite.config.ts. Always run the SSR import smoke test before pushing.
Cursor rule
After Webflow → React migration, drop editor-only HTML fingerprints and fix generator/OG URLs so stack scanners (Wappalyzer, BuiltWith) do not falsely imply the site is still “hosted on Webflow”.
Cursor rule
Keep Webflow class names and compiled CSS verbatim during migration; don't refactor to Tailwind utilities until visual parity is confirmed.
Cursor rule
Floating widgets with iframes — z-index doesn't work, reserve layout space instead.