Skip to main content

Elevation & Shape

GospeLib maintains two distinct surface personalities — Paper and Chrome — each with their own elevation behavior and shape language.

The Two Surface Characters

SurfaceCharacterBackgroundEdgesRadius
PaperWarm, subtly textured — holds scripture and annotationswhite-200 (#F5F3EE) with 2% opacity noise grainFloat via shadow — no visible borders12px for cards; square edges for the scripture page itself
ChromeClean, flat, cooler — navigation, tools, settingswhite-100 (light) / navy-800 (dark)Crisp Material-inspired elevation shadows8px for controls

The distinction between 12px paper-surface cards and 8px chrome controls is intentional — it creates a perceptible layer separation. Paper feels softer and more physical than the surrounding chrome.

Elevation Scale

Inspired by Material Design 3's tonal elevation, but using warm shadows rather than colored overlays:

LevelBox ShadowUsage
0noneBackground (page itself)
10 1px 3px rgba(20,16,10,0.08), 0 1px 2px rgba(20,16,10,0.06)Resting cards, inline panels, verse cards, collapsed panels
20 3px 8px rgba(20,16,10,0.10), 0 2px 4px rgba(20,16,10,0.07)Raised cards, hover states, note cards, active panels
30 6px 16px rgba(20,16,10,0.12), 0 3px 6px rgba(20,16,10,0.08)Bottom sheets at rest, docked panels, coach marks
40 12px 32px rgba(20,16,10,0.14), 0 4px 8px rgba(20,16,10,0.09)Popovers, command palette, draggable windows
50 20px 48px rgba(20,16,10,0.18), 0 6px 12px rgba(20,16,10,0.10)Modal dialogs, full-screen sheets
tip

Shadow colors use warm near-black rgba(20,16,10) rather than pure black, preserving warmth even in shadows. In dark modes, shadows switch to rgba(0,0,0) at higher opacity.

The Scripture Page Shadow

The scripture page uses a unique three-layer shadow creating the impression of a physical page with genuine thickness:

.scripture-page {
box-shadow:
0 2px 4px rgba(20, 16, 10, 0.06),
/* close — defines the edge */ 0 8px 24px rgba(20, 16, 10, 0.08),
/* mid — creates lift */ 0 20px 60px rgba(20, 16, 10, 0.05); /* far — grounds it */
}

On dark backgrounds (Study Dark mode), the page shadow reads as a halo of lighter dark against the navy chrome — the page still floats.

The Paper Texture

Applied subtly to all paper surfaces via a CSS/React Native background:

background-image: url('data:image/svg+xml,...'); /* SVG noise filter at 2% opacity */
background-color: #f5f3ee;

The feel: high-quality uncoated paper — not old parchment, not a digital gradient. Clean and modern but physically warm.

The page background is never perfectly white. Even in the lightest mode, the page uses white-200 (#F5F3EE) — the slight warmth is essential to the paper metaphor.

Corner Radius

TokenValueUsage
radius.xs2pxMicro elements
radius.sm4pxChips, badges, small controls
radius.md8pxButtons, inputs, chrome panels
radius.lg12pxCards, note cards, paper surfaces
radius.xl16pxBottom sheets (top corners only)
radius.full9999pxPills, avatars, FABs

Radius Philosophy

  • Paper surfaces use large radius (12px) — softer, more physical
  • Chrome surfaces use standard control radius (8px)
  • The scripture page itself has no border-radius — paper has square edges
  • Bottom sheets use 16px on top corners only

Border Usage

Borders are used sparingly. Paper surfaces never have visible borders — they float via shadow.

ContextBorderColor
Chrome dividers (light mode)1px solidwhite-500
Chrome dividers (dark mode)1px solidnavy-700
Horizontal section rules0.5px at 40% opacitywhite-500

The 0.5px section rule is barely visible — just enough to organize, never to divide.