DESIGN.md · Analysis
Cloudflare Challenge
onsurity.com · 10 Jun 2026 · 47 colors · Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif
Cloudflare Challenge
A security verification interface designed for clarity and trust. The system uses a minimal, high-contrast aesthetic to communicate protection and transparency during bot-detection workflows.
Colors
Typography
- display
- fontFamily: Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif · fontSize: 40px · fontWeight: 600 · lineHeight: 48px · letterSpacing: -0.02em
- headline-lg
- fontFamily: Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif · fontSize: 32px · fontWeight: 600 · lineHeight: 40px · letterSpacing: -0.01em
- headline-md
- fontFamily: Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif · fontSize: 24px · fontWeight: 600 · lineHeight: 32px · letterSpacing: 0em
- title-lg
- fontFamily: Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif · fontSize: 20px · fontWeight: 600 · lineHeight: 28px · letterSpacing: 0.01em
- body-lg
- fontFamily: Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0em
- body-md
- fontFamily: Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0em
- label-md
- fontFamily: Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif · fontSize: 14px · fontWeight: 600 · lineHeight: 20px · letterSpacing: 0.01em
- label-sm
- fontFamily: Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.02em
Design guidance
Overview
Cloudflare Challenge is a security verification interface that embodies 'Transparent Minimalism'—a design philosophy that prioritizes clarity, trust, and accessibility during critical security moments. The system serves users who need reassurance that their interaction is protected, not obstructed. The aesthetic is deliberately austere: a near-white canvas (#f2f2f2) with high-contrast text (#313131) and surgical use of accent colors (primary blue #4693ff for actions, error red #b20f03 for failures, success green #2db35e for completion). The emotional response is calm confidence: the UI communicates 'your security is being verified with precision' rather than 'something is wrong.' The brand personality is professional, direct, and human-centered—never alarmist. Example sentence in voice: 'Verifying you are human. This may take a few seconds.'
Colors
The color system operates on a principle of 'functional contrast'—every color choice serves a specific security or status purpose. Primary (#4693ff) is the accent for interactive elements, focus states, and links; it appears on hover targets (outline: 2px solid #4693ff, outline-offset: 2px) and link text. Secondary (#fc574a) is reserved for error states and warnings, applied to failure icons (stroke: #fc574a, fill: #fc574a) and error overlays (background-color: #feccc8, color: #780a02). Tertiary (#2db35e) signals success—used on completion checkmarks (stroke: #2db35e, fill: #2db35e) and verification circles. The surface stack is deliberately minimal: surface (#f2f2f2) is the default page background, surface-container (#f2f2f2) is the card background, and surface-container-high (#ececec) is
Typography
The type system uses a single font family stack (Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif) to ensure consistency across platforms and reduce cognitive load during security verification. Display (40px, 600 weight, -0.02em letter-spacing) is reserved for the domain name (www.onsurity.com), establishing immediate context. Headline-md (24px, 600 weight) is used for status messages ('Verifying you are human'). Body-md (16px, 400 weight, 24px line-height) carries the explanatory text and maintains 1.5 line-height ratio for readability over busy backgrounds. Label-sm (12px, 500 weight, 0.02em letter-spacing) is applied to footer text and metadata. All text over verification cards uses text-shadow: none to maintain contrast; on animated backgrounds, apply t
Layout
The layout follows a 'centered column' model with max-width: 960px (container-max-width: 960px) and margin: 8rem auto on desktop, reducing to margin-top: 4rem on mobile (max-width: 720px). The main content area uses padding-left: 1.5rem (24px gutter) to accommodate smaller screens. Vertical rhythm is maintained through consistent spacing: section separation uses lg spacing (40px), card padding uses md spacing (24px), and internal element spacing uses sm spacing (12px). The verification card itself is a single column, centered, with rounded: 4px (DEFAULT), border: 1px solid #b6b6b6, and box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06). The footer divider (border-top: 1px solid #b6b6b6) separates metadata from the main content, with margin-top: 40px and margin-bottom: 40px. On mobile, the layout st
Elevation & Depth
Depth is conveyed through subtle shadows and border treatments rather than layering. The base surface (Level 1) is the page background (#f2f2f2) with no shadow. The verification card (Level 2) uses box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06) and a 1px solid border at #b6b6b6 to separate it from the background. On hover, the card transitions to box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08) with a 200ms ease-in-out timing function, signaling interactivity without jarring motion. Status icons (Level 3) are rendered with inset shadows (box-shadow: inset 0 0 0 #228b49 for success, inset 0 0 0 #b20f03 fo
Shapes
The shape philosophy is 'Functional Geometry'—minimal, purposeful rounding that aids usability without sacrificing precision. Buttons and interactive elements use rounded: 2px (sm) for a crisp, technical appearance that signals 'security' and 'control.' Verification cards use rounded: 4px (DEFAULT) to soften corners while maintaining a structured feel. Status icons (success, error, loading spinners) use border-radius: 50% (full) to create circular containers, reinforcing the 'complete' or 'contained' nature of the verification state. Focus outlines use border-radius: 2px to match the button ra
Components
Status & Feedback Elements Status icons are the primary feedback mechanism. Success icons (status-icon-success) use a 30px circle with border-radius: 50%, background-color: #2db35e, stroke: #2db35e, stroke-width: 2px, and an inset shadow (box-shadow: inset 0 0 0 #228b49) for depth. The checkmark path animates with stroke-dasharray: 242, stroke-dashoffset: 242 initially, then animates to stroke-dashoffset: 0 over 400ms (cubic-bezier(.65, 0, .45, 1)) with a 300ms delay. Error icons (status-icon-error) mirror this structure but use background-color: #b20f03, stroke: #b20f03, and inset shadow: inset 0 0 0 #b20f03. The failure cross animates with fill: #f2f2f2 over 100ms at 400ms delay. Loading spinners (status-icon-loading) use a 30px circle with stroke: #228b49, stroke-width: 3px, and ani
Do's and Don'ts
**Do**
- Do use high contrast (on-surface #313131 on surface #f2f2f2 = 16:1 WCAG AAA) for all body text and headings to ensure readability during security-critical moments.
- Do apply status colors (primary #4693ff, secondary #fc574a, tertiary #2db35e) consistently: blue for actions/focus, red for errors, green for success—never mix these meanings.
- Do use the 2px outline with 2px offset for all focus states (outline: 2px solid #4693ff, outline-offset: 2px, border-radius: 2px) to support keyboard navigation and accessibility.
- Do maintain the 24px gutter (padding-left: 1.5rem) on mobile and the 960px max-width on desktop to ensure the verification card remains readable and centered.
- Do animate status transitions with cubic-bezier(.55, .085, .68, .53) easing and 200–400ms durations to signal state changes without feeling sluggish or jarring.
**Don't**
- Don't use colors outside the defined palette (e.g., no custom oranges, purples, or grays) as this breaks the security-focused visual language and confuses users about status.
- Don't apply text-shadow or other effects to body text on the light background (#f2f2f2); reserve text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) only for text over animated or busy backgrounds.
- Don't round corners beyond 4px on cards or 2px on buttons—excessive rounding softens the technical, trustworthy aesthetic and makes the UI feel frivolous.
- Don't use system-ui or generic sans-serif as the final font-family; always include the full stack (Segoe UI, Roboto, system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif) to ensure consistent rendering across platforms.
- Don't animate status icons with durations longer than 600ms or use easing functions other than cubic-bezier(.55, .085, .68, .53) or ease-out, as this delays user feedback and undermines the sense of security.
Edit, then copy or download.