StudentHPC Design System

Design system

Every value on this page is read directly from static/css/tokens.css by tools/build-styleguide.py. If a swatch here disagrees with the CSS, the page is stale — regenerate it rather than editing it by hand.

Principles

Four rules. They are what keep this from drifting back into a generic template.

One accent, earned

Pine is the only brand colour. Blue means interaction. Amber and red mean status. A fifth accent is a bug, not a decision.

No decorative gradient

No neon, no glass, no glow, no floating orbs. The single decorative element on the whole site is a 1px blueprint grid at 4% opacity.

Depth from borders

Elevation is a 1px border and a background step. Shadows are reserved for things that genuinely float: dropdowns and modals.

Nothing rounder than 4px

Institutional and hardware interfaces read as blocky. The radius scale stops at 4px, so a pill button is not reachable by accident.

Colour

Primitives are raw ramps. Components never reference them — they reference semantic roles (--text, --surface-subtle, --border-base) which point at these. That indirection is what lets the palette change in one block.

Pine — brand accent — The single brand colour. Actions, active states, the footer ground.

--pine-950

#08170F

18.4:1 on white

--pine-900

#0D2318

16.5:1 on white

--pine-800

#123021

14.3:1 on white

--pine-700

#17402C

11.6:1 on white

--pine-600

#1D5438

8.8:1 on white

--pine-500

#256B48

6.4:1 on white

--pine-400

#35875D

4.4:1 on white

--pine-300

#5BA57F

2.9:1 on white

--pine-200

#97C7AC

1.9:1 on white

--pine-100

#CFE5D9

1.3:1 on white

--pine-50

#EDF5F0

1.1:1 on white

Graphite — structure — Carries roughly 90% of the surface area: text, borders, grounds, code.

--slate-950

#0A0D10

19.5:1 on white

--slate-900

#12161B

18.2:1 on white

--slate-800

#1A2027

16.4:1 on white

--slate-700

#262E37

13.7:1 on white

--slate-600

#384250

10.2:1 on white

--slate-500

#566270

6.2:1 on white

--slate-400

#66717E

5.0:1 on white

--slate-300

#858F99

3.3:1 on white

--slate-200

#C6CDD5

1.6:1 on white

--slate-100

#E1E6EB

1.3:1 on white

--slate-50

#F2F5F7

1.1:1 on white

--slate-25

#F8FAFB

1.0:1 on white

Dell blue — interaction — Links, focus rings, selection. Never decorative, never a second brand.

--blue-800

#003F6B

10.9:1 on white

--blue-700

#005A94

7.3:1 on white

--blue-600

#0076CE

4.7:1 on white

--blue-500

#2E93DE

3.3:1 on white

--blue-300

#7FC1EF

1.9:1 on white

--blue-200

#A8D4F2

1.6:1 on white

--blue-100

#D7EBFA

1.2:1 on white

--blue-50

#EFF7FD

1.1:1 on white

Contrast audit

Every foreground/background pair the system ships, measured. Generated by tools/check-contrast.py, which exits non-zero if any pair regresses — run it in CI. AA requires 4.5:1 for body text and 3:1 for UI boundaries.

Foreground Background Ratio Grade Used for
--text --surface 16.41:1 AAA body text on white
--text --surface-subtle 14.99:1 AAA body text on section ground
--text --surface-inset 15.67:1 AAA body text on inset ground
--text-secondary --surface 6.22:1 AA secondary text on white
--text-secondary --surface-subtle 5.68:1 AA secondary text on section ground
--text-muted --surface 4.97:1 AA muted text (smallest allowed)
--text-muted --surface-subtle 4.54:1 AA muted text on section ground
--text-link --surface 7.27:1 AAA links on white
--text-link --surface-subtle 6.64:1 AA links on section ground
--text-link-hover --surface 10.92:1 AAA link hover
--text-brand --surface 11.63:1 AAA brand text on white
--text-brand --pine-50 10.48:1 AAA brand text on pine wash
--text-invert --surface-invert 16.41:1 AAA primary text on dark panel
--text-on-invert --surface-invert 10.72:1 AAA secondary text on dark panel
--text-invert --surface-brand-dk 16.53:1 AAA text on deep pine (footer)
--pine-200 --surface-brand-dk 8.72:1 AAA muted text on deep pine footer
--text-invert --slate-950 19.48:1 AAA utility bar text
--slate-300 --slate-950 5.92:1 AA utility bar muted text
--text-on-invert --slate-800 10.72:1 AAA sidebar nav links
--text-invert-muted --slate-800 4.99:1 AA sidebar group titles, sub-links, footer, tags
--text-invert-muted --slate-900 5.52:1 AA muted text on the code/panel ground
--slate-300 --slate-800 4.99:1 AA code-block language label, hero panel keys
--slate-300 --slate-900 5.52:1 AA copy button, panel foot, terminal output
--white --slate-900 18.16:1 AAA cluster name in the sidebar chip
--syn-path --slate-900 10.88:1 AAA hero panel status badge
--white --surface-brand 8.83:1 AAA primary button label
--white --pine-700 11.63:1 AAA primary button hover
--white --blue-700 7.27:1 AAA secondary/info button label
--white --slate-800 16.41:1 AAA neutral dark button label
--syn-text --surface-code 14.05:1 AAA code default text
--syn-prompt --surface-code 6.17:1 AA shell prompt sigil
--syn-keyword --surface-code 9.32:1 AAA keyword / SBATCH directive
--syn-string --surface-code 9.10:1 AAA string literal
--syn-number --surface-code 8.79:1 AAA numeric literal
--syn-comment --surface-code 6.50:1 AA comment
--syn-path --surface-code 10.88:1 AAA filesystem path
--status-ok-fg --status-ok-bg 10.48:1 AAA status: operational
--status-warn-fg --status-warn-bg 5.51:1 AA status: degraded
--status-err-fg --status-err-bg 6.92:1 AA status: outage
--status-info-fg --status-info-bg 6.71:1 AA status: informational
--border-strong --surface 3.29:1 AA input & control borders (UI)
--border-focus --surface 4.68:1 AA focus ring on white
--border-focus --surface-subtle 4.28:1 AA focus ring on section ground
--status-ok-dot --status-ok-bg 5.78:1 AA status dot (UI)
--status-warn-dot --status-warn-bg 3.29:1 AA status dot (UI)
--status-err-dot --status-err-bg 4.11:1 AA status dot (UI)
--blue-600 --surface 4.68:1 AA Dell blue — large text / non-text only
--blue-300 --surface-invert 8.42:1 AA link on dark sidebar (UI)
--pine-300 --surface-invert 5.57:1 AA brand accent on dark panel

