JR Dream Design System

Colours

Working guidance for the JR Dream palette, semantic colour roles, accessible pairings and practical interface applications.

Colour with a clear role

JR Dream’s colour system combines warm-neutral reading surfaces, charcoal structure and a precise orange accent. Colour supports brand expression, information hierarchy, accessible interaction and functional feedback through distinct roles.

Keep decorative brand orange separate from darker action orange. Use functional green, amber, red and blue only where a status justifies them, with words or another non-colour cue. The source’s 70% light/neutral, 20% dark and 10% accent balance is a visual guide, not a pixel quota.

The supplied logo has its own unchanged colours and gradients. Approximate logo samples are not extra interface colours. These are internally accepted working specifications, pending implementation validation and final company approval.

Source: Colour System Exploration & Validation v1.0, pages 1–3 and 12.

Core colour palette

The complete source-defined scales contain 11 warm neutrals and 10 oranges. Values and variable names below come directly from the existing central token file. Swatches carry their labels on a separate white surface, so the palette is not mistaken for approved text pairings.

Copy a HEX value or variable name using its button. If copying is unavailable, select the visible value manually; every value also remains available in print.

Warm neutral

Warm neutral 50

#F7F4ED
--neutral-50

Warm neutral 100

#EFEAE0
--neutral-100

Warm neutral 200

#DED8CC
--neutral-200

Warm neutral 300

#C6BFB2
--neutral-300

Warm neutral 400

#A29C91
--neutral-400

Warm neutral 500

#7F7B71
--neutral-500

Warm neutral 600

#635F57
--neutral-600

Warm neutral 700

#4C4B44
--neutral-700

Warm neutral 800

#3C3F3C
--neutral-800

Warm neutral 900

#252827
--neutral-900

Warm neutral 950

#191C1B
--neutral-950

Orange

Orange 50

#FFF4ED
--orange-50

Orange 100

#FFE6D5
--orange-100

Orange 200

#FFC7A7
--orange-200

Orange 300

#FFA475
--orange-300

Orange 400

#FF7D48
--orange-400

Orange 500

#F15E2A
--orange-500

Orange 600

#D94D1C
--orange-600

Orange 700

#B83D16
--orange-700

Orange 800

#933216
--orange-800

Orange 900

#782E17
--orange-900

Neutral 50/100 provide fills; 200 is decorative; 500 identifies controls; 600 supplies supporting text on light; 900/950 provide dark structure. Orange 50/100 provide subtle fills, 300 inverse focus, 500 decoration, 700 actions/light focus and 800/900 action hover/pressed states. Scale numbers alone do not establish an accessible pairing.

Source: Colour System Exploration & Validation v1.0, page 3, “Two useful tonal scales”.

Brand and interaction colours

Keep expression and interaction distinct
RoleExisting token and valueUse
Decorative brand orange--brand-accent-primary
#F15E2A
Short highlights and decoration. White small labels and orange body text on white fail at 3.29:1.
Accessible action orange--action-primary-background
#B83D16
Primary actions with white text: source ratio 5.65:1.
Hover / pressed--action-primary-hover #933216
--action-primary-pressed #782E17
Keep white labels; source ratios 7.75:1 and 9.54:1.
Reading and structure--text-primary #252827
--text-secondary #635F57
Charcoal for reading on white/warm white; muted text for supporting copy on those surfaces.

The brighter decorative orange cannot replace action orange for small white labels. Changing the interface action colour does not authorise recolouring the logo. Orange 500 on charcoal narrowly passes normal text at 4.52:1 in the source; reserve it for highlights and prefer white for extended inverse reading.

Source: Colour System Exploration & Validation v1.0, pages 2–5.

Semantic colour roles

Use the existing CSS names below to express intent. Their aliases and resolved HEX values are read from styles/tokens.css at build time; this page does not define a second colour system.

Brand and text

Brand and text: existing semantic variables
CSS variableCurrent mapping / HEXApplication
--brand-accent-primary
var(--orange-500)
#F15E2A
Decorative accent; never small white labels.
--brand-accent-subtle
var(--orange-50)
#FFF4ED
Subtle selection/highlight fill; retain a written or semantic state.
--text-primary
var(--neutral-900)
#252827
Body and headings on white or warm white.
--text-secondary
var(--neutral-600)
#635F57
Supporting text on white or warm white.
--text-inverse
#FFFFFFInverse text on neutral 900/950.

Surfaces and borders

