Lexend line-height 1.7 respects prefers-reduced-motion

New idea → A Visual Interview for Ivy

What happens end-to-end when an Ivy-bound idea emails in to GoUnconditionalGames@gmail.com.
✦ ☽ ✧ 🌿 ✧ ☽ ✦

0 Inbound email

Leiph emails an idea about Ivy from an allowlisted address.

From: gounconditionalgames@gmail.com Subject: card back color — rose-gold on black vs deep purple Body: I want to know which card back border Ivy prefers.

1 Ingest (ingest.py)

IMAP login, UNSEEN pull, allowlist verified, NDJSON emitted, Message-ID stored.

2 Load context

Reads CLAUDE.md + voice/SKILL.md + ivy-dispatch/SKILL.md + lilith-dispatch/SKILL.md.

3 Classify → IVY

Visual preference question, direct Ivy reference, tarot scope. Confidence: high.

4a Pull context (Brain + GitHub)

Mandatory. Ivy's foundation, comms rules, prior VI answers.

Brain: [IVYGARDEN][IVY][FOUNDATION] 2026-04-17 [IVYGARDEN][IVY][COMMUNICATION-STANDARD] * [IVYGARDEN][IVY][COMMS-STANDARD-CORRECTION] 2026-04-18 [IVYGARDEN][IVY][VI-002], [VI-003] * GitHub: IvyGarden visual-interviews/README.md (next NNN) IvyGarden docs/visual-foundations.md IvyGarden visual-interviews/003-baseline-rediscovery.html IvyGarden visual-interviews/results/ (any prior answers)

4b Translate → VI prompt

Reshapes the raw idea into a VI spec per ivysgarden-context: ≤15 questions, visual + interactive only (two swatch tiles: rose-gold-on-black vs rose-gold-on-deep-purple), free-text opinion per question, mandatory end-vote widget, foundation palette preserved.

5 Confirm block

VOICE emits the gate. Leiph approves / redirects / edits / cancels.

VOICE_CLASSIFY mode: email-ingest recipient: IVY confidence: high rationale: Visual preference ask; direct Ivy reference; tarot scope. translation_sources: brain: [IVYGARDEN][IVY][FOUNDATION] 2026-04-17, [IVYGARDEN][IVY][COMMUNICATION-STANDARD], [IVYGARDEN][IVY][VI-002] github: IvyGarden visual-interviews/README.md, IvyGarden docs/visual-foundations.md stale_flags: none duplication: none prompt_for_IVY: <draft VI spec — card-back border swatch pair + opinion> next: generate + invoke ivy-dispatch

6 Generate the VI HTML

VOICE authors IvyGarden/visual-interviews/NNN-card-back-border.html — black bg, iridescent chrome accents, rose-gold frames, Lexend / Atkinson Hyperlegible body, starseed motifs, dyslexia controls, end-vote widget.

7 Delegate → ivy-dispatch

Calls send.py --vi-path ... --public-url https://ivygarden.pages.dev/ — always the landing URL, never the VI direct (hosting rule). Emits DISPATCH_OK.

8 Lands in Ivy's inbox

to: jkeil@live.com · Ivy primary
VI #NNN — Card Back Border
My love, / A new Visual Interview is ready. / <landing link>
🌿 ✧ ☽ ✦ ☽ ✧ 🌿