{"primitive":{"$description":"Tier 1. Raw values with no meaning attached. Components never reference these; semantic tokens do.","color":{"$type":"color","neutral":{"0":{"$value":"#ffffff"},"50":{"$value":"#f5f5f5"},"100":{"$value":"#e8e8e8"},"150":{"$value":"#e0e0e0"},"200":{"$value":"#d0d0d0"},"300":{"$value":"#c0c0c0"},"400":{"$value":"#a0a0a0"},"450":{"$value":"#8a8a8a"},"500":{"$value":"#767676"},"600":{"$value":"#666666"},"700":{"$value":"#4a4a4a"},"800":{"$value":"#333333"},"850":{"$value":"#252525"},"900":{"$value":"#1a1a1a"},"950":{"$value":"#0d0d0d"},"1000":{"$value":"#000000"}},"green":{"300":{"$value":"#16ff9a","$description":"The brand accent on dark."},"400":{"$value":"#12cc7a"},"600":{"$value":"#00aa2e","$description":"The original light-theme accent. 2.8:1 on the light page, so it is no longer used for text."},"700":{"$value":"#008824"},"800":{"$value":"#007a20","$description":"Darkened until it clears 4.5:1 on the light page and carries white text."}},"red":{"400":{"$value":"#ff4444"},"700":{"$value":"#cc0000"}},"amber":{"400":{"$value":"#ffa500"},"700":{"$value":"#a85a00","$description":"The original #ff8800 is 2.4:1 on the light page."}},"pink":{"400":{"$value":"#ff6b9d"},"600":{"$value":"#e85a8a"}}},"space":{"0":{"$value":"0px"},"25":{"$value":"1px"},"50":{"$value":"2px"},"100":{"$value":"4px"},"150":{"$value":"6px"},"200":{"$value":"8px"},"300":{"$value":"12px"},"400":{"$value":"16px"},"500":{"$value":"20px"},"600":{"$value":"24px"},"800":{"$value":"32px"},"1000":{"$value":"40px"},"1600":{"$value":"64px"},"2000":{"$value":"80px"},"2500":{"$value":"100px"},"$type":"dimension","$description":"4px base. The site used 35 distinct spacing values; these 14 replace them."},"font":{"family":{"$type":"fontFamily","sans":{"$value":["var(--font-sans)","-apple-system","BlinkMacSystemFont","Segoe UI","Roboto","sans-serif"],"$description":"Inter, self-hosted by the app through next/font."},"mono":{"$value":["var(--font-mono)","ui-monospace","SFMono-Regular","Menlo","monospace"],"$description":"JetBrains Mono."}},"size":{"50":{"$value":"10px"},"75":{"$value":"11px"},"100":{"$value":"12px"},"200":{"$value":"13px"},"300":{"$value":"14px"},"350":{"$value":"15px"},"400":{"$value":"16px"},"500":{"$value":"20px"},"600":{"$value":"24px"},"$type":"dimension","$description":"The site used 18 fixed sizes. 16px is the floor for anything typed into, so iOS does not zoom.","display-sm":{"$value":"clamp(22px, 3vw, 30px)"},"display-md":{"$value":"clamp(28px, 4.5vw, 40px)"},"display-lg":{"$value":"clamp(32px, 4.6vw, 52px)"},"display-xl":{"$value":"clamp(42px, 6.8vw, 84px)"}},"weight":{"$type":"fontWeight","regular":{"$value":400},"medium":{"$value":500},"semibold":{"$value":600},"bold":{"$value":700}},"leading":{"$type":"number","tight":{"$value":1.1},"snug":{"$value":1.4},"normal":{"$value":1.6},"relaxed":{"$value":1.7}},"tracking":{"$type":"dimension","display":{"$value":"-0.03em"},"tight":{"$value":"-0.02em"},"normal":{"$value":"0em"},"label":{"$value":"0.08em"},"eyebrow":{"$value":"0.12em"}}},"radius":{"$type":"dimension","none":{"$value":"0px"},"sm":{"$value":"2px"},"md":{"$value":"6px"},"lg":{"$value":"10px"},"full":{"$value":"9999px"}},"border-width":{"$type":"dimension","hairline":{"$value":"1px"},"thick":{"$value":"2px"}},"duration":{"$type":"duration","$description":"Collapsed to 0.01ms under prefers-reduced-motion by the generated stylesheet, so no component has to remember.","instant":{"$value":"0ms"},"fast":{"$value":"100ms"},"base":{"$value":"200ms"},"slow":{"$value":"320ms"}},"easing":{"$type":"cubicBezier","standard":{"$value":[0.2,0,0,1]},"$description":"One curve. A strong ease-out: fast start, so the interface answers the moment it is touched. Exits use the same curve at a shorter duration; ease-in is never used for UI because it delays the movement the eye is watching for."},"shadow":{"$type":"shadow","$description":"The idiom is flat: sections are divided by hairlines, not lifted on shadows. Two shadows exist, both for things that float over content: overlay for large surfaces, raised for small ones (tooltips, menus). Raised is a hairline ring plus a little lift in light; in dark a ring alone, because depth shadows vanish on dark ground.","overlay-dark":{"$value":{"color":"#000000a6","offsetX":"0px","offsetY":"8px","blur":"24px","spread":"0px"}},"overlay-light":{"$value":{"color":"#0000002e","offsetX":"0px","offsetY":"8px","blur":"24px","spread":"0px"}},"raised-dark":{"$value":{"color":"#ffffff1f","offsetX":"0px","offsetY":"0px","blur":"0px","spread":"1px"}},"raised-light":{"$value":[{"color":"#0000000f","offsetX":"0px","offsetY":"0px","blur":"0px","spread":"1px"},{"color":"#0000000f","offsetX":"0px","offsetY":"1px","blur":"2px","spread":"-1px"},{"color":"#0000000a","offsetX":"0px","offsetY":"2px","blur":"4px","spread":"0px"}]}},"size":{"$type":"dimension","control-sm":{"$value":"32px"},"control-md":{"$value":"40px"},"control-lg":{"$value":"48px"},"target-min":{"$value":"24px","$description":"WCAG 2.2 target size (minimum), 2.5.8."},"measure":{"$value":"680px","$description":"Longest comfortable line of running text."},"container":{"$value":"1200px"}}},"semantic":{"$description":"Tier 2, theme-independent: type roles and layout roles. What a thing is for, not what it looks like.","type":{"$type":"typography","display-xl":{"$value":{"fontFamily":"{font.family.sans}","fontSize":"{font.size.display-xl}","fontWeight":"{font.weight.bold}","lineHeight":"{font.leading.tight}","letterSpacing":"{font.tracking.display}"},"$description":"The landing hero."},"display-lg":{"$value":{"fontFamily":"{font.family.sans}","fontSize":"{font.size.display-lg}","fontWeight":"{font.weight.bold}","lineHeight":"{font.leading.tight}","letterSpacing":"{font.tracking.display}"},"$description":"Page titles."},"display-md":{"$value":{"fontFamily":"{font.family.sans}","fontSize":"{font.size.display-md}","fontWeight":"{font.weight.bold}","lineHeight":"{font.leading.tight}","letterSpacing":"{font.tracking.tight}"},"$description":"Section titles."},"display-sm":{"$value":{"fontFamily":"{font.family.sans}","fontSize":"{font.size.display-sm}","fontWeight":"{font.weight.bold}","lineHeight":"{font.leading.tight}","letterSpacing":"{font.tracking.tight}"},"$description":" Sub-section titles."},"heading":{"$value":{"fontFamily":"{font.family.sans}","fontSize":"{font.size.500}","fontWeight":"{font.weight.bold}","lineHeight":"{font.leading.snug}","letterSpacing":"{font.tracking.tight}"},"$description":"Card and panel headings."},"body-lg":{"$value":{"fontFamily":"{font.family.sans}","fontSize":"{font.size.400}","fontWeight":"{font.weight.regular}","lineHeight":"{font.leading.normal}","letterSpacing":"{font.tracking.normal}"},"$description":"Lead paragraphs."},"body":{"$value":{"fontFamily":"{font.family.sans}","fontSize":"{font.size.350}","fontWeight":"{font.weight.regular}","lineHeight":"{font.leading.relaxed}","letterSpacing":"{font.tracking.normal}"},"$description":"Running text."},"body-sm":{"$value":{"fontFamily":"{font.family.sans}","fontSize":"{font.size.200}","fontWeight":"{font.weight.regular}","lineHeight":"{font.leading.normal}","letterSpacing":"{font.tracking.normal}"},"$description":"Dense UI text, table cells."},"label":{"$value":{"fontFamily":"{font.family.mono}","fontSize":"{font.size.75}","fontWeight":"{font.weight.medium}","lineHeight":"{font.leading.snug}","letterSpacing":"{font.tracking.label}"},"$description":"Form labels, table headers, stat captions.","$extensions":{"ssp1.textTransform":"uppercase"}},"eyebrow":{"$value":{"fontFamily":"{font.family.mono}","fontSize":"{font.size.75}","fontWeight":"{font.weight.medium}","lineHeight":"{font.leading.snug}","letterSpacing":"{font.tracking.eyebrow}"},"$description":"The mono line above a section title.","$extensions":{"ssp1.textTransform":"uppercase"}},"caption":{"$value":{"fontFamily":"{font.family.mono}","fontSize":"{font.size.75}","fontWeight":"{font.weight.regular}","lineHeight":"{font.leading.normal}","letterSpacing":"{font.tracking.label}"},"$description":"Notes under a control.","$extensions":{"ssp1.textTransform":"uppercase"}},"code":{"$value":{"fontFamily":"{font.family.mono}","fontSize":"{font.size.200}","fontWeight":"{font.weight.regular}","lineHeight":"{font.leading.normal}","letterSpacing":"{font.tracking.normal}"},"$description":"Addresses, signatures, code."},"data":{"$value":{"fontFamily":"{font.family.mono}","fontSize":"{font.size.300}","fontWeight":"{font.weight.medium}","lineHeight":"{font.leading.snug}","letterSpacing":"{font.tracking.normal}"},"$description":"Numbers in tables and stats. Mono so columns align."},"control":{"$value":{"fontFamily":"{font.family.sans}","fontSize":"{font.size.400}","fontWeight":"{font.weight.regular}","lineHeight":"{font.leading.snug}","letterSpacing":"{font.tracking.normal}"},"$description":"Text typed into a field. 16px so iOS does not zoom."},"button":{"$value":{"fontFamily":"{font.family.sans}","fontSize":"{font.size.300}","fontWeight":"{font.weight.semibold}","lineHeight":"{font.leading.snug}","letterSpacing":"{font.tracking.normal}"},"$description":"Button labels."}},"layout":{"$type":"dimension","gutter":{"$value":"{space.500}","$description":"Page side padding."},"section":{"$value":"{space.1600}","$description":"Vertical gap between page sections."},"stack-sm":{"$value":"{space.200}"},"stack-md":{"$value":"{space.400}"},"stack-lg":{"$value":"{space.800}"},"measure":{"$value":"{size.measure}"},"container":{"$value":"{size.container}"},"page-top":{"$type":"dimension","$value":"{space.2000}","$description":"Space above a page's title, below the site header."},"page-gap":{"$type":"dimension","$value":"{space.2500}","$description":"Space between a page header and the first section."}},"motion":{"hover":{"$type":"duration","$value":"{duration.fast}","$description":"Colour and border changes on hover and focus."},"reveal":{"$type":"duration","$value":"{duration.base}","$description":"Things appearing: menus, status messages."},"ease":{"$type":"cubicBezier","$value":"{easing.standard}"},"exit":{"$type":"duration","$value":"{duration.fast}","$description":"Things leaving. Shorter than reveal: attention is already moving on."},"press":{"$type":"duration","$value":"{duration.fast}","$description":"Press feedback on buttons: the scale down and back."}},"focus":{"ring-width":{"$type":"dimension","$value":"{border-width.thick}"},"ring-offset":{"$type":"dimension","$value":"{space.50}"}}},"theme/dark":{"$description":"Tier 2, dark. The reference look.","color":{"$type":"color","surface":{"page":{"$value":"{color.neutral.950}","$description":"The page ground."},"raised":{"$value":"{color.neutral.900}","$description":"Cards, inputs, table rows: one step above the page."},"sunken":{"$value":"{color.neutral.850}","$description":"Wells, code blocks, hover fills."},"overlay":{"$value":"{color.neutral.900}","$description":"Menus and popovers that float over content."},"scrim":{"$value":"#000000a6","$description":"Behind a modal dialog. Dims the page without hiding it."}},"text":{"primary":{"$value":"{color.neutral.150}","$description":"Headings and body.","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":7,"kind":"text"}}},"secondary":{"$value":"{color.neutral.300}","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":4.5,"kind":"text"}}},"muted":{"$value":"{color.neutral.400}","$description":"Captions, labels, supporting copy. Still body-text contrast: muted is a tone, not an excuse.","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised","color.surface.sunken"],"min":4.5,"kind":"text"}}},"accent":{"$value":"{color.green.300}","$description":"Accent used as text: links, the italic word in a display heading.","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":4.5,"kind":"text"}}},"link":{"$value":"{color.green.300}","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":4.5,"kind":"text"}}},"on-accent":{"$value":"{color.neutral.1000}","$description":"Text on the accent fill, e.g. the primary button label.","$extensions":{"ssp1.contrast":{"against":["color.accent.fill"],"min":4.5,"kind":"text"}}},"disabled":{"$value":"{color.neutral.600}","$description":"Disabled text is exempt from contrast minimums (WCAG 1.4.3); never the only cue."}},"accent":{"fill":{"$value":"{color.green.300}","$description":"The brand fill: the same green in both themes. On light it sits near 1.2:1 against the page, so the boundary of anything filled with it is drawn by accent.edge, not by the fill."},"fill-hover":{"$value":"{color.green.400}"},"edge":{"$value":"{color.green.300}","$description":"The boundary of a filled accent control. Dark: the fill's own green, invisible. Light: a darker green so the edge clears 3:1 against the page (WCAG 1.4.11).","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":3,"kind":"ui"}}}},"border":{"subtle":{"$value":"#4a4a4a8c","$description":"Decorative hairlines that divide sections. Exempt from 1.4.11 because they convey nothing on their own."},"default":{"$value":"{color.neutral.700}","$description":"Card and table outlines. Decorative."},"control":{"$value":"{color.neutral.500}","$description":"The boundary of anything you can type into or toggle. 3:1 per WCAG 1.4.11.","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":3,"kind":"non-text"}}},"focus":{"$value":"{color.green.300}","$description":"The focus ring. 3:1 against whatever it sits on.","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":3,"kind":"non-text"}}}},"status":{"$description":"Outcome colours. Reserved: win and loss are never used for decoration, and never appear without a text or glyph cue beside them.","win":{"$value":"{color.green.300}","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":4.5,"kind":"text"}}},"loss":{"$value":"{color.red.400}","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":4.5,"kind":"text"}}},"pending":{"$value":"{color.amber.400}","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":4.5,"kind":"text"}}}},"decor":{"pink":{"$value":"{color.pink.400}","$description":"Second colour on divider segments only. Never text."}}},"shadow":{"$type":"shadow","overlay":{"$value":"{shadow.overlay-dark}"},"raised":{"$value":"{shadow.raised-dark}"}}},"theme/light":{"$description":"Tier 2, light. Same roles; the accent is darkened until it is legible.","color":{"$type":"color","surface":{"page":{"$value":"{color.neutral.50}","$description":"The page ground."},"raised":{"$value":"{color.neutral.0}","$description":"Cards, inputs, table rows: one step above the page."},"sunken":{"$value":"{color.neutral.100}","$description":"Wells, code blocks, hover fills."},"overlay":{"$value":"{color.neutral.0}","$description":"Menus and popovers that float over content."},"scrim":{"$value":"#00000066","$description":"Behind a modal dialog. Dims the page without hiding it."}},"text":{"primary":{"$value":"{color.neutral.900}","$description":"Headings and body.","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":7,"kind":"text"}}},"secondary":{"$value":"{color.neutral.800}","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":4.5,"kind":"text"}}},"muted":{"$value":"{color.neutral.600}","$description":"Captions, labels, supporting copy. Still body-text contrast: muted is a tone, not an excuse.","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised","color.surface.sunken"],"min":4.5,"kind":"text"}}},"accent":{"$value":"{color.green.300}","$description":"Accent used as text: links, the italic word in a display heading. Light uses the same green as dark by decision (2026-09-28); the contrast requirement is waived for it, see DESIGN_SYSTEM.md §18."},"link":{"$value":"{color.green.300}","$description":"Light uses the same green as dark by decision (2026-09-28); the contrast requirement is waived for it, see DESIGN_SYSTEM.md §18."},"on-accent":{"$value":"{color.neutral.1000}","$description":"Text on the accent fill, e.g. the primary button label.","$extensions":{"ssp1.contrast":{"against":["color.accent.fill"],"min":4.5,"kind":"text"}}},"disabled":{"$value":"{color.neutral.400}","$description":"Disabled text is exempt from contrast minimums (WCAG 1.4.3); never the only cue."}},"accent":{"fill":{"$value":"{color.green.300}","$description":"The brand fill: the same green in both themes. On light it sits near 1.2:1 against the page, so the boundary of anything filled with it is drawn by accent.edge, not by the fill."},"fill-hover":{"$value":"{color.green.400}"},"edge":{"$value":"{color.green.800}","$description":"The boundary of a filled accent control. Dark: the fill's own green, invisible. Light: a darker green so the edge clears 3:1 against the page (WCAG 1.4.11).","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":3,"kind":"ui"}}}},"border":{"subtle":{"$value":"#d0d0d08c","$description":"Decorative hairlines that divide sections. Exempt from 1.4.11 because they convey nothing on their own."},"default":{"$value":"{color.neutral.200}","$description":"Card and table outlines. Decorative."},"control":{"$value":"{color.neutral.450}","$description":"The boundary of anything you can type into or toggle. 3:1 per WCAG 1.4.11.","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":3,"kind":"non-text"}}},"focus":{"$value":"{color.green.300}","$description":"The focus ring. 3:1 against whatever it sits on. Light uses the same green as dark by decision (2026-09-28); the contrast requirement is waived for it, see DESIGN_SYSTEM.md §18."}},"status":{"$description":"Outcome colours. Reserved: win and loss are never used for decoration, and never appear without a text or glyph cue beside them.","win":{"$value":"{color.green.300}","$description":"Light uses the same green as dark by decision (2026-09-28); the contrast requirement is waived for it, see DESIGN_SYSTEM.md §18."},"loss":{"$value":"{color.red.700}","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":4.5,"kind":"text"}}},"pending":{"$value":"{color.amber.700}","$extensions":{"ssp1.contrast":{"against":["color.surface.page","color.surface.raised"],"min":4.5,"kind":"text"}}}},"decor":{"pink":{"$value":"{color.pink.600}","$description":"Second colour on divider segments only. Never text."}}},"shadow":{"$type":"shadow","overlay":{"$value":"{shadow.overlay-light}"},"raised":{"$value":"{shadow.raised-light}"}}},"component":{"$description":"Tier 3. Decisions that belong to one component. Only semantic tokens may be referenced here, so a theme change reaches every component without touching one.","button":{"height":{"$type":"dimension","$value":"{size.control-md}"},"height-sm":{"$type":"dimension","$value":"{size.control-sm}"},"radius":{"$type":"dimension","$value":"{radius.md}"},"padding-x":{"$type":"dimension","$value":"{space.500}"}},"field":{"height":{"$type":"dimension","$value":"{size.control-md}"},"radius":{"$type":"dimension","$value":"{radius.md}"},"padding-x":{"$type":"dimension","$value":"{space.300}"},"bg":{"$type":"color","$value":"{color.surface.page}"},"border":{"$type":"color","$value":"{color.border.control}"}},"table":{"cell-padding-x":{"$type":"dimension","$value":"{space.400}"},"cell-padding-y":{"$type":"dimension","$value":"{space.300}"},"row-border":{"$type":"color","$value":"{color.border.subtle}"}},"badge":{"radius":{"$type":"dimension","$value":"{radius.sm}"},"padding-x":{"$type":"dimension","$value":"{space.150}"}},"panel":{"radius":{"$type":"dimension","$value":"{radius.md}"},"padding":{"$type":"dimension","$value":"{space.600}"},"bg":{"$type":"color","$value":"{color.surface.raised}"},"border":{"$type":"color","$value":"{color.border.default}"}}},"$themes":[{"id":"dark","name":"dark","selectedTokenSets":{"primitive":"source","semantic":"enabled","theme/dark":"enabled","component":"enabled"}},{"id":"light","name":"light","selectedTokenSets":{"primitive":"source","semantic":"enabled","theme/light":"enabled","component":"enabled"}}],"$metadata":{"tokenSetOrder":["primitive","semantic","theme/dark","theme/light","component"]}}