Design Tokens

Borders, radius, shadows, motion, z-index, and semantic tokens that form the visual foundation

Borders

<!-- Border width tokens derived from the 8px unit. -->
<div style="width: var(--ui-space-8); height: var(--ui-row-2); border: var(--ui-border-width-sm) solid var(--ui-color-border-strong)"></div>
<div style="width: var(--ui-space-8); height: var(--ui-row-2); border: var(--ui-border-width-md) solid var(--ui-color-border-strong)"></div>
<div style="width: var(--ui-space-8); height: var(--ui-row-2); border: var(--ui-border-width-lg) solid var(--ui-color-border-strong)"></div>

Radius

sm (4px)
md (8px)
lg (16px)
full
<!-- Border radius tokens derived from the 8px unit. -->
<div class="ui-column ui-column--xs ui-items-center">
  <div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-sm)"></div>
  <small>sm (4px)</small>
</div>
<div class="ui-column ui-column--xs ui-items-center">
  <div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-md)"></div>
  <small>md (8px)</small>
</div>
<div class="ui-column ui-column--xs ui-items-center">
  <div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-lg)"></div>
  <small>lg (16px)</small>
</div>
<div class="ui-column ui-column--xs ui-items-center">
  <div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-full)"></div>
  <small>full</small>
</div>

Shadows

sm
md
lg
<!-- Elevation shadows using the primary hue for tinted depth. -->
<div class="ui-column ui-column--xs ui-items-center">
  <div style="width: var(--ui-space-8); height: var(--ui-row-3); background: var(--ui-color-bg); border-radius: var(--ui-radius-md); box-shadow: var(--ui-shadow-sm)"></div>
  <small>sm</small>
</div>
<div class="ui-column ui-column--xs ui-items-center">
  <div style="width: var(--ui-space-8); height: var(--ui-row-3); background: var(--ui-color-bg); border-radius: var(--ui-radius-md); box-shadow: var(--ui-shadow-md)"></div>
  <small>md</small>
</div>
<div class="ui-column ui-column--xs ui-items-center">
  <div style="width: var(--ui-space-8); height: var(--ui-row-3); background: var(--ui-color-bg); border-radius: var(--ui-radius-md); box-shadow: var(--ui-shadow-lg)"></div>
  <small>lg</small>
</div>

Motion

:root { --ui-duration-instant: 50ms; --ui-duration-fast: 100ms; --ui-duration-base: 150ms; --ui-duration-normal: 200ms; --ui-duration-slow: 250ms; --ui-duration-slower: 400ms; } @media (prefers-reduced-motion: reduce) { :root { --ui-duration-instant: 0ms; --ui-duration-fast: 0ms; /* ...all set to 0ms */ } } :root { --ui-ease-default: cubic-bezier(0.4, 0, 0.2, 1); --ui-ease-in: cubic-bezier(0.4, 0, 1, 1); --ui-ease-out: cubic-bezier(0, 0, 0.2, 1); --ui-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); }
<!-- Duration and easing tokens. All durations drop to 0ms when prefers-reduced-motion is active. -->
:root {
  --ui-duration-instant: 50ms;
  --ui-duration-fast: 100ms;
  --ui-duration-base: 150ms;
  --ui-duration-normal: 200ms;
  --ui-duration-slow: 250ms;
  --ui-duration-slower: 400ms;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --ui-duration-instant: 0ms;
    --ui-duration-fast: 0ms;
    /* ...all set to 0ms */
  }
}
:root {
  --ui-ease-default: cubic-bezier(0.4, 0, 0.2, 1);
  --ui-ease-in:      cubic-bezier(0.4, 0, 1, 1);
  --ui-ease-out:     cubic-bezier(0, 0, 0.2, 1);
  --ui-ease-in-out:  cubic-bezier(0.4, 0, 0.2, 1);
}

Z Index

:root { --ui-z-index-base: 0; --ui-z-index-sticky: 100; --ui-z-index-dropdown: 200; --ui-z-index-overlay: 300; --ui-z-index-modal: 400; --ui-z-index-popover: 500; --ui-z-index-tooltip: 600; --ui-z-index-toast: 700; --ui-z-index-drawer: 800; --ui-z-index-debug: 9999; }
<!-- Layering scale with gaps to allow insertion without renumbering. -->
:root {
  --ui-z-index-base: 0;
  --ui-z-index-sticky: 100;
  --ui-z-index-dropdown: 200;
  --ui-z-index-overlay: 300;
  --ui-z-index-modal: 400;
  --ui-z-index-popover: 500;
  --ui-z-index-tooltip: 600;
  --ui-z-index-toast: 700;
  --ui-z-index-drawer: 800;
  --ui-z-index-debug: 9999;
}

Semantic Colors

:root { color-scheme: light dark; --ui-color-text: light-dark(var(--ui-color-neutral-900), var(--ui-color-neutral-100)); --ui-color-text-muted: light-dark(var(--ui-color-neutral-500), var(--ui-color-neutral-400)); --ui-color-bg: light-dark(var(--ui-color-neutral-50), var(--ui-color-neutral-900)); --ui-color-bg-subtle: light-dark(var(--ui-color-neutral-100), var(--ui-color-neutral-800)); } :root { --ui-color-border: light-dark(var(--ui-color-neutral-200), var(--ui-color-neutral-700)); --ui-color-border-strong: light-dark(var(--ui-color-neutral-300), var(--ui-color-neutral-600)); --ui-color-interactive: var(--ui-color-primary); --ui-color-interactive-hover: var(--ui-color-primary-dark); --ui-color-focus: var(--ui-color-primary-light); }
<!-- Context-aware color tokens that resolve automatically in light and dark mode via light-dark(). -->
:root {
  color-scheme: light dark;
  --ui-color-text: light-dark(var(--ui-color-neutral-900), var(--ui-color-neutral-100));
  --ui-color-text-muted: light-dark(var(--ui-color-neutral-500), var(--ui-color-neutral-400));
  --ui-color-bg: light-dark(var(--ui-color-neutral-50), var(--ui-color-neutral-900));
  --ui-color-bg-subtle: light-dark(var(--ui-color-neutral-100), var(--ui-color-neutral-800));
}
:root {
  --ui-color-border: light-dark(var(--ui-color-neutral-200), var(--ui-color-neutral-700));
  --ui-color-border-strong: light-dark(var(--ui-color-neutral-300), var(--ui-color-neutral-600));
  --ui-color-interactive: var(--ui-color-primary);
  --ui-color-interactive-hover: var(--ui-color-primary-dark);
  --ui-color-focus: var(--ui-color-primary-light);
}