// Rising Company

Design System

Machine-readable spec — llms.txt · drop-in stylesheet — rising.css
Themes
2
Color Tokens
31
Type Styles
12
// Theme
01

Themes

One brand, two themes. Same type pairing, same spacing, same voice, same token names — only the palette and the amount of chrome change. A product picks a theme and commits to it; it is a product decision, not a viewer preference.

// Mission
Operator-facing
Consoles, dashboards, diagram and map views, admin, always-on displays, low-light rooms. Scanlines and corner brackets on.
View pattern
// Daylight
User-facing
Landing pages, marketing, onboarding, sign-in for non-staff, forms, long-form reading, bright rooms. No scanlines, no brackets.
View pattern
ThemeUse it for
MissionOperator consoles · dashboards · diagram and map views · admin · internal tools · ambient displays
DaylightLanding and marketing pages · onboarding · sign-in for people who aren’t staff · forms and data entry · docs · anything shown in a bright room
// Stranger test
If a stranger sees it first, it’s Daylight. A cold visitor should not be met with a black screen and a bare input — sign-in is the end of a landing page, not a substitute for one.
// Switch at the auth boundary
A product may ship both: Daylight for its public surface, Mission for the app behind the login. Switch once, at sign-in — never per-page.
// One-way opt-in
A Daylight product may offer Mission as an opt-in dark mode. A Mission product must not silently flip to Daylight.
// Chrome is theme-conditional
Scanlines, corner brackets and the atmosphere grid are Mission-only. Daylight carries the brand through mono labels, the // prefix, the mint and the spacing — not through darkness.
<html data-theme="daylight"> /* mission is the default when the attribute is absent */ :root, [data-theme="mission"] { --bg-base: #0a0c10; /* … */ } [data-theme="daylight"] { --bg-base: #f6f8f7; /* … */ }
02

Color

Both themes expose the same variable names, so components are written once. Reference the variable, never the literal hex.

TokenMissionDaylightUse
--bg-base#0a0c10#f6f8f7page background
--bg-surface#0d1117#ffffffcards · panels
--bg-surface-hover#0f1520#eef3f0interactive hover
--bg-inset#0a1410#e8f5eebadges · recessed areas
TokenMissionDaylightUse
--border#1a2a20#dde5e0card borders · dividers
--border-hover#2a4a38#9dc4b0card hover border
--border-subtle#1a3020#e6ede9badge borders · faint rules
--border-grid#111820#e9efebbackground structure
TokenMissionDaylightUse
--text-heading#e8f4ff#0b1a14page & card titles
--text-body#c8d8e8#26332dprimary body text
--text-muted#84a89a#43564cdescriptions
--text-subtle#7d9b8c#4a5d54subtitles · mono metadata
--text-label#6e8f80#52655bsection labels · placeholders
--text-dim#61856d#61746bfooter chrome — decorative only
TokenMissionDaylightUse
--accent#3af0a0#3af0a0brand fill — button/badge background
--accent-hover#6ff7be#22dc8c--accent under hover — keeps --accent-on text
--accent-ink#3af0a0#0b7a4eaccent as text · icon · border
--accent-on#08150f#08150ftext on top of --accent
--accent-2-ink#2a7adf#1f5fbfsecondary accent
--danger-ink#ff4a24#c02a10error · destructive
--warning-ink#f5b83d#8a5a00warning · caution
TokenMissionDaylightUse
--accent-wash#3af0a014#0b7a4e12selected / active wash — @ 8%
--accent-line#3af0a050#0b7a4e45accent border — @ 31%
--accent-bracket#3af0a040#0b7a4e30corner brackets — @ 25%
TokenMissionDaylightVerdict
--text-heading17.5 : 116.8 : 1AAA
--text-body13.5 : 112.4 : 1AAA
--text-muted7.5 : 17.4 : 1AAA
--text-subtle6.5 : 16.6 : 1AA+
--text-label5.5 : 15.8 : 1AA
--text-dim4.6 : 14.7 : 1AA — lowest rung, still legible
--accent-ink13.2 : 15.0 : 1AA
// --accent is a fill, not an ink
Mint #3af0a0 is 1.4:1 on white. In Daylight use it as a button or badge background with --accent-on text. For accent text, icons and 1px borders use --accent-ink, which darkens to #0b7a4e.
// every rung clears AA, --text-dim included
Almost everything on the bottom three rungs is 12px Share Tech Mono, whose hairline stems go grey on a 1× display. Contrast is what buys them back, so nothing sits under 4.5:1. --text-dim is still the lowest rung — footer chrome and the backlink, never a form placeholder. Use --text-label for that.
SELECTED ERROR CAUTION
03

Typography

Eyebrow / System Label
// RV Power Systems
Share Tech Mono · 12px · ls: 0.2em · uppercase · accent color
Page Title
RV Diagrams
Rajdhani 700 · 36px · ls: 3px · uppercase · heading color
Section Heading
Battery Box Structure
Rajdhani 700 · 28px · ls: 2px · heading color
Card Title
Battery Box Structure
Rajdhani 700 · 20px · ls: 1px · heading color
Body Text
3D exploded view of the dual LiFePO4 battery bank — wood frame, foam padding, terminals, bus cables, and output leads.
Rajdhani 500 · 15px · lh: 1.6 · muted color
Stat Value
12V / 24V
Share Tech Mono · 17px · ls: 0.06em · accent color
Subtitle / Description
Interactive 3D component maps — open in any browser
Share Tech Mono · 13px · ls: 0.1em · subtle color
04

Components

System Voltage
12V / 24V
Battery Type
LiFePO₄
Components
7 PARTS
Terminal (+) Bat1
// Brass/Copper
Positive terminal — Battery #1. Output (+) lead exits here.
12V / 24V LiFePO4 2x 100Ah Parallel 2 AWG Red
// RV Power Systems
BATTERY BOX
STRUCTURE
// Exploded view · Hover to inspect
Voltage
12V
Capacity
200Ah
// Materials
Active Component
Wiring Path

DRAG — Rotate

SCROLL — Zoom

HOVER — Inspect

05

Controls

Buttons and fields are mono, uppercase and tracked — they read as system controls in both themes. Flip the theme in the masthead to check either one.

// Primary — solid
The single loudest action on a view. One per screen — a hero CTA or a form submit.
// Secondary — wash
The HUD default for in-app actions. A solid mint slab repeated is too loud inside Mission chrome.
// Ghost — neutral
Everything else. Secondary navigation, dismissals, low-stakes choices.
// Danger
The state recipe applied to --danger-ink. Outline at rest, fills on hover.
// Sizes
btn-lg for hero CTAs, btn-sm for nav and table rows.
// Disabled
No new colors — drops to the low-emphasis ramp: --text-label on --border-subtle.

We’ll email you a sign-in link. No password to remember.

Not a valid address.

Locked to your organisation.

// 16px inputs, always
Anything smaller triggers zoom-on-focus in mobile Safari. Field text is Rajdhani 16px / 500 even though the label above it is 12px mono.
// Placeholders use --text-label
Never --text-dim. A placeholder people can’t read is worse than no placeholder.
// Labels carry the // prefix
A field label is system commentary, same as a section label. // Email, not Email.
// Help text is a sentence
Chrome is terse; anything a stranger reads is plain English. Help and error copy are written for humans, not operators.
06

Patterns

Page-level compositions. A user-facing product needs a landing page before it needs a login box — these are the two shapes that gap keeps showing up in.

// patterns/landing.html · daylight Open full page →
// Required order
Nav → hero → proof strip → how it works (3 numbered steps) → feature grid → CTA band → footer. 96px between bands, 64px below 768px.
// Hero anatomy
Eyebrow → hero title → lede (one sentence, ≤ 90 chars) → action row (btn-primary btn-lg + btn-ghost btn-lg) → mono trust line. Max-width 720px centered.
// Reuse the numerals
The 01 / 02 / 03 mono numerals from the section-head pattern carry straight into “how it works” steps. No new component.
// One container
Every band shares one max-width: 1080px; margin: 0 auto; padding-inline: 48px inner container so edges line up down the page.
// patterns/auth-split.html · daylight Open full page →
// patterns/auth-centered.html · mission Open full page →
// A bare form is not an auth screen
A centered input on an empty field gives a first-time visitor nothing to decide with. Say what the product does before asking for an address.
// Split — user-facing default
50/50 above 900px, stacked below. Left: the pitch — eyebrow, product name, one-line lede, three mono checkpoints on --bg-inset. Right: the form card.
// Centered — operator sign-in
A single 400px card. Only appropriate when everyone signing in already knows what the product is — staff tools, not products strangers land on.
// Name the mechanism
“We’ll email you a link — no password.” Never let the button be the only text on screen.
// No huddles yet
Create one and share the link — people mark their times without signing up.

Eyebrow → one-line explanation in --text-muted → one btn-secondary. Centered, max-width 420px, 96px vertical padding. Never a bare “No results.”

07

Effects & Interaction

Scanlines Mission only
Fixed overlay on every Mission page — --chrome-scanline lines, 4px rhythm. The token is transparent in Daylight, so the same rule goes inert. Shown exaggerated.
Corner Brackets Mission only
32px L-borders at viewport corners — --accent-bracket, 16px inset. Hidden in Daylight via --chrome-bracket-display.
Hover Gradient
2px --gradient bar at card top — opacity 0 → 1 on hover. Mint → blue in Mission, deep green → blue in Daylight.
Focus Ring
:focus-visible — 1px --accent-ink outline, 3px offset. Keyboard only, never on click.
Selection
Select this text — mint highlight with dark type in both themes. Every copy action carries the brand.
::selection — background --accent, color --accent-on. Mint is a fill, so it holds in Daylight unchanged.
Load Reveal
Sections rise 8px and fade in, 90ms stagger — the page boots like an instrument panel.
0.6s ease · respects prefers-reduced-motion.
08

Voice & Tone

// Prefix
Slash-slash marks system commentary — framing, not content. // RV Power Systems
Case Rules
UPPERCASE for eyebrows, labels, page titles, stat labels. Normal case for titles, body, tooltips.
Separators
Em dash joins — middle dot separates. SYSTEM A · SYSTEM B
Copy Style
Terse fragments for chrome — plain sentences for anything a stranger reads. Ledes, help and error copy are written for humans, not operators. No exclamation marks. No emoji.