Surfaces and borders: existing semantic variables
CSS variableCurrent mapping / HEXApplication
--surface-primary
#FFFFFFContent, cards and tables.
--surface-secondary
var(--neutral-50)
#F7F4ED
Warm sections and canvas.
--surface-tertiary
var(--neutral-100)
#EFEAE0
Subtle panels with charcoal text.
--surface-inverse
var(--neutral-900)
#252827
Structured dark panels; not a full dark theme.
--surface-inverse-deep
var(--neutral-950)
#191C1B
Occasional deeper emphasis.
--border-default
var(--neutral-200)
#DED8CC
Decorative separators only; not an essential control boundary.
--border-control
var(--neutral-500)
#7F7B71
Meaningful control boundaries on light surfaces.
--border-inverse-divider
var(--neutral-800)
#3C3F3C
Existing implementation extension: decorative inverse divider, not a control boundary. Recorded in Stage 02.1; outside Colour p11 inventory.

Actions, focus and disabled states

Actions, focus and disabled states: existing semantic variables
CSS variableCurrent mapping / HEXApplication
--action-primary-background
var(--orange-700)
#B83D16
Primary action default on light.
--action-primary-text
var(--text-inverse)
#FFFFFF
White label on default, hover and pressed primary fills.
--action-primary-hover
var(--orange-800)
#933216
Primary action hover fill.
--action-primary-pressed
var(--orange-900)
#782E17
Primary action pressed fill.
--action-secondary-text
var(--text-primary)
#252827
Secondary action text on white; use border-control outline.
--focus-light
var(--orange-700)
#B83D16
Light-surface focus ring with white gap.
--focus-inverse
var(--orange-300)
#FFA475
Inverse focus ring with charcoal gap.
--state-disabled-background
var(--surface-tertiary)
#EFEAE0
Disabled fill; expose disabled state in code.
--state-disabled-text
var(--text-secondary)
#635F57
Readable disabled label; no whole-control opacity.

Functional foreground and surface tokens are listed in the next section. The neutral-800 inverse divider is an existing implementation reference, not an additional Colour PDF semantic role or a meaningful control boundary.

Source: Colour System Exploration & Validation v1.0, page 11, “Practical semantic colour tokens”; inverse-divider mapping also recorded in the Stage 02.1 implementation report.

Functional status colours

These four foreground/background pairs are defined for light status treatments. Each example includes explicit wording; none depends on colour alone. They are documentation demonstrations, not claims about actual records or outcomes.

Success

Complete: demonstration check finished.

--status-success
#22633F
--status-success-surface
#EDF7F0

Completed or verified outcomes only.

Source contrast: 6.55:1, normal-text PASS.

Warning

Needs attention: review this demonstration entry.

--status-warning
#855500
--status-warning-surface
#FFF6DD

Needs attention; decorative logo amber is not warning text.

Source contrast: 5.91:1, normal-text PASS.

Error

Action required: correct the demonstration entry.

--status-error
#B42318
--status-error-surface
#FFF0EE

Failed or corrective action required; retain explicit error wording.

Source contrast: 5.93:1, normal-text PASS.

Information

Guidance: this is a documentation example.

--status-information
#245B8A
--status-information-surface
#EDF4FC

Neutral guidance, distinct from orange actions.

Source contrast: 6.45:1, normal-text PASS.

Do not invent status ramps or inverse status variants. Keep these foregrounds on their paired light tints rather than reusing them directly on dark cards. Status tints need no visible outer boundary when their words carry the meaning.

Source: Colour System Exploration & Validation v1.0, pages 4, 6, 10 and 11.

Accessibility and contrast

The source uses WCAG 2.2 AA thresholds of 4.5:1 for normal text and 3:1 for large text. Large text means at least 18pt regular or 14pt bold (approximately 24px or 18.7px). Meaningful boundaries and graphics need 3:1 against adjacent colours where necessary to identify them.

Source columns reproduce the PDF’s ratios. Calculated columns independently apply the source’s sRGB relative-luminance method to the current CSS HEX values: (lighter luminance + 0.05) / (darker luminance + 0.05). Results are rounded to two decimals for display; verdicts use unrounded calculations. These calculated validation results do not create new brand rules.

