Done — one self-contained `index.html`, no build step. Just double-click it, or drop it on any static host (Netlify, Vercel, GitHub Pages, S3) and it works as-is. What changed under the hood to make it a single file: - React, ReactDOM, Babel, and Tailwin

Done — one self-contained index.html, no build step. Just double-click it, or drop it on any static host (Netlify, Vercel, GitHub Pages, S3) and it works as-is.

What changed under the hood to make it a single file:

  • React, ReactDOM, Babel, and Tailwind load from CDN <script> tags; JSX is transpiled live in the browser
  • Framer Motion → replaced with a small IntersectionObserver-based Reveal component and plain CSS keyframes (fadeUp, kenBurns, floatDown) for the entrance/hover motion
  • lucide-react → replaced with a hand-written Icon component (inline stroke SVGs), so there’s no external icon package dependency
  • Everything else — theme toggle, filterable menu, masonry gallery + lightbox, reservation form validation and success modal, all copy and images — is unchanged

Same swap-outs apply as before: paste an .mp4 URL into IMAGES.heroVideo near the top of the script, and replace the Unsplash/pravatar URLs with your own photography when ready.