Design System Foundations
How our software applications look, behave and feel across the product suite — providing a unified, familiar experience for planning, production and reporting tools.
Principles
Our key UX principles we must abide by for our customers' benefit.
Clarity over complexity
Reveal only what is relevant, gradually displaying complexity progressively when required.
Consistency builds confidence
The same action, agnostic of application or service, must behave the same way.
Efficiency under pressure
Beyond minimising clicks — reduce friction and pain points wherever possible.
Safety by design
Always ensure users are clearly informed of destructive and irreversible actions.
Transparency in feedback
Always display visually what the system is doing. Never hide important information in the background.
Tone & Personality
At Deswik we strive for a professional and calm digital presence, reflective in our software and how it is designed and how it functions. Our users perform precise, data-driven actions and our solutions should aid them as best as possible.
Because our users work abroad, we avoid internal jargon and slang that is not industry-wide knowledge. We use clear and direct language when our systems communicate on our behalf.
Theme & Consistency
- Always design in light theme first.
- Allow users to switch between light, dark, or system preference.
Colors
Greyscale
Scales are generated from lightness values at 98, 96, 94, 90, 85, 80, 60, 40, 20 and 10. The active color can be used on backgrounds of --gray-1 and --gray-2. Backgrounds of --gray-3 and higher will fail contrast without shading the active color.
Active
Some "active" colors are shaded to pass contrast ratio (4.5:1) guidelines: used for the primary button background color and as the active color on a selected color background.
Validation — three variants
Pick whichever suits your application best. You can use the validation classes for general text highlighting, but use .warning-text rather than .warning as the warning colour does not pass contrast on light backgrounds.
Colourful
Plain
Bright
Typography
Headings are sized proportional to the base text size. Line heights are calculated at 1.25× the font size and may be rounded to the nearest pixel if fractional sizes are not supported.
Headings
Heading 1 — Display
Heading 2 — Section
Heading 3 — Subsection
Heading 4 — Group
Heading 5 — Label
Heading 6 — Micro
Font size modifiers
Font bigger — .font-bigger
Font big — .font-big
Default body text — base size.
Font small — .font-small
Font smaller — .font-smaller
Font weights
Light weight (200) — .font-light
Regular weight (400) — .font-regular
Semibold weight (600) — .font-semibold
Bold weight (700) — .font-bold
Inline text
Use strong or bold to highlight specific words. Use
links for navigation. Use inline code or
samples in monospace. Subscript H2O and superscript E = mc2.
Date & time formats
Unless specified otherwise, display dates and times in the local format. The standard user-facing format is MMM DD, YYYY, HH:MM AM/PM — identified as the fastest to scan visually.
For tables, lists, and anywhere dates appear stacked, the digits must line up by column
even when the dates themselves vary. The cleanest way to do that without breaking out of
the page font is font-variant-numeric: tabular-nums: it keeps Inter as the
family but engages the font's tabular-figure OpenType feature, so every digit takes the
same advance width. The result reads as ordinary body text yet every comma, colon, and
AM/PM lands in the same horizontal column down the list.
Don't — proportional digits
Mar 17, 2023, 11:28 AM
Aug 08, 2024, 02:30 PM
Dec 31, 2024, 10:00 PM
Feb 04, 2025, 12:45 PM
Sep 22, 2025, 05:00 AM
Inter's proportional digits make 1 narrower than 0 — every comma, colon, and meridiem token drifts row to row.
Do — tabular-nums (still Inter)
Mar 17, 2023, 11:28 AM
Aug 08, 2024, 02:30 PM
Dec 31, 2024, 10:00 PM
Feb 04, 2025, 12:45 PM
Sep 22, 2025, 05:00 AM
Same Inter family as the rest of the page — only the digit width has changed. The time portion locks to a perfect column.
One caveat: the MMM month abbreviation is still proportional
(Jan, Mar, and Sep have different widths in Inter),
so the comma after the day number can shift a pixel or two between rows. For columns
where perfect start-to-end alignment is non-negotiable — reconciliation tables, audit
logs, batched timestamps — use a numeric format like
YYYY-MM-DD HH:MM or
MM/DD/YYYY HH:MM AM/PM with tabular-nums.
Every character then comes from the digit set or fixed punctuation.
Implementation
Apply font-variant-numeric: tabular-nums on the cell, the column's
td rule, or use the existing .tabular-nums utility from the
product layer. The foundation already wires this
on td.num and th.num in the
Tables & Grids section, so the «Tonnes» and
«Grade» columns there are already tabular without any per-cell styling.
Sizing
Sizes are units of measurement and sizing across the system — font sizes, padding, margins, gaps.
--size-10.25rem4 px--size-20.5rem8 px--size-30.75rem12 px--size-40.875rem14 px--size-51rem16 px--size-61.25rem20 px--size-71.5rem24 px--size-81.75rem28 px--size-92rem32 px--size-102.5rem40 pxUsage notes
- --size-1 — Typical spacing between grouped icons.
- --size-2 — Gap between icons and text, labels and fields, vertical spacing between grouped form fields.
- --size-3 — Gap between labels and groups, gap between grouped buttons, sub-content spacing.
- --size-4 — Typically used for base font size and icon size.
- --size-5 — Content spacing when grouped content is not directly related.
- --size-7 — Spacing between page content such as multiple UI cards.
- --size-8 — Page margins for main content or at designer's discretion.
Tables and Data Grids
Table — used when space is available, visual display is more important and when data has a complex structure. Data grid — used when high density is needed, with inline editing as a key feature, where Excel would be a substitution.
Table (banded, with row states)
| Block | Material | Tonnes (t) | Grade (g/t) | Dimensions | Status | |
|---|---|---|---|---|---|---|
| BX-01 | Ore | 12,450.00 | 2.45 | 100 × 80 | OK | |
| BX-02 | Ore | 9,820.50 | 3.10 | 100 × 80 | Reviewing | |
| BX-03 | Waste | 21,300.00 | 0.15 | 120 × 90 | Check | |
| BX-04 | Waste | 8,775.25 | 0.08 | 100 × 80 | Failed | |
| BX-05 | Ore | 15,612.75 | 2.90 | 110 × 85 | OK |
Data grid (high density)
| ID | Description | Length (m) | Width (m) | Depth (m) | Volume (m³) | Status |
|---|---|---|---|---|---|---|
| D-001 | Drift heading north | 128.40 | 5.50 | 5.20 | 3,672.18 | OK |
| D-002 | Cross-cut east | 42.10 | 4.80 | 4.80 | 970.30 | Warning |
| D-003 | Stope access | 88.65 | 5.50 | 5.20 | 2,536.95 | Error |
| D-004 | Return airway | 204.00 | 3.50 | 3.50 | 2,499.00 | Info |
| D-005 | Service decline | 312.75 | 6.00 | 5.50 | 10,320.75 | Incomplete |
Alignment rules
- Numerical data is right-aligned. Textual data is left-aligned. Headers align with their data.
- Use center alignment for small controls — checkboxes, validation icons, numbered rows.
- Multi-part values (e.g. 100 × 80) align by the separator; match decimal places.
- Include the unit in the header so it isn't repeated in every cell.
- Use
font-variant-numeric: tabular-numsfor clean number alignment.
Form Inputs
Form inputs are minimally styled — browser defaults control the main appearance. Inputs and
buttons share the same height for visual consistency. Inputs should be sized to the content they
accept. Labels are inline with fields, right-justified, and linked via for/id.
Cards
Card containers group content. Use .card-1 or .card-2 for tinted backgrounds.
Default card
A simple container — no background tint.
Card 1
Tinted with --gray-1 for subtle separation.
Card 2
Tinted with --gray-2 for stronger separation.
Page Layouts
Two primary page layout variants for product UIs.
Top header & navigation layout
Provides navigation in the top header without a side navigation. Allows native display with labels, without taking up additional space. The header consists of the site title, switchable account/company control, and a menu of transparent buttons (collapsible to icons).
Side navigation layout
Familiar app-style side navigation in a collapsible menu. Click expand to show page titles —
the state should persist across pages and sessions. Long company or user names should display
outside the <nav> component.
Layout templates
App and Model Space Considerations
General app considerations
- Handling files generically: create new, open, see recent, save, save as, share, download, search, comment, see activity/details, export.
- Generic header: consistent use of the main app icon, primary icons and other elements; show submenus, validation or functions directly from the menu.
- In-flight validation: extending NOVA's framework — Incomplete / Info / Warning / Error / OK.
Modal space considerations
- Icon library: CAD's extensive icon library reflects desktop heritage; a reduced palette or thematic colours may suit a modern cloud platform while reusing Suite content for familiarity.
- Layer tree / object browser: common functions and layouts for hierarchical model objects — grouping, indenting, ghosting, visibility, row options.