1---2name: website3description: Build fast, accessible, and SEO-friendly websites with modern best practices.4---56# Website Development Rules78## Performance9- Images are the #1 cause of slow sites — use WebP/AVIF, lazy-load below-the-fold, and set explicit width/height to prevent layout shift10- Render-blocking CSS delays first paint — inline critical CSS in `<head>`, defer the rest11- Third-party scripts (analytics, chat widgets) often add 500ms+ — load them with `async` or `defer`, audit regularly12- Fonts cause invisible text flash (FOIT) — use `font-display: swap` and preload critical fonts13- Measure with Lighthouse in incognito mode — extensions skew results1415## Mobile First16- Start CSS with mobile styles, add complexity with `min-width` media queries — easier to scale up than strip down17- Touch targets need 44x44px minimum — fingers are imprecise, small buttons frustrate users18- Test on real devices, not just browser DevTools — throttling simulation misses real-world jank19- Horizontal scroll is a critical bug — test every page at 320px width minimum20- `viewport` meta tag is required: `<meta name="viewport" content="width=device-width, initial-scale=1">`2122## Accessibility23- Every `<img>` needs `alt` text — empty `alt=""` for decorative images, descriptive text for meaningful ones24- Color contrast ratio 4.5:1 minimum for body text — use WebAIM contrast checker25- Form inputs must have associated `<label>` elements — placeholders alone are not accessible26- Keyboard navigation must work — test every interactive element with Tab key27- Screen readers announce heading hierarchy — use H1-H6 in logical order, never skip levels2829## HTML Structure30- One `<h1>` per page only — it's the page title, not a styling tool31- Use semantic elements: `<nav>`, `<main>`, `<article>`, `<aside>`, `<footer>` — they communicate structure to browsers and assistive tech32- `<button>` for actions, `<a>` for navigation — don't use divs with click handlers33- External links should have `rel="noopener"` — prevents security vulnerability with `target="_blank"`34- Validate HTML — broken markup causes unpredictable rendering across browsers3536## CSS Patterns37- Avoid `!important` — it breaks cascade and makes debugging painful. Fix specificity instead38- Use relative units (`rem`, `em`, `%`) over fixed `px` for text — respects user font size preferences39- CSS custom properties (variables) reduce repetition — define colors and spacing once, use everywhere40- Flexbox for 1D layouts, Grid for 2D — don't force one to do the other's job41- Test without CSS loading — content should still be readable in plain HTML4243## Common Mistakes44- Missing favicon causes 404 spam in server logs — always include one, even a simple PNG45- Not setting `<html lang="en">` breaks screen reader pronunciation46- Hardcoded `http://` links break on HTTPS sites — use protocol-relative `//` or always `https://`47- Assuming JavaScript is available — core content should work without JS (progressive enhancement)48- Forgetting print styles — add `@media print` for pages users might print (receipts, articles)4950## Before Launch51- Test all forms actually submit — broken contact forms lose leads silently52- Check 404 page exists and is helpful — default server 404 looks unprofessional53- Verify social sharing previews with Open Graph tags — test in Facebook/Twitter debuggers54- Submit sitemap to Google Search Console — speeds up indexing55- Set up uptime monitoring — know when your site goes down before users tell you