# REZVIZ — REZ Church Design Theme

**Version:** 1.1
**Origin:** Derived from *Bone & Bronze*, the REZ Church Visual Identity System (Volume 03, August 2026)
**Purpose:** A reusable HTML print-ready theme for all REZ Church documents — workbooks, guides, handouts, proposals, curriculum, and congregational materials.
**Relationship to ModernBee:** REZVIZ is the brand-aligned successor. ModernBee remains valid for existing documents; new work in the current brand uses REZVIZ. Never mix them in one document.

---

## Design DNA

REZVIZ is type-led and disciplined. It uses a condensed display face set large, uppercase, and stacked against a warm cream page, with one cool accent that means *act* and one warm accent that means *notice*. Documents feel confident and human rather than corporate — closer to an editorial magazine than a church bulletin.

The signature touch is the **bronze underbar** — a short 4px bar beneath numbers and section labels. The second signature is **stacked Anton headlines with visible air between the lines**, never crowded.

The name is short for REZ Visual — it is the document expression of the Bone & Bronze identity.

---

## Color Palette

| Token | Hex | Usage |
|-------|-----|-------|
| `--rv-bone` | `#EFE6D4` | Page background — warm cream, never white |
| `--rv-ink` | `#14141A` | Primary text, headlines, and dark-page grounds. Never pure black. |
| `--rv-teal` | `#0A6E70` | Action accent — labels, rules, buttons, numbered items, section grounds |
| `--rv-bronze` | `#CD7F32` | Warm accent, **dark grounds only** |
| `--rv-bronze-deep` | `#A85F1C` | Warm accent, **light grounds only** |
| `--rv-text-secondary` | `rgba(20,20,26,0.72)` | Subtitles, secondary body |
| `--rv-text-muted` | `rgba(20,20,26,0.58)` | Captions, helper text |
| `--rv-text-faint` | `rgba(20,20,26,0.42)` | Running headers, footers |
| `--rv-rule` | `rgba(20,20,26,0.16)` | Horizontal rules, card borders |
| `--rv-rule-light` | `rgba(20,20,26,0.09)` | Lighter rules, running headers |
| `--rv-callout-bg` | `rgba(10,110,112,0.06)` | Callout box — teal tint |
| `--rv-note-bg` | `rgba(20,20,26,0.05)` | Leader note box — ink tint |
| `--rv-scripture-bg` | `rgba(205,127,50,0.07)` | Scripture block — bronze tint |
| `--rv-bone-15` | `rgba(239,230,212,0.15)` | Rules and ghost numerals on dark pages |
| `--rv-bone-60` | `rgba(239,230,212,0.62)` | Secondary text on dark pages |

**There is no fifth hue.** Every tint above is derived from bone, ink, teal, or bronze. Do not introduce gold, green, navy, or gray.

### The bronze rule — non-negotiable

| Ground | Accent to use | Ratio | Permitted sizes |
|---|---|---|---|
| Ink `#14141A` | `--rv-bronze` | 5.8:1 | All sizes, including small labels |
| Bone `#EFE6D4` | `--rv-bronze-deep` | 3.9:1 | **Display only** — 18pt+ or 14pt bold |
| Teal `#0A6E70` | Neither, as type | 1.9:1 / 1.3:1 | Bronze may be a rule or block only. Type on teal is bone. |

Never swap them. Bronze on bone is 2.5:1 and deep bronze on ink is 3.8:1 — both fail.

**Correction applied in v1.1.** Version 1.0 defined `.rv-eyebrow--on-light` as `--rv-bronze-deep` at 8.5pt. That contradicts the table directly above it: deep bronze on bone is 3.9:1, legal only at 18pt and up. Eyebrows on bone grounds now use `--rv-teal`. Deep bronze on bone stays what the table says it is — display sizes only, meaning cover dates, oversized numerals, and section titles at 18pt or larger.

---

## Typography

### Font Stack

| Role | Family | Weight | Fallback |
|------|--------|--------|----------|
| **Display / headlines** | Anton | **400 only** | Impact, 'Arial Narrow Bold', 'Helvetica Neue Condensed', sans-serif |
| **Body** | DM Sans | 400 | 'Helvetica Neue', Helvetica, Arial, sans-serif |
| **Labels / UI** | DM Sans | 500 | same sans fallback |
| **Emphasis** | DM Sans | 700 | same sans fallback |

Google Fonts import:
```
https://fonts.googleapis.com/css2?family=Anton&family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,700&display=swap
```

