# NLT Labs — Fun Drop (monthly off-cycle)

**Cadence:** once a month · **Window:** 72 hours · **Vibe:** totally different from the luxury/grail lane.

Luxury is *covetable* (Jordan, Apple, Travis). **Fun Drop** is *collectible silly* — the drop you wear to the hackathon afterparty, not the investor dinner.

---

## Why a separate lane

| | Luxury lane | Fun Drop |
|---|-------------|----------|
| Release | Drop 1 / 2 production runs | **Monthly** micro-drop |
| Quantity | Core catalog, many SKUs | **3–5 SKUs max** per month |
| Look | Black caps, deboss, foil, serial | **Loud layout**, jokes, camp, oversized graphics |
| Copy | BUILT FOR CLARITY, DROP 01 | **Cheat codes**, loading bars, level-clear badges |
| Blank | Washed black, charcoal, sand | **Oat, cream, vintage stone** — lighter, playful substrates |
| Gate | `merch_luxury_gate.py` | `merch-fun-rubric.yaml` (play score, not covet score) |
| Audience | Six lanes, grail per audience | **Cross-audience** — one theme, everyone gets the joke |

Luxury whispers. Fun Drop **shouts once**, then disappears until next month.

---

## Monthly rhythm

1. **Theme pick** (internal) — one word or meme frame (e.g. *Cheat Codes*, *Loading…*, *Demo Survivor*).
2. **3–4 art pieces** in `designs/fun-<theme>-*.svg` — still amber-only, still real mark geometry.
3. **`drop-fun-YYYY-MM.yaml`** — SKUs, theme copy, release window, hero targets.
4. **Compositing + Gemini heroes** — optional oat/cream blanks; no black-cap requirement.
5. **`drop-fun-lineup.html`** updated for the active month + archive links.
6. **Ship window:** announce → 72h → archive listing (sold out / gone).

---

## Hard rules (even when silly)

- **Amber is still the only chromatic accent** — glitch stays amber-channel; no cyan/blue/purple.
- **Mark geometry unchanged** — fun layout, not a redesigned logo.
- **Merch copy, not website copy** — no “AI built for what comes after the demo” on garments.
- **Must be wearable** — joke should land in 2 seconds; no inside-baseball paragraph tees.

---

## Fun copy bank

See `merch-taglines.yaml` → `fun_drop` for approved lines.

Examples: `CLARITY LOADING…`, `↑↑↓↓ CLARITY`, `LEVEL CLEAR`, `PRESS START`, `GG / GOOD CLARITY`.

---

## First drop — July 2026: **Cheat Codes**

| SKU | Design | Garment | Hook |
|-----|--------|---------|------|
| fun-cheat-code-tee | `fun-cheat-code` | oat tee | Konami-style code + CLARITY punchline |
| fun-loading-tee | `fun-loading-clarity` | cream tee | 99% loading bar stuck on “almost” |
| fun-mega-chevron-tee | `fun-mega-chevron` | vintage stone | Absurdly oversized mark |
| fun-level-clear-cap | `fun-level-clear-badge` | sand dad cap | Arcade LEVEL CLEAR enamel badge |

Spec: [`drop-fun-2026-07.yaml`](./drop-fun-2026-07.yaml) · Preview: [`drop-fun-lineup.html`](./drop-fun-lineup.html)

---

## Pipeline (when ready to mock up)

```bash
# After adding PRODUCTS for fun SKUs in build_mockups.py:
.venv-3d/bin/python assets/merch-ideas/mockups-photos/build_mockups.py
.venv-3d/bin/python assets/merch-ideas/scripts/generate_mockups_catalog.py

# Heroes (fun manifest slice — add to merch-ai-manifest.yaml when art is final):
.venv-3d/bin/python assets/merch-ideas/scripts/generate_hero_mockups.py --id fun-cheat-code-hero
```

Future: `merch_fun_gate.py` scoring against `merch-fun-rubric.yaml` (play, legibility, on-brand absurdity).
