Skip to content
StrictThemes

Themes / 09

Civic

A plain, trustworthy theme for public services and health. WCAG AAA contrast, large type, and nothing left to guess.

Install into a shadcn project
npx shadcn@latest add https://strictthemes.com/r/civic.json

01 / Preview

Stock shadcn components, this theme.

Civic

Ship the page, keep the system.

Every color, corner and typeface in this box comes from the theme's tokens. The components are stock shadcn.

NewDraftv1.2.0Failed
Invite a reviewer
They get read access to this project.
Colors on token96%
x
Spacing on scale88%
x
Type on scale100%
x

02 / Page prompts

Paste one into your agent. Get that page.

Each prompt is a full brief for one page in this theme: its sections, layout, behavior, and a checklist the agent goes through before it says it is done. The rules in every prompt are generated from the theme's strict block. Each preview is the page a coding agent built from the prompt, shown as it came out.

  • Start page

    The start page of a public service, saying what it is for, who can use it, what you need, how long it takes, a "Start now" link and other ways to apply.

    32.5k characters · Run 3 times in Claude Code

    Strict Check 100%

  • Question page

    One step of a public-service form, with a few related questions, hints under the labels, a date in three fields, an error summary that links to each field, and a Back link.

    33.7k characters · Run 3 times in Claude Code

    Strict Check 100%

  • Check answers

    The last step of a public-service form, listing the answers so far with a link to change each one, the price, a declaration to tick and the button that sends the application.

    33.8k characters · Run 3 times in Claude Code

    Strict Check 100%

  • Confirmation

    The page a person sees after sending a public-service application, with a reference number they can copy, what happens next with dates, how to get help and a link to give feedback.

    33.0k characters · Run 3 times in Claude Code

    Strict Check 100%

  • Guidance

    A page of plain-language guidance for a public service, with a contents list, short sections, a list, a table of fees, one important notice and related links.

    33.7k characters · Run 3 times in Claude Code

    Strict Check 100%

03 / Colors

Every color the theme allows.

  • primary

    #0B3D91 / #9CC2FF

  • on-primary

    #FFFFFF / #061A3D

  • secondary

    #0B1320 / #F4F7FB

  • on-secondary

    #FFFFFF / #0B1320

  • tertiary

    #FFD400

  • on-tertiary

    #0B1320

  • neutral

    #414B5A / #B6C0CE

  • background

    #FFFFFF / #0A0F18

  • surface

    #F2F5F9 / #131B28

  • foreground

    #0B1320 / #F4F7FB

  • border

    #7B8696 / #66738A

  • error

    #A30F0F / #FF9B91

  • success

    #0B5F33 / #7BE0A6

Left: light mode. Right: dark mode.

04 / Typography

Five sizes. Nothing in between.

  • display

    Public Sans · 48px · weight 800 · line 1.1

    The quick brown fox

  • h1

    Public Sans · 34px · weight 700 · line 1.2

    The quick brown fox

  • h2

    Public Sans · 24px · weight 700 · line 1.3

    The quick brown fox

  • body

    Atkinson Hyperlegible Next · 18px · weight 400 · line 1.6

    The quick brown fox

  • label

    Atkinson Hyperlegible Mono · 16px · weight 500 · line 1.4

    The quick brown fox

05 / Shape and space

Corners and spacing.

  • sm

    3px

  • md

    5px

  • lg

    8px

  • xs

    4px

  • sm

    8px

  • md

    16px

  • lg

    24px

  • xl

    40px

  • 2xl

    64px

06 / Rules

What the strict block enforces.

Contrast
WCAG AAA
Colors
Tokens only, within 0.02 of a token
Spacing
Scale only, plus 0, 1px, 2px
Corners
Scale only, no full rounds
Type
Scale only, declared fonts only
purple gradient
Not allowed
emoji icons
Not allowed
nested cards
Flagged
glow shadows
Not allowed

07 / Guidance

What your agent reads.

Overview

Civic is for services everyone has to be able to use: a council form, a clinic booking, a benefits application, a school portal. It is built for the person who is tired, on an old phone, in bad light, or using a screen reader. Every text color meets WCAG AAA, borders are dark enough to see, and the design never asks the reader to guess what something is.

Colors

  • Primary (#0B3D91) is a deep civic blue, for the main action and links.
  • Secondary (#0B1320) is blue-black ink for secondary buttons and headings.
  • Tertiary (#FFD400) is signal yellow, with dark text on it. Use it for one notice that must not be missed, and for nothing else.
  • Neutral (#414B5A) sets hints and secondary text. It is still 7:1 on the page.
  • Background (#FFFFFF) is white. Surface (#F2F5F9) is a pale blue-grey for a summary box or a section of a form.
  • Border (#7B8696) is dark enough (over 3:1) that the edge of a field can be seen.
  • Success (#0B5F33) and Error (#A30F0F) report state. Each comes with a word and an icon, and an error says how to fix it.

Typography

Public Sans sets headings, plain and sturdy. Atkinson Hyperlegible Next sets body text at 18px: it was drawn so that similar letters cannot be confused. Atkinson Hyperlegible Mono sets labels, reference numbers, dates and button text at 16px, larger than a label in other themes. Labels are sentence case. The label of a form field, and the legend of a group of fields, is not a mono label: it is body text in bold, so the question is the largest thing by its field. Write in plain language, one idea to a sentence.

Layout

One column, 720px at its widest, for anything a person fills in or reads; a 12-column grid, 1120px at its widest, only for overviews. One question per screen where you can. Spacing comes from the scale (4, 8, 16, 24, 40, 64): 24px between fields, 40px between groups. Touch targets are at least 44px tall, with 8px between them.

Elevation & Depth

Flat. A summary box is the pale surface with a 1px border. Nothing depends on a shadow to be seen. Dialogs float on one short, neutral shadow and also have a border.

Shapes

Lightly rounded and consistent: 3px for badges and checkboxes, 5px for buttons and inputs, 8px for boxes. No pills, and no shape that carries meaning by itself.

Components

  • Buttons: civic blue for the one main action on a screen, blue-black for the rest. Sentence-case labels that say what happens: "Save and continue".
  • Cards (boxes): the pale surface, 8px corners, 24px padding, a 1px border.
  • Badges: signal yellow with dark text, for a notice. State badges use the success and error colors with a word.
  • Inputs: a visible label above, a hint under the label, and the error message next to the field it is about.
  • Icons: 1.5px or 2px stroke line icons, always with a word beside them. Never emoji.

Do's and Don'ts

  • Do keep every text pair at 7:1 or better, in both modes.
  • Do put a visible label on every field and a word beside every icon.
  • Do say what went wrong and what to do next, in the error itself.
  • Don't rely on color, position or shape alone to say something.
  • Don't use placeholder text as a label, or light grey text for anything.
  • Don't introduce a color, size or radius that is not a token above.