For WeasyPrint, download the woff2 files locally and render with `base_url='.'`. Webfonts over HTTP are unreliable in the render pipeline.

### Type Scale

| Element | Font | Size | Weight | Line-height | Color |
|---------|------|------|--------|-------------|-------|
| Cover title | Anton | 72–96pt | 400 | 0.95 | `--rv-ink` or `--rv-bone` |
| Section divider title | Anton | 54–64pt | 400 | 0.98 | `--rv-bone` on ink |
| Page headline | Anton | 32–40pt | 400 | 1.00 | `--rv-ink` |
| Subhead | Anton | 24–28pt | 400 | 1.05 | `--rv-ink` |
| Card title | DM Sans | 13–14pt | 700 | 1.30 | `--rv-ink` |
| Section label / eyebrow | DM Sans | 8–9pt | 500 | 1.30 | `--rv-teal` or bronze per ground |
| Running header | DM Sans | 7.5–8pt | 500 | 1.20 | `--rv-text-faint` |
| Lead paragraph | DM Sans | 14–15pt | 400 | 1.45 | `--rv-ink` |
| **Body text** | DM Sans | **12–12.5pt** | 400 | 1.55 | `--rv-ink` |
| Body emphasis | DM Sans | 12–12.5pt | 700 | 1.55 | `--rv-ink` |
| Caption | DM Sans | 12pt | 400 | 1.40 | `--rv-text-muted` |
| Footer | DM Sans | 7.5pt | 500 | 1.20 | `--rv-text-faint` |
| Point number | Anton | 34–40pt | 400 | 1.00 | `--rv-teal` |

**Hard floor: 12pt for anything the reader is meant to read.** Running headers, footers, page numbers, and eyebrows are furniture and are exempt at 7.5–9pt. If body copy won't fit at 12pt, **cut the copy** — never shrink the type. Expect REZVIZ documents to run 15–20% longer than the same content in ModernBee. That is correct.

**Anton print floor: 24pt.** Below that, use DM Sans 700.

### Letter spacing

| Element | Tracking |
|---|---|
| Anton headlines | 0 — never tracked |
| Eyebrows / uppercase labels | 0.18–0.22em |
| Running headers / footers | 0.16em |
| Body | 0 |

---

## The Stacking Rule

This is the rule REZVIZ documents break most often, so it gets its own section.

> **Stacked Anton must always show a visible gap between lines. Lines never touch.**

| Context | Line-height |
|---|---|
| Anton display stack, 2–3 lines | **1.00** — house default |
| Anton display, single line | 1.00 |
| Anton cover / hero at 72pt+ | 0.95 — absolute floor |
| Anton subhead / card title | 1.05 |
| Any stacked line containing `Q J , ; ( ) [ ] &` | add **+0.03** |

**The optical check:** look at the gap between the bottom of one line and the top of the next. If you can't clearly see bone or ink between them, add leading until you can. Target roughly 8–12% of cap height.

**Render-safe padding is mandatory.** WeasyPrint clips Anton ascenders at tight leading, and the clip only appears after the file is a PDF:
```css
.rv-display { padding-top: 0.08em; padding-bottom: 0.12em; }
```

Anton is never bold (it has no bold — 700 produces faux-bold), never letterspaced, never centered, never below 24pt in print, and never used for body copy.

---

## Signature Elements

### Bronze Underbar
- 4px tall × 24px wide (48px on section dividers)
- Sits directly beneath a point number or section label
- Color: `--rv-bronze-deep` on bone pages, `--rv-bronze` on ink pages
- This is the single most recognizable REZVIZ mark

### Oversized Numeral
- Anton, 34–40pt in `--rv-teal` for numbered points
- On section divider pages: 200–230pt in `--rv-bone-15`, top-right, bleeding off the page edge
- **One per layout.** Never two oversized numerals on a page

### Teal Eyebrow
- DM Sans 500, 8–9pt, ALL CAPS, 0.2em tracking, `--rv-teal` (4.9:1 on bone — legal at this size)
- Appears above every page headline and section title
- On ink pages the eyebrow goes `--rv-bronze` (5.8:1 on ink — legal at this size)
- **On bone pages the eyebrow is never `--rv-bronze-deep`.** Deep bronze on bone is 3.9:1, which is display-only at 18pt+. An 8.5pt deep-bronze eyebrow fails. Corrected in v1.1 — see below.

### Rule Weights — four, no others
| Weight | Use |
|---|---|
| 8px | Section break |
| 4px | Emphasis — this is the underbar weight |
| 2px | Standard divider |
| 1px | Hairline in tables |

