Remixes of www.gre.ac.uk
Latest remixes
No public remixes yet. Be the first to make one.
Remix itLatest remixes
No public remixes yet. Be the first to make one.
Remix itSwitch between the rendered Visual preview and the Raw DESIGN.md.
version: alpha
name: Gre
description: |
The University of Greenwich design system embodies institutional authority
tempered with modern accessibility. Built on a foundation of deep navy
foundations (#000033) paired with a vibrant primary blue (#0058AA), the system
evokes academic gravitas while maintaining contemporary clarity. The
typography balances two distinct typeface families—CooperHewitt for display
moments and Public Sans for body text—creating a hierarchy that progresses
from bold, tight-spaced headlines to readable, generous body composition. The
palette is notably restrained: neutrals dominate the canvas, with colour
deployed strategically for navigation, calls-to-action, and section
differentiation. Whitespace is generous and disciplined, reflecting
institutional confidence. The overall effect is serious yet inviting—a system
designed for diverse audiences navigating complex educational content.
source:
url: "https://www.gre.ac.uk/"
pagesAnalyzed: 6
extractedAt: 2026-11-07
tokensMeasured: true
colors:
primary: "#0058AA"
link: "#00033D"
canvas: "#FFFFFF"
surface-alt: "#2E2E2E"
on-primary: "#FFFFFF"
ink: "#000000"
body: "#0A0A0A"
muted: "#2E2E2E"
hairline: "#DDDBDD"
accent-1: "#89E9D7"
neutral-1: "#E5E5E5"
neutral-2: "#808080"
neutral-3: "#CBC9CC"
typography:
display-xl:
fontFamily: CooperHewitt
fontSize: 80px
fontWeight: 700
lineHeight: 1.4
letterSpacing: 0px
display-lg:
fontFamily: CooperHewitt
fontSize: 76.8px
fontWeight: 700
lineHeight: 1.1
letterSpacing: -0.8px
display-md:
fontFamily: CooperHewitt
fontSize: 54.4px
fontWeight: 700
lineHeight: 1.1
letterSpacing: -0.8px
display-sm:
fontFamily: CooperHewitt
fontSize: 48px
fontWeight: 700
lineHeight: 1.2
letterSpacing: 0px
display-xs:
fontFamily: CooperHewitt
fontSize: 40px
fontWeight: 700
lineHeight: 1.4
letterSpacing: 0px
heading-xxl:
fontFamily: "Public Sans"
fontSize: 33px
fontWeight: 700
lineHeight: 1.4
letterSpacing: 0px
heading-xl:
fontFamily: "Public Sans"
fontSize: 28.8px
fontWeight: 400
lineHeight: 1.6
letterSpacing: 0px
heading-lg:
fontFamily: "Public Sans"
fontSize: 25px
fontWeight: 700
lineHeight: 1.4
letterSpacing: 0px
heading-md:
fontFamily: "Public Sans"
fontSize: 20.96px
fontWeight: 700
lineHeight: 1.4
letterSpacing: 0px
heading-sm:
fontFamily: "Public Sans"
fontSize: 20.8px
fontWeight: 700
lineHeight: 1.4
letterSpacing: 0px
heading-xs:
fontFamily: "Public Sans"
fontSize: 17.6px
fontWeight: 700
lineHeight: 1.4
letterSpacing: 0px
body-lg:
fontFamily: "Public Sans"
fontSize: 16px
fontWeight: 400
lineHeight: 1.6
letterSpacing: 0px
body-lg-tight:
fontFamily: "Public Sans"
fontSize: 16px
fontWeight: 400
lineHeight: 1
letterSpacing: 0px
body-lg-strong:
fontFamily: "Public Sans"
fontSize: 16px
fontWeight: 700
lineHeight: 1.6
letterSpacing: 0px
body-md:
fontFamily: "Public Sans"
fontSize: 14px
fontWeight: 400
lineHeight: 1.6
letterSpacing: 0px
body-sm:
fontFamily: "Public Sans"
fontSize: 12.96px
fontWeight: 400
lineHeight: 1.6
letterSpacing: 0px
body-xs:
fontFamily: "Public Sans"
fontSize: 12.8px
fontWeight: 400
lineHeight: 1.6
letterSpacing: 0px
button-xl:
fontFamily: "Public Sans"
fontSize: 21.28px
fontWeight: 700
lineHeight: 1.4
letterSpacing: 0px
button-lg:
fontFamily: CooperHewitt
fontSize: 17.6px
fontWeight: 400
lineHeight: 2.55
letterSpacing: 0px
label-md:
fontFamily: "Public Sans"
fontSize: 16px
fontWeight: 400
lineHeight: 2.8
letterSpacing: 0px
label-sm:
fontFamily: "Public Sans"
fontSize: 14px
fontWeight: 400
lineHeight: 1.8
letterSpacing: 0px
caption:
fontFamily: "Public Sans"
fontSize: 12px
fontWeight: 400
lineHeight: 1
letterSpacing: 0px
rounded:
none: 0px
full: 9999px
spacing:
xxs: 4px
xs: 8px
sm: 12px
md: 16px
lg: 20px
xl: 24px
xxl: 28px
xxxl: 32px
section: 36px
band: 64px
borderWidths:
thin: 1px
shadows:
sm: "rgba(0, 0, 0, 0.15) 0px 9px 9px 0px, rgba(0, 0, 0, 0.1) 0px 4.5px 4.5px 0px"
elevationStrategy: single-tier
themes:
derived: dark # the other theme is the site's measured palette
light:
bg: "#FFFFFF"
surface: "#2E2E2E"
surfaceRaised: "#2C2C2C"
text: "#000000"
textMuted: "#0A0A0A"
border: "#DDDBDD"
accent: "#0058AA"
accentFg: "#FFFFFF"
focusRing: "#0058AA"
elevation: shadow
dark:
bg: "#0A1015"
surface: "#191E23"
surfaceRaised: "#252A2F"
text: "#F5F8FC"
textMuted: "#9CA0A4"
border: "#31363A"
accent: "#0082FC"
accentFg: "#0B0B0C"
focusRing: "#0063BE"
elevation: "border+surface"
contrastFailures:
- "light: text on surface = 1.55:1 (needs 4.5:1)"
components:
button-primary:
typography: "{typography.button-lg}"
textColor: "{colors.on-primary}"
border: "1px solid {colors.primary}"
height: 48px
padding: "0px 8px 0px 8px"
backgroundColor: "{colors.primary}"
button-primary-sm:
textColor: "{colors.on-primary}"
border: "1px solid {colors.canvas}"
height: 40px
padding: "0px 15px 0px 15px"
fontSize: 17.6px
fontFamily: CooperHewitt
fontWeight: 400
lineHeight: 2.27
rounded: 48px
backgroundColor: "{colors.primary}"
button-filled:
typography: "{typography.caption}"
textColor: "{colors.on-primary}"
height: 34.375px
padding: "11.2px 16px 11.2px 16px"
backgroundColor: "rgb(37, 127, 160)"
button-icon:
textColor: "{colors.on-primary}"
height: 48px
padding: "0px 7.5px 0px 7.5px"
fontSize: 30.4px
fontFamily: "Public Sans"
fontWeight: 400
lineHeight: 1.58
navigation:
textColor: "{colors.ink}"
height: 34.375px
fontSize: 12px
fontFamily: "Public Sans"
fontWeight: 400
lineHeight: 1.5
backgroundColor: "{colors.neutral-3}"
footer:
textColor: "{colors.on-primary}"
padding: "0px 0px 140px 0px"
fontSize: 16px
fontFamily: "Public Sans"
fontWeight: 400
lineHeight: 1.5
backgroundColor: "{colors.surface-alt}"
link:
textColor: "{colors.ink}"
padding: "15px 15px 15px 15px"
fontSize: 19.2px
fontFamily: "Public Sans"
fontWeight: 400
lineHeight: 1.5
rounded: "8px 8px 0px 0px"
backgroundColor: "rgb(238, 237, 238)"
link-lg:
textColor: "{colors.muted}"
fontSize: 16px
fontFamily: "Public Sans"
fontWeight: 400
lineHeight: 1.5
backgroundColor: "{colors.canvas}"
states:
other-focus:
target: other
state: focus
outline: none
input-focus:
target: input
state: focus
outline: none
boxShadow: "{colors.primary} 0px 0px 5px"
borderColor: "{colors.primary}"
borderWidth: 1px
backgroundColor: "rgb(254, 254, 254)"
input-disabled:
target: input
state: disabled
backgroundColor: "{colors.hairline}"
link-hover:
target: link
state: hover
textColor: "rgb(0, 117, 227)"
button-hover:
target: button
state: hover
textColor: "rgb(254, 254, 254)"
backgroundColor: "rgb(23, 121, 186)"
other-hover:
target: other
state: hover
backgroundColor: "rgb(20, 103, 158)"
link-focus:
target: link
state: focus
textColor: "rgb(23, 121, 186)"
backgroundColor: "{colors.canvas}"
nav-hover:
target: nav
state: hover
boxShadow: "{colors.neutral-3} 0px 7px 0px, {colors.neutral-3} 0px 14px 0px"
backgroundColor: "{colors.neutral-3}"
card-hover:
target: card
state: hover
borderColor: currentcolor
other-disabled:
target: other
state: disabled
opacity: 0.8
button-active:
target: button
state: active
textColor: "{colors.on-primary}"
borderColor: "rgba(162, 192, 169, 0.5)"
borderWidth: 1px
backgroundColor: "rgb(44, 100, 21)"
link-focus-visible:
target: link
state: focus-visible
outline: "{colors.ink} solid 2px"
outlineColor: "{colors.ink}"
outlineWidth: 2px
button-focus:
target: button
state: focus
outline: "{colors.ink} solid 2px"
outlineColor: "{colors.ink}"
outlineWidth: 2px
breakpoints:
- width: 375
containerWidth: 355
gridColumns: 3
navLinksVisible: 3
menuToggleVisible: true
headingPx: 36
bodyPx: 16
sectionPaddingX: 15
- width: 768
containerWidth: 738
gridColumns: 3
navLinksVisible: 3
menuToggleVisible: true
headingPx: 48
bodyPx: 16
sectionPaddingX: 15
- width: 1024
containerWidth: 994
gridColumns: 7
navLinksVisible: 10
menuToggleVisible: true
headingPx: 80
bodyPx: 16
sectionPaddingX: 15
- width: 1280
containerWidth: 1250
gridColumns: 7
navLinksVisible: 10
menuToggleVisible: true
headingPx: 80
bodyPx: 16
sectionPaddingX: 15
- width: 1440
containerWidth: 1410
gridColumns: 7
navLinksVisible: 10
menuToggleVisible: true
headingPx: 80
bodyPx: 16
sectionPaddingX: 15
coverage:
statesFound: 81
gradientsFound: 0
rolesUnassigned: 4
archetypesUnnamed: 0
archetypesDetected: 0
responsiveMeasured: true
stylesheetsBlocked: false
semanticRampDeclared: false
The University of Greenwich design system embodies institutional authority tempered with modern accessibility. Built on a foundation of deep navy foundations (#000033) paired with a vibrant primary blue (#0058AA), the system evokes academic gravitas while maintaining contemporary clarity. The typography balances two distinct typeface families—CooperHewitt for display moments and Public Sans for body text—creating a hierarchy that progresses from bold, tight-spaced headlines to readable, generous body composition. The palette is notably restrained: neutrals dominate the canvas, with colour deployed strategically for navigation, calls-to-action, and section differentiation. Whitespace is generous and disciplined, reflecting institutional confidence. The overall effect is serious yet inviting—a system designed for diverse audiences navigating complex educational content.
Key Characteristics
{colors.primary} — #0058AA) used consistently for CTAs and interactive states#00033D) is notably dark, ensuring hierarchy over accent blue{colors.surface-alt} — #2E2E2E) for alternating bands and captions{colors.primary} — #0058AA): Primary CTAs, brand accent, active link states, and hero bands. Primary button fills and focus ring colour. Core interaction signal across all surfaces.{colors.link} — #00033D): Inline hyperlinks and link text. Much darker than primary, establishing clear hierarchy.{colors.canvas} — #FFFFFF): Default page background and card surfaces. Label and text colour on dark brand surfaces.{colors.ink} — #000000): Primary heading and text colour; highest contrast.{colors.body} — #0A0A0A): Body copy text; near-black for readability.{colors.surface-alt} — #2E2E2E): Alternating section backgrounds; secondary text and captions. Mid-tone neutral for visual rhythm.{colors.hairline} — #DDDBDD): 1px borders and dividers; subtle, non-intrusive.{colors.neutral-1} — #E5E5E5): Neutral surface (role unassigned by extraction; treat as secondary surface).{colors.neutral-2} — #808080): Neutral mid-tone (role unassigned; decorative or disabled text).{colors.neutral-3} — #CBC9CC): Neutral light tone (role unassigned; decorative).{colors.accent-1} — #89E9D7): Decorative accent; no measured semantic role. Use sparingly for visual flourish or secondary highlights.Primary (Display & Headings): CooperHewitt, Georgia, serif
Secondary (Body & UI): Public Sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display XL | CooperHewitt | 80px | 700 | 1.4 | -0.8px | Hero / page title; tight tracking |
| Display LG | CooperHewitt | 76.8px | 700 | 1.1 | -0.8px | Large hero headline; condensed line height |
| Display MD | CooperHewitt | 54.4px | 700 | 1.1 | -0.8px | Mid-sized display; tight spacing |
| Display SM | CooperHewitt | 48px | 700 | 1.2 | 0px | Secondary display; standard tracking |
| Display XS | CooperHewitt | 40px | 700 | 1.4 | 0px | Tertiary display heading |
| Heading XXL | Public Sans | 33px | 700 | 1.4 | 0px | Extra-large section heading |
| Heading XL | Public Sans | 28.8px | 400 | 1.6 | 0px | Large heading; lighter weight |
| Heading LG | Public Sans | 25px | 700 | 1.4 | 0px | Large section heading |
| Heading MD | Public Sans | 20.96px | 700 | 1.4 | 0px | Medium heading |
| Heading SM | Public Sans | 20.8px | 700 | 1.4 | 0px | Small heading |
| Heading XS | Public Sans | 17.6px | 700 | 1.4 | 0px | Extra-small heading |
| Button XL | CooperHewitt | 21.28px | 700 | 1.4 | 0px | Large button text (primary, pill-shaped) |
| Button LG | CooperHewitt | 17.6px | 400 | 2.55 | 0px | Large button; lighter weight, generous line |
| Body LG | Public Sans | 16px | 400 | 1.6 | 0px | Large body text (lists, rich text) |
| Body LG Strong | Public Sans | 16px | 700 | 1.6 | 0px | Large body bold emphasis |
| Body LG Tight | Public Sans | 16px | 400 | 1 | 0px | Compact line height for links |
| Body MD | Public Sans | 14px | 400 | 1.6 | 0px | Standard body text |
| Body SM | Public Sans | 12.96px | 400 | 1.6 | 0px | Small body text |
| Body XS | Public Sans | 12.8px | 400 | 1.6 | 0px | Extra-small body |
| Label MD | Public Sans | 16px | 400 | 2.8 | 0px | Form labels; tall line height |
| Label SM | Public Sans | 14px | 400 | 1.8 | 0px | Small form label |
| Caption | Public Sans | 12px | 400 | 1 | 0px | Figure captions, fine print |
Primary Button (Pill-shaped, Large)
{colors.primary} (#0058AA){colors.canvas} (#FFFFFF)1px solid {colors.primary} (#0058AA){rounded.full} (9999px)#1779BA, text #FEFEFEPrimary Button (Pill-shaped, Small)
{colors.primary} (#0058AA){colors.canvas} (#FFFFFF)1px solid {colors.canvas} (#FFFFFF){rounded.full} (9999px)#177ABA, text #FEFEFEFilled Button (Icon/Compact)
#257FA0{colors.canvas} (#FFFFFF){rounded.none} (0px)#257FA0 (inherit)Icon Button (Ghost)
{colors.canvas} (#FFFFFF){rounded.none} (0px)Link Card (Default)
#EEEDED{colors.body} (#0A0A0A)8px 8px 0px 0px (top corners only)Link Card (Large)
{colors.canvas} (#FFFFFF)#2E2E2E{rounded.none} (0px)Navigation Bar (Default)
#CBC9CC{colors.ink} (#000000){rounded.none} (0px)#CBC9CC, box shadow rgba(203, 201, 204) 0px 7px 0px, rgba(203, 201, 204) 0px 14px 0pxInput Field (Focus State)
#FEFEFE{colors.body} (#0A0A0A)1px solid {colors.primary} (#0058AA){rounded.none} (0px)rgb(0, 88, 170) 0px 0px 5pxInput Field (Disabled State)
#DDDBDD{colors.body} (inherited)Base unit: {spacing.md} (16px). Scale progresses by 4px intervals for fine control, then larger steps for section spacing.
{spacing.xxs} = 4px — micro padding (icon spacing){spacing.xs} = 8px — compact padding (button internal){spacing.sm} = 12px — small gap (list items){spacing.md} = 16px — standard padding, body text leading{spacing.lg} = 20px — comfortable margin{spacing.xl} = 24px — card padding{spacing.xxl} = 28px — large section gap{spacing.xxxl} = 32px — extra-large gap{spacing.section} = 36px — section internal padding{spacing.band} = 64px — hero band vertical paddingUsage Context
{spacing.band} reserves hero areas| Viewport | Content Width | Section Padding X | Grid Columns |
|---|---|---|---|
| 375px | 355px | 15px | 3 |
| 768px | 738px | 15px | 3 |
| 1024px | 994px | 15px | 7 |
| 1280px | 1250px | 15px | 7 |
| 1440px | 1410px | 15px | 7 |
Whitespace is a primary structural tool. Major sections are separated by {spacing.band} (64px) vertical padding, creating breathing room between content zones. Card and heading margins use {spacing.section} (36px) or {spacing.xxxl} (32px) to establish visual rhythm. Paragraph line height of 1.6 in body text provides internal breathing; list items are gapped by {spacing.sm} (12px). This discipline creates a calm, authoritative reading experience.
{rounded.none} = 0px — buttons (filled, icon), inputs, primary cards, navigation, footer{rounded.full} = 9999px — primary pill-shaped buttons, icon buttons when circularThe system is predominantly sharp-cornered, with radius used only for emphasis on primary CTAs and cards with top-rounded corners (8px bespoke, not in token scale).
1px — used on button borders (primary), input focus borders, dividers ({colors.hairline})| Level | Treatment | Use |
|---|---|---|
| Flat | No shadow; colour-blocking via background | Default cards, buttons, surfaces |
| Dropdown | rgba(0, 0, 0, 0.15) 0px 9px 9px 0px, rgba(0, 0, 0, 0.1) 0px 4.5px 4.5px 0px | Dropdown menus, popovers, overlays |
Shadow Philosophy
The system employs a single-tier elevation strategy: most components are flat, with depth conveyed through colour changes (light neutrals on dark backgrounds and vice versa). A single shadow is reserved for true floating elements (dropdowns, popovers) to maintain visual hierarchy without visual noise. The shadow uses two layers—a soft outer (0.15 opacity at 9px) and tighter inner (0.1 opacity at 4.5px)—for subtle, readable depth.
{colors.primary} (#0058AA) for all primary calls-to-action and interactive states; it is the brand's trust signal.{colors.link} (#00033D) to preserve hierarchy over accent blue.{spacing.band} (64px) between major content sections; it is the defining rhythm of the layout.{rounded.none} = 0px) except on primary pill-shaped buttons where {rounded.full} applies.{colors.hairline} (#DDDBDD) for 1px dividers and subtle borders; reserve heavier strokes for interactive elements.{typography.caption}) for body copy; maintain {typography.body-sm} at 12.96px minimum for readability.#00033D) for visual separation.| Breakpoint | Width | Content Width | Grid Columns | Key Changes |
|---|---|---|---|---|
| Mobile | 375px | 355px | 3 | Full-width sections; navigation menu toggle; heading size 36px |
| Tablet | 768px | 738px | 3 | Same 3-column layout; heading size 48px |
| Desktop (Small) | 1024px | 994px | 7 | Expand to 7-column grid; heading size 80px; all nav links visible |
| Desktop (Medium) | 1280px | 1250px | 7 | Larger content width; layout unchanged |
| Desktop (Large) | 1440px | 1410px | 7 | Max width reached; section padding consistent at 15px |
Key Collapse Points
{spacing.md} (16px) minimum for comfortable spacing.#0058AA) — Use for buttons, active states, brand accents.#FFFFFF) — Default surface for all page content.#000000) — Primary colour for all headings and high-contrast labels.#0A0A0A) — Near-black for body copy and secondary content.#00033D) — Dark navy for inline hyperlinks; darker than primary to establish hierarchy.#2E2E2E) — Mid-tone neutral for alternating band backgrounds and secondary text.#DDDBDD) — 1px borders and subtle separators.#89E9D7) — Teal; minimal use for visual flourish only.{rounded.full}) with {colors.primary} background. Filled buttons are sharp-cornered ({rounded.none}). All button text uses CooperHewitt except LG variant (weight 400).{spacing.band} (64px) between major sections. Card and heading margins use {spacing.section} (36px). Body text line height is always 1.6.#000000) > Body (#0A0A0A) > Surface Alt (#2E2E2E) > Neutral tones. Link colour stays dark (#00033D) regardless of primary blue.rgba(0, 0, 0, 0.15) 0px 9px 0px, rgba(0, 0, 0, 0.1) 0px 4.5px 0px.active, visited, aria-pressed) means they are not defined in this system.#E5E5E5), Neutral 2 (#808080), Neutral 3 (#CBC9CC), and Accent 1 (#89E9D7) had no measurable semantic role in the extracted pages. They are described as decorative; their intended use should be determined by the design team.