C

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

surface#f2f2f2
surface-dim#e8e8e8
surface-bright#ffffff
surface-container-lowest#f9f9f9
surface-container-low#f5f5f5
surface-container#f2f2f2
surface-container-high#ececec
surface-container-highest#e0e0e0
on-surface#313131
on-surface-variant#595959
inverse-surface#0a0a0a
inverse-on-surface#f2f2f2
outline#b6b6b6
outline-variant#d0d0d0
surface-tint#4693ff
primary#4693ff
on-primary#ffffff
primary-container#e3f0ff
on-primary-container#003681
inverse-primary#82b6ff
secondary#fc574a
on-secondary#ffffff
secondary-container#ffd6a8
on-secondary-container#780a02
tertiary#2db35e
on-tertiary#ffffff
tertiary-container#b9d6ff
on-tertiary-container#003681
error#b20f03
on-error#ffffff
error-container#feccc8
on-error-container#780a02
primary-fixed#e3f0ff
primary-fixed-dim#b9d6ff
on-primary-fixed#003681
on-primary-fixed-variant#003681
secondary-fixed#ffd6a8
secondary-fixed-dim#ffb89a
on-secondary-fixed#780a02
on-secondary-fixed-variant#780a02
tertiary-fixed#b9d6ff
tertiary-fixed-dim#9d94ec
on-tertiary-fixed#003681
on-tertiary-fixed-variant#003681
background#f2f2f2
on-background#313131
surface-variant#e8e8e8

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.