Anything else is off-theme.

### Cards
- Border: 1px solid `--rv-rule`
- **Border-radius: 0.** REZVIZ has square corners everywhere — no rounding on cards, boxes, or buttons.
- Padding: 14–18pt
- Background: transparent
- Optional 4px teal left accent for "track" or option cards

---

## Component Patterns

### Callout Box (info, tips, key points)
```css
background: var(--rv-callout-bg);          /* teal at 6% */
border-left: 4px solid var(--rv-teal);
padding: 12pt 16pt;
```
No radius. No right or bottom border. The rule carries it.

### Leader Note Box (facilitator instructions, clarifications)
```css
background: var(--rv-note-bg);             /* ink at 5% */
border-left: 4px solid var(--rv-ink);
padding: 11pt 15pt;
```
Label: `LEADER NOTE` in DM Sans 8pt, 500, 0.2em tracking, `--rv-ink`.
On ink pages: background `--rv-bone-15`, border-left `--rv-bone`, label in `--rv-bone-60`.

### Scripture Block
```css
background: var(--rv-scripture-bg);        /* bronze at 7% */
border-left: 4px solid var(--rv-bronze-deep);
padding: 12pt 18pt;
font: DM Sans 400, 12.5pt, line-height 1.5;
```
Reference line: DM Sans 500, 9pt, 0.2em tracking, `--rv-teal`.
**CSB unless the source document being quoted uses another translation.** Never reproduce Scripture from memory — use the project scripture library. Every deliverable carries the Holman credit line.

### Key Verse Box (high-contrast, session title pages)
```css
background: var(--rv-ink);
color: var(--rv-bone);
padding: 22pt 26pt;
border-radius: 0;
```
Verse: DM Sans 400, 14pt, `--rv-bone`.
Reference: DM Sans 500, 9pt, 0.2em tracking, `--rv-bronze`.

### Teal Panel (short callouts, invitations, next steps)
```css
background: var(--rv-teal);
color: var(--rv-bone);
padding: 16pt 20pt;
```
**Type on teal is always bone.** Never bronze, never ink. Teal is an accent ground for short copy — never a canvas for paragraphs longer than about three lines.

### Numbered Point
```
Anton numeral 34–40pt in --rv-teal
4px × 24px bronze underbar directly beneath
Anton subhead 24pt / line-height 1.05
DM Sans body 12pt / line-height 1.55
```
Used for teaching outlines, proposal items, session steps.

### Do / Don't Pair
```css
.rv-do    { border: 1px solid var(--rv-teal); }
.rv-dont  { border: 1px solid var(--rv-bronze-deep); }
```
Labels `DO` and `DON'T` in Anton 14pt — teal and deep bronze respectively. Caption beneath each in DM Sans 12pt.

### Discussion Question
```css
padding-left: 16pt;
border-left: 2px solid var(--rv-rule);
color: var(--rv-text-secondary);
font: DM Sans 400, 12pt;
```

### Time Badge (facilitator guide session flow)
```css
font: DM Sans 500, 9pt, 0.16em tracking;
color: var(--rv-teal);
white-space: nowrap;
min-width: 58pt;
```

### Fill-in-the-Blank (workbook)
```css
display: inline-block;
min-width: 130px;
border-bottom: 2px solid var(--rv-rule);
height: 1.2em;
```

### Reflection Lines (workbook homework)
```css
width: 100%;
border-bottom: 1px solid var(--rv-rule);
height: 2.2em;
```

### Table
```css
table { width: 100%; table-layout: fixed; border-collapse: collapse; }
thead { display: table-header-group; }
tr    { page-break-inside: avoid; }
th    { font: DM Sans 500, 8pt, 0.16em tracking, uppercase;
        color: var(--rv-text-muted);
        border-bottom: 2px solid var(--rv-rule); }
td    { font: DM Sans 400, 12pt; padding: 5pt 7pt;
        border-bottom: 1px solid var(--rv-rule);
        overflow-wrap: break-word; vertical-align: top; }
```
No vertical rules. No zebra striping. No cell background fills.

---

## Page Layout

### Print Specs
- Page size: US Letter, 8.5 × 11in portrait. Landscape 11 × 8.5in for decks and brand references.
- Page padding: 0.85in top, 0.9in left/right, 0.75in bottom
- `@page { size: letter; margin: 0; }` — margins handled by page div padding
- `.page { width: 8.5in; height: 11in; min-height: 11in; }` — **both `height` and `min-height` are required.** WeasyPrint needs explicit `height` to establish a true containing block for absolutely positioned footers.
- `page-break-after: always` on each `.page` div; `page-break-after: auto` on `:last-child`
- `page-break-inside: avoid` on cards, numbered points, tables, scripture blocks, day blocks
- `print-color-adjust: exact` on body — required or backgrounds drop out
- `overflow: hidden` on `.page` to catch overruns rather than bleed them

