cascivo Design Tokens

Generated from packages/tokens/src/index.css + packages/themes/src/light.css by scripts/tokens/generate-manifest.mjs. Do not edit by hand — run pnpm tokens:generate (or pnpm regen).

Every value cascivo exposes as a --cascivo-* CSS custom property. Values shown are the light theme's; theme-scoped tokens (colors, shadows) differ per [data-theme]. A machine-readable manifest is published at @cascivo/tokens/tokens.json, and a CascivoToken union for editor autocomplete at @cascivo/tokens/tokens.

This page covers the primitive and semantic layers only. Per-component knobs (--cascivo-link-color, --cascivo-calendar-cell-size) live in the component stylesheets; the complete set — every layer, plus the data-cascivo-* styling hooks — is generated to @cascivo/tokens/style-contract.json, with CascivoComponentToken, CascivoStyleHook and CascivoTokenStyle types at @cascivo/tokens/style-contract.

A name outside that set is not an error CSS will report — an unknown custom property is dropped silently. Three things check it for you against the generated set: the cascivo/token-values lint rule, satisfies CascivoTokenStyle on an inline style, and cascivo audit --ai in CI.

Design tools. The same tokens ship as W3C Design Tokens (DTCG 2025.10) for Figma variables, Tokens Studio, Style Dictionary and Terrazzo: @cascivo/tokens/dtcg/cascivo.tokens.json (semantic tokens kept as aliases of the primitives), one themes/<theme>.tokens.json per theme, and cascivo.resolver.json to select a theme. Also served at https://cascivo.com/tokens/dtcg/cascivo.resolver.json. Values DTCG cannot express (calc(), em) are listed under $extensions["com.cascivo"].notExported — read those from the CSS.

Canonical names vs aliases

