Primitive colors
226 variables · PRIMITIVE COLORSRaw palettes: 10 steps per hue plus 10/20/30% opacity variants of steps 300 and 600. Never used directly in designs; the semantic tokens alias them.
brand
16 variables50#ebf2fe
100#d3e3fd
200#b2cfff
300#90bbff
400#6ca3ff
500#4085f7
600#0f66f5
700#0851c9
800#063d98
900#042967
300-opacity-10#90bbff1a300-opacity-20#90bbff33300-opacity-30#90bbff4d600-opacity-10#0f66f51a600-opacity-20#0f66f533600-opacity-30#0f66f54dneutral
10 variables50#fafafa
100#e6e6e6
200#cfd0d1
300#b7b8b9
400#9c9d9e
500#7d7f81
600#5d5f61
700#46484a
800#2f3235
900#1b1e21
info
16 variables50#ebf2fe
100#d3e3fd
200#b2cfff
300#90bbff
400#6ca3ff
500#4085f7
600#0f66f5
700#0851c9
800#063d98
900#042967
300-opacity-10#90bbff1a300-opacity-20#90bbff33300-opacity-30#90bbff4d600-opacity-10#0f66f51a600-opacity-20#0f66f533600-opacity-30#0f66f54dsuccess
16 variables50#dcfce7
100#bbf7d0
200#86efac
300#4ade80
400#22c55e
500#16a34a
600#15803d
700#166534
800#14532d
900#063b1c
300-opacity-10#4ade801a300-opacity-20#4ade8033300-opacity-30#4ade804d600-opacity-10#15803d1a600-opacity-20#15803d33600-opacity-30#15803d4dwarning
16 variables50#fff6c0
100#ffea8d
200#ffde5b
300#ffcd29
400#ffbf00
500#f0ac00
600#dd8c00
700#cb7300
800#ab5300
900#7b3b00
300-opacity-10#ffcd291a300-opacity-20#ffcd2933300-opacity-30#ffcd294d600-opacity-10#dd8c001a600-opacity-20#dd8c0033600-opacity-30#dd8c004ddanger
16 variables50#ffdbdb
100#ffb8b8
200#ff9393
300#ff6c6c
400#ff4545
500#ff3030
600#d90000
700#bb0000
800#910100
900#690000
300-opacity-10#ff6c6c1a300-opacity-20#ff6c6c33300-opacity-30#ff6c6c4d600-opacity-10#d900001a600-opacity-20#d9000033600-opacity-30#d900004dcoral
16 variables50#fff0eb
100#ffd4c7
200#ffa48a
300#ff7752
400#ff5530
500#f03a10
600#d92a06
700#b32105
800#8a1904
900#611203
300-opacity-10#ff77521a300-opacity-20#ff775233300-opacity-30#ff77524d600-opacity-10#d92a061a600-opacity-20#d92a0633600-opacity-30#d92a064dorange
16 variables50#fff3e0
100#ffe0ad
200#ffc65c
300#ffad15
400#f59800
500#db8500
600#c07000
700#9c5a00
800#784400
900#552f00
300-opacity-10#ffad151a300-opacity-20#ffad1533300-opacity-30#ffad154d600-opacity-10#c070001a600-opacity-20#c0700033600-opacity-30#c070004dlime
16 variables50#f0fce0
100#d8f6ad
200#b0ee5c
300#88e215
400#72c800
500#60aa00
600#4f8e00
700#3f7200
800#305800
900#203c00
300-opacity-10#88e2151a300-opacity-20#88e21533300-opacity-30#88e2154d600-opacity-10#4f8e001a600-opacity-20#4f8e0033600-opacity-30#4f8e004dteal
16 variables50#e0fcf5
100#adf6e6
200#5ceed2
300#15e2ba
400#00cca5
500#00ad8c
600#009076
700#00735f
800#005848
900#003d32
300-opacity-10#15e2ba1a300-opacity-20#15e2ba33300-opacity-30#15e2ba4d600-opacity-10#0090761a600-opacity-20#00907633600-opacity-30#0090764dcyan
16 variables50#e0f5fc
100#ade4f8
200#5ccef0
300#15b8e5
400#00a4d2
500#008db5
600#007698
700#00607c
800#004a60
900#003444
300-opacity-10#15b8e51a300-opacity-20#15b8e533300-opacity-30#15b8e54d600-opacity-10#0076981a600-opacity-20#00769833600-opacity-30#0076984dindigo
16 variables50#eaedff
100#ccd4ff
200#9aaaff
300#6880ff
400#3d5cff
500#2040f0
600#1230d8
700#0e26b2
800#0b1d8a
900#081460
300-opacity-10#6880ff1a300-opacity-20#6880ff33300-opacity-30#6880ff4d600-opacity-10#1230d81a600-opacity-20#1230d833600-opacity-30#1230d84dviolet
16 variables50#f8eaff
100#edccff
200#dc9aff
300#ca68ff
400#bb3dff
500#a820f0
600#9012d8
700#750eb2
800#5a0b8a
900#400860
300-opacity-10#ca68ff1a300-opacity-20#ca68ff33300-opacity-30#ca68ff4d600-opacity-10#9012d81a600-opacity-20#9012d833600-opacity-30#9012d84dpink
16 variables50#ffebf3
100#ffcce2
200#ff99c8
300#ff66ae
400#ff3d98
500#f01e84
600#d80e72
700#b30c5e
800#8a094a
900#600636
300-opacity-10#ff66ae1a300-opacity-20#ff66ae33300-opacity-30#ff66ae4d600-opacity-10#d80e721a600-opacity-20#d80e7233600-opacity-30#d80e724dwhite & black
8 variableswhite#ffffffblack#000000white-opacity-10#ffffff1awhite-opacity-20#ffffff33white-opacity-30#ffffff4dblack-opacity-10#0000001ablack-opacity-20#00000033black-opacity-30#0000004dSemantic colors
186 variables · SEMANTIC COLORS · Light / DarkEach token aliases one primitive per mode. Text and icon tokens are shown on surface-base; borders as an outline.
Surface
32 variables| Token | Light | Dark |
|---|---|---|
surface-baseDefault page and card background (white / near-black). | white#ffffff | neutral-900#1b1e21 |
surface-base-subtleRaised or recessed areas on surface-base; field backgrounds. | neutral-50#fafafa | neutral-800#2f3235 |
surface-base-mutedStronger neutral fill: toggle-group track, disabled areas, dividers blocks. | neutral-100#e6e6e6 | neutral-700#46484a |
surface-base-inverseInverse (dark in light theme) containers: snackbars, tooltips. | neutral-900#1b1e21 | white#ffffff |
surface-base-subtle-inverseSecondary inverse container. | neutral-800#2f3235 | neutral-50#fafafa |
surface-base-muted-inverseTertiary inverse container. | neutral-700#46484a | neutral-100#e6e6e6 |
surface-primarySolid primary fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | brand-600#0f66f5 | brand-300#90bbff |
surface-infoSolid info fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | info-600#0f66f5 | info-300#90bbff |
surface-successSolid success fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | success-600#15803d | success-300#4ade80 |
surface-warningSolid warning fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | warning-800#ab5300 | warning-200#ffde5b |
surface-dangerSolid danger fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | danger-600#d90000 | danger-200#ff9393 |
surface-primary-subtleTinted primary container (notifications, chips, highlighted cards). Text: text-base or text-primary-strong. | brand-100#d3e3fd | brand-700#0851c9 |
surface-info-subtleTinted info container (notifications, chips, highlighted cards). Text: text-base or text-info-strong. | info-100#d3e3fd | info-700#0851c9 |
surface-success-subtleTinted success container (notifications, chips, highlighted cards). Text: text-base or text-success-strong. | success-100#bbf7d0 | success-700#166534 |
surface-warning-subtleTinted warning container (notifications, chips, highlighted cards). Text: text-base or text-warning-strong. | warning-100#ffea8d | warning-800#ab5300 |
surface-danger-subtleTinted danger container (notifications, chips, highlighted cards). Text: text-base or text-danger-strong. | danger-100#ffb8b8 | danger-700#bb0000 |
surface-coralSolid coral fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | coral-600#d92a06 | coral-200#ffa48a |
surface-orangeSolid orange fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | orange-700#9c5a00 | orange-300#ffad15 |
surface-limeSolid lime fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | lime-700#3f7200 | lime-300#88e215 |
surface-tealSolid teal fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | teal-700#00735f | teal-300#15e2ba |
surface-cyanSolid cyan fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | cyan-600#007698 | cyan-300#15b8e5 |
surface-indigoSolid indigo fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | indigo-600#1230d8 | indigo-200#9aaaff |
surface-violetSolid violet fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | violet-600#9012d8 | violet-200#dc9aff |
surface-pinkSolid pink fill (badges, strong notifications, decorative blocks). Text: text-base-inverse. | pink-600#d80e72 | pink-200#ff99c8 |
surface-coral-subtleTinted coral container (notifications, chips, highlighted cards). Text: text-base or text-coral-strong. | coral-100#ffd4c7 | coral-700#b32105 |
surface-orange-subtleTinted orange container (notifications, chips, highlighted cards). Text: text-base or text-orange-strong. | orange-100#ffe0ad | orange-700#9c5a00 |
surface-lime-subtleTinted lime container (notifications, chips, highlighted cards). Text: text-base or text-lime-strong. | lime-100#d8f6ad | lime-700#3f7200 |
surface-teal-subtleTinted teal container (notifications, chips, highlighted cards). Text: text-base or text-teal-strong. | teal-100#adf6e6 | teal-700#00735f |
surface-cyan-subtleTinted cyan container (notifications, chips, highlighted cards). Text: text-base or text-cyan-strong. | cyan-100#ade4f8 | cyan-700#00607c |
surface-indigo-subtleTinted indigo container (notifications, chips, highlighted cards). Text: text-base or text-indigo-strong. | indigo-100#ccd4ff | indigo-700#0e26b2 |
surface-violet-subtleTinted violet container (notifications, chips, highlighted cards). Text: text-base or text-violet-strong. | violet-100#edccff | violet-700#750eb2 |
surface-pink-subtleTinted pink container (notifications, chips, highlighted cards). Text: text-base or text-pink-strong. | pink-100#ffcce2 | pink-700#b30c5e |
Text
32 variables| Token | Light | Dark |
|---|---|---|
text-basePrimary text on surface-base, surface-base-subtle and *-subtle surfaces. | Aaneutral-900#1b1e21 | Aaneutral-50#fafafa |
text-base-subtleSecondary text (labels, supporting copy) on surface-base and surface-base-subtle. | Aaneutral-700#46484a | Aaneutral-200#cfd0d1 |
text-base-mutedTertiary text (metadata, hints) on surface-base. | Aaneutral-600#5d5f61 | Aaneutral-300#b7b8b9 |
text-base-inverseText on surface-base-inverse and on solid colour fills (interactive-primary, surface-primary, surface-danger…). | Aaneutral-50#fafafa | Aaneutral-900#1b1e21 |
text-base-subtle-inverseText on surface-base-inverse and on solid colour fills (interactive-primary, surface-primary, surface-danger…). | Aaneutral-200#cfd0d1 | Aaneutral-700#46484a |
text-base-muted-inverseText on surface-base-inverse and on solid colour fills (interactive-primary, surface-primary, surface-danger…). | Aaneutral-300#b7b8b9 | Aaneutral-600#5d5f61 |
text-primaryPrimary text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aabrand-600#0f66f5 | Aabrand-300#90bbff |
text-infoInfo text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aainfo-600#0f66f5 | Aainfo-300#90bbff |
text-successSuccess text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aasuccess-600#15803d | Aasuccess-300#4ade80 |
text-warningWarning text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aawarning-800#ab5300 | Aawarning-200#ffde5b |
text-dangerDanger text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aadanger-600#d90000 | Aadanger-200#ff9393 |
text-coralCoral text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aacoral-600#d92a06 | Aacoral-200#ffa48a |
text-orangeOrange text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aaorange-700#9c5a00 | Aaorange-300#ffad15 |
text-limeLime text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aalime-700#3f7200 | Aalime-300#88e215 |
text-tealTeal text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aateal-700#00735f | Aateal-300#15e2ba |
text-cyanCyan text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aacyan-600#007698 | Aacyan-300#15b8e5 |
text-indigoIndigo text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aaindigo-600#1230d8 | Aaindigo-200#9aaaff |
text-violetViolet text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aaviolet-600#9012d8 | Aaviolet-200#dc9aff |
text-pinkPink text on surface-base only (not on colour fills or inverse surfaces). text-info is the floating field label on focus. | Aapink-600#d80e72 | Aapink-200#ff99c8 |
text-primary-strongText on surface-primary-subtle only (not on surface-base or solid fills). | Aabrand-900#042967 | Aabrand-50#ebf2fe |
text-info-strongText on surface-info-subtle only (not on surface-base or solid fills). | Aainfo-900#042967 | Aainfo-50#ebf2fe |
text-success-strongText on surface-success-subtle only (not on surface-base or solid fills). | Aasuccess-900#063b1c | Aasuccess-50#dcfce7 |
text-warning-strongText on surface-warning-subtle only (not on surface-base or solid fills). | Aawarning-900#7b3b00 | Aawarning-50#fff6c0 |
text-danger-strongText on surface-danger-subtle only (not on surface-base or solid fills). | Aadanger-900#690000 | Aadanger-50#ffdbdb |
text-coral-strongText on surface-coral-subtle only (not on surface-base or solid fills). | Aacoral-900#611203 | Aacoral-50#fff0eb |
text-orange-strongText on surface-orange-subtle only (not on surface-base or solid fills). | Aaorange-900#552f00 | Aaorange-50#fff3e0 |
text-lime-strongText on surface-lime-subtle only (not on surface-base or solid fills). | Aalime-900#203c00 | Aalime-50#f0fce0 |
text-teal-strongText on surface-teal-subtle only (not on surface-base or solid fills). | Aateal-900#003d32 | Aateal-50#e0fcf5 |
text-cyan-strongText on surface-cyan-subtle only (not on surface-base or solid fills). | Aacyan-900#003444 | Aacyan-50#e0f5fc |
text-indigo-strongText on surface-indigo-subtle only (not on surface-base or solid fills). | Aaindigo-900#081460 | Aaindigo-50#eaedff |
text-violet-strongText on surface-violet-subtle only (not on surface-base or solid fills). | Aaviolet-900#400860 | Aaviolet-50#f8eaff |
text-pink-strongText on surface-pink-subtle only (not on surface-base or solid fills). | Aapink-900#600636 | Aapink-50#ffebf3 |
Icon
19 variables| Token | Light | Dark |
|---|---|---|
icon-baseDefault icon colour on surface-base. | ★neutral-900#1b1e21 | ★neutral-50#fafafa |
icon-base-subtleSecondary icons, e.g. a field's leading icon. | ★neutral-600#5d5f61 | ★neutral-300#b7b8b9 |
icon-base-mutedDecorative, low-emphasis icons. | ★neutral-500#7d7f81 | ★neutral-400#9c9d9e |
icon-base-inverseIcons on inverse surfaces and solid colour fills. | ★neutral-50#fafafa | ★neutral-900#1b1e21 |
icon-base-subtle-inverseIcons on inverse surfaces and solid colour fills. | ★neutral-300#b7b8b9 | ★neutral-600#5d5f61 |
icon-base-muted-inverseIcons on inverse surfaces and solid colour fills. | ★neutral-400#9c9d9e | ★neutral-500#7d7f81 |
icon-primaryPrimary icons on surface-base. | ★brand-600#0f66f5 | ★brand-300#90bbff |
icon-infoInfo icons on surface-base. | ★info-600#0f66f5 | ★info-300#90bbff |
icon-successSuccess icons on surface-base. | ★success-600#15803d | ★success-300#4ade80 |
icon-warningWarning icons on surface-base. | ★warning-800#ab5300 | ★warning-200#ffde5b |
icon-dangerDanger icons on surface-base. | ★danger-600#d90000 | ★danger-200#ff9393 |
icon-coralCoral icons on surface-base. | ★coral-600#d92a06 | ★coral-200#ffa48a |
icon-orangeOrange icons on surface-base. | ★orange-700#9c5a00 | ★orange-300#ffad15 |
icon-limeLime icons on surface-base. | ★lime-700#3f7200 | ★lime-300#88e215 |
icon-tealTeal icons on surface-base. | ★teal-700#00735f | ★teal-300#15e2ba |
icon-cyanCyan icons on surface-base. | ★cyan-600#007698 | ★cyan-300#15b8e5 |
icon-indigoIndigo icons on surface-base. | ★indigo-600#1230d8 | ★indigo-200#9aaaff |
icon-violetViolet icons on surface-base. | ★violet-600#9012d8 | ★violet-200#dc9aff |
icon-pinkPink icons on surface-base. | ★pink-600#d80e72 | ★pink-200#ff99c8 |
Border
32 variables| Token | Light | Dark |
|---|---|---|
border-baseStrong neutral border; on surface-base and surface-base-subtle. | neutral-700#46484a | neutral-100#e6e6e6 |
border-base-subtleNeutral divider/border on surface-base. 2.72:1 in light — decorative separation only, not for control boundaries that carry meaning. | neutral-400#9c9d9e | neutral-500#7d7f81 |
border-base-mutedHairline divider on surface-base (decorative). | neutral-200#cfd0d1 | neutral-700#46484a |
border-base-inverseBorder on surface-base-inverse and other inverse containers. | neutral-100#e6e6e6 | neutral-700#46484a |
border-base-subtle-inverseBorder on surface-base-inverse and other inverse containers. | neutral-500#7d7f81 | neutral-400#9c9d9e |
border-base-muted-inverseBorder on surface-base-inverse and other inverse containers. | neutral-700#46484a | neutral-200#cfd0d1 |
border-primaryPrimary border on surface-base (e.g. error field uses border-danger). | brand-600#0f66f5 | brand-300#90bbff |
border-infoInfo border on surface-base (e.g. error field uses border-danger). | info-600#0f66f5 | info-300#90bbff |
border-successSuccess border on surface-base (e.g. error field uses border-danger). | success-600#15803d | success-300#4ade80 |
border-warningWarning border on surface-base (e.g. error field uses border-danger). | warning-800#ab5300 | warning-200#ffde5b |
border-dangerDanger border on surface-base (e.g. error field uses border-danger). | danger-600#d90000 | danger-200#ff9393 |
border-primary-subtleBorder of a primary-subtle container (on surface-primary-subtle). | brand-400#6ca3ff | brand-500#4085f7 |
border-info-subtleBorder of a info-subtle container (on surface-info-subtle). | info-400#6ca3ff | info-500#4085f7 |
border-success-subtleBorder of a success-subtle container (on surface-success-subtle). | success-400#22c55e | success-500#16a34a |
border-warning-subtleBorder of a warning-subtle container (on surface-warning-subtle). | warning-400#ffbf00 | warning-600#dd8c00 |
border-danger-subtleBorder of a danger-subtle container (on surface-danger-subtle). | danger-400#ff4545 | danger-500#ff3030 |
border-coralCoral border on surface-base (e.g. error field uses border-danger). | coral-600#d92a06 | coral-200#ffa48a |
border-orangeOrange border on surface-base (e.g. error field uses border-danger). | orange-700#9c5a00 | orange-300#ffad15 |
border-limeLime border on surface-base (e.g. error field uses border-danger). | lime-700#3f7200 | lime-300#88e215 |
border-tealTeal border on surface-base (e.g. error field uses border-danger). | teal-700#00735f | teal-300#15e2ba |
border-cyanCyan border on surface-base (e.g. error field uses border-danger). | cyan-600#007698 | cyan-300#15b8e5 |
border-indigoIndigo border on surface-base (e.g. error field uses border-danger). | indigo-600#1230d8 | indigo-200#9aaaff |
border-violetViolet border on surface-base (e.g. error field uses border-danger). | violet-600#9012d8 | violet-200#dc9aff |
border-pinkPink border on surface-base (e.g. error field uses border-danger). | pink-600#d80e72 | pink-200#ff99c8 |
border-coral-subtleBorder of a coral-subtle container (on surface-coral-subtle). | coral-400#ff5530 | coral-500#f03a10 |
border-orange-subtleBorder of a orange-subtle container (on surface-orange-subtle). | orange-400#f59800 | orange-500#db8500 |
border-lime-subtleBorder of a lime-subtle container (on surface-lime-subtle). | lime-400#72c800 | lime-500#60aa00 |
border-teal-subtleBorder of a teal-subtle container (on surface-teal-subtle). | teal-400#00cca5 | teal-500#00ad8c |
border-cyan-subtleBorder of a cyan-subtle container (on surface-cyan-subtle). | cyan-400#00a4d2 | cyan-500#008db5 |
border-indigo-subtleBorder of a indigo-subtle container (on surface-indigo-subtle). | indigo-400#3d5cff | indigo-500#2040f0 |
border-violet-subtleBorder of a violet-subtle container (on surface-violet-subtle). | violet-400#bb3dff | violet-500#a820f0 |
border-pink-subtleBorder of a pink-subtle container (on surface-pink-subtle). | pink-400#ff3d98 | pink-500#f01e84 |
Interactive
22 variables| Token | Light | Dark |
|---|---|---|
interactive-primaryPrimary actions: button fill, outlined stroke and text/outlined label colour — enabled state. Put text-base-inverse on a fill of it. | brand-600#0f66f5 | brand-200#b2cfff |
interactive-primary-hoverPrimary actions: button fill, outlined stroke and text/outlined label colour — hover state. Put text-base-inverse on a fill of it. | brand-700#0851c9 | brand-300#90bbff |
interactive-primary-activePrimary actions: button fill, outlined stroke and text/outlined label colour — active state. Put text-base-inverse on a fill of it. | brand-800#063d98 | brand-400#6ca3ff |
interactive-primary-subtlePrimary actions: subtle (tonal) fill — enabled state. Put text-base on it. | brand-200#b2cfff | brand-600#0f66f5 |
interactive-primary-subtle-hoverPrimary actions: subtle (tonal) fill — hover state. Put text-base on it. | brand-300#90bbff | brand-700#0851c9 |
interactive-primary-subtle-activePrimary actions: subtle (tonal) fill — active state. Put text-base on it. | brand-400#6ca3ff | brand-800#063d98 |
interactive-baseNeutral/secondary actions: button fill, outlined stroke and text/outlined label colour — enabled state. Put text-base-inverse on a fill of it. | neutral-700#46484a | neutral-50#fafafa |
interactive-base-hoverNeutral/secondary actions: button fill, outlined stroke and text/outlined label colour — hover state. Put text-base-inverse on a fill of it. | neutral-800#2f3235 | neutral-100#e6e6e6 |
interactive-base-activeNeutral/secondary actions: button fill, outlined stroke and text/outlined label colour — active state. Put text-base-inverse on a fill of it. | neutral-900#1b1e21 | neutral-200#cfd0d1 |
interactive-base-inverseNeutral/secondary actions on inverse surfaces: button fill, outlined stroke and text/outlined label colour — enabled state. | neutral-50#fafafa | neutral-700#46484a |
interactive-base-inverse-hoverNeutral/secondary actions on inverse surfaces: button fill, outlined stroke and text/outlined label colour — hover state. | neutral-100#e6e6e6 | neutral-800#2f3235 |
interactive-base-inverse-activeNeutral/secondary actions on inverse surfaces: button fill, outlined stroke and text/outlined label colour — active state. | neutral-200#cfd0d1 | neutral-900#1b1e21 |
interactive-dangerDestructive actions: button fill, outlined stroke and text/outlined label colour — enabled state. Put text-base-inverse on a fill of it. | danger-600#d90000 | danger-200#ff9393 |
interactive-danger-hoverDestructive actions: button fill, outlined stroke and text/outlined label colour — hover state. Put text-base-inverse on a fill of it. | danger-700#bb0000 | danger-300#ff6c6c |
interactive-danger-activeDestructive actions: button fill, outlined stroke and text/outlined label colour — active state. Put text-base-inverse on a fill of it. | danger-800#910100 | danger-400#ff4545 |
interactive-danger-subtleDestructive actions: subtle (tonal) fill — enabled state. Put text-base on it. | danger-200#ff9393 | danger-600#d90000 |
interactive-danger-subtle-hoverDestructive actions: subtle (tonal) fill — hover state. Put text-base on it. | danger-300#ff6c6c | danger-700#bb0000 |
interactive-danger-subtle-activeDestructive actions: subtle (tonal) fill — active state. Put text-base on it. | danger-400#ff4545 | danger-800#910100 |
interactive-disabledFill of disabled filled controls (10% ink). | black-opacity-10#0000001a | white-opacity-10#ffffff1a |
interactive-on-disabledLabel, icon and border of any disabled control (30% ink). Exempt from contrast minimums; never use for enabled content. | black-opacity-30#0000004d | white-opacity-30#ffffff4d |
interactive-inverse-disabledDisabled fill on inverse surfaces. | white-opacity-10#ffffff1a | black-opacity-10#0000001a |
interactive-inverse-on-disabledDisabled content on inverse surfaces. | white-opacity-30#ffffff4d | black-opacity-30#0000004d |
State layers
45 variables| Token | Light | Dark |
|---|---|---|
state-layers-primary-subtleTranslucent state layer for primary controls: hover (10%). Laid over the control, never used as a solid surface. Also the fill of a selected tab (primary-subtle). | brand-600-opacity-10#0f66f51a | brand-300-opacity-10#90bbff1a |
state-layers-primary-moderateTranslucent state layer for primary controls: pressed/active (20%). Laid over the control, never used as a solid surface. | brand-600-opacity-20#0f66f533 | brand-300-opacity-20#90bbff33 |
state-layers-primary-strongTranslucent state layer for primary controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | brand-600-opacity-30#0f66f54d | brand-300-opacity-30#90bbff4d |
state-layers-base-subtleTranslucent state layer for base controls: hover (10%). Laid over the control, never used as a solid surface. | black-opacity-10#0000001a | white-opacity-10#ffffff1a |
state-layers-base-moderateTranslucent state layer for base controls: pressed/active (20%). Laid over the control, never used as a solid surface. | black-opacity-20#00000033 | white-opacity-20#ffffff33 |
state-layers-base-strongTranslucent state layer for base controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | black-opacity-20#00000033 | white-opacity-20#ffffff33 |
state-layers-base-inverse-subtleTranslucent state layer for base on inverse surfaces controls: hover (10%). Laid over the control, never used as a solid surface. | white-opacity-10#ffffff1a | black-opacity-10#0000001a |
state-layers-base-inverse-moderateTranslucent state layer for base on inverse surfaces controls: pressed/active (20%). Laid over the control, never used as a solid surface. | white-opacity-20#ffffff33 | black-opacity-20#00000033 |
state-layers-base-inverse-strongTranslucent state layer for base on inverse surfaces controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | white-opacity-20#ffffff33 | black-opacity-20#00000033 |
state-layers-info-subtleTranslucent state layer for info controls: hover (10%). Laid over the control, never used as a solid surface. | brand-600-opacity-10#0f66f51a | info-300-opacity-10#90bbff1a |
state-layers-info-moderateTranslucent state layer for info controls: pressed/active (20%). Laid over the control, never used as a solid surface. | brand-600-opacity-20#0f66f533 | info-300-opacity-20#90bbff33 |
state-layers-info-strongTranslucent state layer for info controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | brand-600-opacity-30#0f66f54d | info-300-opacity-30#90bbff4d |
state-layers-success-subtleTranslucent state layer for success controls: hover (10%). Laid over the control, never used as a solid surface. | success-600-opacity-10#15803d1a | success-300-opacity-10#4ade801a |
state-layers-success-moderateTranslucent state layer for success controls: pressed/active (20%). Laid over the control, never used as a solid surface. | success-600-opacity-20#15803d33 | success-300-opacity-20#4ade8033 |
state-layers-success-strongTranslucent state layer for success controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | success-600-opacity-30#15803d4d | success-300-opacity-30#4ade804d |
state-layers-layers-warning-subtleTranslucent state layer for warning controls: hover (10%). Laid over the control, never used as a solid surface. | warning-600-opacity-10#dd8c001a | warning-300-opacity-10#ffcd291a |
state-layers-warning-moderateTranslucent state layer for warning controls: pressed/active (20%). Laid over the control, never used as a solid surface. | warning-600-opacity-20#dd8c0033 | warning-300-opacity-20#ffcd2933 |
state-layers-warning-strongTranslucent state layer for warning controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | warning-600-opacity-30#dd8c004d | warning-300-opacity-30#ffcd294d |
state-layers-danger-subtleTranslucent state layer for danger controls: hover (10%). Laid over the control, never used as a solid surface. | danger-600-opacity-10#d900001a | danger-300-opacity-10#ff6c6c1a |
state-layers-danger-moderateTranslucent state layer for danger controls: pressed/active (20%). Laid over the control, never used as a solid surface. | danger-600-opacity-20#d9000033 | danger-300-opacity-20#ff6c6c33 |
state-layers-danger-strongTranslucent state layer for danger controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | danger-600-opacity-30#d900004d | danger-300-opacity-30#ff6c6c4d |
state-layers-coral-subtleTranslucent state layer for coral controls: hover (10%). Laid over the control, never used as a solid surface. | coral-600-opacity-10#d92a061a | coral-300-opacity-10#ff77521a |
state-layers-coral-moderateTranslucent state layer for coral controls: pressed/active (20%). Laid over the control, never used as a solid surface. | coral-600-opacity-20#d92a0633 | coral-300-opacity-20#ff775233 |
state-layers-coral-strongTranslucent state layer for coral controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | coral-600-opacity-30#d92a064d | coral-300-opacity-30#ff77524d |
state-layers-orange-subtleTranslucent state layer for orange controls: hover (10%). Laid over the control, never used as a solid surface. | orange-600-opacity-10#c070001a | orange-300-opacity-10#ffad151a |
state-layers-orange-moderateTranslucent state layer for orange controls: pressed/active (20%). Laid over the control, never used as a solid surface. | orange-600-opacity-20#c0700033 | orange-300-opacity-20#ffad1533 |
state-layers-orange-strongTranslucent state layer for orange controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | orange-600-opacity-30#c070004d | orange-300-opacity-30#ffad154d |
state-layers-lime-subtleTranslucent state layer for lime controls: hover (10%). Laid over the control, never used as a solid surface. | lime-600-opacity-10#4f8e001a | lime-300-opacity-10#88e2151a |
state-layers-lime-moderateTranslucent state layer for lime controls: pressed/active (20%). Laid over the control, never used as a solid surface. | lime-600-opacity-20#4f8e0033 | lime-300-opacity-20#88e21533 |
state-layers-lime-strongTranslucent state layer for lime controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | lime-600-opacity-30#4f8e004d | lime-300-opacity-30#88e2154d |
state-layers-teal-subtleTranslucent state layer for teal controls: hover (10%). Laid over the control, never used as a solid surface. | teal-600-opacity-10#0090761a | teal-300-opacity-10#15e2ba1a |
state-layers-teal-moderateTranslucent state layer for teal controls: pressed/active (20%). Laid over the control, never used as a solid surface. | teal-600-opacity-20#00907633 | teal-300-opacity-20#15e2ba33 |
state-layers-teal-strongTranslucent state layer for teal controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | teal-600-opacity-30#0090764d | teal-300-opacity-30#15e2ba4d |
state-layers-cyan-subtleTranslucent state layer for cyan controls: hover (10%). Laid over the control, never used as a solid surface. | cyan-600-opacity-10#0076981a | cyan-300-opacity-10#15b8e51a |
state-layers-cyan-moderateTranslucent state layer for cyan controls: pressed/active (20%). Laid over the control, never used as a solid surface. | cyan-600-opacity-20#00769833 | cyan-300-opacity-20#15b8e533 |
state-layers-cyan-strongTranslucent state layer for cyan controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | cyan-600-opacity-30#0076984d | cyan-300-opacity-30#15b8e54d |
state-layers-indigo-subtleTranslucent state layer for indigo controls: hover (10%). Laid over the control, never used as a solid surface. | indigo-600-opacity-10#1230d81a | indigo-300-opacity-10#6880ff1a |
state-layers-indigo-moderateTranslucent state layer for indigo controls: pressed/active (20%). Laid over the control, never used as a solid surface. | indigo-600-opacity-20#1230d833 | indigo-300-opacity-20#6880ff33 |
state-layers-indigo-strongTranslucent state layer for indigo controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | indigo-600-opacity-30#1230d84d | indigo-300-opacity-30#6880ff4d |
state-layers-violet-subtleTranslucent state layer for violet controls: hover (10%). Laid over the control, never used as a solid surface. | violet-600-opacity-10#9012d81a | violet-300-opacity-10#ca68ff1a |
state-layers-violet-moderateTranslucent state layer for violet controls: pressed/active (20%). Laid over the control, never used as a solid surface. | violet-600-opacity-20#9012d833 | violet-300-opacity-20#ca68ff33 |
state-layers-violet-strongTranslucent state layer for violet controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | violet-600-opacity-30#9012d84d | violet-300-opacity-30#ca68ff4d |
state-layers-pink-subtleTranslucent state layer for pink controls: hover (10%). Laid over the control, never used as a solid surface. | pink-600-opacity-10#d80e721a | pink-300-opacity-10#ff66ae1a |
state-layers-pink-moderateTranslucent state layer for pink controls: pressed/active (20%). Laid over the control, never used as a solid surface. | pink-600-opacity-20#d80e7233 | pink-300-opacity-20#ff66ae33 |
state-layers-pink-strongTranslucent state layer for pink controls: dragged or strongest emphasis (30%). Laid over the control, never used as a solid surface. | pink-600-opacity-30#d80e724d | pink-300-opacity-30#ff66ae4d |
Focus
4 variables| Token | Light | Dark |
|---|---|---|
focus-ring2px focus ring on every interactive element (buttons, tabs, toggles, checkboxes, fields). Kept independent of the brand palette; ≥3:1 on surface-base in both themes. | info-600#0f66f5 | info-50#ebf2fe |
focus-insetInner 2px band inside focus-ring on filled buttons, so the ring stays visible against a same-hue fill. | brand-50#ebf2fe | info-900#042967 |
focus-ring-inverseFocus ring on inverse or colored surfaces (surface-base-inverse, surface-primary…). | info-50#ebf2fe | info-600#0f66f5 |
focus-inset-inverseInner focus band paired with focus-ring-inverse on inverse surfaces. | info-900#042967 | brand-50#ebf2fe |
Typography
49 variables · TIPOGRAPHY + 32 text stylesInter in five roles. Variables hold the raw family, weight, size and line height; text styles combine them.
Font family
5 variablesAa
font-family/displayInterAa
font-family/headlineInterAa
font-family/titleInterAa
font-family/bodyInterAa
font-family/labelInterFont weight
15 variables| Token | Value | Weight | Sample |
|---|---|---|---|
font-weight/display-strong | Black | 900 | Link Aa |
font-weight/display-moderate | Bold | 700 | Link Aa |
font-weight/display-sublte | Medium | 500 | Link Aa |
font-weight/headline-strong | Black | 900 | Link Aa |
font-weight/headline-moderate | Bold | 700 | Link Aa |
font-weight/headline-subtle | Medium | 500 | Link Aa |
font-weight/title-strong | Black | 900 | Link Aa |
font-weight/title-moderate | Bold | 700 | Link Aa |
font-weight/title-subtle | Medium | 500 | Link Aa |
font-weight/body-strong | Medium | 500 | Link Aa |
font-weight/body-moderate | Regular | 400 | Link Aa |
font-weight/body-subtle | Light | 300 | Link Aa |
font-weight/label-strong | Bold | 700 | Link Aa |
font-weight/label-moderate | Medium | 500 | Link Aa |
font-weight/label-subtle | Regular | 400 | Link Aa |
Font size & line height
16 + 12 variables · letter-spacing/M = 0| Token | Size | Line height | Sample |
|---|---|---|---|
display-M | 45 | 42 | Link Aa |
display-S | 36 | 38 | Link Aa |
headline-L | 32 | 34 | Link Aa |
headline-M | 28 | 30 | Link Aa |
headline-S | 24 | 26 | Link Aa |
title-L | 20 | 24 | Link Aa |
title-M | 16 | 20 | Link Aa |
title-S | 14 | 16 | Link Aa |
body-L | 16 | 24 | Link Aa |
body-M | 14 | 20 | Link Aa |
body-S | 12 | 16 | Link Aa |
body-XS | 10 | 12 | Link Aa |
label-L | 16 | auto | Link Aa |
label-M | 14 | auto | Link Aa |
label-S | 12 | auto | Link Aa |
label-XS | 10 | auto | Link Aa |
Text styles
32 styles built from the variables above| Style | Size | Line h. | Weight | Sample |
|---|---|---|---|---|
display-M-moderate | 45px | 42px | 700 | 42 |
display-M-subtle | 45px | 42px | 500 | 42 |
display-S-moderate | 36px | 38px | 700 | 42 |
display-S-subtle | 36px | 38px | 500 | 42 |
headline-L-moderate | 32px | 34px | 700 | Resum del mes |
headline-L-subtle | 32px | 34px | 500 | Resum del mes |
headline-M-moderate | 28px | 30px | 700 | Resum del mes |
headline-M-subtleFigma style is set to Bold, same as -moderate (likely unfinished). Kept exactly as in the file. | 28px | 30px | 700 | Resum del mes |
headline-S-moderate | 24px | 26px | 700 | Resum del mes |
headline-S-subtleFigma style is set to Bold, same as -moderate (likely unfinished). Kept exactly as in the file. | 24px | 26px | 700 | Resum del mes |
title-L-moderate | 20px | 24px | 700 | Detalls del pagament |
title-L-subtle | 20px | 24px | 500 | Detalls del pagament |
title-M-moderate | 16px | 20px | 700 | Detalls del pagament |
title-M-subtle | 16px | 20px | 500 | Detalls del pagament |
title-S-moderate | 14px | 16px | 700 | Detalls del pagament |
title-S-subtle | 14px | 16px | 500 | Detalls del pagament |
body-L-strong | 16px | 24px | 500 | Revisa les dades abans de continuar amb el pagament. |
body-L-moderate | 16px | 24px | 400 | Revisa les dades abans de continuar amb el pagament. |
body-M-strong | 14px | 20px | 500 | Revisa les dades abans de continuar amb el pagament. |
body-M-moderate | 14px | 20px | 400 | Revisa les dades abans de continuar amb el pagament. |
body-S-strong | 12px | 16px | 500 | Revisa les dades abans de continuar amb el pagament. |
body-S-moderate | 12px | 16px | 400 | Revisa les dades abans de continuar amb el pagament. |
body-XS-moderate | 10px | 12px | 500 | Revisa les dades abans de continuar amb el pagament. |
body-XS-subtle | 10px | 12px | 400 | Revisa les dades abans de continuar amb el pagament. |
label-L-moderate | 16px | auto | 500 | Desar canvis |
label-L-strong | 16px | auto | 700 | Desar canvis |
label-M-moderate | 14px | auto | 500 | Desar canvis |
label-M-strong | 14px | auto | 700 | Desar canvis |
label-S-moderate | 12px | auto | 500 | Desar canvis |
label-S-strong | 12px | auto | 700 | Desar canvis |
label-XS-moderate | 10px | auto | 500 | Desar canvis |
label-XS-strong | 10px | auto | 700 | Desar canvis |
Spacing
22 variables · SPACING · Desktop / Tablet / MobileNamed by use. Highlighted values change between modes.
layout
Page margin and 12-column grid gutter. Change on Mobile.| Token | Desktop | Tablet | Mobile | Scale (×4) |
|---|---|---|---|---|
layout-grid-gap | 20 | 20 | 16 | |
page-inset | 24 | 24 | 16 |
inset
Padding inside a component or container.| Token | Desktop | Tablet | Mobile | Scale (×4) |
|---|---|---|---|---|
inset-XL | 24 | 24 | 24 | |
inset-L | 16 | 16 | 16 | |
inset-M | 12 | 12 | 12 | |
inset-S | 8 | 8 | 8 | |
inset-XS | 4 | 4 | 4 | |
inset-none | 0 | 0 | 0 |
section-gap
Space between page sections.| Token | Desktop | Tablet | Mobile | Scale (×4) |
|---|---|---|---|---|
section-gap-M | 24 | 24 | 24 | |
section-gap-S | 16 | 16 | 16 |
stack
Vertical space between stacked elements.| Token | Desktop | Tablet | Mobile | Scale (×4) |
|---|---|---|---|---|
stack-XL | 24 | 24 | 24 | |
stack-L | 16 | 16 | 16 | |
stack-M | 12 | 12 | 12 | |
stack-S | 8 | 8 | 8 | |
stack-XS | 4 | 4 | 4 | |
stack-none | 0 | 0 | 0 |
gap
Space between inline siblings.| Token | Desktop | Tablet | Mobile | Scale (×4) |
|---|---|---|---|---|
gap-XL | 24 | 24 | 24 | |
gap-L | 16 | 16 | 16 | |
gap-M | 12 | 12 | 12 | |
gap-S | 8 | 8 | 8 | |
gap-XS | 4 | 4 | 4 | |
gap-none | 0 | 0 | 0 |
Border radius
9 variables · BORDER RADIUSradius-full (1000) makes pills.
radius-XS4pxradius-S8pxradius-M12pxradius-L16pxradius-XL20pxradius-2XL28pxradius-3XL32pxradius-4XL48pxradius-full1000pxIcon sizes
6 variables · ICONSMaterial Icons Round glyph sizes.
icon-size-2XS8pxicon-size-XS12pxicon-size-S16pxicon-size-M20pxicon-size-L24pxicon-size-XL32pxPictogram
3 variables · PICTOGRAMBoxes for pictograms and illustrations.
pictogram-S48pxpictogram-M64pxpictogram-L96pxElevation
5 effect stylesTwo soft black shadows each. Same in Light and Dark.
elevation-1Cards resting on surface-base.elevation-2Raised cards, sticky bars.elevation-3Menus, popovers.elevation-4FAB (Elevation/4).elevation-5Dialogs, modal sheets.