GriefShare
GriefShare is a support group that provides a safe, welcoming place for people to understand the difficult emotions and process of grief. This 13-week group helps participants discover what to expect in the days ahead.
Valley Real Life · Brand & UI
Tokens, components, and patterns that define the look and feel of every Valley Real Life surface — built on OKLCH color, Montserrat type, and a single accent that glows.
Three tiers, cascading. Two primitive scales (v-green, v-neutral) are the source of truth.
Semantic tokens (--brand, --bg, --text…) reference primitives. Components only
consume semantic tokens. Change a primitive, the whole system updates. All values in oklch(); no pure
black, no pure white.
Raw scales, theme-stable. The same numbered stops exist whether the page is light or dark.
--v-green-50 … --v-green-950
--v-neutral-50 … --v-neutral-950
Hover any swatch for the oklch value. The ringed stop is the brand anchor — --v-green-500 = #9BC93C.
The hero. Each token maps to a stop in the v-green scale. Alpha tints (--brand-wash, --brand-glow) auto-derive from --brand via relative color syntax — change the brand once and washes, glows, and gradients all cascade.
A warm, faintly green-tinted ramp from --v-neutral. Both themes use the same primitives — light mode flips which stops the semantic tokens point at.
Three weights from the mid-range of --v-neutral. Most UI lives on --border-subtle; reserve --border-strong for inputs needing presence.
No pure white. The light/dark pair shown next to each token is "dark theme value / light theme value" — both pull from --v-neutral. --text-on-brand is a very dark green-black used on green button fills.
For alerts and feedback. Currently one-offs (not yet scaled into --v-amber, --v-blue, --v-red primitives) — bring them into the scale architecture when a second use case appears.
Montserrat covers everything — display, body, and labels — with weight
and tracking doing the work. Eyebrow labels use heavy tracking and uppercase, in keeping with the section dividers
throughout VRL surfaces. Every size is expressed in rem; lift or shrink the whole scale by changing the single --font-scale token.
One token controls the size of every piece of text on the page. The default of 1.0625 bumps the 16px browser default to ~17px so body copy reads a touch larger.
/* tokens.css */ :root { --font-scale: 1.0625; /* ≈ 17px root */ } html { font-size: calc(100% * var(--font-scale)); }
FEATURED EVENTS
Display Large
Display Medium
Heading 1
Heading 2
Heading 3
Heading 4
Body Large — for intro paragraphs and short, important reading.
Body — the default for paragraphs, descriptions, and most reading text on any surface.
Body Small — UI text, secondary details, meta info, and dense card bodies.
Caption — Dec 22, 2025 6:45 PM
Six weights ship. Use 300 sparingly (only for very large display text), 400 for body, 500–600 for UI, 700–800 for headings.
Headings tighten slightly; eyebrow labels open dramatically. Body stays neutral.
A rem-based spacing scale, an 8-step radius ramp anchored by a generous pill, and a layered shadow set that includes the brand's signature glow.
All spacing is rem-based, anchored to a 16px root. Use logical properties (padding-inline, margin-block) by default.
Most cards use --radius-lg. Pills are the signature shape on buttons, inputs, and chips. The squircle is a superellipse — square, but not square. Implemented as a mask-image, so wrap it if you need an outer shadow.
Layered shadows for depth, plus a brand glow that's used on primary buttons, the logo mark, and focus rings.
Two ratio tokens carry most of the imagery on VRL surfaces.
Cards anchor the entire VRL experience. They come in four flavors: action tiles, row links, featured event cards, and detail cards with image headers and footer actions.
Centered icon + label. Used for "Next Steps" style entry points.
Icon + label + chevron — used for long lists like "Other Links". Brand icon, neutral text, chevron picks up brand on hover.
7/3 thumbnail with a floating date badge. Title below the image. Hover lifts and shadows.
For sermons, talks, and any video content. 16/9 thumbnail with a play overlay and duration badge.
aspect-ratio: var(--video-ratio) · play icon centered · duration in bottom-left or top-right
Image header (7/3) with tags bridging the seam between thumb and body, title, meta, body, and a split action footer. The workhorse pattern for programs, classes, and groups.
GriefShare is a support group that provides a safe, welcoming place for people to understand the difficult emotions and process of grief. This 13-week group helps participants discover what to expect in the days ahead.
Soft borders, gentle hover transitions, and a 4-px brand-tinted focus ring. The search pill is the signature input — paired with a circular brand-filled icon button.
Used for browse/filter at the top of list views.
The page-level pieces — headers for internal pages, breadcrumbs, tags, dropdowns, dividers, and the brand lockup with its signature glow.
Two patterns for the top of an internal page. The homepage gets its own treatment.
.page-titleA clean text-only header for most internal pages. Optional kicker, optional lede, optional actions on the right.
Connect
Small groups of people who meet weekly to do life together — share meals, ask hard questions, and pray for one another.
.page-title · responsive — actions wrap below title on narrow viewports
.page-heroFor weightier pages — campaigns, ministries, events. Image background with a brand-tinted overlay so text remains readable on any photo. Always treated as a dark surface regardless of page theme.
Heal · Grow · Belong
A safe community where people walk through hard seasons together — grief, addiction, divorce, loss. You are not alone.
.page-hero · image + brand-tinted overlay + breadcrumb + kicker + title + lede + actions
Add modifiers for height and alignment.
Short
.page-hero–short (220px min) · .page-hero–centered (text-align center) · also .page-hero–tall (420px min)
<header class="page-hero">
<img src="..." alt="" />
<div class="page-hero__content">
<ol class="breadcrumb">…</ol>
<p class="kicker">Eyebrow</p>
<h1>Page Title</h1>
<p class="lede">Optional subtitle…</p>
<div class="page-hero__actions">…</div>
</div>
</header>
Styled to the standard Rock <ol class="breadcrumb"> markup so it drops in without HTML changes. Three variants: chevron (default), slash, and enclosed pill.
Default — chevron separator
.breadcrumb–slash — classic Rock look
.breadcrumb–enclosed — pill container, for hero headers
<ol class="breadcrumb"> <li><a href="...">Home</a></li> <li><a href="...">People</a></li> <li class="active" aria-current="page">Edit</li> </ol>
Tiny pill labels — used inside cards and at the top of detail thumbnails. The default sits on a high-contrast surface (light pill on dark, dark pill on light) for legibility in both themes.
Floats in the top-right corner of event thumbnails. Always tracked, uppercase, and pill-shaped.
Centered, tracked uppercase label between two thin rules. Use to break long pages into clear sections.
Compact popover used for share actions and overflow menus.
The full lockup, presented on a soft brand wash with an outer glow. Reserved for hero placements and standalone screens like the offline page. Automatically swaps to a dark-text variant in light mode.
Native browser text selection is themed to the brand.
Try selecting this text — selection uses the brand green with our dark on-brand text color for readability.
Visible focus is non-negotiable. Every interactive element gets a 2px brand outline at 2px offset, plus a 4-px tinted ring on inputs.