@ -308,9 +308,9 @@ export const THEME_BASE_RECIPE_TOKENS = {
// ── Typography ────────────────────────────────────────────────────
// ── Typography ────────────────────────────────────────────────────
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- lg )',
'font-weight' : 'var(--font-weight-medium)' ,
'font-weight' : 'var(--font-weight-medium)' ,
'line-height' : 'var(--leading-ui)' ,
'line-height' : 'var(--leading-ui)' ,
'letter-spacing' : '0.01em' ,
'letter-spacing' : '0.01em' ,
@ -437,9 +437,9 @@ export const THEME_BASE_RECIPE_TOKENS = {
'gap-lg' : 'var(--space-2)' ,
'gap-lg' : 'var(--space-2)' ,
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- lg )',
'line-height' : 'var(--leading-ui)' ,
'line-height' : 'var(--leading-ui)' ,
color : 'var(--color-content-secondary)' ,
color : 'var(--color-content-secondary)' ,
'link-radius' : 'var(--radius-sm)' ,
'link-radius' : 'var(--radius-sm)' ,
@ -794,12 +794,9 @@ export const THEME_BASE_RECIPE_TOKENS = {
'gap-xl' : 'var(--space-3)' ,
'gap-xl' : 'var(--space-3)' ,
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'label-gap' : 'var(--space-1)' ,
'label-gap' : 'var(--space-1)' ,
'label-font-size-xs' : 'var(--font-size-xxs)' ,
// Label size is derived in field.css (control font − one step), not a
'label-font-size-sm' : 'var(--font-size-xs)' ,
// per-size token — keeps it coherent with the segmented fields' calc.
'label-font-size-md' : 'var(--font-size-sm)' ,
'label-font-weight' : 'var(--font-weight-regular)' ,
'label-font-size-lg' : 'var(--font-size-md)' ,
'label-font-size-xl' : 'var(--font-size-lg)' ,
'label-font-weight' : 'var(--font-weight-medium)' ,
'label-line-height' : 'var(--leading-ui)' ,
'label-line-height' : 'var(--leading-ui)' ,
'label-color' : 'var(--color-content-primary)' ,
'label-color' : 'var(--color-content-primary)' ,
'label-color-invalid' : 'var(--color-risk-text)' ,
'label-color-invalid' : 'var(--color-risk-text)' ,
@ -843,7 +840,6 @@ export const THEME_BASE_RECIPE_TOKENS = {
'control-focus-shadow' :
'control-focus-shadow' :
'inset 0 0 0 var(--focus-ring-inner-width) var(--focus-ring-color), 0 0 0 var(--focus-ring-offset) var(--color-surface-default), 0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--focus-ring-color)' ,
'inset 0 0 0 var(--focus-ring-inner-width) var(--focus-ring-color), 0 0 0 var(--focus-ring-offset) var(--color-surface-default), 0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--focus-ring-color)' ,
'affix-color' : 'var(--color-content-secondary)' ,
'affix-color' : 'var(--color-content-secondary)' ,
'message-font-size' : 'var(--font-size-xs)' ,
'message-line-height' : 'var(--leading-ui)' ,
'message-line-height' : 'var(--leading-ui)' ,
'helper-color' : 'var(--color-content-secondary)' ,
'helper-color' : 'var(--color-content-secondary)' ,
'error-color' : 'var(--color-risk-text)' ,
'error-color' : 'var(--color-risk-text)' ,
@ -1240,7 +1236,7 @@ export const THEME_BASE_RECIPE_TOKENS = {
bg : 'var(--color-surface-default)' ,
bg : 'var(--color-surface-default)' ,
color : 'var(--color-content-primary)' ,
color : 'var(--color-content-primary)' ,
'label-color' : 'var(--color-content-secondary)' ,
'label-color' : 'var(--color-content-secondary)' ,
'label-font-weight' : 'var(--font-weight- medium )',
'label-font-weight' : 'var(--font-weight- regular )',
'placeholder-color' : 'var(--color-content-muted)' ,
'placeholder-color' : 'var(--color-content-muted)' ,
'literal-color' : 'var(--color-content-muted)' ,
'literal-color' : 'var(--color-content-muted)' ,
'focus-shadow' :
'focus-shadow' :
@ -1294,7 +1290,7 @@ export const THEME_BASE_RECIPE_TOKENS = {
bg : 'var(--color-surface-default)' ,
bg : 'var(--color-surface-default)' ,
color : 'var(--color-content-primary)' ,
color : 'var(--color-content-primary)' ,
'label-color' : 'var(--color-content-secondary)' ,
'label-color' : 'var(--color-content-secondary)' ,
'label-font-weight' : 'var(--font-weight- medium )',
'label-font-weight' : 'var(--font-weight- regular )',
'placeholder-color' : 'var(--color-content-muted)' ,
'placeholder-color' : 'var(--color-content-muted)' ,
'literal-color' : 'var(--color-content-muted)' ,
'literal-color' : 'var(--color-content-muted)' ,
'focus-shadow' :
'focus-shadow' :
@ -1307,7 +1303,6 @@ export const THEME_BASE_RECIPE_TOKENS = {
'segment-readonly-bg' : 'var(--color-surface-overlay)' ,
'segment-readonly-bg' : 'var(--color-surface-overlay)' ,
'segment-readonly-color' : 'var(--color-content-secondary)' ,
'segment-readonly-color' : 'var(--color-content-secondary)' ,
'segment-readonly-decoration' : 'underline dotted var(--color-content-muted)' ,
'segment-readonly-decoration' : 'underline dotted var(--color-content-muted)' ,
'segment-focus-shadow' : 'inset 0 0 0 var(--border-width) var(--_time-field-accent-border)' ,
'transition-duration' : 'var(--duration-fast)' ,
'transition-duration' : 'var(--duration-fast)' ,
'transition-ease' : 'var(--ease-default)' ,
'transition-ease' : 'var(--ease-default)' ,
'disabled-opacity' : 'var(--opacity-disabled)'
'disabled-opacity' : 'var(--opacity-disabled)'
@ -1348,7 +1343,7 @@ export const THEME_BASE_RECIPE_TOKENS = {
bg : 'var(--color-surface-default)' ,
bg : 'var(--color-surface-default)' ,
color : 'var(--color-content-primary)' ,
color : 'var(--color-content-primary)' ,
'label-color' : 'var(--color-content-secondary)' ,
'label-color' : 'var(--color-content-secondary)' ,
'label-font-weight' : 'var(--font-weight- medium )',
'label-font-weight' : 'var(--font-weight- regular )',
'placeholder-color' : 'var(--color-content-muted)' ,
'placeholder-color' : 'var(--color-content-muted)' ,
'literal-color' : 'var(--color-content-muted)' ,
'literal-color' : 'var(--color-content-muted)' ,
'focus-shadow' :
'focus-shadow' :
@ -1487,23 +1482,23 @@ export const THEME_BASE_RECIPE_TOKENS = {
'letter-spacing' : 'var(--tracking-normal)' ,
'letter-spacing' : 'var(--tracking-normal)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-sm' : 'var(--font-size-sm)' ,
'font-size-sm' : 'var(--font-size-sm)' ,
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- lg )',
'font-size-xl' : 'var(--font-size- lg )',
'font-size-xl' : 'var(--font-size- x l)',
'font-weight-xs' : 'var(--font-weight-medium)' ,
'font-weight-xs' : 'var(--font-weight-medium)' ,
'font-weight-sm' : 'var(--font-weight-medium)' ,
'font-weight-sm' : 'var(--font-weight-medium)' ,
'font-weight-md' : 'var(--font-weight-medium)' ,
'font-weight-md' : 'var(--font-weight-medium)' ,
'font-weight-lg' : 'var(--font-weight-medium)' ,
'font-weight-lg' : 'var(--font-weight-medium)' ,
'font-weight-xl' : 'var(--font-weight-medium)' ,
'font-weight-xl' : 'var(--font-weight-medium)' ,
// Icon follows the button's font-size (canonical icon↔type correlation):
// Icon follows the button's font-size 1:1 (canonical icon↔type correlation):
// each size's icon is the one paired with that size's text. The butt on
// the font now scales 1:1 with the size (no longer compact), so the ic on
// shows compact text (font dropped a step), so the icon stays compact too.
// matches at the same step. The parallel icon scale preserves icon ≈ font+2
// Density-scaled via the icon scale ; never hardcoded px.
// in the body sizes (md: font 16 → icon 18). Density-scaled ; never hardcoded px.
'icon-size-xs' : 'var(--icon-size-xs)' ,
'icon-size-xs' : 'var(--icon-size-xs)' ,
'icon-size-sm' : 'var(--icon-size-sm)' ,
'icon-size-sm' : 'var(--icon-size-sm)' ,
'icon-size-md' : 'var(--icon-size- s m)',
'icon-size-md' : 'var(--icon-size- md )',
'icon-size-lg' : 'var(--icon-size- md )',
'icon-size-lg' : 'var(--icon-size- lg )',
'icon-size-xl' : 'var(--icon-size- lg )',
'icon-size-xl' : 'var(--icon-size- x l)',
'radius-sm' : 'var(--radius-sm)' ,
'radius-sm' : 'var(--radius-sm)' ,
'radius-md' : 'var(--radius-md)' ,
'radius-md' : 'var(--radius-md)' ,
'radius-lg' : 'var(--radius-lg)' ,
'radius-lg' : 'var(--radius-lg)' ,
@ -1681,9 +1676,9 @@ export const THEME_BASE_RECIPE_TOKENS = {
shadow : 'var(--depth-raised-shadow), var(--depth-raised-halo)' ,
shadow : 'var(--depth-raised-shadow), var(--depth-raised-halo)' ,
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- sm )',
'font-size-lg' : 'var(--font-size- lg )',
'line-height' : 'var(--leading-ui)' ,
'line-height' : 'var(--leading-ui)' ,
'header-gap' : 'var(--space-2)' ,
'header-gap' : 'var(--space-2)' ,
'heading-color' : 'var(--color-content-primary)' ,
'heading-color' : 'var(--color-content-primary)' ,
@ -1768,9 +1763,9 @@ export const THEME_BASE_RECIPE_TOKENS = {
'control-px-lg' : 'var(--space-3)' ,
'control-px-lg' : 'var(--space-3)' ,
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- sm )',
'font-size-lg' : 'var(--font-size- lg )',
'line-height' : 'var(--leading-ui)' ,
'line-height' : 'var(--leading-ui)' ,
'control-radius' : 'var(--radius-md)' ,
'control-radius' : 'var(--radius-md)' ,
'control-border-width' : 'var(--border-width)' ,
'control-border-width' : 'var(--border-width)' ,
@ -1903,10 +1898,10 @@ export const THEME_BASE_RECIPE_TOKENS = {
'item-gap' : 'var(--space-3)' ,
'item-gap' : 'var(--space-3)' ,
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- sm )',
'font-size-lg' : 'var(--font-size- lg )',
'font-size-xl' : 'var(--font-size- md )',
'font-size-xl' : 'var(--font-size- xl )',
'font-weight' : 'var(--font-weight-medium)' ,
'font-weight' : 'var(--font-weight-medium)' ,
'line-height' : 'var(--leading-ui)' ,
'line-height' : 'var(--leading-ui)' ,
'item-label-color' : 'var(--color-content-primary)' ,
'item-label-color' : 'var(--color-content-primary)' ,
@ -2111,8 +2106,8 @@ export const THEME_BASE_RECIPE_TOKENS = {
'icon-size-xs' : 'var(--icon-size-xs)' ,
'icon-size-xs' : 'var(--icon-size-xs)' ,
'icon-size-sm' : 'var(--icon-size-sm)' ,
'icon-size-sm' : 'var(--icon-size-sm)' ,
'icon-size-md' : 'var(--icon-size-md)' ,
'icon-size-md' : 'var(--icon-size-md)' ,
'icon-size-lg' : 'var(--icon-size- md )',
'icon-size-lg' : 'var(--icon-size- lg )',
'icon-size-xl' : 'var(--icon-size- lg )',
'icon-size-xl' : 'var(--icon-size- x l)',
'icon-color' : 'var(--color-content-muted)' ,
'icon-color' : 'var(--color-content-muted)' ,
'icon-margin-inline-end' : 'var(--space-1-5)' ,
'icon-margin-inline-end' : 'var(--space-1-5)' ,
'loading-indicator-size-xs' : 'var(--icon-size-xs)' ,
'loading-indicator-size-xs' : 'var(--icon-size-xs)' ,
@ -2393,9 +2388,9 @@ export const THEME_BASE_RECIPE_TOKENS = {
'control-gap-lg' : 'var(--space-2)' ,
'control-gap-lg' : 'var(--space-2)' ,
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- sm )',
'font-size-lg' : 'var(--font-size- lg )',
'line-height' : 'var(--leading-ui)' ,
'line-height' : 'var(--leading-ui)' ,
radius : 'var(--radius-lg)' ,
radius : 'var(--radius-lg)' ,
bg : 'var(--color-surface-raised)' ,
bg : 'var(--color-surface-raised)' ,
@ -2435,9 +2430,9 @@ export const THEME_BASE_RECIPE_TOKENS = {
'control-height-sm' : 'var(--control-height-sm)' ,
'control-height-sm' : 'var(--control-height-sm)' ,
'control-height-md' : 'var(--control-height-md)' ,
'control-height-md' : 'var(--control-height-md)' ,
'control-height-lg' : 'var(--control-height-lg)' ,
'control-height-lg' : 'var(--control-height-lg)' ,
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- lg )',
'preview-size-sm' : '32px' ,
'preview-size-sm' : '32px' ,
'preview-size-md' : '40px' ,
'preview-size-md' : '40px' ,
'preview-size-lg' : '48px' ,
'preview-size-lg' : '48px' ,
@ -2609,9 +2604,9 @@ export const THEME_BASE_RECIPE_TOKENS = {
'item-gap-lg' : 'var(--space-2)' ,
'item-gap-lg' : 'var(--space-2)' ,
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-xs' : 'var(--font-size-xs)' ,
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- sm )',
'font-size-lg' : 'var(--font-size- lg )',
'line-height' : 'var(--leading-ui)' ,
'line-height' : 'var(--leading-ui)' ,
color : 'var(--color-content-primary)' ,
color : 'var(--color-content-primary)' ,
'label-color' : 'var(--color-content-secondary)' ,
'label-color' : 'var(--color-content-secondary)' ,
@ -3133,9 +3128,9 @@ export const THEME_BASE_RECIPE_TOKENS = {
'indicator-size-md' : 'var(--control-height-md)' ,
'indicator-size-md' : 'var(--control-height-md)' ,
'indicator-size-lg' : 'var(--control-height-lg)' ,
'indicator-size-lg' : 'var(--control-height-lg)' ,
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- lg )',
'line-height' : 'var(--leading-ui)' ,
'line-height' : 'var(--leading-ui)' ,
color : 'var(--color-content-primary)' ,
color : 'var(--color-content-primary)' ,
'list-gap' : 'var(--space-1)' ,
'list-gap' : 'var(--space-1)' ,
@ -3596,11 +3591,11 @@ export const THEME_BASE_RECIPE_TOKENS = {
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'line-height' : 'var(--leading-ui)' ,
'line-height' : 'var(--leading-ui)' ,
'letter-spacing' : 'var(--tracking-normal)' ,
'letter-spacing' : 'var(--tracking-normal)' ,
'font-size-xs' : 'var(--font-size-x x s)',
'font-size-xs' : 'var(--font-size-x s)',
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- lg )',
'font-size-xl' : 'var(--font-size- lg )',
'font-size-xl' : 'var(--font-size- x l)',
'font-weight-xs' : 'var(--font-weight-medium)' ,
'font-weight-xs' : 'var(--font-weight-medium)' ,
'font-weight-sm' : 'var(--font-weight-medium)' ,
'font-weight-sm' : 'var(--font-weight-medium)' ,
'font-weight-md' : 'var(--font-weight-medium)' ,
'font-weight-md' : 'var(--font-weight-medium)' ,
@ -3832,9 +3827,9 @@ export const THEME_BASE_RECIPE_TOKENS = {
'padding-x-md' : 'var(--space-2-5)' ,
'padding-x-md' : 'var(--space-2-5)' ,
'padding-y-lg' : 'var(--space-2)' ,
'padding-y-lg' : 'var(--space-2)' ,
'padding-x-lg' : 'var(--space-3)' ,
'padding-x-lg' : 'var(--space-3)' ,
'font-size-sm' : 'var(--font-size- x s)',
'font-size-sm' : 'var(--font-size- sm )',
'font-size-md' : 'var(--font-size- s m)',
'font-size-md' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- md )',
'font-size-lg' : 'var(--font-size- lg )',
'font-family' : 'var(--font-ui)' ,
'font-family' : 'var(--font-ui)' ,
'font-weight' : 'var(--font-weight-regular)' ,
'font-weight' : 'var(--font-weight-regular)' ,
'line-height' : 'var(--leading-text)' ,
'line-height' : 'var(--leading-text)' ,