### Page Variants
```css
.page          { background: var(--rv-bone); color: var(--rv-ink); }
.page--ink     { background: var(--rv-ink);  color: var(--rv-bone); }
.page--teal    { background: var(--rv-teal); color: var(--rv-bone); }
```
On `--ink` and `--teal` pages, swap every rule, eyebrow, and footer color to the bone-tint equivalents. Set the background on the `.page` div, never on `body`, or the final page's ground leaks past the content.

### On-Screen Appearance
- Body background: a neutral gray (`#8a8a8a`) so the bone page reads as a floating sheet
- Page divs: bone background, subtle box-shadow, centered, `margin: 20px auto`
- Print media query removes shadow and margin

### Running Header (interior pages)
- Left: document or section title. Right: page type or section number
- DM Sans 500, 8pt, ALL CAPS, 0.16em tracking, `--rv-text-faint`
- 1px rule below in `--rv-rule-light`, margin-bottom 18pt

### Footer
- `position: absolute; bottom: 0.34in;` left and right aligned to the page padding
- Left: document name. Right: page number
- DM Sans 500, 7.5pt, ALL CAPS, 0.16em tracking, `--rv-text-faint`
- Alternatively use `@page` margin boxes — preferred for long flowing documents

### Cover Page
- Ink ground by default; bone ground for internal or governance documents
- `REZ` wordmark top-left (use the real asset — never rebuild it in Anton)
- Document label in DM Sans 500, 8pt, 0.2em tracking, bronze
- Massive stacked Anton title at 72–96pt, line-height 0.95
- 2px rule, then a one-sentence standfirst in `--rv-bone-60`
- Date in Anton 24–26pt, bronze, bottom-right

### Section Divider
- Ink or teal ground
- Oversized ghost numeral top-right in `--rv-bone-15`, bleeding off the top edge
- Eyebrow, Anton section title at 54–64pt / 0.98, 2px bone rule, standfirst
- Content anchored to the lower third of the page

---

## Texture (optional, print-safe)

### Paper Grain
8% ink-value noise over any solid ground. `mix-blend-mode` is **unsupported in WeasyPrint** — use a flat-opacity overlay div with a base64 noise tile instead of a blend mode. Generate the tile with PIL; do not rely on SVG `feTurbulence`, which WeasyPrint does not render.

### Halftone Dot
```css
background-image: radial-gradient(var(--rv-ink) 1.2px, transparent 1.2px);
background-size: 12px 12px;
```
Fills empty thirds and backs pull-quotes. Never behind body copy or the wordmark.

### Diagonal Rule
```css
background-image: repeating-linear-gradient(135deg,
  var(--rv-teal) 0, var(--rv-teal) 6px, transparent 6px, transparent 16px);
```
Marks work-in-progress bands and the REZMANIA field. Gradients render reliably in WeasyPrint — no image assets required.

---

## Usage Notes

1. **Consistency across document types.** REZVIZ should look the same whether it's a workbook, facilitator guide, elder working paper, or congregational handout. The stacked Anton, the teal eyebrow, and the bronze underbar are the thread.

2. **The bronze rule is the thing people get wrong.** Dark ground takes the lighter bronze; light ground takes the darker bronze. Check it on every page, every time. It is the most common REZVIZ error.

3. **Don't overuse bronze.** Bronze is for eyebrows on dark grounds, underbars, display dates, and deadlines. Never body text, never a background fill, never more than 2% of a page by area.

4. **Type on teal is bone.** No exceptions. Teal is a ground for short copy only.

5. **Square corners everywhere.** No border-radius on cards, callouts, buttons, or panels. This is a deliberate contrast to ModernBee's rounded 4–6px corners and it is one of the fastest ways to tell the two themes apart.

6. **Whitespace is structural.** Generous margins and paragraph spacing are not wasted space. Do not compress to fit more content — **add a page instead.** This is the standing instruction and REZVIZ is built around it.

7. **Lines never touch.** Stacked Anton is the signature; it fails the moment the leading collapses. Cut a word before you tighten the leading.

8. **Language authority sits elsewhere.** REZVIZ governs how a document looks. The REZ Church Voice & Brand Guide v2 governs what it says — vocabulary, register, terminology, banned words, Scripture translation. Where they disagree on wording, the Voice Guide wins.

