themx
← Back to themes

Duotone

bold Visual effect

Map image shadows and highlights to two distinct ink colors

Reference year: 2026

Compare this theme

Best for

Brand & events, Portfolio, Editorial, Games & entertainment

Less suitable for

  • Product images, charts, and instructional images where original colors need to remain accurate.

Live component preview

Try the sample controls. daisyUI uses compiled library classes; shadcn/ui uses React components from the New York registry. The three example layouts demonstrate styling with the selected tokens. All content is demo data.

Duotone preview

Color Palette

Primary #6622CC
Secondary #28104E
Accent #F6D86B
Background #FFF9E9
Text #28104E

Typography

Heading: Space Grotesk
Body: Inter

Key Characteristics

  • Image shadows mapped to deep violet and highlights to warm yellow
  • Smooth tonal interpolation between two ink colors
  • Large treated image areas with crisp unfiltered text
  • Clean surfaces without print grain or registration offsets

Tags

duotone two-colors image photography contrast

Duotone converts an image to grayscale and maps its shadows and highlights to two colors. The preview shows the original illustration beside a violet-and-yellow version. The treatment changes image colors, not just the surrounding interface palette.

Image Treatment

The first ink defines shadows and the second defines highlights. Intermediate tones interpolate between them. Export the SVG filter definition and add it once to the target page. Apply filter: var(--tx-media-filter) only to images and illustrations. JSON export includes the ink settings and the same SVG definition.

Layout and Interaction

Use the treatment consistently across selected image blocks. Keep text, controls, and informative charts unfiltered. Retain original colors when they matter for product choice or understanding instructions. Duotone has no grain or registration offset.

Combining Themes

Select Duotone as a visual effect layer to retain the base typography and layout. Color modes change interface colors while retaining the selected image ink mapping.

Export style

Choose a library mapping or use the CSS variables in your own components. JSON includes the same mapping. Load the listed fonts separately.

For image treatment, add the exported SVG filter definition once to your page and apply filter: var(--tx-media-filter) to images only. JSON includes the same filter definition.

:root {
  --tx-surface-bg: #FFF9E9;
  --tx-font-heading: "Space Grotesk", sans-serif;
  --tx-font-body: "Inter", sans-serif;
  --tx-surface-bg-image: none;
  --tx-card-bg: #FFFFFF;
  --tx-card-border: #9C88B8;
  --tx-card-border-width: 1px;
  --tx-card-radius: 0.75rem;
  --tx-card-shadow: none;
  --tx-card-backdrop-blur: 0px;
  --tx-card-border-hover: #6622CC;
  --tx-card-shadow-hover: 0 6px 20px rgba(40,16,78,0.1);
  --tx-font-heading-weight: 700;
  --tx-font-body-weight: 400;
  --tx-text-muted: #67557B;
  --tx-text-subtle: #786785;
  --tx-link-color: #6622CC;
  --tx-button-radius: 0.5rem;
  --tx-input-bg: #FFFFFF;
  --tx-input-border: #8A71A8;
  --tx-text: #28104E;
  --tx-primary: #6622CC;
  --tx-secondary: #28104E;
  --tx-accent: #F6D86B;
  --tx-media-filter: url("#tx-media-effect");
  --tx-media-ink-1: #28104E;
  --tx-media-ink-2: #F6D86B;
}

Prompt Builder

Choose your project, UI library, and output. Prompts, documents, and exports use the same resolved theme values.

Example projects:

Use your own components with the exported CSS variables.

Components

Changing the page purpose selects suggested components. You can adjust them below.

Optional design layers

Apply a layout, then a surface effect, then a color mode. Fonts stay with the base theme. The output contains one final token set.

Duotone

Live component preview

Try the sample controls. daisyUI uses compiled library classes; shadcn/ui uses React components from the New York registry. The three example layouts demonstrate styling with the selected tokens. All content is demo data.

Optional skills

Include skill references and installation instructions for your coding agent. Selecting a skill here does not install it.

Choose daisyUI or shadcn/ui to include its official skill.

Copy this prompt into your coding assistant. The task mode applies to the UI prompt.

Generated prompt

You are building a web application using Next.js with Tailwind.
Read existing project instructions and reuse installed components where available.

## Project
Project brief: Not specified
Target users: Not specified
Page purpose: Brand & events
Framework: Next.js
CSS approach: Tailwind
UI library: Custom / no library
Tone: Professional