Text pairings: Colour v1.0 page 5, section 04
PairForeground / backgroundSourceCalculatedNormal / large text
Charcoal / white#252827 on #FFFFFF14.88:114.88:1PASS / PASS
Charcoal / warm white#252827 on #F7F4ED13.54:113.54:1PASS / PASS
Orange 500 / white#F15E2A on #FFFFFF3.29:13.29:1FAIL / PASS
White / orange 500#FFFFFF on #F15E2A3.29:13.29:1FAIL / PASS
Orange 500 / charcoal#F15E2A on #2528274.52:14.52:1PASS / PASS
White / charcoal#FFFFFF on #25282714.88:114.88:1PASS / PASS
Muted text / white#635F57 on #FFFFFF6.35:16.35:1PASS / PASS
Muted text / warm white#635F57 on #F7F4ED5.78:15.78:1PASS / PASS
White / action 700#FFFFFF on #B83D165.65:15.65:1PASS / PASS
Action 700 / warm white#B83D16 on #F7F4ED5.14:15.14:1PASS / PASS
White / hover 800#FFFFFF on #9332167.75:17.75:1PASS / PASS
White / pressed 900#FFFFFF on #782E179.54:19.54:1PASS / PASS
Controls, status and boundaries: Colour v1.0 page 6, section 05
PairForeground / backgroundSourceCalculatedThreshold / result
Input border / white#7F7B71 on #FFFFFF4.22:14.22:13:1 / PASS
Input border / warm white#7F7B71 on #F7F4ED3.84:13.84:13:1 / PASS
Decorative divider / white#DED8CC on #FFFFFF1.42:11.42:13:1 / FAIL
Light focus / white#B83D16 on #FFFFFF5.65:15.65:13:1 / PASS
Light focus / warm white#B83D16 on #F7F4ED5.14:15.14:13:1 / PASS
Inverse focus / charcoal#FFA475 on #2528277.67:17.67:13:1 / PASS
Action fill / white#B83D16 on #FFFFFF5.65:15.65:13:1 / PASS
Success / tint#22633F on #EDF7F06.55:16.55:14.5:1 / PASS
Warning / tint#855500 on #FFF6DD5.91:15.91:14.5:1 / PASS
Error / tint#B42318 on #FFF0EE5.93:15.93:14.5:1 / PASS
Information / tint#245B8A on #EDF4FC6.45:16.45:14.5:1 / PASS
Disabled label / fill#635F57 on #EFEAE05.30:15.30:14.5:1 / PASS

Restrictions to carry into implementation

  • Do not use decorative orange for small white labels or orange body text on white. A large-text PASS is not permission to use it for small interface labels.
  • Neutral 200 is a decorative separator, not an essential input outline. Use neutral 500 for meaningful control boundaries on the tested light surfaces.
  • Use orange 700 focus on light, orange 300 on inverse, and a local surface-coloured gap. Visibility, area and obstruction still require testing.
  • Disabled controls use neutral 100 fill and neutral 600 labels with a native or correctly exposed disabled state. Remove active affordance and avoid whole-control opacity. Inactive controls have contrast exemptions; the documented pair deliberately remains readable.
  • Keep explicit status/error wording and chart labels. Never communicate status or chart meaning through colour alone.
  • Do not promote approximate logo amber, green or red-orange samples into extra brand primaries. Logo lettering’s contrast exception does not apply to ordinary branded text or controls.

For data visualisation, the source suggests action orange, information foreground and success foreground as a small categorical set on white, with direct labels, gaps and patterns as needed. Real charts also need values and a data table; no chart or colour-vision testing is claimed here.

These pair calculations do not establish comprehensive WCAG conformance. Recheck changed backgrounds, transparency, overlays and all implemented interaction states.

Source: Colour System Exploration & Validation v1.0, pages 4–6, 10 and 12; method and W3C source references on page 12.

Practical UI applications

These scoped documentation demonstrations show token usage. They are not production-ready components or a standalone component library.

Action states

Try these documentation controls. Hover and press the primary action to inspect its colour states; use Tab to inspect focus.

No action has been tried.

Text, surfaces and borders

Primary text on white

Secondary text uses the muted text token.

Warm secondary surface

Charcoal keeps the reading hierarchy clear.

Tertiary surface

Stone is a supporting fill, not text.

Inverse surface

White copy on charcoal. This is a structural panel, not a complete dark theme.

Inspect inverse focus with Tab

Meaningful boundary example: neutral 500 on white.

A decorative neutral-200 separator divides these examples; it does not identify an essential control.

Selection and hover

Selected: source row recipe

Subtle orange fill, orange 700 marker/boundary and written state.

Hover or focus this documentation link

The documentation sidebar uses the separately accepted application treatment: solid action orange and white selected text, with aria-current="page", no marker, selected outline or visible Current label. Inactive hover uses subtle orange with charcoal. Keyboard focus remains a separate visible ring.

The status demonstrations above also provide information notices, success feedback, warnings and explicit error guidance. Their light foreground/surface pairs remain intact.

