---
name: features-functions-directives
description: Tailwind's CSS directives (@import, @theme, @utility, @variant) and functions (--alpha, --spacing)
---
# Functions and Directives
Tailwind provides custom CSS directives and functions for working with your design system.
## Directives
Directives are custom Tailwind-specific at-rules that offer special functionality.
### @import
Import CSS files, including Tailwind:
```css
@import "tailwindcss";
```
### @theme
Define your project's design tokens:
```css
@theme {
--font-display: "Satoshi", "sans-serif";
--breakpoint-3xl: 120rem;
--color-brand-500: oklch(0.65 0.2 250);
--ease-fluid: cubic-bezier(0.3, 0, 0, 1);
}
```
### @source
Explicitly specify source files for class detection:
```css
@import "tailwindcss";
@source "../node_modules/@my-company/ui-lib";
```
### @utility
Add custom utilities:
```css
@utility tab-4 {
tab-size: 4;
}
```
Custom utilities work with variants:
```html
Content
```
### @variant
Apply Tailwind variants to styles in your CSS:
```css
.my-element {
background: white;
@variant dark {
background: black;
}
}
```
### @custom-variant
Add custom variants:
```css
@custom-variant theme-midnight (&:where([data-theme="midnight"] *));
```
```html
Content
```
### @apply
Inline existing utility classes into custom CSS:
```css
.select2-dropdown {
@apply rounded-b-lg shadow-md;
}
.select2-search {
@apply rounded border border-gray-300;
}
```
### @reference
Import stylesheet for reference without including styles (useful for Vue/Svelte components):
```html
```
Or reference Tailwind directly:
```html
```
### Subpath Imports
Directives support subpath imports (like TypeScript path aliases):
```json
{
"imports": {
"#app.css": "./src/css/app.css"
}
}
```
```html
```
## Functions
Tailwind provides build-time functions for working with colors and spacing.
### --alpha()
Adjust the opacity of a color:
```css
.my-element {
color: --alpha(var(--color-lime-300) / 50%);
}
```
Compiles to:
```css
.my-element {
color: color-mix(in oklab, var(--color-lime-300) 50%, transparent);
}
```
### --spacing()
Generate spacing values based on your theme:
```css
.my-element {
margin: --spacing(4);
}
```
Compiles to:
```css
.my-element {
margin: calc(var(--spacing) * 4);
}
```
Useful in arbitrary values with `calc()`:
```html
Content
```
## Compatibility Directives
For compatibility with Tailwind CSS v3.x:
### @config
Load a legacy JavaScript-based configuration:
```css
@config "../../tailwind.config.js";
```
### @plugin
Load a legacy JavaScript-based plugin:
```css
@plugin "@tailwindcss/typography";
```
### theme()
Access theme values using dot notation (deprecated):
```css
.my-element {
margin: theme(spacing.12);
}
```
**Note:** Prefer using CSS theme variables instead.
## Key Points
- Directives are Tailwind-specific at-rules
- `@theme` defines design tokens
- `@utility` creates custom utilities
- `@custom-variant` creates custom variants
- `@apply` inlines utilities into CSS
- `--alpha()` and `--spacing()` are build-time functions
- Compatibility directives support v3.x configs