Brand Style Specification

Institutional-grade, without being cold.

The University Modular Timetable & Analytics System runs on a strictly monochrome design language. Hierarchy through tone, weight and spacing.

16

Design tokens

7

Type roles

WCAG AA

Compliance

07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
Mon4 May

COS301

Lecture

08:00 - 09:00

Tue5 May

COS333

Lecture

09:00 - 11:00

Wed6 May

COS344

Lecture

10:00 - 11:00

Thu7 May

COS314

Lecture

13:00 - 14:00

Fri8 May
Weekly Schedule Grid componentSpec
01Foundation

A monochrome system, intentionally restrained.

Hierarchy comes from tone, weight and spacing. The discipline is what makes the interface feel institutional-grade without being cold.

#ffffff

White Base

#f4f4f5

Off-White Surface

#e4e4e7

Light Elevated

#09090b

Near-Black Primary

#52525b

Dark Grey Secondary

#a1a1aa

Disabled

#e4e4e7

Subtle Border

#18181b

Focus Ring

Token Inspector

Near-Black Primary

--text-primary · #09090b

Body and heading text.

vs Base

19.90 : 1

AA ✓AA Lrg ✓

vs Surface

18.10 : 1

AA ✓AA Lrg ✓

Status Colours

Error
Error

#fee2e2 / #7f1d1d

Success
Success

#dcfce7 / #14532d

Warning
Warning

#fef3c7 / #c2410c

02Foundation

DM Sans, three weights, seven sizes.

A single typeface across the entire system. Hierarchy through weight and size - never through colour or decoration. Drag the slider to see the scale at different base sizes.

Scale

1.00×

Trust through clarity

Display

32px · 600 · 1.2

Section heading

Heading 1

24px · 600 · 1.3

Card or sub-section

Heading 2

18px · 600 · 1.4

Small heading

Heading 3

15px · 500 · 1.4

Default body text used for paragraphs and running copy throughout the interface.

Body

14px · 400 · 1.6

Captions, metadata and table cell content.

Small

12px · 400 · 1.5

Table headers · Tag labels

Micro

11px · 500 · 1.4

03Rhythm

A 4px base unit. Every margin and padding.

UMTAS displays scheduling data - modules, slots, days, venues. Density without crowding requires a strict spacing rhythm. Hover the tokens to see them applied to a live card.

space-1
4px
space-2
8px
space-3
12px
space-4
16px
space-6
24px
space-8
32px
space-12
48px

Applied as Padding

padding: 16px;

COS301 · Lecture A

Software Engineering · 08:00–09:00

Card padding, row heights

04Form

Eight pixels, with three exceptions.

The shadcn radius system. Every element shares a single radius value unless explicitly listed below.

Cards

8px

Buttons

8px

Inputs

8px

Modals

12px

Badges

pill

Tooltips

6px

Grid cells

4px

05Depth

Four levels. Subtle by default.

Cards feel lifted, never floating. In dark mode, shadow alpha is doubled for visibility against the charcoal base.

Both modes shown together

None

Flat surfaces

Low

Default cards

Medium

Modals, dropdowns

High

Floating overlays

Toggle light/dark mode via the nav above to see shadow visibility differences. Dark mode uses ~2× alpha values.

06Behaviour

Motion is a design dimension.

Three durations, one easing curve. Click any button below to feel the difference. Layout-affecting properties are never animated - only opacity and transform.

TokenValueUsage
--duration-fast150msMicro-interactions, hover states
--duration-normal250msPanel opens, tab switches
--duration-slow400msPage-level transitions

Easing: cubic-bezier(0.4, 0, 0.2, 1) for all transitions. No linear, no ease-in, no ease-out.

07Library

Lucide, outline only, never independently coloured.

Icons inherit the colour of the text they accompany. 16px in body and tables, 20px in headings and navigation.

CalendarDays
Clock
MapPin
BookOpen
User
Settings
Bell
Search
ChevronDown
ChevronRight
X
Check
AlertCircle
Info
Moon
Sun
08Library

Components. All token-driven.

Every component shown using the active theme. Toggle light/dark via the nav bar. Nothing is hardcoded - all values come from the tokens above.

Buttons

Badges

NeutralErrorSuccessOutline

Cards

COS301 · Software Engineering
Lecture A · CS Lecture Hall 1 · 08:00 to 09:00
Confirmed

Tabs

Make changes to your account here. Click save when you're done.

Form Inputs

Controls

Data Display & Feedback

CNUM

Layout & Loading

Radix Primitives

An open-source UI component library.

Blog
Docs
Source

Weekly Schedule Grid

The core UMTAS component. Cell background, session block and row-span behaviour all derive from the tokens above.

07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
Mon4 May

COS301

Lecture

08:00 - 09:00

Tue5 May

COS333

Lecture

09:00 - 11:00

Wed6 May

COS344

Lecture

10:00 - 11:00

Thu7 May

COS314

Lecture

13:00 - 14:00

Fri8 May
09Communication

How UMTAS speaks.

Voice is constant personality. Tone adjusts to the situation. Together they make every message feel purposeful, never generic.

Onboarding / empty states

Warm, encouraging, action-oriented

Add your first module to get started. UMTAS will build your best possible timetable.

Informational labels / tooltips

Neutral, precise, no filler words

Venue: CS Lecture Hall 1 · Capacity: 120

Error messages

Honest, calm, tells the user what to do next

Module code not found. Check the UP handbook or try COS301.

Success feedback

Brief, affirmative, not over-celebratory

Timetable saved.

Security / destructive actions

Sober, direct, no softening language

Delete this schedule? This cannot be undone.

Writing Rules

Plain English only

No jargon unless domain-specific. 'Module', 'venue', 'timetable slot' are fine.

Errors explain and instruct

Every error message states the cause and the next action. Never 'Something went wrong.'

Descriptive placeholders

e.g. COS301 - not 'Enter something here'. Placeholder text is instructional.

Labels are nouns, buttons are verbs

'Save changes', 'Delete module', 'View timetable' - not 'Submit' or 'Click here'.

10Inclusion

WCAG 2.2 AA. Baked in, not bolted on.

Accessibility is a system property. Every token, every component, every pattern is designed to meet AA by default.

Colour Contrast

WCAG 2.2 AA

Body text: 4.5:1 minimum. Large text (Display, H1, H2): 3:1 minimum. Never use --text-secondary for body copy.

Keyboard Nav

Tab-reachable

Every interactive element reachable by Tab. Focus ring always visible. No keyboard traps anywhere.

Semantics

Meaningful markup

Use <nav>, <main>, <section>, <button>. Icon-only buttons need aria-label. Inputs need <label>. Placeholder ≠ label.

Motion

prefers-reduced-motion

All CSS transitions suppressed at 0.01ms under reduced-motion. Only opacity and transform are ever animated.

11Layout

Desktop-primary. Mobile-ready.

Three Breakpoint. The schedule grid and dense data views are designed for desktop first, but every screen reflowing correctly at tablet and mobile widths is a requirement.

BreakpointWidthColsBehaviour
Mobile< 640px1Single column. Nav collapses to hamburger. Cards stack full-width. Schedule grid scrolls horizontally.
Tablet640px – 1024px22-column card grid. Sticky nav remains visible. Schedule grid scrolls horizontally.
Desktop> 1024px12Full 12-column grid. Max-width 1280px centered. Primary design target.

Tailwind Prefix Reference

sm:640px
md:768px
lg:1024px
xl:1280px