--- version: alpha name: fourth-steep-design description: "A pale celadon canvas (#eef0e6) with near-black ink (#2a2b22), jade green (#546b40) as the working accent, tea-amber (#a3541f) marking timing and status. Frank Ruhl Libre carries every headline in a calm literary serif, Karla carries prose and controls. The homepage steeps one tea through four real infusions, each cup's liquid color genuinely different, tracking real steep depth rather than decoration." --- ## Brand Positioning The Fourth Steep serves gongfu-style tea, and it exists because most tea-house sites sell a single mood, a steaming cup on a windowsill, "find your zen" copy, and skip the actual mechanic that makes loose-leaf tea worth the time: the same leaf poured four times gives four genuinely different cups. The bet here is to show the real infusion sequence, timed honestly, rather than a single generic "cup of tea" image. If a component doesn't correspond to a real steep, a real timing, or the cup itself, it doesn't belong here. colors: accent: "#546b40" accent-alt: "#a3541f" ink: "#2a2b22" ink-muted: "#666b58" canvas: "#eef0e6" ## Logo / Wordmark System The mark is a teacup in profile with a single horizontal line marking a fill level, mid-pour. It is not a teapot, a leaf, or a steam wisp. ```svg ``` - **Lockup**: mark, then a `0.55rem` gap, then "The Fourth Steep" in Frank Ruhl Libre 700, sentence case. Mark always left of the wordmark. - **Minimum size**: mark not smaller than `18px` wide, below that the fill line and the cup's taper merge. - **Clearspace**: empty margin equal to the mark's own height on all four sides. - **Don't**: don't recolor the fill line to anything but `--accent`. Don't add steam wisps or a leaf above the cup. Don't fill the whole cup solid, the mark shows a cup mid-fill, not a finished pour. ## Color System ### Roles | Role | Token | Value | Used for | |---|---|---|---| | Canvas | `--bg` | `#eef0e6` | Page background | | Surface | `--panel` | `#ffffff` | Nav, infusion cards, table, form card, cup outlines | | Surface raised | `--raised` | `#f5f6ef` | Row hover, cta band | | Border | `--border` | `#e0e3d5` | Card edges, table rules, dividers | | Border strong | `--border-strong` | `#cbd0ba` | Decorative-only edges, tray plank | | Border UI | `--border-ui` | `#83886f` | Every interactive boundary: secondary button, input, select, cup outline | | Ink | `--ink` | `#2a2b22` | Headlines, body copy, table cells | | Ink muted | `--dim` | `#666b58` | Labels, meta lines, helper text | | Jade | `--accent` | `#546b40` | Primary button, mark's fill line, links | | Tea-amber | `--accent-alt` | `#a3541f` | Timing labels, second-page status | Jade is the working color, the primary button and the mark's fill line, chosen as a real tea-leaf green rather than a decorative pair. Tea-amber is held to one job, marking a real steep time, so a reader learns fast that amber text always means "this is how long." The four cup-liquid colors themselves, from nearly clear through deep brown, are real illustrative tea colors, not system tokens, the same exception every material-specific fill in this gallery already establishes, and here the progression itself is the point: the color deepens because the tea actually does. ### Contrast (computed from the hex values above via WCAG relative luminance) | Pairing | Ratio | Passes | |---|---|---| | `--ink` on `--bg` (headlines, body copy) | 12.43:1 | AAA | | `--ink` on `--panel` (card copy, table cells) | 14.31:1 | AAA | | `--dim` on `--bg` (labels, helper text) | 4.79:1 | AA | | `--dim` on `--panel` | 5.83:1 | AA | | `--dim` on `--raised` | 5.07:1 | AA | | `--accent` on `--bg` (links, mark's fill line) | 4.81:1 | AA | | `--accent` on `--panel` | 5.91:1 | AA | | `--accent` on `--raised` | 5.43:1 | AA | | `--accent-alt` on `--bg` (timing labels, status) | 4.74:1 | AA | | `--accent-alt` on `--panel` | 5.46:1 | AA | | `--accent-alt` on `--raised` | 5.02:1 | AA | | light label (`#f4f7f0`) on `--accent` fill (primary button) | 5.46:1 | AA | | `--border-ui` control edge on `--bg` (non-text, inputs) | 3.19:1 | AA (1.4.11) | | `--border-ui` control edge on `--panel` (non-text, secondary button) | 3.67:1 | AA (1.4.11) | `--accent` was darkened from an initial `#5f7a4a`, which measured only 4.18:1 on canvas, short of the small-text 4.5:1 minimum, before this system shipped, not after. `--border-strong` is kept for decorative-only uses, the tray plank, never a control boundary, `--border-ui` exists specifically so a real control never inherits that weaker value. typography: display: fontFamily: Frank Ruhl Libre fontWeight: 600 body: fontFamily: Karla fontWeight: 400 ## Type Scale | Token | Size | Weight | Family | Line-height | Letter-spacing | Used for | |---|---|---|---|---|---|---| | `--text-display` | `clamp(2.1rem, 5vw, 3.4rem)` | 600 | Frank Ruhl Libre | 1.15 | 0 | Homepage H1 | | `--text-page-h1` | `clamp(1.9rem, 4vw, 2.6rem)` | 600 | Frank Ruhl Libre | 1.15 | 0 | Second-page H1 | | `--text-h2` | `1.5rem` | 600 | Frank Ruhl Libre | 1.2 | 0 | Section headings | | `--text-h3` | `1.1rem` | 600 | Frank Ruhl Libre | 1.2 | 0 | Infusion names | | `--text-body` | `1rem` | 400 | Karla | 1.6 | 0 | Paragraph copy | | `--text-small` | `0.88rem` | 400 | Karla | 1.55 | 0 | Table cells, footer, meta lines | | `--text-label` | `0.78rem` | 700 | Karla | 1 | 0.05em, uppercase | Form labels, table headers, timing labels | Frank Ruhl Libre's calm literary serif reads as unhurried, matching a process measured in seconds, not minutes, reserved for headlines only. Karla carries every sentence and every control at 400 for prose and 700 for labels. ## Spacing Scale Base unit `8px`. Tokens in use: `--space-2: .5rem`, `--space-3: 1rem`, `--space-4: 1.5rem`, `--space-6: 2rem`, `--space-8: 3rem`, `--space-12: 4rem`. ## Shape `--radius: 4px` on cards, `--radius-sm: 3px` on buttons and inputs. Small and quiet, reading as a tea tray's own edges, not a decorative rounding choice. ## Iconography No icon library. The only non-text graphics are the logo mark and the hero's own tray-and-cups illustration (hand-built SVG). A steep's real timing is always stated in text, never implied by color alone. ## Motion Principles Scroll steeps one tea through four real infusions, laid out left to right on a tray. Each infusion is a liquid fill inside a fixed cup outline, scaling vertically from `0` to `1` with a bottom-anchored transform origin, so each cup visibly fills as its own scroll segment completes, the same one-shot settle this gallery's other "N items arrive in sequence" systems use, applied here to a genuinely temporal rather than physical process. The domain-specific detail is entirely in the fill color: rinse is nearly clear, first steep is pale gold, second steep is amber, third steep is deep brown, a real progression a gongfu session actually produces, not four arbitrary hues. The moment a cup finishes filling, the card for that infusion reveals below. One-shot sequence: nothing loops, and every infusion is written out in the card grid regardless of scroll or script state. The scroll trigger measures the page's real available scroll room below the stage at load, minus a `16px` safety margin, and caps the distance at that figure (never more than `520px`). A viewport tall enough to leave under `20px` of room, or a `prefers-reduced-motion` visitor, gets all four cups already filled and every card already visible, with no scroll listener attached at all. ## Voice & Tone Unhurried, precise about timing, no mystical tea-ceremony posturing. The Fourth Steep talks like someone who's actually timed a thousand infusions, not a brand selling zen. In practice: - **Primary button**: "Book a tasting", not "Find your inner calm" - **Rinse copy**: "This cup never gets tasted.", a plain, slightly wry fact - **Second-steep copy**: "Most people's favorite pour.", a real observation, not a mystical claim - **Third-steep copy**: "Worth the extra time to draw it out.", practical, not poetic - **Status**: "Tasting room open today, sessions run hourly." The tell that a sentence is off-brand: it reaches for tranquility or ceremony as an abstraction instead of naming the actual steep time or the actual flavor change. ## Accessibility Baseline - **Focus ring**: `2px solid var(--accent)` at `2px` offset via `:focus-visible` on every link, button, input, and select, never removed. - **Reduced motion**: honored on the cup-filling sequence, as described under Motion Principles. No scroll listener is attached at all when reduce is set, or when there's no real scroll room to attach one to meaningfully. - **The tray-and-cups graphic is `aria-hidden`.** It's a continuously changing illustration tied to scroll position. Nothing is communicated by it alone: every infusion's timing, name, and description is in the card grid below in plain markup at all times, alongside a color swatch that repeats the same color reading. - **Tap targets**: `44px` minimum height on every button, nav link, and form control. - **Structure**: one `