Some roles have more than one token name for historical reasons (#7). The canonical name is the one to prefer; aliases resolve to the same value and are kept for backwards-compatibility (no token has been removed).

RoleCanonicalAlias
background--cascivo-color-background--cascivo-color-bg
foreground--cascivo-color-foreground--cascivo-color-text
text-muted--cascivo-color-text-muted--cascivo-color-foreground-muted
destructive--cascivo-color-destructive--cascivo-color-error
accent-foreground--cascivo-color-accent-foreground--cascivo-color-accent-content
success-foreground--cascivo-color-success-foreground--cascivo-color-success-content
warning-foreground--cascivo-color-warning-foreground--cascivo-color-warning-content
destructive-foreground--cascivo-color-destructive-foreground--cascivo-color-destructive-content
primary-fg--cascivo-color-primary-fg--cascivo-color-primary-content

Naming map — what each prefix means

The prefix tells you the property, not the concept, and several pairs read alike but are not:

If you want…The token is…NOT
a font size--cascivo-text-sm (alias: --cascivo-font-size-sm)—
a font weight--cascivo-font-medium--cascivo-text-medium
a font family--cascivo-font-sans--cascivo-text-sans
a line height--cascivo-leading-normal--cascivo-text-leading
text colour--cascivo-color-text--cascivo-text-color

--cascivo-text-* is the size scale; --cascivo-font-* is weight and family. That split is a trap for anyone typing from memory — and agents type from memory — so the --cascivo-font-size-* spellings are aliased to the --cascivo-text-* scale rather than left to resolve to nothing. An unknown custom property is silently dropped by CSS, with no error anywhere, which is what makes this class expensive to debug. --cascivo-text-* remains canonical.

color

TokenValueNotes
--cascivo-blue-100oklch(0.932 0.055 250)
--cascivo-blue-200oklch(0.882 0.095 250)
--cascivo-blue-300oklch(0.808 0.14 250)
--cascivo-blue-400oklch(0.707 0.18 250)
--cascivo-blue-50oklch(0.97 0.025 250)
--cascivo-blue-500oklch(0.623 0.214 250)
--cascivo-blue-600oklch(0.546 0.224 250)
--cascivo-blue-700oklch(0.452 0.196 250)
--cascivo-blue-800oklch(0.373 0.155 250)
--cascivo-blue-900oklch(0.29 0.105 250)
--cascivo-blue-950oklch(0.205 0.065 250)
--cascivo-border-defaultoklch(0.872 0.008 264)
--cascivo-border-strongoklch(0.707 0.015 264)
--cascivo-border-subtleoklch(0.928 0.006 264)
--cascivo-brand-accentoklch(0.72 0.13 195)
--cascivo-brand-gradient-endoklch(0.72 0.13 195)
--cascivo-brand-gradient-startoklch(0.55 0.15 240)
--cascivo-brand-inkoklch( 0.22 0.03 250 )
--cascivo-brand-paperoklch(0.99 0.005 250)
--cascivo-brand-primaryoklch( 0.55 0.15 240 )
--cascivo-chart-1oklch(0.62 0.13 70)
--cascivo-chart-2oklch(0.62 0.11 240)
--cascivo-chart-3oklch(0.6 0.13 135)
--cascivo-chart-4oklch(0.6 0.18 55)
--cascivo-chart-5oklch(0.5 0.13 270)
--cascivo-chart-6oklch(0.58 0.16 30)
--cascivo-chart-7oklch(0.62 0.12 350)
--cascivo-chart-8oklch(0.5 0.12 200)
--cascivo-chart-axisoklch(0.5 0.016 264)
--cascivo-chart-bar-radius2px
--cascivo-chart-fill-opacity0.25
--cascivo-chart-fill-opacity-overlap0.125
--cascivo-chart-gridvar(--cascivo-gray-200)
--cascivo-color-accentoklch(0.52 0.2 250)
--cascivo-color-accent-activevar(--cascivo-blue-800)
--cascivo-color-accent-contentvar(--cascivo-color-text-on-accent)alias of --cascivo-color-accent-foreground
--cascivo-color-accent-foregroundoklch(1 0 0)
--cascivo-color-accent-hoveroklch(0.45 0.2 250)
--cascivo-color-accent-mutedvar(--cascivo-blue-100)
--cascivo-color-accent-subtlevar(--cascivo-blue-50)
--cascivo-color-accent-textvar(--cascivo-color-accent)
--cascivo-color-accent-text-hovervar(--cascivo-color-accent-hover)
--cascivo-color-active-bgoklch(0.145 0.005 264 / 6%)
--cascivo-color-backgroundoklch(1 0 0)
--cascivo-color-bgvar(--cascivo-color-background)alias of --cascivo-color-background
--cascivo-color-bg-subtlevar(--cascivo-color-surface)
--cascivo-color-bordervar(--cascivo-gray-200)
--cascivo-color-border-strongvar(--cascivo-gray-300)
--cascivo-color-destructivevar(--cascivo-red-600)
--cascivo-color-destructive-contentvar(--cascivo-color-text-on-destructive)alias of --cascivo-color-destructive-foreground
--cascivo-color-destructive-foregroundoklch(0.448 0.17 22)
--cascivo-color-destructive-hovervar(--cascivo-red-700)
--cascivo-color-destructive-subtlevar(--cascivo-red-50)
--cascivo-color-erroroklch(0.628 0.188 22)alias of --cascivo-color-destructive
--cascivo-color-error-contentoklch(1 0 0)
--cascivo-color-focus-ringvar(--cascivo-blue-500)
--cascivo-color-foregroundoklch(0.145 0.005 264)
--cascivo-color-foreground-mutedoklch(0.5 0.018 264)alias of --cascivo-color-text-muted
--cascivo-color-infovar(--cascivo-blue-600)
--cascivo-color-info-contentoklch(1 0 0)
--cascivo-color-info-foregroundoklch(0.45 0.19 250)
--cascivo-color-info-subtlevar(--cascivo-blue-50)
--cascivo-color-primaryoklch(0.205 0 0)
--cascivo-color-primary-activeoklch(0.32 0 0)
--cascivo-color-primary-contentvar(--cascivo-color-primary-fg)alias of --cascivo-color-primary-fg
--cascivo-color-primary-fgoklch(0.985 0 0)
--cascivo-color-primary-hoveroklch(0.27 0 0)
--cascivo-color-secondaryoklch(0.92 0.004 264)
--cascivo-color-secondary-contentoklch(0.27 0.01 264)
--cascivo-color-secondary-hoveroklch(0.86 0.006 264)
--cascivo-color-secondary-subtleoklch(0.967 0.002 264)
--cascivo-color-successoklch(0.648 0.15 145)
--cascivo-color-success-contentoklch(1 0 0)alias of --cascivo-color-success-foreground
--cascivo-color-success-foregroundoklch(0.45 0.14 145)
--cascivo-color-success-subtlevar(--cascivo-green-50)
--cascivo-color-surfaceoklch(0.985 0.002 264)
--cascivo-color-surface-2oklch(0.967 0.003 264)
--cascivo-color-surface-overlayvar(--cascivo-color-background)
--cascivo-color-surface-raisedvar(--cascivo-color-surface)
--cascivo-color-textvar(--cascivo-color-foreground)alias of --cascivo-color-foreground
--cascivo-color-text-mutedoklch(0.5 0.016 264)
--cascivo-color-text-on-accentoklch(1 0 0)
--cascivo-color-text-on-destructiveoklch(1 0 0)
--cascivo-color-text-subtlevar(--cascivo-gray-600)
--cascivo-color-warningoklch(0.768 0.145 75)
--cascivo-color-warning-contentoklch(0.145 0 0)alias of --cascivo-color-warning-foreground
--cascivo-color-warning-foregroundoklch(0.5 0.14 75)
--cascivo-color-warning-subtlevar(--cascivo-orange-50)
--cascivo-focus-ring0 0 0 var(--cascivo-ring-width) var(--cascivo-ring-color)
--cascivo-gray-0oklch(1 0 0)
--cascivo-gray-100oklch(0.967 0.003 264)
--cascivo-gray-200oklch(0.928 0.006 264)
--cascivo-gray-300oklch(0.872 0.008 264)
--cascivo-gray-400oklch(0.707 0.015 264)
--cascivo-gray-50oklch(0.985 0.002 264)
--cascivo-gray-500oklch(0.554 0.018 264)
--cascivo-gray-600oklch(0.446 0.018 264)
--cascivo-gray-700oklch(0.373 0.015 264)
--cascivo-gray-800oklch(0.269 0.01 264)
--cascivo-gray-900oklch(0.205 0.007 264)
--cascivo-gray-950oklch(0.145 0.005 264)
--cascivo-green-100oklch(0.962 0.044 145)
--cascivo-green-200oklch(0.925 0.084 145)
--cascivo-green-400oklch(0.75 0.15 145)
--cascivo-green-50oklch(0.982 0.018 145)
--cascivo-green-500oklch(0.648 0.15 145)
--cascivo-green-600oklch(0.548 0.14 145)
--cascivo-green-700oklch(0.448 0.12 145)
--cascivo-green-900oklch(0.28 0.075 145)
--cascivo-orange-100oklch(0.96 0.045 75)
--cascivo-orange-400oklch(0.82 0.13 60)
--cascivo-orange-50oklch(0.98 0.02 75)
--cascivo-orange-500oklch(0.768 0.145 55)
--cascivo-orange-600oklch(0.68 0.155 50)
--cascivo-red-100oklch(0.936 0.032 22)
--cascivo-red-200oklch(0.885 0.062 22)
--cascivo-red-400oklch(0.72 0.16 22)
--cascivo-red-50oklch(0.971 0.013 22)
--cascivo-red-500oklch(0.628 0.188 22)
--cascivo-red-600oklch(0.54 0.188 22)
--cascivo-red-700oklch(0.448 0.17 22)
--cascivo-red-900oklch(0.28 0.1 22)
--cascivo-ring-colorcolor-mix(in oklch, var(--cascivo-color-accent) 55%, transparent)
--cascivo-ring-offset0px
--cascivo-ring-width2px
--cascivo-warm-100oklch(0.962 0.016 80)
--cascivo-warm-200oklch(0.92 0.025 78)
--cascivo-warm-300oklch(0.87 0.035 75)
--cascivo-warm-400oklch(0.76 0.045 70)
--cascivo-warm-50oklch(0.982 0.008 80)
--cascivo-warm-500oklch(0.64 0.045 65)
--cascivo-warm-600oklch(0.52 0.04 60)
--cascivo-warm-700oklch(0.42 0.03 55)
--cascivo-warm-800oklch(0.31 0.022 50)
--cascivo-warm-900oklch(0.21 0.015 50)
--cascivo-yellow-100oklch(0.973 0.05 95)
--cascivo-yellow-400oklch(0.868 0.145 80)
--cascivo-yellow-50oklch(0.987 0.026 95)
--cascivo-yellow-500oklch(0.768 0.145 75)

typography

TokenValueNotes
--cascivo-font-bold700
--cascivo-font-displayvar(--cascivo-font-sans)
--cascivo-font-medium500
--cascivo-font-monoui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace
--cascivo-font-normal400
--cascivo-font-sansui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif
--cascivo-font-semibold600
--cascivo-font-size-2xlvar(--cascivo-text-2xl)
--cascivo-font-size-3xlvar(--cascivo-text-3xl)
--cascivo-font-size-4xlvar(--cascivo-text-4xl)
--cascivo-font-size-basevar(--cascivo-text-base)
--cascivo-font-size-lgvar(--cascivo-text-lg)
--cascivo-font-size-smvar(--cascivo-text-sm)
--cascivo-font-size-xlvar(--cascivo-text-xl)
--cascivo-font-size-xsvar(--cascivo-text-xs)
--cascivo-leading-none1
--cascivo-leading-normal1.5
--cascivo-leading-relaxed1.625
--cascivo-leading-snug1.375
--cascivo-leading-tight1.25
--cascivo-text-2xl1.5rem
--cascivo-text-2xl-fluidclamp(1.25rem, 1rem + 1.25vw, 1.5rem)
--cascivo-text-3xl1.875rem
--cascivo-text-3xl-fluidclamp(1.5rem, 1.125rem + 1.875vw, 1.875rem)
--cascivo-text-4xl2.25rem
--cascivo-text-4xl-fluidclamp(1.875rem, 1.5rem + 1.875vw, 2.25rem)
--cascivo-text-base1rem
--cascivo-text-bodyvar(--cascivo-text-base)
--cascivo-text-body-smvar(--cascivo-text-sm)
--cascivo-text-captionvar(--cascivo-text-xs)
--cascivo-text-codevar( --cascivo-text-sm )
--cascivo-text-displayvar(--cascivo-text-4xl)
--cascivo-text-heading-lgvar(--cascivo-text-3xl)
--cascivo-text-heading-mdvar(--cascivo-text-2xl)
--cascivo-text-heading-smvar(--cascivo-text-xl)
--cascivo-text-labelvar(--cascivo-text-sm)
--cascivo-text-lg1.125rem
--cascivo-text-sm0.875rem
--cascivo-text-uivar( --cascivo-text-sm )
--cascivo-text-xl1.25rem
--cascivo-text-xs0.75rem
--cascivo-tracking-normal0em
--cascivo-tracking-tight-0.025em
--cascivo-tracking-wide0.025em

space

TokenValueNotes
--cascivo-space-00px
--cascivo-space-10.25rem
--cascivo-space-102.5rem
--cascivo-space-123rem
--cascivo-space-164rem
--cascivo-space-20.5rem
--cascivo-space-205rem
--cascivo-space-246rem
--cascivo-space-30.75rem
--cascivo-space-41rem
--cascivo-space-51.25rem
--cascivo-space-61.5rem
--cascivo-space-82rem

radius

TokenValueNotes
--cascivo-radius-2xl1rem
--cascivo-radius-badgevar(--cascivo-radius-full)
--cascivo-radius-base0.375rem
--cascivo-radius-buttonvar(--cascivo-radius-base)
--cascivo-radius-cardcalc(var(--cascivo-radius-base) * 1.66)
--cascivo-radius-componentvar(--cascivo-radius-base)
--cascivo-radius-controlvar(--cascivo-radius-base)
--cascivo-radius-fieldvar(--cascivo-radius-base)
--cascivo-radius-full9999px
--cascivo-radius-indicatorcalc(var(--cascivo-radius-base) / 2)
--cascivo-radius-inputvar(--cascivo-radius-base)
--cascivo-radius-itemcalc(var(--cascivo-radius-base) * 0.66)
--cascivo-radius-lg0.5rem
--cascivo-radius-md0.375rem
--cascivo-radius-modalcalc(var(--cascivo-radius-base) * 2)
--cascivo-radius-none0px
--cascivo-radius-overlaycalc(var(--cascivo-radius-base) * 2)
--cascivo-radius-sm0.25rem
--cascivo-radius-surfacecalc(var(--cascivo-radius-base) * 1.66)
--cascivo-radius-xl0.75rem

shadow

TokenValueNotes
--cascivo-shadow-lgvar(--cascivo-shadow-overlay)
--cascivo-shadow-md0 2px 8px oklch(0 0 0 / 0.07), 0 1px 2px oklch(0 0 0 / 0.04)
--cascivo-shadow-overlay0 4px 32px oklch(0 0 0 / 0.16), 0 0 0 1px oklch(0 0 0 / 0.04)
--cascivo-shadow-sm0 1px 3px oklch(0 0 0 / 0.07), 0 1px 2px oklch(0 0 0 / 0.04)
--cascivo-shadow-xlvar(--cascivo-shadow-overlay)
--cascivo-shadow-xs0 1px 2px oklch(0 0 0 / 0.05)

motion

TokenValueNotes
--cascivo-duration-100100ms
--cascivo-duration-150150ms
--cascivo-duration-200200ms
--cascivo-duration-300300ms
--cascivo-duration-500500ms
--cascivo-duration-7575ms
--cascivo-duration-loop1.4s
--cascivo-duration-loop-fast1s
--cascivo-duration-loop-slow2s
--cascivo-ease-decelcubic-bezier(0.16, 1, 0.3, 1)
--cascivo-ease-emphasizedcubic-bezier(0.2, 0, 0, 1)
--cascivo-ease-incubic-bezier(0.4, 0, 1, 1)
--cascivo-ease-in-outcubic-bezier(0.4, 0, 0.2, 1)
--cascivo-ease-outcubic-bezier(0, 0, 0.2, 1)
--cascivo-ease-springlinear( 0, 0.006, 0.083 5.5%, 0.244, 0.564 16.5%, 0.727, 0.867, 0.962, 1.017 32%, 1.041, 1.05, 1.048, 1.039, 1.026, 1.014 50.5%, 0.997, 0.991, 0.989, 0.991, 0.996 71.5%, 1.003, 1.005, 1.003, 1 )
--cascivo-motion-attentionvar(--cascivo-duration-500) var(--cascivo-ease-out)
--cascivo-motion-drawervar(--cascivo-duration-300) var(--cascivo-ease-decel)
--cascivo-motion-emphasisvar(--cascivo-duration-300) var(--cascivo-ease-in-out)
--cascivo-motion-entervar(--cascivo-duration-200) var(--cascivo-ease-out)
--cascivo-motion-exitvar(--cascivo-duration-150) var(--cascivo-ease-in)

sizing

TokenValueNotes
--cascivo-control-height-lg3rem
--cascivo-control-height-md2.5rem
--cascivo-control-height-sm2rem
--cascivo-target-min-coarse2.75rem

layout

TokenValueNotes
--cascivo-shell-aside-inline-size18rem
--cascivo-shell-header-block-size3rem
--cascivo-shell-panel-inline-size20rem

z-index

TokenValueNotes
--cascivo-z-base0
--cascivo-z-dropdown100
--cascivo-z-modal300
--cascivo-z-overlay200
--cascivo-z-raised10
--cascivo-z-toast400
--cascivo-z-tooltip500

breakpoint

TokenValueNotes
--cascivo-screen-lg64rem
--cascivo-screen-md40rem
--cascivo-screen-sm30rem
--cascivo-screen-xl80rem

other

TokenValueNotes
--cascivo-disabled-opacity0.5
--cascivo-editor-bgvar(--cascivo-color-surface, oklch(0.985 0.002 264))
--cascivo-editor-bordervar(--cascivo-color-border, oklch(0.928 0.006 264))
--cascivo-editor-current-linevar(--cascivo-color-active-bg, oklch(0.55 0.02 264 / 8%))
--cascivo-editor-fgvar(--cascivo-color-foreground, oklch(0.205 0.005 264))
--cascivo-editor-gutter-bgvar(--cascivo-color-surface-2, oklch(0.967 0.003 264))
--cascivo-editor-gutter-fgvar(--cascivo-color-text-muted, oklch(0.55 0.018 264))
--cascivo-editor-selectionvar(--cascivo-color-accent-muted, oklch(0.882 0.095 250))
--cascivo-editor-syntax-attroklch(0.54 0.15 40)
--cascivo-editor-syntax-booleanoklch(0.54 0.15 40)
--cascivo-editor-syntax-commentvar(--cascivo-color-foreground-muted, oklch(0.55 0.018 264))
--cascivo-editor-syntax-functionvar(--cascivo-chart-5, oklch(0.5 0.16 265))
--cascivo-editor-syntax-keywordvar(--cascivo-color-accent, oklch(0.52 0.2 250))
--cascivo-editor-syntax-numberoklch(0.54 0.15 40)
--cascivo-editor-syntax-operatorvar(--cascivo-color-foreground-muted, oklch(0.5 0.04 264))
--cascivo-editor-syntax-propertyoklch(0.53 0.12 240)
--cascivo-editor-syntax-punctuationvar(--cascivo-color-text-subtle, oklch(0.446 0.018 264))
--cascivo-editor-syntax-regexpoklch(0.53 0.13 135)
--cascivo-editor-syntax-stringoklch(0.53 0.13 135)
--cascivo-editor-syntax-tagvar(--cascivo-color-accent, oklch(0.52 0.2 250))
--cascivo-editor-syntax-typeoklch(0.54 0.12 350)
--cascivo-editor-syntax-variablevar(--cascivo-editor-fg)
--cascivo-hover-opacity0.8
--cascivo-link-colorvar(--cascivo-color-accent-text)
--cascivo-search-width100%

As Markdown: /docs/tokens.md

← All guides