# Custom Theme Protocol Tuned vs. Bespoke Depth: When to Use Each in Hallmark

> Learn when to use tuned vs bespoke depth for custom themes in Hallmark. Discover how to optimize color, fonts, and layouts efficiently. Enhance your development workflow today.

- Repository: [Hassan El Mghari/hallmark](https://github.com/Nutlope/hallmark)
- Tags: best-practices
- Published: 2026-08-13

---

**Use tuned depth for custom color and font combinations within Hallmark's existing structures; choose bespoke depth only when the brief demands an entirely new page layout or composition from scratch.**

The **Custom Theme protocol** in [Nutlope/hallmark](https://github.com/Nutlope/hallmark) offers two distinct depths for generating non-catalog themes. Both produce a one-off OKLCH palette paired with free fonts, but they differ fundamentally in how much of Hallmark's design system they preserve. Understanding this distinction ensures you invoke the right depth for your brief and avoid unnecessary structural rework.

---

## Tuned Depth: Custom aesthetics, preserved structures

**Tuned depth** generates a **unique palette and font pairing** while keeping Hallmark's existing macro-structures, archetypes, and genre defaults intact. In [`skills/hallmark/references/custom-theme.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/references/custom-theme.md), this is the default path once a user confirms "custom" and no structural override is detected.

### What tuned depth changes

- **Color**: One-off OKLCH palette constructed from brief signals (anchor colors, mood words, or attached swatches)
- **Typography**: Free-font pairing selected from Hallmark's approved list, never system defaults
- **Structure**: Unchanged—uses existing catalog macro-structures and genre tokens

### When to select tuned depth

- The brief requests a **unique visual feel** (fresh palette, specific accent color, distinctive header style) but **does not describe a new layout**
- Signal 5 in the protocol is **not triggered**—meaning no structural vision is articulated
- The user confirms "tuned" after the assistant offers the custom-theme fork

### Example tuned brief

```text
User: "We need a custom look for our newsletter – something fresh, 
with a teal accent and a handwriting-style header font."

```

Resulting **stamp** (from [`custom-theme.md`](https://github.com/Nutlope/hallmark/blob/main/custom-theme.md) § B):

```css
/* Hallmark · macrostructure: Long Document …
 * theme: custom · vibe: "fresh, teal accent, handwriting header" …
 * axes: light / italic-serif / chromatic-other (teal) */

```

---

## Bespoke Depth: Structural reconstruction from first principles

**Bespoke depth** triggers when the brief contains a **singular structural vision** that Hallmark's catalog cannot satisfy. This path in [`custom-theme.md`](https://github.com/Nutlope/hallmark/blob/main/custom-theme.md) (§ Bespoke depth) **discards all catalog macro-structures, genres, and token defaults**, rebuilding composition from universal constraints only.

### What bespoke depth changes

- **Color**: Custom OKLCH palette (same construction as tuned)
- **Typography**: Free-font pairing (same discipline as tuned)
- **Structure**: **Complete redesign**—no inherited macro-structure, genre, or catalog tokens; only the "slop-test" floor remains

### When to select bespoke depth

- The brief explicitly requests **"no theme," "from scratch," "fully bespoke,"** or **"ignore the catalog"**
- Signal 5 fires: the brief describes a **novel structure or composition** absent from the catalog (e.g., horizontal scrolling, asymmetric grids, experimental navigation)
- The user wants **art-direction** rather than theme variation

### Example bespoke brief

```text
User: "We want a landing page that scrolls horizontally like a timeline, 
with no predefined macro-structure – build it from scratch."

```

Resulting **stamp** (from [`custom-theme.md`](https://github.com/Nutlope/hallmark/blob/main/custom-theme.md) § Bespoke depth):

```css
/* Hallmark · macrostructure: Horizontal-Timeline …
 * theme: custom · vibe: "interactive museum exhibit, horizontal timeline" …
 * axes: dark / display-heavy / chromatic-other (museum-amber) */

```

---

## How the protocol decides: Step 1 trigger signals

The fork to custom theme occurs in **Step 1** of the skill flow (documented in [`skills/hallmark/SKILL.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/SKILL.md)). Five signals can trigger the custom route; **signal 5 alone determines bespoke depth**.

| Signal | Trigger | Depth outcome |
|--------|---------|-------------|
| 1 | Explicit ask for "custom," "tailored," "own palette" | Tuned (default after confirmation) |
| 2 | Named brand/anchor color | Tuned |
| 3 | Three+ vibe words uncovered by catalog | Tuned |
| 4 | Attached color swatch or moodboard | Tuned |
| 5 | **Singular structural vision**—describes layout/composition the catalog lacks | **Bespoke** |

### Quick check for bespoke forcing (pseudocode)

```js
function isBespoke(brief) {
  const structuralKeywords = [
    "no theme", "from scratch", "fully bespoke",
    "ignore the catalog", "art-direct", "unique page-shape"
  ];
  return structuralKeywords.some(k => brief.toLowerCase().includes(k));
}

```

---

## Universal constraints apply regardless of depth

Both tuned and bespoke depths must pass **all slop-test gates** defined in [`skills/hallmark/references/slop-test.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/references/slop-test.md):

- Color contrast and accessibility minimums
- Typography discipline (no banned defaults, proper tone-pairings)
- Chroma caps and paper-band definitions from [`color.md`](https://github.com/Nutlope/hallmark/blob/main/color.md)
- Font-pairing rules from [`typography.md`](https://github.com/Nutlope/hallmark/blob/main/typography.md)

Bespoke depth simply **removes the catalog-derived structure layer** while preserving these universal quality gates.

---

## Key implementation files

| File | Purpose |
|------|---------|
| [`skills/hallmark/references/custom-theme.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/references/custom-theme.md) | Full protocol specification, tuned vs. bespoke definitions (lines 10–13, 50–56) |
| [`skills/hallmark/references/color.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/references/color.md) | OKLCH palette construction, chroma caps, paper-band logic |
| [`skills/hallmark/references/typography.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/references/typography.md) | Free-font pairing rules, banned defaults |
| [`skills/hallmark/references/slop-test.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/references/slop-test.md) | Universal quality gates |
| [`skills/hallmark/SKILL.md`](https://github.com/Nutlope/hallmark/blob/main/skills/hallmark/SKILL.md) | Overall skill flow, Step 1 trigger logic |
| [`site/css/tokens.css`](https://github.com/Nutlope/hallmark/blob/main/site/css/tokens.css) | Catalog-theme tokens (**excluded** from bespoke runs) |

---

## Summary

- **Tuned depth** = custom palette + fonts within Hallmark's existing structures; use for color/font requests without layout changes
- **Bespoke depth** = full structural redesign from first principles; use only when signal 5 fires or the brief explicitly rejects catalog structures
- **Both depths** enforce universal slop-test gates from [`slop-test.md`](https://github.com/Nutlope/hallmark/blob/main/slop-test.md), [`color.md`](https://github.com/Nutlope/hallmark/blob/main/color.md), and [`typography.md`](https://github.com/Nutlope/hallmark/blob/main/typography.md)
- **Signal 5** (singular structural vision) is the sole automatic trigger for bespoke depth in the Step 1 protocol

---

## Frequently Asked Questions

### What happens if I use bespoke depth for a simple color change?

You incur unnecessary structural work. Bespoke depth discards Hallmark's optimized macro-structures and requires the model to rebuild composition from scratch—adding latency and risk for a problem tuned depth solves more reliably. Per [`custom-theme.md`](https://github.com/Nutlope/hallmark/blob/main/custom-theme.md), default to tuned unless signal 5 is present.

### Can I switch from tuned to bespoke mid-process?

The protocol requires re-invoking Step 1. If a tuned brief later reveals a structural vision (e.g., user adds "actually, make it scroll horizontally"), the assistant must re-evaluate trigger signals and restart with bespoke depth if signal 5 now fires.

### Does bespoke depth use any catalog resources?

No. Bespoke runs exclude [`site/css/tokens.css`](https://github.com/Nutlope/hallmark/blob/main/site/css/tokens.css) and all genre/macro-structure defaults. The stamp becomes the single source of truth, replacing catalog tokens entirely while still obeying slop-test constraints.

### How do I identify signal 5 in practice?

Look for **layout-level language**: "horizontal timeline," "masonry grid," "split-screen hero," "no top navigation," or explicit rejections like "ignore your themes." These describe *page shape*, not *visual style*. Signal 5 fires when the brief names a structure Hallmark's 21 catalog themes cannot provide.