9. **Validate before delivering.** Render with WeasyPrint, rasterize with `pdftoppm -png -r 100`, and measure ink extent per page with PIL or NumPy. Visual proofreading misses overruns. See `PRINT_SAFE_HTML.md`.

---

## CSS Variable Block (copy into any REZVIZ document)

```css
:root {
  /* Core four */
  --rv-bone:            #EFE6D4;
  --rv-ink:             #14141A;
  --rv-teal:            #0A6E70;
  --rv-bronze:          #CD7F32;   /* dark grounds only */
  --rv-bronze-deep:     #A85F1C;   /* light grounds only */

  /* Text on bone */
  --rv-text-secondary:  rgba(20,20,26,0.72);
  --rv-text-muted:      rgba(20,20,26,0.58);
  --rv-text-faint:      rgba(20,20,26,0.42);

  /* Rules and tints */
  --rv-rule:            rgba(20,20,26,0.16);
  --rv-rule-light:      rgba(20,20,26,0.09);
  --rv-callout-bg:      rgba(10,110,112,0.06);
  --rv-note-bg:         rgba(20,20,26,0.05);
  --rv-scripture-bg:    rgba(205,127,50,0.07);

  /* On dark grounds */
  --rv-bone-15:         rgba(239,230,212,0.15);
  --rv-bone-60:         rgba(239,230,212,0.62);
  --rv-scrim-50:        rgba(0,0,0,0.50);

  /* Type */
  --rv-font-display: 'Anton', Impact, 'Arial Narrow Bold', sans-serif;
  --rv-font-body:    'DM Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;

  /* Rules — four weights, no others */
  --rv-rule-section:  8px;
  --rv-rule-emphasis: 4px;
  --rv-rule-standard: 2px;
  --rv-rule-hairline: 1px;
}

/* Anton — enforce the rules at class level so a copy edit can't break them */
.rv-display {
  font-family: var(--rv-font-display);
  font-weight: 400;              /* Anton has no bold — never raise this */
  text-transform: uppercase;
  letter-spacing: 0;
  line-height: 1.00;
  padding-top: 0.08em;           /* WeasyPrint ascender clip guard */
  padding-bottom: 0.12em;
  margin: 0;
}
.rv-display--cover { line-height: 0.95; }
.rv-display--sub   { line-height: 1.05; }
.rv-display--desc  { line-height: 1.03; }  /* lines containing Q J , ; ( ) [ ] & */

.rv-eyebrow {
  font-family: var(--rv-font-body);
  font-weight: 500;
  font-size: 8.5pt;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  line-height: 1.3;
  margin: 0 0 6pt;
}
.rv-eyebrow--on-light { color: var(--rv-teal); }        /* 4.9:1 — legal at 8.5pt */
.rv-eyebrow--display  { color: var(--rv-bronze-deep); }  /* 3.9:1 — 18pt+ ONLY */
.rv-eyebrow--on-dark  { color: var(--rv-bronze); }
.rv-eyebrow--teal     { color: var(--rv-teal); }

.rv-underbar {
  height: 4px;
  width: 24px;
  background: var(--rv-bronze-deep);
  margin: 7pt 0 9pt;
}
.page--ink .rv-underbar,
.page--teal .rv-underbar { background: var(--rv-bronze); }
```

---

## Quick Reference

**Always** — Anton uppercase 400 for headlines · stacked lines never touch, 1.00 default · DM Sans for sentences · bone or ink as the ground, teal as the action · dark ground takes bronze, light ground takes deep bronze · type on teal is bone · square corners · 12pt body floor · add a page rather than compress.

**Never** — Anton bold, letterspaced, centered, or under 24pt · stacked lines touching · bronze on bone · either bronze as type on teal · border-radius · gradients, drop shadows, or bevels · a fifth hue · gold, green, or navy · tinted table cells or zebra striping · body copy under 12pt.

---

*REZVIZ v1.1 · August 2026*
*Derived from Bone & Bronze, Visual Identity System Volume 03*
*Companions: `PRINT_SAFE_HTML.md` (render validation) · `ModernBee_Theme_Spec.md` (legacy theme)*
*The REZ Church Voice & Brand Guide governs language and is not included in this download.*
*Resurrection Church · 48 Manor St., Bakersfield, CA 93308 · resurrect.church*

---

*Shipped as a worked example from th3dan.com/theme-file. This is the real, in-use file — including the v1.1 correction that got made once somebody re-computed the contrast. Free to copy and change.*
