Skip to content
BigBang

Popular

    ↑↓Navigate↵OpenEscClose
    TR

    Tokens

    Theme generator

    A tool that runs only on this site and produces a validated candidate brand-pack file from brand colours.

    The theme generator turns brand, accent and optional neutral and status colours into a candidate brand pack, checks contrast at once with the same brand:validate code the build runs, and shows the result on real BigBang components, a chart sample and the illustration slots in light and dark mode.

    The tool runs only on this site. Products never load it; product screens still take the brand from static CSS files produced at build time. Exports are unsigned candidates (unsigned-candidate): passing here is necessary, not sufficient, and the pack pipeline validates, reviews and signs the file again.

    Inputs

    #RRGGBB or oklch(L C H). Step lightness is fixed; hue and chroma come from this colour.

    #RRGGBB or oklch(L C H). Step lightness is fixed; hue and chroma come from this colour.

    Neutral tint
    Status colours

    Only checked roles add a ramp to the pack; the others keep the DS defaults.

    Shape and type

    The file stays in your browser; it never enters an export or a link.

    Ramps

    brand

    #4F55B4

    accent

    #954923

    Lightness moves (logged)

    No moves.

    Dark-mode exceptions (0/8)

    No exceptions.

    Preview

    Light

    Saving
    NeutralBrandInfoSuccessWarningDanger
    NeutralBrandInfoSuccessWarningDanger

    Sample description text

    Sample error text

    Sample surface

    Body text, secondary text and a link.

    Dark

    Saving
    NeutralBrandInfoSuccessWarningDanger
    NeutralBrandInfoSuccessWarningDanger

    Sample description text

    Sample error text

    Sample surface

    Body text, secondary text and a link.

    Checks

    All blocking checks pass. 0 blocking issues, 0 warnings

    Contrast matrix (351)
    WCAG 2.x ratio, unrounded: text ≥ 4.5:1, borders and state indicators ≥ 3:1.
    ModePairRatioMinimumVerdict
    Light text-default / surface-default16.7344.5✓ Pass
    Light text-default / surface-layer-215.3134.5✓ Pass
    Light text-subtle / surface-default9.6784.5✓ Pass
    Light text-default / surface-sunken16.4444.5✓ Pass
    Light text-subtle / surface-sunken9.5104.5✓ Pass
    Light text-default / surface-checker17.1764.5✓ Pass
    Light text-subtlest / surface-checker7.4864.5✓ Pass
    Light text-subtlest / surface-default7.2934.5✓ Pass
    Light text-subtlest / surface-raised7.8134.5✓ Pass
    Light text-placeholder / surface-raised4.7414.5✓ Pass
    Light text-link / surface-default16.7344.5✓ Pass
    Light text-danger / surface-raised6.4564.5✓ Pass
    Light text-success / surface-raised5.6854.5✓ Pass
    Light text-warning / surface-raised6.1554.5✓ Pass
    Light text-info / surface-raised5.9604.5✓ Pass
    Light text-on-brand / surface-brand17.1764.5✓ Pass
    Light text-inverse / surface-inverse17.9274.5✓ Pass
    Light action-on-primary-default / action-primary-default17.1764.5✓ Pass
    Light action-on-primary-default / action-primary-hovered14.4984.5✓ Pass
    Light action-on-secondary-default / action-secondary-default17.9274.5✓ Pass
    Light action-on-danger-default / action-danger-default6.4564.5✓ Pass
    Light action-on-danger-subtle-default / action-secondary-default6.4564.5✓ Pass
    Light action-on-danger-subtle-default / surface-default6.0274.5✓ Pass
    Light action-on-danger-subtle-default / action-danger-subtle-hovered5.9914.5✓ Pass
    Light action-on-danger-subtle-default / action-danger-subtle-pressed5.5184.5✓ Pass
    Light data-positive / surface-raised5.6854.5✓ Pass
    Light data-negative / surface-raised6.4564.5✓ Pass
    Light status-neutral-foreground / status-neutral-background9.5104.5✓ Pass
    Light status-neutral-on-emphasis / status-neutral-emphasis4.7414.5✓ Pass
    Light status-brand-foreground / status-brand-background7.7924.5✓ Pass
    Light status-brand-on-emphasis / status-brand-emphasis6.3814.5✓ Pass
    Light status-info-foreground / status-info-background7.2894.5✓ Pass
    Light status-info-on-emphasis / status-info-emphasis4.9974.5✓ Pass
    Light status-success-foreground / status-success-background7.0914.5✓ Pass
    Light status-success-on-emphasis / status-success-emphasis5.0734.5✓ Pass
    Light status-warning-foreground / status-warning-background7.4144.5✓ Pass
    Light status-warning-on-emphasis / status-warning-emphasis4.8524.5✓ Pass
    Light status-danger-foreground / status-danger-background7.6894.5✓ Pass
    Light status-danger-on-emphasis / status-danger-emphasis4.6774.5✓ Pass
    Light text-subtle / status-info-background8.9994.5✓ Pass
    Light text-subtle / status-success-background9.0944.5✓ Pass
    Light text-subtle / status-warning-background8.9344.5✓ Pass
    Light text-subtle / status-danger-background8.8614.5✓ Pass
    Light status-neutral-foreground / surface-raised10.3684.5✓ Pass
    Light status-brand-foreground / surface-raised8.6264.5✓ Pass
    Light status-info-foreground / surface-raised8.3974.5✓ Pass
    Light status-success-foreground / surface-raised8.0844.5✓ Pass
    Light status-warning-foreground / surface-raised8.6044.5✓ Pass
    Light status-danger-foreground / surface-raised8.9964.5✓ Pass
    Light tag-red-foreground / tag-red-background7.6894.5✓ Pass
    Light tag-orange-foreground / tag-orange-background7.4144.5✓ Pass
    Light tag-green-foreground / tag-green-background7.0914.5✓ Pass
    Light tag-blue-foreground / tag-blue-background7.2894.5✓ Pass
    Light tag-violet-foreground / tag-violet-background7.5764.5✓ Pass
    Light tag-teal-foreground / tag-teal-background7.1724.5✓ Pass
    Light tag-pink-foreground / tag-pink-background7.6734.5✓ Pass
    Light status-neutral-foreground / surface-default9.6784.5✓ Pass
    Light status-brand-foreground / surface-default8.0524.5✓ Pass
    Light status-info-foreground / surface-default7.8384.5✓ Pass
    Light status-success-foreground / surface-default7.5464.5✓ Pass
    Light status-warning-foreground / surface-default8.0324.5✓ Pass
    Light status-danger-foreground / surface-default8.3974.5✓ Pass
    Light tag-violet-foreground / surface-default8.2514.5✓ Pass
    Light tag-teal-foreground / surface-default7.6474.5✓ Pass
    Light tag-pink-foreground / surface-default8.3784.5✓ Pass
    Light text-default / surface-layer-116.4444.5✓ Pass
    Light text-subtle / surface-layer-19.5104.5✓ Pass
    Light border-input / surface-raised3.3623✓ Pass
    Light border-focus / surface-default16.7343✓ Pass
    Light focus-ring / surface-raised4.7413✓ Pass
    Light icon-default / surface-default14.1263✓ Pass
    Light icon-subtle / surface-raised4.7413✓ Pass
    Light icon-danger / surface-raised5.0463✓ Pass
    Light icon-success / surface-raised4.3943✓ Pass
    Light icon-warning / surface-raised4.7553✓ Pass
    Light icon-info / surface-raised4.6113✓ Pass
    Light action-primary-default / surface-default16.7343✓ Pass
    Light border-danger / action-secondary-default5.0463✓ Pass
    Light illustration-ink / surface-default14.1263✓ Pass
    Light illustration-ink / illustration-surface15.1333✓ Pass
    Light illustration-ink / illustration-neutral-113.8813✓ Pass
    Light illustration-ink / illustration-primary-soft11.4933✓ Pass
    Light illustration-success / surface-default4.1013✓ Pass
    Light illustration-warning / surface-default4.4383✓ Pass
    Light illustration-danger / surface-default4.7103✓ Pass
    Light chart-categorical-1 / surface-raised5.9603✓ Pass
    Light chart-categorical-2 / surface-raised3.2613✓ Pass
    Light chart-categorical-3 / surface-raised6.1553✓ Pass
    Light chart-categorical-4 / surface-raised3.5463✓ Pass
    Light chart-categorical-5 / surface-raised5.0473✓ Pass
    Light chart-categorical-6 / surface-raised4.3943✓ Pass
    Light chart-categorical-7 / surface-raised3.6323✓ Pass
    Light chart-categorical-8 / surface-raised7.8133✓ Pass
    Light status-neutral-emphasis / surface-raised4.7413✓ Pass
    Light status-neutral-emphasis / surface-default4.4263✓ Pass
    Light status-brand-emphasis / surface-raised6.3813✓ Pass
    Light status-brand-emphasis / surface-default5.9563✓ Pass
    Light status-info-emphasis / surface-raised3.3253✓ Pass
    Light status-info-emphasis / surface-default3.1043✓ Pass
    Light status-success-emphasis / surface-raised3.2483✓ Pass
    Light status-success-emphasis / surface-default3.0323✓ Pass
    Light status-warning-emphasis / surface-raised3.4703✓ Pass
    Light status-warning-emphasis / surface-default3.2393✓ Pass
    Light status-danger-emphasis / surface-raised3.6323✓ Pass
    Light status-danger-emphasis / surface-default3.3903✓ Pass
    Light chart-categorical-1 / surface-default5.5633✓ Pass
    Light chart-categorical-2 / surface-default3.0443✓ Pass
    Light chart-categorical-3 / surface-default5.7453✓ Pass
    Light chart-categorical-4 / surface-default3.3103✓ Pass
    Light chart-categorical-5 / surface-default4.7113✓ Pass
    Light chart-categorical-6 / surface-default4.1013✓ Pass
    Light chart-categorical-7 / surface-default3.3903✓ Pass
    Light chart-categorical-8 / surface-default7.2933✓ Pass
    Light text-default / surface-translucent over surface-default17.3244.5✓ Pass
    Light text-default / surface-translucent over surface-sunken17.3244.5✓ Pass
    Light text-default / surface-translucent over surface-raised17.4744.5✓ Pass
    Light text-default / material-glass-regular over #FFFFFF17.9274.5✓ Pass
    Light text-default / material-glass-regular over #00000011.1634.5✓ Pass
    Light text-default / material-glass-regular over #80808014.4974.5✓ Pass
    Light text-default / material-glass-regular over #0000FF11.6514.5✓ Pass
    Light text-default / material-glass-regular over #FFFF0017.4394.5✓ Pass
    Light text-default / material-glass-regular over #FF000012.6014.5✓ Pass
    Light text-default / material-glass-regular over #00FF0016.0014.5✓ Pass
    Light text-subtle / material-glass-regular over #FFFFFF10.3684.5✓ Pass
    Light text-subtle / material-glass-regular over #0000006.4564.5✓ Pass
    Light text-subtle / material-glass-regular over #8080808.3844.5✓ Pass
    Light text-subtle / material-glass-regular over #0000FF6.7384.5✓ Pass
    Light text-subtle / material-glass-regular over #FFFF0010.0854.5✓ Pass
    Light text-subtle / material-glass-regular over #FF00007.2884.5✓ Pass
    Light text-subtle / material-glass-regular over #00FF009.2544.5✓ Pass
    Light text-subtlest / material-glass-regular over #FFFFFF7.8134.5✓ Pass
    Light text-subtlest / material-glass-regular over #0000004.8654.5✓ Pass
    Light text-subtlest / material-glass-regular over #8080806.3184.5✓ Pass
    Light text-subtlest / material-glass-regular over #0000FF5.0784.5✓ Pass
    Light text-subtlest / material-glass-regular over #FFFF007.6014.5✓ Pass
    Light text-subtlest / material-glass-regular over #FF00005.4924.5✓ Pass
    Light text-subtlest / material-glass-regular over #00FF006.9744.5✓ Pass
    Light icon-default / material-glass-regular over #FFFFFF15.1333✓ Pass
    Light icon-default / material-glass-regular over #0000009.4233✓ Pass
    Light icon-default / material-glass-regular over #80808012.2383✓ Pass
    Light icon-default / material-glass-regular over #0000FF9.8353✓ Pass
    Light icon-default / material-glass-regular over #FFFF0014.7213✓ Pass
    Light icon-default / material-glass-regular over #FF000010.6373✓ Pass
    Light icon-default / material-glass-regular over #00FF0013.5073✓ Pass
    Light text-default / material-glass-regular-contrast over #FFFFFF17.9274.5✓ Pass
    Light text-default / material-glass-regular-contrast over #00000015.0384.5✓ Pass
    Light text-default / material-glass-regular-contrast over #80808016.4444.5✓ Pass
    Light text-default / material-glass-regular-contrast over #0000FF15.2474.5✓ Pass
    Light text-default / material-glass-regular-contrast over #FFFF0017.7194.5✓ Pass
    Light text-default / material-glass-regular-contrast over #FF000015.6524.5✓ Pass
    Light text-default / material-glass-regular-contrast over #00FF0017.1044.5✓ Pass
    Light text-subtle / material-glass-regular-contrast over #FFFFFF10.3684.5✓ Pass
    Light text-subtle / material-glass-regular-contrast over #0000008.6974.5✓ Pass
    Light text-subtle / material-glass-regular-contrast over #8080809.5104.5✓ Pass
    Light text-subtle / material-glass-regular-contrast over #0000FF8.8174.5✓ Pass
    Light text-subtle / material-glass-regular-contrast over #FFFF0010.2474.5✓ Pass
    Light text-subtle / material-glass-regular-contrast over #FF00009.0524.5✓ Pass
    Light text-subtle / material-glass-regular-contrast over #00FF009.8924.5✓ Pass
    Light text-subtlest / material-glass-regular-contrast over #FFFFFF7.8134.5✓ Pass
    Light text-subtlest / material-glass-regular-contrast over #0000006.5544.5✓ Pass
    Light text-subtlest / material-glass-regular-contrast over #8080807.1674.5✓ Pass
    Light text-subtlest / material-glass-regular-contrast over #0000FF6.6454.5✓ Pass
    Light text-subtlest / material-glass-regular-contrast over #FFFF007.7224.5✓ Pass
    Light text-subtlest / material-glass-regular-contrast over #FF00006.8224.5✓ Pass
    Light text-subtlest / material-glass-regular-contrast over #00FF007.4554.5✓ Pass
    Light icon-default / material-glass-regular-contrast over #FFFFFF15.1333✓ Pass
    Light icon-default / material-glass-regular-contrast over #00000012.6943✓ Pass
    Light icon-default / material-glass-regular-contrast over #80808013.8813✓ Pass
    Light icon-default / material-glass-regular-contrast over #0000FF12.8703✓ Pass
    Light icon-default / material-glass-regular-contrast over #FFFF0014.9573✓ Pass
    Light icon-default / material-glass-regular-contrast over #FF000013.2123✓ Pass
    Light icon-default / material-glass-regular-contrast over #00FF0014.4383✓ Pass
    Light action-on-primary-default / action-primary-default glass over #FFFFFF13.0104.5✓ Pass
    Light action-on-primary-default / action-primary-default glass over #00000017.4954.5✓ Pass
    Light action-on-primary-default / action-primary-default glass over #80808015.2424.5✓ Pass
    Light action-on-primary-default / action-primary-default glass over #0000FF17.0704.5✓ Pass
    Light action-on-primary-default / action-primary-default glass over #FFFF0013.2554.5✓ Pass
    Light action-on-primary-default / action-primary-default glass over #FF000016.3004.5✓ Pass
    Light action-on-primary-default / action-primary-default glass over #00FF0014.0354.5✓ Pass
    Dark text-default / surface-default15.9724.5✓ Pass
    Dark text-default / surface-layer-212.6444.5✓ Pass
    Dark text-subtle / surface-default11.2474.5✓ Pass
    Dark text-default / surface-sunken17.1764.5✓ Pass
    Dark text-subtle / surface-sunken12.0944.5✓ Pass
    Dark text-default / surface-checker18.2304.5✓ Pass
    Dark text-subtlest / surface-checker7.3644.5✓ Pass
    Dark text-subtlest / surface-default6.4524.5✓ Pass
    Dark text-subtlest / surface-raised5.8574.5✓ Pass
    Dark text-placeholder / surface-raised5.8574.5✓ Pass
    Dark text-link / surface-default15.9724.5✓ Pass
    Dark text-danger / surface-raised9.6094.5✓ Pass
    Dark text-success / surface-raised10.2174.5✓ Pass
    Dark text-warning / surface-raised9.7484.5✓ Pass
    Dark text-info / surface-raised9.9814.5✓ Pass
    Dark text-on-brand / surface-brand14.2314.5✓ Pass
    Dark text-inverse / surface-inverse17.1764.5✓ Pass
    Dark action-on-primary-default / action-primary-default14.2314.5✓ Pass
    Dark action-on-primary-default / action-primary-hovered12.0944.5✓ Pass
    Dark action-on-secondary-default / action-secondary-default14.4984.5✓ Pass
    Dark action-on-danger-default / action-danger-default9.7304.5✓ Pass
    Dark action-on-danger-subtle-default / action-secondary-default9.6094.5✓ Pass
    Dark action-on-danger-subtle-default / surface-default10.5864.5✓ Pass
    Dark action-on-danger-subtle-default / action-danger-subtle-hovered10.7884.5✓ Pass
    Dark action-on-danger-subtle-default / action-danger-subtle-pressed8.8854.5✓ Pass
    Dark data-positive / surface-raised10.2174.5✓ Pass
    Dark data-negative / surface-raised9.6094.5✓ Pass
    Dark status-neutral-foreground / status-neutral-background10.4774.5✓ Pass
    Dark status-neutral-on-emphasis / status-neutral-emphasis7.6624.5✓ Pass
    Dark status-brand-foreground / status-brand-background9.2054.5✓ Pass
    Dark status-brand-on-emphasis / status-brand-emphasis8.7414.5✓ Pass
    Dark status-info-foreground / status-info-background10.4494.5✓ Pass
    Dark status-info-on-emphasis / status-info-emphasis8.6854.5✓ Pass
    Dark status-success-foreground / status-success-background10.4874.5✓ Pass
    Dark status-success-on-emphasis / status-success-emphasis8.9224.5✓ Pass
    Dark status-warning-foreground / status-warning-background10.4864.5✓ Pass
    Dark status-warning-on-emphasis / status-warning-emphasis8.5264.5✓ Pass
    Dark status-danger-foreground / status-danger-background10.5424.5✓ Pass
    Dark status-danger-on-emphasis / status-danger-emphasis8.3504.5✓ Pass
    Dark text-subtle / status-info-background9.1904.5✓ Pass
    Dark text-subtle / status-success-background9.0204.5✓ Pass
    Dark text-subtle / status-warning-background9.3034.5✓ Pass
    Dark text-subtle / status-danger-background9.4404.5✓ Pass
    Dark status-neutral-foreground / surface-raised12.0134.5✓ Pass
    Dark status-brand-foreground / surface-raised8.9384.5✓ Pass
    Dark status-info-foreground / surface-raised11.6074.5✓ Pass
    Dark status-success-foreground / surface-raised11.8694.5✓ Pass
    Dark status-warning-foreground / surface-raised11.5074.5✓ Pass
    Dark status-danger-foreground / surface-raised11.4014.5✓ Pass
    Dark tag-red-foreground / tag-red-background10.5424.5✓ Pass
    Dark tag-orange-foreground / tag-orange-background10.4864.5✓ Pass
    Dark tag-green-foreground / tag-green-background10.4874.5✓ Pass
    Dark tag-blue-foreground / tag-blue-background10.4494.5✓ Pass
    Dark tag-violet-foreground / tag-violet-background10.5454.5✓ Pass
    Dark tag-teal-foreground / tag-teal-background10.4414.5✓ Pass
    Dark tag-pink-foreground / tag-pink-background10.5294.5✓ Pass
    Dark status-neutral-foreground / surface-default13.2344.5✓ Pass
    Dark status-brand-foreground / surface-default9.8464.5✓ Pass
    Dark status-info-foreground / surface-default12.7874.5✓ Pass
    Dark status-success-foreground / surface-default13.0754.5✓ Pass
    Dark status-warning-foreground / surface-default12.6764.5✓ Pass
    Dark status-danger-foreground / surface-default12.5594.5✓ Pass
    Dark tag-violet-foreground / surface-default12.6604.5✓ Pass
    Dark tag-teal-foreground / surface-default13.0024.5✓ Pass
    Dark tag-pink-foreground / surface-default12.4734.5✓ Pass
    Dark text-default / surface-layer-114.4984.5✓ Pass
    Dark text-subtle / surface-layer-110.2094.5✓ Pass
    Dark border-input / surface-raised3.1913✓ Pass
    Dark border-focus / surface-default13.2343✓ Pass
    Dark focus-ring / surface-raised4.5003✓ Pass
    Dark icon-default / surface-default15.2913✓ Pass
    Dark icon-subtle / surface-raised5.8573✓ Pass
    Dark icon-danger / surface-raised7.4373✓ Pass
    Dark icon-success / surface-raised8.1923✓ Pass
    Dark icon-warning / surface-raised7.6623✓ Pass
    Dark icon-info / surface-raised7.9083✓ Pass
    Dark action-primary-default / surface-default13.2343✓ Pass
    Dark border-danger / action-secondary-default7.4373✓ Pass
    Dark illustration-ink / surface-default15.2913✓ Pass
    Dark illustration-ink / illustration-surface13.8813✓ Pass
    Dark illustration-ink / illustration-neutral-112.1053✓ Pass
    Dark illustration-ink / illustration-primary-soft10.5863✓ Pass
    Dark illustration-success / surface-default9.0243✓ Pass
    Dark illustration-warning / surface-default8.4413✓ Pass
    Dark illustration-danger / surface-default8.1933✓ Pass
    Dark chart-categorical-1 / surface-raised7.9083✓ Pass
    Dark chart-categorical-2 / surface-raised10.1043✓ Pass
    Dark chart-categorical-3 / surface-raised4.3603✓ Pass
    Dark chart-categorical-4 / surface-raised4.2663✓ Pass
    Dark chart-categorical-5 / surface-raised7.3743✓ Pass
    Dark chart-categorical-6 / surface-raised4.6583✓ Pass
    Dark chart-categorical-7 / surface-raised9.6093✓ Pass
    Dark chart-categorical-8 / surface-raised5.8573✓ Pass
    Dark status-neutral-emphasis / surface-raised5.8573✓ Pass
    Dark status-neutral-emphasis / surface-default6.4523✓ Pass
    Dark status-brand-emphasis / surface-raised6.6823✓ Pass
    Dark status-brand-emphasis / surface-default7.3613✓ Pass
    Dark status-info-emphasis / surface-raised7.9083✓ Pass
    Dark status-info-emphasis / surface-default8.7113✓ Pass
    Dark status-success-emphasis / surface-raised8.1923✓ Pass
    Dark status-success-emphasis / surface-default9.0243✓ Pass
    Dark status-warning-emphasis / surface-raised7.6623✓ Pass
    Dark status-warning-emphasis / surface-default8.4413✓ Pass
    Dark status-danger-emphasis / surface-raised7.4373✓ Pass
    Dark status-danger-emphasis / surface-default8.1933✓ Pass
    Dark chart-categorical-1 / surface-default8.7113✓ Pass
    Dark chart-categorical-2 / surface-default11.1303✓ Pass
    Dark chart-categorical-3 / surface-default4.8033✓ Pass
    Dark chart-categorical-4 / surface-default4.7003✓ Pass
    Dark chart-categorical-5 / surface-default8.1233✓ Pass
    Dark chart-categorical-6 / surface-default5.1313✓ Pass
    Dark chart-categorical-7 / surface-default10.5863✓ Pass
    Dark chart-categorical-8 / surface-default6.4523✓ Pass
    Dark text-default / surface-translucent over surface-default15.9724.5✓ Pass
    Dark text-default / surface-translucent over surface-sunken16.1504.5✓ Pass
    Dark text-default / surface-translucent over surface-raised15.7914.5✓ Pass
    Dark text-default / material-glass-regular over #FFFFFF6.8164.5✓ Pass
    Dark text-default / material-glass-regular over #00000011.7514.5✓ Pass
    Dark text-default / material-glass-regular over #8080808.9014.5✓ Pass
    Dark text-default / material-glass-regular over #0000FF11.1674.5✓ Pass
    Dark text-default / material-glass-regular over #FFFF007.0294.5✓ Pass
    Dark text-default / material-glass-regular over #FF000010.1844.5✓ Pass
    Dark text-default / material-glass-regular over #00FF007.7424.5✓ Pass
    Dark text-subtle / material-glass-regular over #FFFFFF4.7994.5✓ Pass
    Dark text-subtle / material-glass-regular over #0000008.2754.5✓ Pass
    Dark text-subtle / material-glass-regular over #8080806.2684.5✓ Pass
    Dark text-subtle / material-glass-regular over #0000FF7.8644.5✓ Pass
    Dark text-subtle / material-glass-regular over #FFFF004.9494.5✓ Pass
    Dark text-subtle / material-glass-regular over #FF00007.1714.5✓ Pass
    Dark text-subtle / material-glass-regular over #00FF005.4514.5✓ Pass
    Dark icon-default / material-glass-regular over #FFFFFF6.5253✓ Pass
    Dark icon-default / material-glass-regular over #00000011.2503✓ Pass
    Dark icon-default / material-glass-regular over #8080808.5223✓ Pass
    Dark icon-default / material-glass-regular over #0000FF10.6913✓ Pass
    Dark icon-default / material-glass-regular over #FFFF006.7293✓ Pass
    Dark icon-default / material-glass-regular over #FF00009.7493✓ Pass
    Dark icon-default / material-glass-regular over #00FF007.4123✓ Pass
    Dark text-default / material-glass-regular-contrast over #FFFFFF7.7254.5✓ Pass
    Dark text-default / material-glass-regular-contrast over #00000011.5774.5✓ Pass
    Dark text-default / material-glass-regular-contrast over #8080809.4784.5✓ Pass
    Dark text-default / material-glass-regular-contrast over #0000FF11.1754.5✓ Pass
    Dark text-default / material-glass-regular-contrast over #FFFF007.9154.5✓ Pass
    Dark text-default / material-glass-regular-contrast over #FF000010.4674.5✓ Pass
    Dark text-default / material-glass-regular-contrast over #00FF008.5334.5✓ Pass
    Dark text-subtle / material-glass-regular-contrast over #FFFFFF5.4394.5✓ Pass
    Dark text-subtle / material-glass-regular-contrast over #0000008.1524.5✓ Pass
    Dark text-subtle / material-glass-regular-contrast over #8080806.6744.5✓ Pass
    Dark text-subtle / material-glass-regular-contrast over #0000FF7.8694.5✓ Pass
    Dark text-subtle / material-glass-regular-contrast over #FFFF005.5734.5✓ Pass
    Dark text-subtle / material-glass-regular-contrast over #FF00007.3714.5✓ Pass
    Dark text-subtle / material-glass-regular-contrast over #00FF006.0094.5✓ Pass
    Dark icon-default / material-glass-regular-contrast over #FFFFFF7.3953✓ Pass
    Dark icon-default / material-glass-regular-contrast over #00000011.0843✓ Pass
    Dark icon-default / material-glass-regular-contrast over #8080809.0743✓ Pass
    Dark icon-default / material-glass-regular-contrast over #0000FF10.6983✓ Pass
    Dark icon-default / material-glass-regular-contrast over #FFFF007.5783✓ Pass
    Dark icon-default / material-glass-regular-contrast over #FF000010.0213✓ Pass
    Dark icon-default / material-glass-regular-contrast over #00FF008.1703✓ Pass
    Dark action-on-primary-default / action-primary-default glass over #FFFFFF14.4974.5✓ Pass
    Dark action-on-primary-default / action-primary-default glass over #00000011.5074.5✓ Pass
    Dark action-on-primary-default / action-primary-default glass over #80808012.9484.5✓ Pass
    Dark action-on-primary-default / action-primary-default glass over #0000FF11.7234.5✓ Pass
    Dark action-on-primary-default / action-primary-default glass over #FFFF0014.2814.5✓ Pass
    Dark action-on-primary-default / action-primary-default glass over #FF000012.1434.5✓ Pass
    Dark action-on-primary-default / action-primary-default glass over #00FF0013.6464.5✓ Pass
    Dark icon-default / material-glass-clear over #FFFFFF3.2513✓ Pass
    Dark icon-default / material-glass-clear over #00000013.7023✓ Pass
    Dark icon-default / material-glass-clear over #8080806.5253✓ Pass
    Dark icon-default / material-glass-clear over #0000FF11.1213✓ Pass
    Dark icon-default / material-glass-clear over #FFFF003.4403✓ Pass
    Dark icon-default / material-glass-clear over #FF00008.1393✓ Pass
    Dark icon-default / material-glass-clear over #00FF004.1533✓ Pass

    Export

    Exports are unsigned candidates (unsigned-candidate), not approved. Signing and versioning happen in the brand-pack pipeline.

    Share link

    Import

    • Ramp: Each colour is converted to OKLCH. The lightness of the 11 steps (50–950) comes from one fixed table shared by every brand; hue comes from the input colour, and chroma from the input’s chroma along a per-step curve. A step outside sRGB keeps its lightness and hue, loses only chroma, and is flagged “clamped”.
    • Contrast gate: Every light and dark pair is measured with the WCAG 2.x ratio, unrounded: text at least 4.5:1, borders and state indicators at least 3:1. If one pair fails, export is locked and the first failing check is named.
    • Suggestions: For a failing pair the tool moves only the lightness of the brand-owned step (hue and chroma ratio kept) and shows the ratio before and after. Each applied move is logged in the brand file and the contrast report.
    • Dark mode: Colours are not inverted. The dark mapping of the semantic layer uses the same ramps; for a pair that fails in dark mode the tool proposes an exception that points the token at another step of the same ramp. At most 8 exceptions are allowed; a 9th locks export.
    • Colour vision: The preview can be viewed with protan, deutan and tritan simulation. Chart palette pairs are checked by Oklab distance (ΔE OK) in normal vision and under each simulation; pairs that are too close are listed as warnings.
    • Material: The Material switch shows the preview on solid or glass. Glass draws a token gradient behind each mode and adds the glass Buttons, so the brand can be seen through the glass tints. Glass is chosen by the app, not stored in the brand file.
    File Contents
    <id>.json Brand file; the same schema as packages/tokens/src/brands/, with seed colours and logged lightness moves
    <id>.manifest.candidate.json Candidate manifest fields: font and its licence, corner radius preset, a packVersion proposal
    <id>.tokens.dtcg.json Ramps as DTCG 2025.10 colour objects (oklch components and sRGB hex)
    <id>.preview.css --bigbang-color-* variables for light and dark mode; for preview and diffs only
    <id>.figma-variables.json Colour variables with light and dark modes; channel values 0–1
    <id>.contrast.json, <id>.contrast.md The same pairs, ratios and verdicts; lightness moves and dark exceptions
    <id>.echarts-theme.json An ECharts theme per mode: categorical palette, axis and text colours, sequential palette

    Import accepts a brand file, a DTCG export and a manifest candidate; an unknown key is rejected with its schema path. Share link writes the state, compressed, after the # of the address; it carries only colours and options, never the brand id or the logo. If the link would exceed 2,000 characters the tool offers a file download instead.

    • The logo is shown in the preview only; an SVG with a script, an event attribute or an external reference is rejected. The logo never enters an export or a link.
    • The chart preview does not load the ECharts library; it is an SVG sample drawn with the colours of the exported theme.
    • The APCA measure stays off until its licence review is complete; the gate is the WCAG 2.x ratio.

    Every control is reachable with Tab. Colour fields accept typed #RRGGBB or oklch(L C H) next to the picker; Enter applies it. Left and right arrow keys move between preview tabs. When the check summary changes, one polite live region announces the counts only.