Best For
glitch art / glitch effect / RGB split
An avant-garde cyberpunk aesthetic that embraces digital errors, severe chromatic aberration, and jarring screen-tearing effects.
Best For
glitch art / glitch effect / RGB split
Primary Move
Use monospace fonts exclusively for a terminal/code feel.
Watch Out
Never use border-radius; all corners must be perfectly sharp.
AI Implementation
Use the Hard Prompt by default to generate UI. Use the Design Spec to understand, modify, and review the style. Use the Creative Brief for early exploration.
Use this by default: copy it, append the concrete requirement, and let AI generate consistent production UI.
When to use
How to use
STYLEKIT_STYLE_REFERENCE
style_name: Glitch Art
style_slug: glitch-art
style_source: /styles/glitch-art
# Hard Prompt
## When To Use
Use this when you want AI to generate code with strict style consistency. It is the safest default for production UI.
## How To Use
- Copy the full prompt into ChatGPT, Claude, Cursor, or another coding assistant.
- Append the concrete product/page requirement after the prompt.
- After generation, check the forbidden rules and interaction states before accepting the output.
Strictly follow the style rules below and maintain consistency. No style drift allowed.
## Requirements
- Prioritize style consistency first, then creative extension.
- When conflicts arise, treat prohibitions as the highest priority.
- Self-check before output: verify colors, typography, spacing, and interactions still match this style.
## Style Rules
You are a Glitch Art design style frontend development expert. All generated code must strictly follow these constraints.
## Language
- All UI copy, button text, labels, placeholders, and aria-labels in Chinese
- Code comments in Chinese
- Variable names and classNames remain in English
## Color System
Palette is strictly CMY + black/white -- no other decorative colors allowed:
- Cyan #00ffff: primary accent, text, links, focus borders
- Magenta #ff00ff: secondary accent, labels, error states, left-border markers
- Yellow #ffff00: tertiary accent, warnings, highlights, hover jump color
- Red #ff0000: danger/urgent status indicators only
- Black #0a0a0a: all backgrounds, no other dark shades
- White #ffffff: body text at low opacity (text-white/40 ~ text-white/70)
- Gray #333333: dividers, disabled state, placeholders
## Typography
- Monospace only: font-mono everywhere, never font-sans / font-serif
- Headings: font-black uppercase tracking-widest or tracking-[0.2em], text-2xl ~ text-8xl
- Body: text-sm leading-relaxed, color text-white/40 or text-[#a0a0a0]
- Labels/status: text-xs font-bold uppercase tracking-wider
- Line height: headings leading-tight (1.1), body leading-relaxed (1.5)
## Layout & Spacing
- Container: max-w-7xl mx-auto px-6 md:px-12
- Section vertical spacing: py-12 md:py-16, separated by border-b border-[#333333]
- Card padding: p-6 ~ p-8
- Element spacing: space-y-3 ~ space-y-4 (lists), gap-4 ~ gap-8 (grids)
- Grid layout: grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6
## Core Visual Techniques
1. RGB channel split (mandatory):
- Default: [text-shadow:3px_0_#ff00ff,-3px_0_#00ffff]
- Hover amplified: [text-shadow:6px_0_#ff00ff,-6px_0_#00ffff]
- Apply to all headings and interactive elements
2. Scanline texture overlay:
- bg-[repeating-linear-gradient(0deg,transparent,transparent_2px,rgba(0,255,255,0.03)_2px,rgba(0,255,255,0.03)_4px)]
- As absolute inset-0 pseudo-layer, pointer-events-none
3. Solid-block offset shadows (replace all standard shadows):
- Buttons: shadow-[4px_4px_0_#ff00ff], hover invert shadow-[-4px_-4px_0_#ffff00]
- Focus: shadow-[4px_4px_0_#ff00ff,-4px_-4px_0_#00ffff]
- Never use shadow-sm / shadow-md / shadow-lg
4. Left-border markers (cards):
- border-l-4 ~ border-l-8 border-[#ff00ff]
- Hover swap: hover:border-[#00ffff]
5. Horizontal displacement bands: full-width color bars crossing elements
6. Data corruption blocks: scattered semi-transparent color rectangles
## Interaction Rules
- All state changes use transition-none to simulate frame drops, no smooth transitions
- Hover trio:
1. Rapid foreground/background inversion (e.g., hover:bg-[#00ffff] hover:text-[#0a0a0a])
2. RGB offset amplified to 6px
3. Micro-shift hover:translate-x-1 or hover:-translate-x-1
- Active tear: active:skew-x-[-15deg] active:scale-y-90 active:shadow-none
- Focus: focus:border-[#00ffff] + solid-block offset shadow, focus:outline-none
## Responsive Design
- Heading size progression: text-2xl md:text-4xl lg:text-6xl
- Layout breakpoint switch: flex-col md:flex-row
- Spacing progression: px-6 md:px-12, py-8 md:py-16
- Hero minimum height: min-h-[60vh]
## Component Pattern Quick Reference
- Button: bg-[#0a0a0a] border-2 border-[#00ffff] + solid-block shadow + transition-none + active tear
- Card: bg-[#0a0a0a] border-l-8 + scanline pseudo-layer + group hover linkage
- Input: bg-[#0a0a0a] border-2 border-[#333333] + focus cyan border + offset shadow
- Nav: border-b-4 border-[#ff00ff] + hover skew-distorted links
- Status indicator: w-3 h-3 solid color block + hover color swap + animate-ping
## Absolutely Forbidden
- Any rounded corners (rounded-lg/xl/full) -- rounded-none only
- Standard soft shadows (shadow-sm/md/lg) -- solid-block offset shadows only
- Serif or sans-serif fonts -- font-mono exclusively
- Frosted glass (backdrop-blur)
- Smooth transition curves (ease-in-out, spring, duration-300+)
- Any color outside CMY + red + black/white/gray
- Gradient backgrounds (linear-gradient only for scanline textures)
---
# Glitch Art Design System
> An avant-garde cyberpunk aesthetic that embraces digital errors, severe chromatic aberration, and jarring screen-tearing effects.
## Design Philosophy
Perfection is a digital illusion. We find beauty in the broken code, the dropped frames, and the violently unsynchronized pixels.
Core principles:
- RGB channel split: intentionally offset CMY channels to produce chromatic aberration shadows
- Horizontal displacement bands: clip-path random slicing to create horizontal misalignment
- Scanline texture: CRT-style horizontal scanline overlay
- VHS tracking errors: simulated tape-tracking error lines
- Data corruption blocks: scattered semi-transparent color blocks simulating data loss
---
## Token Dictionary (exact class mapping)
### Border
```
Width: border
Color: border-[#00ffff]/20
Radius: rounded-none
```
### Shadow
```
sm: shadow-[2px_0_#ff00ff,-2px_0_#ffff00]
md: shadow-[3px_0_#ff00ff,-3px_0_#ffff00]
lg: shadow-[6px_0_#ff00ff,-6px_0_#ffff00]
hover: hover:shadow-[6px_0_#ff00ff,-6px_0_#ffff00]
focus: focus:shadow-[0_0_10px_#00ffff30,3px_0_#ff00ff20,-3px_0_#ffff0020]
```
### Interaction
```
Hover translate: hover:translate-x-[1px] hover:translate-y-[1px]
Hover scale: (none)
Hover opacity: (none)
Transition: transition-all duration-100 ease-in-out
Active: active:translate-x-[1px] active:translate-y-[1px]
```
### Typefaces
```
Heading: font-mono font-bold uppercase tracking-widest
Body: font-mono
Mono: font-mono
```
### Type scale
```
Hero: text-6xl md:text-8xl lg:text-9xl
H1: text-3xl md:text-5xl
H2: text-2xl md:text-4xl
H3: text-lg md:text-xl
Body: text-sm md:text-base
Small: text-xs md:text-sm
```
### Spacing
```
Section: py-12 md:py-20 lg:py-28
Container: px-4 md:px-8 lg:px-12
Card: p-5 md:p-8
Gap sm: gap-1 md:gap-2
Gap md: gap-2 md:gap-4
Gap lg: gap-4 md:gap-6
```
### Color roles
```
Background primary: bg-[#0a0a0a]
Background secondary: bg-[#111111]
Background accent: bg-[#00ffff], bg-[#ff00ff], bg-[#ffff00]
Text primary: text-[#00ffff]
Text secondary: text-[#ff00ff]
Text muted: text-[#ffffff]/25
Button primary: bg-[#00ffff] text-[#0a0a0a] shadow-[3px_0_#ff00ff,-3px_0_#ffff00]
Button secondary: bg-[#0a0a0a] text-[#00ffff] border-[#00ffff] shadow-[3px_0_#ff00ff,-3px_0_#ffff00]
```
---
## [FORBIDDEN]
These classes are banned in this style. Check for them before returning code:
### Banned classes
- `rounded-lg`
- `rounded-xl`
- `rounded-2xl`
- `rounded-full`
- `shadow-sm`
- `shadow-md`
- `shadow-lg`
- `shadow-xl`
- `font-serif`
- `font-sans`
- `bg-pink-50`
- `bg-pink-100`
- `bg-rose-50`
- `text-pink-400`
- `text-rose-400`
- `backdrop-blur-md`
- `backdrop-blur-sm`
### Banned patterns
- matches `^rounded-(?:lg|xl|2xl|full)$`
- matches `^shadow-(?:sm|md|lg|xl)$`
- matches `^font-(?:serif|sans)$`
- matches `^bg-(?:pink|rose)-`
- matches `^text-(?:green|brown|amber)-`
- matches `^backdrop-blur-`
### Why they are banned
- `rounded-lg`: Glitch Art uses sharp edges (rounded-none only) for digital corruption aesthetic
- `shadow-sm`: Glitch Art uses RGB split shadows only, not soft box shadows
- `font-serif`: Glitch Art uses monospace fonts exclusively for terminal aesthetic
- `font-sans`: Glitch Art uses monospace fonts exclusively for terminal aesthetic
- `bg-pink-50`: Glitch Art uses pure black backgrounds with neon CMY accents only
- `backdrop-blur-md`: Glitch Art avoids frosted glass effects; uses scan lines and noise instead
> WARNING: if your code contains any of the above, replace it before shipping.
---
## [REQUIRED]
### Every button must include
```
rounded-none
font-mono font-bold uppercase tracking-widest
shadow-[3px_0_#ff00ff,-3px_0_#ffff00]
transition-all duration-100 ease-in-out
```
### Every card must include
```
rounded-none
bg-[#0a0a0a]
border border-[#00ffff]/20
```
### Every input must include
```
rounded-none
border border-[#00ffff]/30
bg-[#0a0a0a]
font-mono
text-[#00ffff]
focus:outline-none
```
---
## [COMPARE] Glitch Art wrong vs right
The wrong examples below stand for generic library defaults that were never adapted to this style. Do not read them as visual suggestions.
### Button
[WRONG] **Wrong** (generic component library default, do not copy):
```html
<button class="{GENERIC_LIBRARY_BUTTON_DEFAULT}">
Click me
</button>
```
[CORRECT] **Right** (uses this style's tokens):
```html
<button class="rounded-none font-mono font-bold uppercase tracking-widest shadow-[3px_0_#ff00ff,-3px_0_#ffff00] transition-all duration-100 ease-in-out bg-[#00ffff] text-[#0a0a0a] shadow-[3px_0_#ff00ff,-3px_0_#ffff00]">
Click me
</button>
```
### Card
[WRONG] **Wrong** (generic card, not adapted to this style):
```html
<div class="{GENERIC_LIBRARY_CARD_DEFAULT}">
<h3>{TITLE}</h3>
</div>
```
[CORRECT] **Right** (uses this style's card tokens):
```html
<div class="rounded-none bg-[#0a0a0a] border border-[#00ffff]/20 p-5 md:p-8">
<h3 class="font-mono font-bold uppercase tracking-widest text-lg md:text-xl">{TITLE}</h3>
</div>
```
### Input
[WRONG] **Wrong** (generic input, not adapted to this style):
```html
<input class="{GENERIC_LIBRARY_INPUT_DEFAULT}" />
```
[CORRECT] **Right** (uses this style's input tokens):
```html
<input class="rounded-none border border-[#00ffff]/30 bg-[#0a0a0a] font-mono text-[#00ffff] focus:outline-none" placeholder="{PLACEHOLDER}" />
```
---
## [TEMPLATES] Glitch Art page skeletons
These skeletons use this style's tokens only. Replace `{PLACEHOLDER}` values, but keep every token in place:
### Navigation
```html
<nav class="bg-[#0a0a0a] text-[#00ffff] border border-[#00ffff]/20 px-4 md:px-8 lg:px-12">
<div class="flex items-center justify-between max-w-6xl mx-auto gap-2 md:gap-4">
<a href="/" class="font-mono font-bold uppercase tracking-widest text-lg md:text-xl">
{LOGO_TEXT}
</a>
<div class="flex gap-2 md:gap-4 font-mono text-xs md:text-sm">
{NAV_LINKS}
</div>
</div>
</nav>
```
### Hero section
```html
<section class="bg-[#00ffff] text-[#00ffff] py-12 md:py-20 lg:py-28 px-4 md:px-8 lg:px-12">
<div class="max-w-4xl mx-auto">
<h1 class="font-mono font-bold uppercase tracking-widest text-6xl md:text-8xl lg:text-9xl">
{HEADLINE}
</h1>
<p class="font-mono text-sm md:text-base max-w-xl">
{SUBHEADLINE}
</p>
<button class="rounded-none font-mono font-bold uppercase tracking-widest shadow-[3px_0_#ff00ff,-3px_0_#ffff00] transition-all duration-100 ease-in-out bg-[#00ffff] text-[#0a0a0a] shadow-[3px_0_#ff00ff,-3px_0_#ffff00]">
{CTA_TEXT}
</button>
</div>
</section>
```
### Card grid
```html
<section class="bg-[#0a0a0a] text-[#00ffff] py-12 md:py-20 lg:py-28 px-4 md:px-8 lg:px-12">
<div class="max-w-6xl mx-auto">
<h2 class="font-mono font-bold uppercase tracking-widest text-2xl md:text-4xl">{SECTION_TITLE}</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2 md:gap-4">
<!-- Card template - repeat for each card -->
<div class="rounded-none bg-[#0a0a0a] border border-[#00ffff]/20 p-5 md:p-8">
<h3 class="font-mono font-bold uppercase tracking-widest text-lg md:text-xl">{CARD_TITLE}</h3>
<p class="font-mono text-sm md:text-base text-[#ffffff]/25">{CARD_DESCRIPTION}</p>
</div>
</div>
</div>
</section>
```
### Form input
```html
<input class="rounded-none border border-[#00ffff]/30 bg-[#0a0a0a] font-mono text-[#00ffff] focus:outline-none" placeholder="{PLACEHOLDER}" />
```
### Footer
```html
<footer class="bg-[#111111] text-[#ff00ff] py-12 md:py-20 lg:py-28 px-4 md:px-8 lg:px-12">
<div class="max-w-6xl mx-auto">
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 md:gap-6">
<div>
<span class="font-mono font-bold uppercase tracking-widest text-lg md:text-xl">{LOGO_TEXT}</span>
<p class="font-mono text-xs md:text-sm">{TAGLINE}</p>
</div>
<div>
<h4 class="font-mono font-bold uppercase tracking-widest text-lg md:text-xl">{COLUMN_TITLE}</h4>
<ul class="font-mono text-xs md:text-sm">
{FOOTER_LINKS}
</ul>
</div>
</div>
</div>
</footer>
```
---
## [CHECKLIST] Glitch Art post-generation self check
**Before returning code, verify every token and rule below. Fix any violation before delivering:**
### Token check
- [ ] Button includes: `rounded-none font-mono font-bold uppercase tracking-widest shadow-[3px_0_#ff00ff,-3px_0_#ffff00] transition-all duration-100 ease-in-out`
- [ ] Card includes: `rounded-none bg-[#0a0a0a] border border-[#00ffff]/20`
- [ ] Input includes: `rounded-none border border-[#00ffff]/30 bg-[#0a0a0a] font-mono text-[#00ffff] focus:outline-none`
### Forbidden check
- [ ] Not using `rounded-lg`
- [ ] Not using `rounded-xl`
- [ ] Not using `rounded-2xl`
- [ ] Not using `rounded-full`
- [ ] Not using `shadow-sm`
- [ ] Not using `shadow-md`
- [ ] Not using `shadow-lg`
- [ ] Not using `shadow-xl`
### Style rule check
- [ ] Use monospace fonts exclusively for a terminal/code feel.
- [ ] Apply arbitrary Tailwind text-shadows (e.g., [text-shadow:3px_0_#ff00ff,-3px_0_#00ffff]) to simulate RGB color splitting.
- [ ] Use transition-none for all state changes to create jarring, broken effects.
- [ ] Mark cards with thick left borders (border-l-4 to border-l-8), swap border color on hover.
- [ ] Use skew-x + scale-y on button :active state to simulate screen tearing.
### Style drift check
- [ ] Does not violate: Never use border-radius; all corners must be perfectly sharp.
- [ ] Does not violate: Avoid smooth transitions (duration-*, ease-in-out); animation should feel like dropped frames.
- [ ] Does not violate: Do not use soft, blurred shadows (shadow-sm/md/lg); all shadows must be solid blocks of color.
- [ ] Does not violate: Do not use frosted glass (backdrop-blur) or soft gradient backgrounds.
- [ ] Does not violate: Do not use decorative colors outside CMY (no pastels, earth tones, or warm hues).
### Delivery check
- [ ] Responsive layout holds on phone, tablet and desktop with no horizontal overflow
- [ ] Every interactive element has a visible focus state, an accessible name and a reduced-motion path
- [ ] Text contrast meets WCAG AA and colour alone never carries state
- [ ] The result is still recognizable at a glance as Glitch Art
## Absolute Bans (Match and Refuse)
If any of the following patterns appear, it is a style violation — rewrite without exception.
- use border-radius; all corners must be perfectly sharp.
- smooth transitions (duration-*, ease-in-out); animation should feel like dropped frames.
- use soft, blurred shadows (shadow-sm/md/lg); all shadows must be solid blocks of color.
- use frosted glass (backdrop-blur) or soft gradient backgrounds.
- use decorative colors outside CMY (no pastels, earth tones, or warm hues).
- use serif or sans-serif fonts; only monospace is allowed.
## Self-Check (Verify Before Shipping)
If any item fails, the style has drifted — fix before shipping.
- [ ] No purple-to-blue gradients
- [ ] No overused fonts (Inter, Roboto, Geist, Fraunces, Plus Jakarta Sans)
- [ ] No nested cards (cards inside cards)
- [ ] No gray text on colored backgrounds
- [ ] Body text contrast meets WCAG AA (>= 4.5:1)
- [ ] No bounce or elastic easing curves
- [ ] Animations have a prefers-reduced-motion fallback
- [ ] Body text line length capped at 65-75 characters
- [ ] No side-stripe accent borders (border-left/right > 1px)
- [ ] No gradient text (background-clip: text)
- [ ] No glassmorphism used as the default surface treatment
- [ ] No tiny uppercase tracked eyebrow labels above every section heading
- [ ] never use border-radius; all corners must be perfectly sharp.
- [ ] avoid smooth transitions (duration-*, ease-in-out); animation should feel like dropped frames.
- [ ] do not use soft, blurred shadows (shadow-sm/md/lg); all shadows must be solid blocks of color.
- [ ] do not use frosted glass (backdrop-blur) or soft gradient backgrounds.
- [ ] do not use decorative colors outside CMY (no pastels, earth tones, or warm hues).More prompt libraries: All UI Prompts · Tailwind UI Prompts · Dark Mode UI Prompts
Component Templates
故障风格按钮,带RGB通道分离阴影和撕裂 active 效果
Frontend Readiness
This layer tracks whether the style is ready for real websites: theme modes, state feedback, keyboard access, and performance constraints.
Overall
51%
Fallback
Dark Mode
0%
MissingUI States
79%
PartialMotion
70%
PartialA11y
70%
PartialPerformance
35%
FallbackButton
Default / Hover / Focus Visible / Active / Disabled
Input
Default / Hover / Focus Visible / Disabled / Error
Card
Default / Hover / Focus Visible / Loading / Skeleton
Form
Default / Focus Visible / Disabled / Loading / Error
FAQ
/* Glitch Art Global Styles */
:root {
--glitch-cyan: #00ffff;
--glitch-magenta: #ff00ff;
--glitch-yellow: #ffff00;
--glitch-black: #0a0a0a;
--glitch-white: #ffffff;
}
/* Scan line overlay */
.glitch-scanlines::after {
content: "";
position: absolute;
inset: 0;
background: repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(0, 255, 255, 0.03) 2px,
rgba(0, 255, 255, 0.03) 4px
);
pointer-events: none;
}
/* RGB split text effect using data-text attribute */
.glitch-rgb {
position: relative;
}
.glitch-rgb::before {
content: attr(data-text);
position: absolute;
top: 3px;
left: 5px;
color: var(--glitch-magenta);
opacity: 0.5;
clip-path: inset(0 0 50% 0);
}
.glitch-rgb::after {
content: attr(data-text);
position: absolute;
top: -3px;
left: -5px;
color: var(--glitch-yellow);
opacity: 0.3;
clip-path: inset(50% 0 0 0);
}
/* Horizontal displacement band */
.glitch-displace {
position: relative;
}
.glitch-displace::after {
content: "";
position: absolute;
left: -10px;
right: -10px;
top: 50%;
height: 3px;
background: var(--glitch-magenta);
opacity: 0.2;
transform: translateY(-50%);
pointer-events: none;
}
/* VHS tracking error */
.glitch-vhs::before {
content: "";
position: absolute;
left: 0;
right: 0;
height: 2px;
background: linear-gradient(90deg, transparent 20%, rgba(0, 255, 255, 0.08) 40%, rgba(255, 0, 255, 0.06) 60%, transparent 80%);
pointer-events: none;
}
/* Noise texture */
.glitch-noise::before {
content: "";
position: absolute;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.05'/%3E%3C/svg%3E");
pointer-events: none;
}IDE Integration
Download configuration files for AI coding assistants to generate code in this style.
Style Pack
Get complete machine-readable style assets including design tokens, Tailwind presets, CSS variables, and shadcn/ui themes.
Metadata
Style metadata including version information
Design Tokens
Compatible with Figma / Style Dictionary / Tokens Studio
Tailwind Preset
Tailwind CSS theme preset, import directly in config
Global CSS
CSS variables and base styles
shadcn Theme
shadcn/ui theme configuration
CSS Variables
Pure CSS variables, works with any project
SKILL.md
Loadable skill pack for Cursor / Claude Code / VS Code
Perfection is a digital illusion. We find beauty in the broken code, the dropped frames, and the violently unsynchronized pixels.
WCAG 2.1 compliance analysis based on color contrast and typography readability.
Overall Score
Grade: C - Fair
Contrast Ratios
| Context | Colors | Ratio | AA | AAA |
|---|---|---|---|---|
| Text on background | /#00ffff / #0a0a0a | 15.79:1 | ||
| Secondary text on background | /#ff00ff / #0a0a0a | 6.31:1 | ||
| Muted text on background | /#ffffff / #0a0a0a | 19.8:1 | ||
| Text on secondary background | /#00ffff / #111111 | 15.06:1 | ||
| Secondary text on secondary | /#ff00ff / #111111 | 6.02:1 | ||
| Button primary | /#0a0a0a / #00ffff | 15.79:1 | ||
| Text on accent 1 | /#00ffff / #00ffff | 1:1 | ||
| Alt text on accent 1 | /#ff00ff / #00ffff | 2.5:1 | ||
| Text on accent 2 | /#00ffff / #ff00ff | 2.5:1 | ||
| Alt text on accent 2 | /#ff00ff / #ff00ff | 1:1 | ||
| Text on accent 3 | /#00ffff / #ffff00 | 1.17:1 | ||
| Alt text on accent 3 | /#ff00ff / #ffff00 | 2.92:1 |
Readability
Score
82/100
Font Size
text-sm md:text-base
Font Weight
font-mono font-bold uppercase tracking-widest
Line Height
default
Scoring is based on WCAG 2.1 standards. AA requires 4.5:1 contrast for normal text, 3:1 for large text; AAA requires 7:1 for normal text, 4.5:1 for large text.