Perfect — here’s your ready-to-reuse Tailwind CSS v3.47 design system package with config and prebuilt component snippets, fully aligned with everything we’ve created so far.
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
"./src/**/*.{html,js}",
"./public/index.html"
],
theme: {
extend: {
colors: {
primary: "#1E3A8A", // Deep Blue
secondary: "#0F172A", // Dark Slate
accent: "#FBBF24", // Amber Accent
muted: "#94A3B8", // Slate Gray
light: "#F8FAFC", // Off White
dark: "#0F172A", // Footer Background
},
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
},
},
plugins: [],
};<!-- Primary -->
<button class="px-5 py-2.5 rounded-lg bg-primary text-white font-semibold hover:bg-primary/90 focus:outline-none focus:ring-2 focus:ring-accent transition">
Primary Button
</button>
<!-- Secondary -->
<button class="px-5 py-2.5 rounded-lg bg-secondary text-white font-semibold hover:bg-secondary/90 focus:outline-none focus:ring-2 focus:ring-accent transition">
Secondary Button
</button>
<!-- Outline -->
<button class="px-5 py-2.5 rounded-lg border border-primary text-primary hover:bg-primary hover:text-white focus:outline-none focus:ring-2 focus:ring-accent transition">
Outline Button
</button><section class="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:px-8">
<!-- Content here -->
</section><div class="bg-white rounded-xl shadow-md p-6 hover:shadow-lg transition">
<h3 class="text-lg font-semibold text-primary mb-2">Card Title</h3>
<p class="text-slate-600">Short description text here.</p>
</div><div class="flex flex-wrap gap-3">
<span class="text-xs font-medium uppercase tracking-wide text-muted">Creator’s Engine Room</span>
<span class="text-xs px-3 py-1 rounded-full bg-slate-800/60 text-slate-200">Digital Mind</span>
<span class="text-xs px-3 py-1 rounded-full bg-slate-800/60 text-slate-200">Video Creation</span>
<span class="text-xs px-3 py-1 rounded-full bg-slate-800/60 text-slate-200">AI Ad Generation</span>
</div>HTML
<div class="accordion border-t border-b divide-y">
<div class="accordion-item">
<button class="accordion-header w-full flex justify-between py-4 text-left font-medium text-primary">
Question
<span class="accordion-icon">+</span>
</button>
<div class="accordion-content overflow-hidden max-h-0 transition-all duration-300 ease-in-out">
<p class="p-4 text-slate-600">Answer text here.</p>
</div>
</div>
</div>JS
document.querySelectorAll(".accordion-header").forEach(header => {
header.addEventListener("click", () => {
const openItem = document.querySelector(".accordion-content.max-h-[999px]");
const currentContent = header.nextElementSibling;
if (openItem && openItem !== currentContent) {
openItem.style.maxHeight = null;
openItem.previousElementSibling.querySelector(".accordion-icon").textContent = "+";
}
if (currentContent.style.maxHeight) {
currentContent.style.maxHeight = null;
header.querySelector(".accordion-icon").textContent = "+";
} else {
currentContent.style.maxHeight = currentContent.scrollHeight + "px";
header.querySelector(".accordion-icon").textContent = "–";
}
});
});Think of the config as your palette & rules, and the snippets as ready-made LEGO pieces.
Example: Making a New CTA Section
<section class="text-center py-12 px-4 sm:px-6 lg:px-8 bg-light">
<h2 class="text-3xl sm:text-4xl font-extrabold tracking-tight text-primary mb-4">
Start Creating Today
</h2>
<p class="text-lg text-slate-600 mb-6">
Our AI tools help you go from idea to finished video in minutes.
</p>
<button class="px-5 py-2.5 rounded-lg bg-primary text-white font-semibold hover:bg-primary/90 focus:outline-none focus:ring-2 focus:ring-accent transition">
Get Started
</button>
</section>- Typography: pulled from heading & body rules
- Colors: consistent with
primaryandlight - Spacing:
py-12 px-4 sm:px-6 lg:px-8matches section pattern - Button: from reusable snippet
If you want, I can also prepare a single HTML boilerplate with this config + components linked, so that spinning up a new page is just a matter of copy-pasting sections. That way you won’t even need to re-import Tailwind or JS manually each time.