## Purpose

What a guest actually sees at their invitation link: the card, the personal greeting above it, and the RSVP surface below it.

## ADDED Requirements

### Requirement: Greeting resolves through the event first (P1)
The greeting shown above the card SHALL be resolved server-side by falling through, in order,
the message stored on the guest's **event**, then the **wedding-wide** message, then the
**built-in default** for that locale and invitation type. The resolved greeting SHALL never be
empty, and resolution SHALL NOT fall back across locales.

#### Scenario: Event carries its own wording
- **WHEN** a guest opens an invitation to an event that stores its own English family message
- **THEN** they read that event's wording

#### Scenario: Event inherits
- **WHEN** a guest opens an invitation to an event that stores no message of its own, and the wedding-wide setting supplies one
- **THEN** they read the wedding-wide wording

#### Scenario: Nothing customised anywhere
- **WHEN** neither the event nor the wedding stores a message
- **THEN** the guest reads the built-in default for their locale and invitation type

#### Scenario: Bangla is unaffected by event overrides
- **WHEN** an event stores an English override and a Bangla-reading guest opens their invitation
- **THEN** they read the wedding-wide Bangla message, or the built-in Bangla default, and never the English override

#### Scenario: Greeting is in the initial HTML
- **WHEN** an invitation page is served
- **THEN** the resolved greeting is present in the initial HTML rather than filled in by the browser
