--- paths: ["**/*.html", "**/*.astro", "**/*.css", "**/*.scss", "**/*.tsx", "**/*.jsx", "**/*.vue", "**/*.svelte"] --- # Web building — no default reflexes + done checklist ## Avoid unless the user asks for them - Purple gradient, purple/black, neon, washed-out pastels, rainbow. - Drop shadow on everything; the same border-radius on every element. - Bento grid, dot grid, glowing background orbs, decorative color strip. - Sparkle icons, animated arrows, emojis as icons, decorative fake terminal window. - Hover animation on every element; scroll-reveal animations everywhere. - Three aligned feature cards, three pricing tiers, checkmark bullets. - Vague hero title ("unleash your potential"): state what the product does. - Fake testimonials, fake visitor or client counters, invented numbers. Never, in any context. - Inter, Geist or Space Grotesk as the default font: propose an alternative and justify it. Existing brand identities keep their fonts. ## Write-time reflexes (stack-agnostic, from ui-skills) - Full height: `100dvh`, never `100vh`; fixed elements respect `safe-area-inset`. Never block paste in inputs. - Numbers: `tabular-nums`. Headings `text-wrap: balance`, body `pretty`. Long labels: truncate or line-clamp, never overflow. - One z-index scale from tokens, no arbitrary values. - Motion: transform and opacity only; feedback under 200 ms, ease-out on entrances, never from scale(0); `will-change` only during an active animation; pause loops off-screen; honor `prefers-reduced-motion`. - Touch targets 44 px minimum; visible `:focus-visible` ring; status never by color alone, add text or an icon. - Errors next to the field; empty state = one clear action; destructive action confirmed first. - One accent color per view; solid modal backdrop, no full-screen blur. ## Before declaring a public site done Check: custom 404 · call to action in the first viewport · per-page title + description · share/OG image · favicons · robots.txt · sitemap · alt text on images · layout tested at 375 px · loading states · form error messages · confirmation page · real legal mentions · cookie banner with a working refuse option · audience measurement · contact address · compressed images. Report the missing items to the user instead of inventing them. Internal tools and dashboards: only the relevant items apply. Deep audits stay with /seo, /harden, /web-validate.