Design-system styleguide. Generated from src/tokens at build time.
bg-brand-dark-primary--background-color-brand-dark-primary#070b3bbg-brand-dark-secondary--background-color-brand-dark-secondary#252770bg-brand-dark-tertiary--background-color-brand-dark-tertiary#4d4f9ebg-brand-light-primary--background-color-brand-light-primary#d8ff5abg-brand-light-secondary--background-color-brand-light-secondary#dfff8fbg-brand-light-tertiary--background-color-brand-light-tertiary#f1ffccbg-clear--background-color-clear#ffffff00bg-main-primary--background-color-main-primary#f3f4f5bg-main-quaternary--background-color-main-quaternary#070b3bbg-main-secondary--background-color-main-secondary#ffffffbg-main-tertiary--background-color-main-tertiary#f9f9fabg-system-action--background-color-system-action#e6eaf8bg-system-error--background-color-system-error#f5e8ebbg-system-rating--background-color-system-rating#fff4ccbg-system-success--background-color-system-success#e2f5ecbg-system-warning--background-color-system-warning#fdeedetext-brand-dark-primary--text-color-brand-dark-primary#13155atext-brand-dark-quaternary--text-color-brand-dark-quaternary#9194e0text-brand-dark-secondary--text-color-brand-dark-secondary#393b87text-brand-dark-tertiary--text-color-brand-dark-tertiary#6365b5text-brand-light-primary--text-color-brand-light-primary#769700text-brand-light-quaternary--text-color-brand-light-quaternary#d7ff70text-brand-light-secondary--text-color-brand-light-secondary#b0ce00text-brand-light-tertiary--text-color-brand-light-tertiary#ceff52text-clear--text-color-clear#ffffff00text-on-brand-on-dark-primary--text-color-on-brand-on-dark-primary#fffffftext-on-brand-on-dark-secondary--text-color-on-brand-on-dark-secondary#ffffffa3text-on-brand-on-dark-tertiary--text-color-on-brand-on-dark-tertiary#ffffff52text-on-brand-on-light-primary--text-color-on-brand-on-light-primary#000000text-on-brand-on-light-secondary--text-color-on-brand-on-light-secondary#000000a3text-on-brand-on-light-tertiary--text-color-on-brand-on-light-tertiary#00000052text-on-main-alternate-primary--text-color-on-main-alternate-primary#fffffftext-on-main-alternate-quarternary--text-color-on-main-alternate-quarternary#ffffff29text-on-main-alternate-secondary--text-color-on-main-alternate-secondary#ffffffa3text-on-main-alternate-tertiary--text-color-on-main-alternate-tertiary#ffffff52text-on-main-primary--text-color-on-main-primary#13155atext-on-main-quaternary--text-color-on-main-quaternary#a2bfc9text-on-main-secondary--text-color-on-main-secondary#6e838atext-on-main-tertiary--text-color-on-main-tertiary#a9bec2text-on-system-on-action--text-color-on-system-on-action#171f55text-on-system-on-error--text-color-on-system-on-error#5c1223text-on-system-on-rating--text-color-on-system-on-rating#253033text-on-system-on-success--text-color-on-system-on-success#0e4a2dtext-on-system-on-warning--text-color-on-system-on-warning#5c2c08text-system-action--text-color-system-action#4255c8text-system-error--text-color-system-error#c4334atext-system-rating--text-color-system-rating#fcb000text-system-success--text-color-system-success#2d9e63text-system-warning--text-color-system-warning#e07830border-brand-dark-primary--border-color-brand-dark-primary#13155aborder-brand-dark-secondary--border-color-brand-dark-secondary#6365b5border-brand-dark-tertiary--border-color-brand-dark-tertiary#9194e0border-brand-light-primary--border-color-brand-light-primary#d8ff5aborder-brand-light-secondary--border-color-brand-light-secondary#dfff8fborder-brand-light-tertiary--border-color-brand-light-tertiary#f1ffccborder-clear--border-color-clear#ffffff00border-main-alternative-primary--border-color-main-alternative-primary#ffffffborder-main-alternative-quaternary--border-color-main-alternative-quaternary#ffffff0aborder-main-alternative-secondary--border-color-main-alternative-secondary#ffffff1fborder-main-alternative-tertiary--border-color-main-alternative-tertiary#ffffff14border-main-primary--border-color-main-primary#000000border-main-quaternary--border-color-main-quaternary#0000000aborder-main-secondary--border-color-main-secondary#0000001fborder-main-tertiary--border-color-main-tertiary#00000014border-system-action--border-color-system-action#4255c8border-system-error--border-color-system-error#c4334aborder-system-rating--border-color-system-rating#fcb000border-system-success--border-color-system-success#2d9e63border-system-warning--border-color-system-warning#e07830Every color of the Style Library's global layer, for design review. Reference only — global tokens have no utilities; use the semantic bg-* / text-* / border-* classes above.
base.black.100#000000base.black.12#0000001fbase.black.16#00000029base.black.24#0000003dbase.black.32#00000052base.black.4#0000000abase.black.48#0000007abase.black.64#000000a3base.black.8#00000014base.black.80#000000ccbase.clear#ffffff00base.white.100#ffffffbase.white.12#ffffff1fbase.white.16#ffffff29base.white.24#ffffff3dbase.white.32#ffffff52base.white.4#ffffff0abase.white.48#ffffff7abase.white.64#ffffffa3base.white.8#ffffff14base.white.80#ffffffccbrand.dark.0#dcdeffbrand.dark.100#6365b5brand.dark.120#4d4f9ebrand.dark.140#393b87brand.dark.160#252770brand.dark.180#13155abrand.dark.20#c3c6f8brand.dark.200#070b3bbrand.dark.40#aaadeebrand.dark.60#9194e0brand.dark.80#7a7cccbrand.light.0#f1ffccbrand.light.10#eaffc4brand.light.100#ceff52brand.light.120#ccec00brand.light.140#b0ce00brand.light.160#92b200brand.light.180#769700brand.light.20#e8ffadbrand.light.200#5d8200brand.light.40#dfff8fbrand.light.60#d7ff70brand.light.80#d8ff5aneutral.0#f9f9faneutral.100#a9bec2neutral.120#90a0a5neutral.140#6e838aneutral.160#526166neutral.180#364347neutral.20#f3f4f5neutral.200#253033neutral.40#d1e7efneutral.60#bad3dcneutral.80#a2bfc9system.action.bleached#e6eaf8system.action.darkened#171f55system.action.primary#4255c8system.error.bleached#f5e8ebsystem.error.darkened#5c1223system.error.primary#c4334asystem.rating.bleached#fff4ccsystem.rating.darkened#7a5200system.rating.primary#fcb000system.success.bleached#e2f5ecsystem.success.darkened#0e4a2dsystem.success.primary#2d9e63system.warning.bleached#fdeedesystem.warning.darkened#5c2c08system.warning.primary#e07830system.yellow.bleached#ffeabbsystem.yellow.darkened#584314system.yellow.primary#fcb000Each style is one composite class — text-h1 sets family, size, line-height, weight and letter-spacing together. For custom CSS, the adaptive properties are also exposed as runtime variables --nova-text-<style>-<property> (e.g. --nova-text-h1-font-size). px equivalents are shown at the browser default root font-size (1rem = 16px). The package does not fix html { font-size }, so a reader who has changed it in their browser settings gets proportionally different pixels.
text-h1 font-size mobile: 2.5rem 40px · tablet: 3.5rem 56px · desktop-sm: 4.5rem 72px · desktop: 4.5rem 72px · line-height mobile: 3rem 48px · tablet: 4rem 64px · desktop-sm: 5.25rem 84px · desktop: 5.25rem 84px · font-weight mobile: 800 · tablet: 800 · desktop-sm: 900 · desktop: 900 · letter-spacing mobile: 0 · tablet: 1px · desktop-sm: 2px · desktop: 2pxtext-h2 font-size mobile: 2.25rem 36px · tablet: 2.5rem 40px · desktop-sm: 3rem 48px · desktop: 3rem 48px · line-height mobile: 2.75rem 44px · tablet: 3rem 48px · desktop-sm: 3.5rem 56px · desktop: 3.5rem 56px · font-weight 800 · letter-spacing mobile: 0 · tablet: 1px · desktop-sm: 1px · desktop: 1pxtext-h3 font-size mobile: 2rem 32px · tablet: 2.25rem 36px · desktop-sm: 2.25rem 36px · desktop: 2.25rem 36px · line-height mobile: 2.5rem 40px · tablet: 2.75rem 44px · desktop-sm: 2.75rem 44px · desktop: 2.75rem 44px · font-weight 800 · letter-spacing 0text-subline-l font-size mobile: 1rem 16px · tablet: 1.125rem 18px · desktop-sm: 1.125rem 18px · desktop: 1.125rem 18px · line-height 1.5rem 24px · font-weight 600 · letter-spacing 0text-subline-m font-size mobile: 0.875rem 14px · tablet: 1rem 16px · desktop-sm: 1rem 16px · desktop: 1rem 16px · line-height 1.25rem 20px · font-weight 600 · letter-spacing 0text-subline-s font-size mobile: 0.75rem 12px · tablet: 0.875rem 14px · desktop-sm: 0.875rem 14px · desktop: 0.875rem 14px · line-height 1rem 16px · font-weight 600 · letter-spacing 0text-body-l font-size mobile: 1rem 16px · tablet: 1.125rem 18px · desktop-sm: 1.125rem 18px · desktop: 1.125rem 18px · line-height 1.5rem 24px · font-weight 400 · letter-spacing 0text-body-m font-size mobile: 0.875rem 14px · tablet: 1rem 16px · desktop-sm: 1rem 16px · desktop: 1rem 16px · line-height 1.5rem 24px · font-weight 400 · letter-spacing 0text-body-s font-size mobile: 0.75rem 12px · tablet: 0.875rem 14px · desktop-sm: 0.875rem 14px · desktop: 0.875rem 14px · line-height 1rem 16px · font-weight 400 · letter-spacing 0text-button-l font-size mobile: 1rem 16px · tablet: 1.125rem 18px · desktop-sm: 1.125rem 18px · desktop: 1.125rem 18px · line-height 1.5rem 24px · font-weight 700 · letter-spacing 0text-button-m font-size mobile: 0.875rem 14px · tablet: 1rem 16px · desktop-sm: 1rem 16px · desktop: 1rem 16px · line-height 1.25rem 20px · font-weight 700 · letter-spacing 0text-button-s font-size mobile: 0.75rem 12px · tablet: 0.875rem 14px · desktop-sm: 0.875rem 14px · desktop: 0.875rem 14px · line-height 1rem 16px · font-weight 700 · letter-spacing 0text-caption-l font-size 0.875rem 14px · line-height 1rem 16px · font-weight 500 · letter-spacing 0text-caption-m font-size 0.75rem 12px · line-height 1rem 16px · font-weight 400 · letter-spacing 0text-caption-s font-size 0.625rem 10px · line-height 0.75rem 12px · font-weight 400 · letter-spacing 0px equivalents are shown at the browser default root font-size (1rem = 16px). The package does not fix html { font-size }, so a reader who has changed it in their browser settings gets proportionally different pixels.
Classes: p- px- py- pt- pr- pb- pl-
p-compact | --padding-compact | mobile: 0.5rem 8px · tablet: 0.5rem 8px · desktop-sm: 1rem 16px · desktop: 1.5rem 24px (adaptive) |
p-extra-large | --padding-extra-large | mobile: 3rem 48px · tablet: 3.5rem 56px · desktop-sm: 5rem 80px · desktop: 6rem 96px (adaptive) |
p-large | --padding-large | mobile: 1.5rem 24px · tablet: 2rem 32px · desktop-sm: 3rem 48px · desktop: 4rem 64px (adaptive) |
p-medium | --padding-medium | mobile: 1rem 16px · tablet: 1.5rem 24px · desktop-sm: 2rem 32px · desktop: 3rem 48px (adaptive) |
p-micro | --padding-micro | 0.25rem 4px |
p-nano | --padding-nano | 0.125rem 2px |
p-regular | --padding-regular | mobile: 0.75rem 12px · tablet: 1rem 16px · desktop-sm: 1.5rem 24px · desktop: 2rem 32px (adaptive) |
p-semi-compact | --padding-semi-compact | 0.75rem 12px |
p-semi-regular | --padding-semi-regular | 1.25rem 20px |
p-small | --padding-small | 0.5rem 8px |
p-tiny | --padding-tiny | 0.375rem 6px |
p-x-compact | --padding-x-compact | 0.875rem 14px |
p-x-large | --padding-x-large | 4rem 64px |
p-x-regular | --padding-x-regular | 1.125rem 18px |
p-x-small | --padding-x-small | 0.625rem 10px |
p-xx-large | --padding-xx-large | 6rem 96px |
Classes: gap- gap-x- gap-y- — margins (m- mx- my- mt- mr- mb- ml-) use this same scale
gap-compact | --gap-compact | 0.5rem 8px |
gap-extra-large | --gap-extra-large | mobile: 3rem 48px · tablet: 4rem 64px · desktop-sm: 3rem 48px · desktop: 4rem 64px (adaptive) |
gap-large | --gap-large | mobile: 1.5rem 24px · tablet: 2rem 32px · desktop-sm: 2rem 32px · desktop: 3rem 48px (adaptive) |
gap-medium | --gap-medium | mobile: 1rem 16px · tablet: 1.5rem 24px · desktop-sm: 1.5rem 24px · desktop: 2rem 32px (adaptive) |
gap-nano | --gap-nano | 0.125rem 2px |
gap-regular | --gap-regular | mobile: 0.75rem 12px · tablet: 1rem 16px · desktop-sm: 1rem 16px · desktop: 1.5rem 24px (adaptive) |
gap-semi-medium | --gap-semi-medium | 1.25rem 20px |
gap-semi-regular | --gap-semi-regular | 0.75rem 12px |
gap-tiny | --gap-tiny | 0.25rem 4px |
Classes: size- w- h-
size-2xl | --size-2xl | 1.75rem 28px |
size-3xl | --size-3xl | 2rem 32px |
size-4xl | --size-4xl | 2.25rem 36px |
size-5xl | --size-5xl | 2.5rem 40px |
size-6xl | --size-6xl | 3rem 48px |
size-7xl | --size-7xl | 4rem 64px |
size-8xl | --size-8xl | 6.5rem 104px |
size-compact | --size-compact | 0.75rem 12px |
size-l | --size-l | 1.25rem 20px |
size-m | --size-m | 1rem 16px |
size-nano | --size-nano | 0.125rem 2px |
size-s | --size-s | 0.625rem 10px |
size-xl | --size-xl | 1.5rem 24px |
size-xs | --size-xs | 0.5rem 8px |
Classes: rounded- and every core per-side/corner variant (rounded-t-, rounded-bl-, …)
rounded-compact | --radius-compact | 8px |
rounded-full | --radius-full | 1000px |
rounded-large | --radius-large | 32px |
rounded-medium | --radius-medium | 24px |
rounded-none | --radius-none | 0 |
rounded-regular | --radius-regular | 16px |
rounded-semi-compact | --radius-semi-compact | 12px |
rounded-small | --radius-small | 6px |
Classes: border- border-x- border-y- border-t- border-r- border-b- border-l- (the same classes also carry the border colors above)
border-default | --border-width-default | 1px |
border-medium | --border-width-medium | 2px |
border-thick | --border-width-thick | 3px |
border-x-thick | --border-width-x-thick | 4px |
Engineering-owned — the kit ships no container variables, so these are derived from the 1440 artboards. Each class centers the box, caps the content width and applies the adaptive side paddings by itself.
container-page | --container-page--nova-page-margin | content 1248px · side margin 24 / 32 / 48 / 64 / 96px at 0 / 600 / 960 / 1280 / 1440 |
container-section | --container-section--nova-section-margin | content 1376px · side margin 24 → 32px at 1280 |
max-w-page max-w-section | --container-page--container-section | width ceiling only — no centering, no paddings |
Figma effect styles (not variables — snapshot in figma-data/raw/effect-styles.json). shadow-elevation-level-1 is the kit's own transparent no-op — use it to remove elevation on hover/pressed states.
shadow-elevation-level-1--shadow-elevation-level-10 0 0 0 #070B3B00shadow-elevation-level-2--shadow-elevation-level-20 4px 16px 0 #070B3B29shadow-elevation-level-3--shadow-elevation-level-30 8px 24px 0 #070B3B3Dshadow-elevation-level-4--shadow-elevation-level-40 12px 32px 0 #070B3B52Hover a row to play it. Engineering-owned — the kit carries no motion variables, so these come from src/motion.json, not from Figma. Interactive elements (a, button, input, [role=button]…) already ease their colours, borders and elevation via base.css; add transition-interactive where movement should animate too, and duration-* / ease-* to retime it. Everything collapses to 1ms under prefers-reduced-motion: reduce.
duration-fast--transition-duration-fast120msduration-medium--transition-duration-medium200msduration-slow--transition-duration-slow320msease-standard--ease-standardcubic-bezier(0.2, 0, 0, 1)ease-entrance--ease-entrancecubic-bezier(0, 0, 0.2, 1)ease-exit--ease-exitcubic-bezier(0.4, 0, 1, 1)Usage: <span class="icon-nova-<name>"></span> — sized by the font-size, colored by the text color (text-*).
+ Material icons: icon-[mdi--home]
@nova/base/logos/brand-on-dark-full.svg@nova/base/logos/brand-on-dark-short.svg@nova/base/logos/brand-on-light-full.svg@nova/base/logos/brand-on-light-short.svg@nova/base/logos/dark-full.svg@nova/base/logos/dark-short.svg@nova/base/logos/light-full.svg@nova/base/logos/light-short.svgEvery prop combination of every contract, per breakpoint range (real iframes — adaptive tokens and lg: fire truthfully). Contracts: @nova/base/components-json/<level>/<slug>.json · reference markup: @nova/base/components/<slug>.html · specs: @nova/base/components-spec/<slug>.md.