Not sent
Shown by POST /api/inquiry (status 502) when the enquiry email still fails after one retry. Build spec: web/site-map.md → Flows → Error page. Wording is the approved copy, exactly. The name, email and answer shown are placeholders for what she typed.
The page itself is the <template id="page"> at the bottom of this file; both frames below render that same markup at their width. Code builds from it and nothing else.
Desktop
Phone · 390px
How it's built
- Ground and frame (Earl, 7 Oct 2026): dark, as
thanks.html— no nav, one block centered on the screen, max 480px, 24px padding. Text inside the block aligned left, because her answer can run to 5,000 characters. - Her words (Earl, 7 Oct 2026): the form's own textarea, prefilled and editable, labelled with the form's question. What she sees is what Send again sends. Same
required minlength="80"as the form. Name, email and Instagram go back as hidden fields; the honeypot is not carried. - Colours follow
design-system.md§4 → Color roles on--n700(Earl, 7 Oct 2026): heading--n100; line--n300; label--n400(4.25:1, fails AA, accepted as on light); field rule--n400→--n100on focus; link underline--n500→--n100on hover; button--n100fill and border,--n700text, turning outline on hover, 16 × 32 padding, focus ring 1px--n100at 4px. - Sizes and spacing are the live portrait pages': heading as
thanks.html(clamp 26–36px, 700, −0.02em, 16px below); line 16px, leading 1.7; label and textarea as the form; 44px from the line to the field, 28px under the field, 12px above the button. - The email address in the line is the
mailto:hello@earlkiu.comlink, with the 2px underline gap. No separate link. - Textarea height grows to fit her text (
field-sizing: content), never under the form's 120px; browsers without it keep 120px and scroll. - No back link, no loading state on the button — neither is in the spec or on the live form.
- Everything she typed is HTML-escaped by the function before it goes into the page (spec).