Source: Colour System Exploration & Validation v1.0, pages 3–6 and 11; sidebar exception: Stage 02.1 accepted documentation-sidebar refinement.

Developer implementation

Use the existing semantic variables in the eventual corporate website, with the central token stylesheet included by that application. Use primitives to define roles centrally, rather than choosing a scale step afresh in each component. This documentation does not create a package, token engine or corporate website.

Semantic action and focus usage

.primary-action {
  background: var(--action-primary-background);
  color: var(--action-primary-text);
}
.primary-action:hover {
  background: var(--action-primary-hover);
}
.primary-action:active {
  background: var(--action-primary-pressed);
}
.secondary-action {
  background: var(--surface-primary);
  color: var(--action-secondary-text);
  border: var(--border-thin) solid var(--border-control);
}
.primary-action:focus-visible,
.secondary-action:focus-visible {
  outline: var(--focus-width) solid var(--focus-light);
  outline-offset: var(--focus-offset);
  box-shadow: 0 0 0 var(--focus-offset) var(--surface-primary);
}
.primary-action:disabled {
  background: var(--state-disabled-background);
  color: var(--state-disabled-text);
  cursor: default;
  /* Use the native disabled attribute; no whole-control opacity. */
}

Status and inverse-surface usage

.information-notice {
  color: var(--status-information);
  background: var(--status-information-surface);
  /* Include explicit guidance text, not colour alone. */
}
.inverse-panel {
  color: var(--text-inverse);
  background: var(--surface-inverse);
  --focus-ring: var(--focus-inverse);
  --focus-gap: var(--surface-inverse);
}
.inverse-panel :focus-visible {
  outline: var(--focus-width) solid var(--focus-ring);
  outline-offset: var(--focus-offset);
  box-shadow: 0 0 0 var(--focus-offset) var(--focus-gap);
}

Restricted usage: do not copy into production

/* RESTRICTED: do not ship these combinations. */
.small-white-label-on-bright-orange {
  color: var(--text-inverse);
  background: var(--brand-accent-primary); /* Fails normal text. */
}
.orange-body-on-white {
  color: var(--brand-accent-primary); /* Fails normal text. */
  background: var(--surface-primary);
}
.essential-boundary {
  border-color: var(--border-default); /* Decorative only. */
}
/* Use action-primary-background for small white action labels,
   text-primary for body copy and border-control for essential outlines. */

The snippets illustrate colour roles, not complete controls. Apply existing typography, spacing, geometry and keyboard behaviour separately, then validate each real foreground/background pair. Disabled rules must win over hover and pressed rules.

Preserve both original SVG assets. Primary Transparent belongs on suitable plain light surfaces and Reversed Transparent on charcoal/deep neutral. Do not place the logo on accent orange, imagery or patterned surfaces; see the Logo foundation guidance.

HEX/sRGB expresses digital intent. Print needs printer-managed profiles and physical proofs; no CMYK recipe or spot-colour match is approved.

Source: Colour System Exploration & Validation v1.0, pages 7, 9, 11 and 12; code is documentation implementation guidance.

Validation and approval status

Working specifications, calculations and approval are distinct
AreaStatusScope or next action
Working colour specificationInternally acceptedColour v1.0 and existing central tokens are the working references; no final company approval is implied.
Source-tested colour pairsRecorded in PDF24 text/control/status comparisons are reproduced from pages 5–6. This is calculation evidence, not device testing.
Calculated validation resultsRecalculated from CSSAll 24 ratios match the source at two decimal places. Unrounded values determine the displayed threshold results.
Implemented browser checksLimited to recorded implementation checksSee the Stage 02.2B implementation report for the exact browser, responsive, keyboard, copy and export checks performed.
Real devices and colour visionPendingReview actual displays and colour-vision accessibility; check changed combinations and overlays.
Assistive technology and full accessibilityPendingScreen-reader, native forced-colours, zoom and full interaction/conformance reviews remain required.
Arabic-language validationPendingNo Arabic sample copy is introduced. Native-language content and responsive bilingual review remain pending.
Print reproductionPendingPDF export does not validate physical ink, paper, colour profiles or reproduction.
Final company approvalPendingJoseph Dass’s approval of the complete brand system remains required before production release.

Successful builds, browser checks and contrast calculations do not certify production readiness or comprehensive WCAG conformance. No final company approval is claimed.

Source: Colour System Exploration & Validation v1.0, page 12, “Recommended system and approval gates”; Stage 02.1 implementation limitations retained.