# Self-Check Protocol

Before returning design code, verify each item and output results inline. If any item fails, revise before returning.

## Fingerprint audit (12 items from `anti-slop-gallery.md`)

- [ ] **Glassmorphism**: no `backdrop-filter: blur()` used as decoration. Allowed only for true overlay-over-content (sticky nav, dialog over photo).
- [ ] **Purple-to-blue gradient**: no `from-purple-* to-blue-*` or equivalent. No gradient hero at all unless within one hue of the committed palette.
- [ ] **Cyan-on-dark cyber**: no bright cyan on near-black with glow, unless the direction is `retro-futurist`.
- [ ] **Rounded icon chip above heading**: no tinted square with centred icon preceding section titles. Section markers use numbers, rules, or typography.
- [ ] **Hero metric template**: no three-equal-stat-cards in a row with big number + small label + gradient accent. Stats are asymmetric and ranked.
- [ ] **Identical card grid**: no `grid-cols-3` of identical icon+heading+text cards. Cards vary in span or one carries visible emphasis.
- [ ] **Gradient text on headline**: no `bg-clip-text text-transparent` gradient on display copy. One ink colour, with optional single-word accent.
- [ ] **Decorative sparklines**: no unlabeled mini-charts placed for "analytical" decoration. Either a real chart with axes or no chart.
- [ ] **Drop-shadow on rounded rectangle**: no default `rounded-xl shadow-lg` card. Commit to a shadow language (hard offset, hairline, or none).
- [ ] **"Get Started →" CTA**: no generic pill + right-arrow. Button verb names the actual action ("Send me Issue 04", "Book a tasting").
- [ ] **Monospace for body prose**: monospace used only for labels, numerals, code, or when the direction is `retro-futurist` / `brutalist-raw`.
- [ ] **Center-everything layout**: not every element centred on one axis. Composition uses asymmetry, varied column spans, or deliberate off-balance.

## Aesthetic coherence

- [ ] **Direction stated at top of output** (e.g. `Direction: editorial-magazine`). If a new direction was proposed, it lists typography, palette, spacing, radii, motion, signature moves, and avoid block.
- [ ] **Typography matches the direction**. No Inter in `editorial-magazine`. No Playfair in `swiss-modernist`. No serif body in `neo-brutalist-playful`.
- [ ] **Palette derives from the direction**, using the listed OKLCH values — not tailwind defaults. Tinted neutrals, not pure white or pure black.
- [ ] **Surface treatment is consistent**: radii, borders, and shadows all speak the same language across the artefact.
- [ ] **At least one signature move from the chosen direction** is present (drop cap, hard offset shadow, scanline overlay, hairline rule, asymmetric radius, etc.).

## Variety

- [ ] **Output differs from the last generation** in this session, if prior context is available — different direction, different palette, different composition.
- [ ] **No default fonts without justification**: if Inter, Roboto, or system-ui appears, it is because the direction explicitly calls for it (`swiss-modernist`, `luxury-refined`).

## Accessibility floor (non-negotiable)

- [ ] **Focus ring visible** on every interactive element, using a clear `outline` or `ring` that meets 3:1 contrast against the background.
- [ ] **Contrast ≥ AA** on all text (4.5:1 for body, 3:1 for 18pt+ / bold). Body copy aims for AAA (7:1) where the direction allows.
- [ ] **Reduced-motion fallback**: every animation wrapped in `@media (prefers-reduced-motion: no-preference)`, or replaced with an instant state change.
- [ ] **Hit targets ≥ 44×44px** for any touchable element.

## Output format

Emit this block **before** the code, exactly:

```
Direction: {name}
Self-check: {N}/24 Pass

Fingerprint audit:
- Glassmorphism: Pass
- Purple-to-blue gradient: Pass
- Cyan-on-dark cyber: Pass
- Rounded icon chip above heading: Pass
- Hero metric template: Pass
- Identical card grid: Pass
- Gradient text on headline: Pass
- Decorative sparklines: Pass
- Drop-shadow on rounded rectangle: Pass
- "Get Started →" CTA: Pass
- Monospace for body prose: Pass
- Center-everything layout: Pass

Aesthetic coherence:
- Direction stated: Pass
- Typography matches: Pass
- Palette matches: Pass
- Surface consistent: Pass
- Signature move present: {which one, one line}

Variety:
- Differs from previous: Pass | N/A (no prior context)
- Defaults justified: Pass

Accessibility:
- Focus ring: Pass
- Contrast AA+: Pass
- Reduced-motion fallback: Pass
- Hit targets ≥ 44px: Pass
```

If any row is `Fail`, revise the code and re-run the check before returning. A `Pass` you cannot defend concretely (by pointing to a line of code) is a `Fail`.