Typography

Inter for everything readable, Intel One Mono for everything machine-readable: cluster paths, Slurm directives, node names, partition names, and every number in a spec table. Each step below has exactly one role.

--fs-5xl

56px

Unimpeded supercomputing

Hero headline

--fs-4xl

46px

The Sagittarius cluster

Landing section display

--fs-3xl

36px

Slurm job scripts

Docs h1

--fs-2xl

28px

Monitoring and debugging

Section title / h2

--fs-xl

23px

Hybrid MPI + OpenMP

Card title / h3

--fs-lg

19px

Enterprise Dell hardware and a clos fabric

Lead paragraph

--fs-md

17px

Software is provided through environment modules

Docs prose — the reading size

--fs-base

16px

Requested software stack

UI default, form inputs

--fs-sm

14px

Apply for an allocation

Dense UI: sidebar, tables, buttons

--fs-xs

13px

Last reviewed 13 August 2026

Captions, breadcrumbs, footnotes

--fs-2xs

12px

MAX WALLTIME

Table meta, code labels

--fs-3xs

11px

SYSTEM SNAPSHOT

Uppercase eyebrows only

Space & radius

A 4px base grid. Everything is a multiple.

--sp-1 ?px
--sp-2 ?px
--sp-3 ?px
--sp-4 ?px
--sp-5 ?px
--sp-6 ?px
--sp-8 ?px
--sp-10 ?px
--sp-12 ?px
--sp-16 ?px
--sp-20 ?px
--sp-24 ?px
--sp-32 ?px

Radius scale — stops at 4px, deliberately

--r-0 · 0
--r-1 · 2px
--r-2 · 3px
--r-3 · 4px

Buttons

One primary action per view. Hover shifts the ground colour only — no lift, no scale, no shadow bloom.

Badges & status

Status is never carried by colour alone — the label is the content, which is what WCAG 1.4.1 requires. The dot is redundant reinforcement.

Operational Degraded Outage Maintenance 501(c)(3) Neutral
slurm 23.02 rocky linux 9 gromacs/2023.3

Cards & spec lists

The spec list is the core hardware primitive: an uppercase label against a monospace, tabular-figure value. It is what makes a page of specifications scannable.

Compute node

R640
CPU
2× Xeon Platinum 8160
Cores
48 phys / 96 threads
Clock
2.10 GHz base
L3
33 MB per socket

Railed card

A 3px pine rail marks a card that carries an aside or a caveat. It is the only accent a card gets.

Example
1,536Xeon cores
48 /nodePhysical cores
$0Cost to students
501(c)(3)Nonprofit

Code blocks

Eight syntax classes applied by hand in markup — no highlighter library, no runtime DOM pass, no grammar bundle. Copy strips the prompt sigil and output lines so a pasted command runs as written.

bash
# every syntax class, on the ground it ships against
$ module load gromacs/2023.3
$ sbatch --partition="compute" /scratch/$USER/job.sh
Submitted batch job 184203
job.sh
#SBATCH --nodes=4
#SBATCH --time=24:00:00

Inline code is a chip: squeue --me, a path like /scratch/$USER, or a key such as Ctrl + C.

Callouts

Four severities. The label is mandatory: severity must survive greyscale.

Note

Neutral context. The reader can skip it and still succeed.

Tip

Makes the reader faster or their result more reproducible.

Warning

Ignoring this wastes time — a job dies, a queue stalls.

Danger

Ignoring this loses data or an allocation. Use sparingly or it stops meaning anything.

Forms

Errors sit beneath the field they describe, are announced via role="alert", and clear the moment the input becomes valid.

This must be a .edu address. Personal addresses cannot be verified.
Request received. It is queued for manual review.
That file is too large to upload. Keep the PDF under 5 MB.

Tables

Dense by default. Wide tables scroll inside their own container and receive a tabindex so keyboard users can reach the overflow.

Partition limits. Values are placeholders pending confirmation.
PartitionMax walltimeMax nodesState
debug01:00:002up
compute48:00:0016up
gpu24:00:002drain