Installation

Add dependencies

npm install -D tailwindcss-animate @tailwindcss/container-queries

Update tailwind.config.ts

import containerQueries from '@tailwindcss/container-queries';import typography from '@tailwindcss/typography';import type { Config } from 'tailwindcss';import animate from 'tailwindcss-animate';export default {  content: ['./components/**/*.{ts,tsx}', './app/**/*.{ts,tsx}', './vibes/**/*.{ts,tsx}'],  theme: {    extend: {      typography: {        DEFAULT: {          css: {            h1: {              color: 'hsl(var(--foreground))',              fontFamily: 'var(--font-family-heading)',            },            h2: {              color: 'hsl(var(--foreground))',              fontFamily: 'var(--font-family-heading)',            },            h3: {              color: 'hsl(var(--foreground))',              fontFamily: 'var(--font-family-heading)',            },            h4: {              color: 'hsl(var(--foreground))',              fontFamily: 'var(--font-family-heading)',            },            h5: {              color: 'hsl(var(--foreground))',              fontFamily: 'var(--font-family-heading)',            },            h6: {              color: 'hsl(var(--foreground))',              fontFamily: 'var(--font-family-heading)',            },            p: {              color: 'hsl(var(--foreground))',              fontFamily: 'var(--font-family-body)',            },            a: {              color: 'color-mix(in oklab, hsl(var(--primary)), black 15%)',              textDecoration: 'none',              '&:hover': {                textDecoration: 'underline',              },            },            img: {              borderRadius: '1rem',            },            ul: {              color: 'hsl(var(--contrast-500))',              fontFamily: 'var(--font-family-body)',            },            ol: {              color: 'hsl(var(--contrast-500))',              fontFamily: 'var(--font-family-body)',            },            strong: {              fontWeight: '600',            },            blockquote: {              borderLeftColor: 'hsl(var(--contrast-300))',              p: {                color: 'hsl(var(--contrast-500))',                fontStyle: 'normal',                fontWeight: '400',              },            },            code: {              color: 'hsl(var(--contrast-500))',              fontFamily: 'var(--font-family-mono)',            },            pre: {              color: 'hsl(var(--background))',              backgroundColor: 'hsl(var(--foreground))',              fontFamily: 'var(--font-family-mono)',            },          },        },      },      colors: {        primary: {          DEFAULT: 'hsl(var(--primary))',          highlight: 'color-mix(in oklab, hsl(var(--primary)), white 75%)',          shadow: 'color-mix(in oklab, hsl(var(--primary)), black 75%)',        },        accent: {          DEFAULT: 'hsl(var(--accent))',          highlight: 'color-mix(in oklab, hsl(var(--accent)), white 75%)',          shadow: 'color-mix(in oklab, hsl(var(--accent)), black 75%)',        },        success: {          DEFAULT: 'hsl(var(--success))',          highlight: 'color-mix(in oklab, hsl(var(--success)), white 75%)',          shadow: 'color-mix(in oklab, hsl(var(--success)), black 75%)',        },        error: {          DEFAULT: 'hsl(var(--error))',          highlight: 'color-mix(in oklab, hsl(var(--error)), white 75%)',          shadow: 'color-mix(in oklab, hsl(var(--error)), black 75%)',        },        warning: {          DEFAULT: 'hsl(var(--warning))',          highlight: 'color-mix(in oklab, hsl(var(--warning)), white 75%)',          shadow: 'color-mix(in oklab, hsl(var(--warning)), black 75%)',        },        info: {          DEFAULT: 'hsl(var(--info))',          highlight: 'color-mix(in oklab, hsl(var(--info)), white 75%)',          shadow: 'color-mix(in oklab, hsl(var(--info)), black 75%)',        },        background: 'hsl(var(--background))',        foreground: 'hsl(var(--foreground))',        contrast: {          100: 'hsl(var(--contrast-100))',          200: 'hsl(var(--contrast-200))',          300: 'hsl(var(--contrast-300))',          400: 'hsl(var(--contrast-400))',          500: 'hsl(var(--contrast-500))',        },      },      fontFamily: {        heading: [          'var(--font-family-heading)',          {            fontFeatureSettings: 'var(--font-feature-settings-heading)',            fontVariationSettings: 'var(--font-variation-settings-heading)',          },        ],        body: [          'var(--font-family-body)',          {            fontFeatureSettings: 'var(--font-feature-settings-body)',            fontVariationSettings: 'var(--font-variation-settings-body)',          },        ],        mono: [          'var(--font-family-mono)',          {            fontFeatureSettings: 'var(--font-feature-settings-mono)',            fontVariationSettings: 'var(--font-variation-settings-mono)',          },        ],      },      fontSize: {        xs: 'var(--font-size-xs, 0.75rem)',        sm: 'var(--font-size-sm, 0.875rem)',        base: 'var(--font-size-base, 1rem)',        lg: 'var(--font-size-lg, 1.125rem)',        xl: 'var(--font-size-xl, 1.25rem)',        '2xl': 'var(--font-size-2xl, 1.5rem)',        '3xl': 'var(--font-size-3xl, 1.875rem)',        '4xl': 'var(--font-size-4xl, 2.25rem)',        '5xl': 'var(--font-size-5xl, 3rem)',        '6xl': 'var(--font-size-6xl, 3.75rem)',        '7xl': 'var(--font-size-7xl, 4.5rem)',        '8xl': 'var(--font-size-8xl, 6rem)',        '9xl': 'var(--font-size-9xl, 8rem)',      },      shadows: {        sm: 'var(--shadow-sm)',        DEFAULT: 'var(--shadow-base)',        md: 'var(--shadow-md)',        lg: 'var(--shadow-lg)',        xl: 'var(--shadow-xl)',      },      keyframes: {        collapse: {          from: { height: 'var(--radix-accordion-content-height)' },          to: { height: '0' },        },        expand: {          from: { height: '0' },          to: { height: 'var(--radix-accordion-content-height)' },        },        'marching-ants': {          to: {            'background-position':              '0 0, 0 -1px, calc(100% + 1px) 0, 100% calc(100% + 1px), -1px 100%',          },        },        rotateFade: {          from: { opacity: '1', transform: 'rotateZ(0deg) translate3d(-50%,-50%,0)' },          '35%': { opacity: '0' },          '70%': { opacity: '0' },          to: { opacity: '1', transform: 'rotateZ(360deg) translate3d(-50%,-50%,0)' },        },        rotate: {          from: {            transform: 'rotateZ(0deg) translate3d(-50%,-50%,0)',          },          to: {            transform: 'rotateZ(360deg) translate3d(-50%,-50%,0)',          },        },        scroll: {          to: { backgroundPosition: '5px 0' },        },        dotScrollSmall: {          to: { backgroundPosition: '-6px -6px, -12px -12px' },        },        dotScrollLarge: {          to: { backgroundPosition: '-8px -8px, -16px -16px' },        },        scrollLeft: {          '0%': { transform: 'translateX(0)' },          '100%': { transform: 'translateX(-100%)' },        },        shake: {          '10%, 90%': { transform: 'translate3d(-1px, 0, 0)' },          '20%, 80%': { transform: 'translate3d(1px, 0, 0)' },          '30%, 50%, 70%': { transform: 'translate3d(-2px, 0, 0)' },          '40%, 60%': { transform: 'translate3d(2px, 0, 0)' },        },        slideIn: {          '0%': { transform: 'translateX(-100%)' },          '100%': { transform: 'translateX(0%)' },        },      },      animation: {        collapse: 'collapse 400ms cubic-bezier(1, 0, 0.25, 1)',        expand: 'expand 400ms cubic-bezier(1, 0, 0.25, 1)',        marching: 'marching-ants 10s linear infinite',        rotate: 'rotate 2000ms linear infinite',        scroll: 'scroll 200ms infinite linear both',        scrollLeft: 'scrollLeft var(--marquee-duration) linear infinite',        shake: 'shake 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97) both',        slideIn: 'slideIn 800ms cubic-bezier(0.25, 1, 0, 1)',      },    },  },  plugins: [animate, containerQueries, typography],} satisfies Config;

Add style variables

Follow the electric, warm, or luxury installation instructions.