← Back to hidekiaono.tech AI

Foundations

Colour

Abyss neutrals carry structure, six signals carry meaning, one each, and energy is reserved for focus and live state.

Select a swatch or token to copy its var(); select a hex to copy the hex.

Signal colours
  • PlasmaFocus and selection
  • CyanLive data and links
  • AzureInformation
  • LimeHealthy
  • AmberWarning
  • CoralRisk
Abyss ramp

--bg page floorprimary text --fg

Type

Every swatch, sample and chart on this page is drawn from system/tokens.css as the page loads, so what you see is what ships.

Tokens come in three tiers. Build with the semantic tier: themes and densities remap it, so your work follows without edits.

  1. Tier 1Primitive

    Raw values with no job yet. Components never read them directly.

    --plasma-500
  2. Tier 2Semantic

    Values with a job. Themes and densities remap this tier.

    --accent-2 · --surface-2
  3. Tier 3Component

    Parts read semantic tokens only, so they follow every remap.

    nav pill · KPI card

Colour

Abyss neutrals carry structure. Six signals carry meaning, one each. Energy is reserved for focus and live state, so the rest of the screen stays calm.

  • Read semantic tokens, never raw hex. Reach for --surface-2 or --accent, so a theme change reaches your work.
  • Keep pages on the abyss. Pages sit on --bg; depth comes from glass layers, never from flat grey.
  • Spend colour on meaning. A signal appears when there is a state to report. Decoration stays neutral.

Abyss ramp

Nine neutrals from the page floor to primary text. Most of any screen is the first three steps; the rest draws strokes, quiet text and text.

Page floor
--bg is abyss 1000. Nothing sits below it.
Surfaces
--surface-1 to --surface-3 are glass over abyss 950 to 850, lit from above.
Strokes
--stroke-1 for hairlines, --stroke-2 for borders that must read.
Text
--fg for content, --fg-2 for support, --fg-3 for captions.

Signal colours

Six hues with one semantic job each. Use the semantic name in components so the hue can be retuned without touching your work.

Do

  • Show a signal when there is a state to report: healthy, warning, risk, new information.
  • Pair every signal with a word or icon. Colour alone is never the only cue.
  • Use plasma for the one focused or selected thing on screen.

Do not

  • Colour headings, dividers or illustrations with a signal.
  • Put two signals on the same element.
  • Use lime, amber or coral for text smaller than 18px without checking the contrast table below.

Energy gradient

The signature gradient for focus and live state, and a soft version for fills that sit behind content. One energy element per view is the rule; a second one dilutes the first.

--energy · plasma 500azure 500 at 55%cyan 500

--energy-soft · plasma at 32%cyan at 14%

Contrast

Measured live against abyss 950. Body text needs 4.5:1; 3:1 is enough only for large text and icons.

    The tick on each bar marks 4.5:1, the AA floor for body text.

    Type scale

    Space Grotesk for display, Inter for interface, tabular numerals for data. Steps follow a 1.25 ratio.

    • Size with tokens. Use the --t-* steps rather than pixel values, so density modes can remap them.
    • Keep display type tight. Headings take --track-display and --lh-tight; body text takes --lh-body.
    • Set numbers in tabular figures. --num keeps columns of data aligned as values change.
    Get the type tokens in tokens.css

    Families

    AaSpace GroteskDisplay and headings, 500 and 700
    AaInterInterface and body, 400 to 600
    AaSystem monoCode, token names and values

    Steps

    Space and radii

    A 4 point grid and one radius family. Density modes remap space without touching components.

    • Space with steps, not pixels. --s-4 is the default gap inside a card; --s-5 pads it.
    • Nest radii inward. An inner corner is one step smaller than the panel that holds it.

    Spacing steps

    Nine steps from 4 to 96 pixels, drawn at true size. Switch to compact to see the density remap.

    Corner radii

    One family from small controls to large panels. Pills and avatars take --r-pill.

    Glass elevation

    Depth comes from tint, blur, edge light and glow, never from flat grey.

    • Climb one layer at a time. A card sits on a panel, a focus state lifts the card; nothing skips a layer.
    • Keep the blur at one value. --glass-blur is shared, so stacked glass stays consistent.
    Sunk--bg-sunk · e-0
    Panel--surface-1 · e-1
    Card--surface-2 · e-2
    Focus--surface-3 · e-3

    Emissive tier

    Glass reflects. Live and active states emit. Light is a token, so the same values drive CSS glow and the 3D bloom pass.

    • Give light only to what is live or active. Resting states reflect; they never glow.
    • Change light through tokens. Colour is the source, --glow-r-* is how far it bleeds and --bloom-* is how much halo survives.
    Dots, badges and live ticks
    Active
    Active nav, KPI orbs and hot nodes
    Live data, links and flow
    Card rims, 55% at rest and full on hover

    Data viz palette

    Series read in this order. Plasma leads, cyan follows, status hues stay semantic.

    • Assign series in order. The first series is always --viz-1; add hues down the list, never skip ahead for taste.
    • Keep the frame quiet. Grid lines take --viz-grid and labels --viz-axis, so the data stays brightest.
      Response time 312msThroughput 2.4KError rate 0.02%

      Sequential and diverging

      Sequential for magnitude, diverging for change around a midpoint.

      low--viz-seqhigh

      loss--viz-divgain

      Motion

      Fast for feedback, slow for space. Reduced motion collapses every duration to zero.

      • Arrive with --ease-out. Things entering or responding start fast and settle.
      • Travel with --ease-io. A move between two resting places eases at both ends.

      Every token, documented

      The whole of system/tokens.css, grouped the way the file groups it. Filter by name or value, then select a token to copy it.

      OCTO Foundations · Release 03 · Every value on this page is read from system/tokens.css at runtime.