## Visual direction
Base theme: Duotone (visual-effect)
- Image shadows mapped to deep violet and highlights to warm yellow
- Smooth tonal interpolation between two ink colors
- Large treated image areas with crisp unfiltered text
- Clean surfaces without print grain or registration offsets

## Resolved style
Use this final token set. It already includes the selected layers. These values take precedence over conflicting base characteristics.
Color palette: primary #6622CC, secondary #28104E, accent #F6D86B, background #FFF9E9, text #28104E
Typography: Space Grotesk for headings, Inter for body text
Load the declared fonts with the required weights. Use system fallbacks when a font is unavailable.
```css
:root {
  --tx-surface-bg: #FFF9E9;
  --tx-font-heading: "Space Grotesk", sans-serif;
  --tx-font-body: "Inter", sans-serif;
  --tx-surface-bg-image: none;
  --tx-card-bg: #FFFFFF;
  --tx-card-border: #9C88B8;
  --tx-card-border-width: 1px;
  --tx-card-radius: 0.75rem;
  --tx-card-shadow: none;
  --tx-card-backdrop-blur: 0px;
  --tx-card-border-hover: #6622CC;
  --tx-card-shadow-hover: 0 6px 20px rgba(40,16,78,0.1);
  --tx-font-heading-weight: 700;
  --tx-font-body-weight: 400;
  --tx-text-muted: #67557B;
  --tx-text-subtle: #786785;
  --tx-link-color: #6622CC;
  --tx-button-radius: 0.5rem;
  --tx-input-bg: #FFFFFF;
  --tx-input-border: #8A71A8;
  --tx-text: #28104E;
  --tx-primary: #6622CC;
  --tx-secondary: #28104E;
  --tx-accent: #F6D86B;
  --tx-media-filter: url("#tx-media-effect");
  --tx-media-ink-1: #28104E;
  --tx-media-ink-2: #F6D86B;
}
```
Use the CSS variables in your own components. Apply the heading and body font variables to their respective elements.

## Layout
- Use large image blocks with a consistent two-color treatment and a clear text hierarchy.
- Map dark image tones to the first ink and light tones to the second. Keep text and controls outside the image filter.

## Interaction
- Keep the image treatment stable on hover. Preserve clear focus outlines and readable control states.

## Suitability notes
Use these limitations to assess the chosen page purpose. Explain any mismatch before applying an unsuitable treatment.
- Duotone: Product images, charts, and instructional images where original colors need to remain accurate.

## Image treatment
Image treatment: duotone. Use ink colors #28104E and #F6D86B.
Add this SVG filter definition once. Apply filter: var(--tx-media-filter) to images and illustrations only. Keep text and controls unfiltered.
```svg
<svg xmlns="http://www.w3.org/2000/svg" width="0" height="0" aria-hidden="true"><defs><filter id="tx-media-effect" x="-5%" y="-5%" width="110%" height="110%" color-interpolation-filters="sRGB"><feColorMatrix in="SourceGraphic" type="saturate" values="0" result="gray"/><feComponentTransfer in="gray"><feFuncR type="table" tableValues="0.1568627450980392 0.9647058823529412"/><feFuncG type="table" tableValues="0.06274509803921569 0.8470588235294118"/><feFuncB type="table" tableValues="0.3058823529411765 0.4196078431372549"/></feComponentTransfer></filter></defs></svg>
```

## Components
Generate the following components in this style:
- Hero
- Navbar
- Cards
- Footer

## Quality requirements
Choose section order and visual emphasis from the real content and page purpose. Add only sections needed for the task.
Use supplied content. Label sample data. Do not invent testimonials, customer logos, statistics, or compliance claims.
Every interactive control must perform its declared action or be clearly labeled as a demo.
Include loading, empty, error, success, disabled, and focus states where applicable.
Use semantic HTML, visible keyboard focus, readable text contrast, and labeled form fields.
Ensure responsive design (mobile-first). Preserve reading order and avoid horizontal page overflow.
Respect prefers-reduced-motion. Keep essential content visible when animations are disabled.

## Verification
Check representative desktop and mobile widths, keyboard interaction, and relevant component states. Run available project checks and report what was actually verified.
Use Tailwind utility classes with the declared tokens.
Product context is incomplete. Label assumptions and treat the result as a draft until the missing context is supplied.