{
  "$description": "Actions design tokens. Source of truth for brand/tokens/actions.css, tailwind.css and actions.tokens.ts (run: node brand/tokens/build.mts). Values come from Actions Brand Book v1 (2025) unless $extensions.actions.status is 'proposed' or 'derived'. Proposed values are not in the brand book and need sign-off.",
  "color": {
    "$type": "color",
    "not-white": {
      "$description": "Primary neutrals, light. 'Hard to tell the difference, but it's there.' (Brand Book p.40)",
      "50": { "$value": "#FFFEFC" },
      "100": { "$value": "#FCFBF7", "$description": "Not White. The dominant brand colour, roughly 70% of any composition. (p.38-39)" },
      "150": { "$value": "#F7F5F0" },
      "200": { "$value": "#F2F1EB" },
      "250": { "$value": "#F0EDE9" },
      "300": { "$value": "#E5E3DF" },
      "base": { "$value": "{color.not-white.100}" }
    },
    "not-black": {
      "$description": "Primary neutrals, dark. Used only for copy. (p.38, p.40)",
      "base": { "$value": "#2C2C2C", "$description": "Not Black, the primary swatch. It sits between scale steps 850 and 900; the logotype uses this value. (p.38, p.43)" },
      "700": { "$value": "#525252" },
      "800": { "$value": "#3B3B3B" },
      "850": { "$value": "#333332" },
      "900": { "$value": "#262625" },
      "950": { "$value": "#1A1A19" },
      "990": { "$value": "#0D0D0D" }
    },
    "violet": {
      "$description": "Accent. Violet is the dominant accent colour; mostly use 500-950. (p.38, p.41)",
      "100": { "$value": "#F2C4E1" },
      "200": { "$value": "#E5A1CE" },
      "300": { "$value": "#E577BF" },
      "400": { "$value": "#CF57A3" },
      "500": { "$value": "#B03F89", "$description": "Violet, the primary accent swatch. (p.38)" },
      "600": { "$value": "#8D2A6A" },
      "700": { "$value": "#7E275F" },
      "800": { "$value": "#621D49" },
      "900": { "$value": "#451534" },
      "950": { "$value": "#290C1E" },
      "base": { "$value": "{color.violet.500}" }
    },
    "acid": {
      "$description": "Accent. Acid is used for actions, for example CTAs or rollovers in digital, and is used sparingly; mostly use 400-800. (p.38, p.42)",
      "100": { "$value": "#ECFFBD" },
      "200": { "$value": "#DFFF8F" },
      "300": { "$value": "#D2FF61" },
      "400": { "$value": "#C5FF33" },
      "500": { "$value": "#B7FF00", "$description": "Acid, the primary accent swatch. (p.38)" },
      "600": { "$value": "#9AD600" },
      "700": { "$value": "#79A800" },
      "800": { "$value": "#587A00" },
      "900": { "$value": "#374D00" },
      "950": { "$value": "#161F00" },
      "base": { "$value": "{color.acid.500}" }
    }
  },
  "semantic": {
    "$type": "color",
    "$description": "Purpose-named colours. Components use these, never the primitives above.",
    "page": { "$value": "{color.not-white.100}", "$description": "Default page background." },
    "raised": { "$value": "{color.not-white.50}", "$description": "Cards and panels that sit on the page." },
    "sunken": { "$value": "{color.not-white.150}", "$description": "Wells, table stripes, code blocks." },
    "muted": { "$value": "{color.not-white.200}", "$description": "Quiet fills such as neutral badges." },
    "brand": { "$value": "{color.violet.800}", "$description": "Violet panels, as on every rules page of the brand book." },
    "brand-deep": { "$value": "{color.violet.900}", "$description": "Layered planes on a violet panel." },
    "brand-deepest": { "$value": "{color.violet.950}", "$description": "Deepest layered plane on a violet panel." },
    "inverse": { "$value": "{color.not-black.950}", "$description": "Dark surfaces." },
    "ink": { "$value": "{color.not-black.base}", "$description": "Primary copy." },
    "ink-secondary": { "$value": "{color.not-black.700}", "$description": "Supporting copy." },
    "ink-muted": { "$value": "#6A6A69", "$description": "Captions and metadata. Not Black at 70% over Not White, the lightest grey that passes WCAG AA. The brand book's 50% captions fail AA.", "$extensions": { "actions": { "status": "derived" } } },
    "heading": { "$value": "{color.violet.600}", "$description": "Primary headlines on light surfaces. (Colour Application, p.44)" },
    "accent": { "$value": "{color.violet.500}", "$description": "Brand accent: rules, markers, active states." },
    "accent-strong": { "$value": "{color.violet.600}" },
    "accent-subtle": { "$value": "{color.violet.100}" },
    "on-brand": { "$value": "{color.not-white.100}", "$description": "Copy on violet panels." },
    "on-brand-heading": { "$value": "{color.violet.400}", "$description": "Headlines on violet panels. Large text only (3.1:1)." },
    "on-brand-muted": { "$value": "{color.violet.200}", "$description": "Small supporting text on violet panels." },
    "on-inverse": { "$value": "{color.not-white.100}" },
    "line-subtle": { "$value": "{color.not-white.250}", "$description": "Hairlines between rows." },
    "line": { "$value": "{color.not-white.300}", "$description": "Card borders and dividers." },
    "line-control": { "$value": "#8A8A87", "$description": "Form-control borders. Not Black at 55%, which clears the 3:1 non-text contrast minimum.", "$extensions": { "actions": { "status": "derived" } } },
    "action": { "$value": "{color.acid.500}", "$description": "CTAs and rollovers. Use sparingly." },
    "action-hover": { "$value": "{color.acid.400}" },
    "action-pressed": { "$value": "{color.acid.600}" },
    "on-action": { "$value": "{color.not-black.base}", "$description": "Text on Acid. Never put Acid text on a light surface." },
    "focus": { "$value": "{color.violet.500}", "$description": "Focus ring on light surfaces." },
    "focus-on-dark": { "$value": "{color.acid.500}", "$description": "Focus ring on dark or violet surfaces." }
  },
  "status": {
    "$type": "color",
    "$description": "Product states for the LP app. Not in Brand Book v1. Validated for colour-blind separation on Not White; always pair with an icon and a label.",
    "$extensions": { "actions": { "status": "proposed" } },
    "positive": { "$value": "#08805E" },
    "positive-ink": { "$value": "#0A6B4F" },
    "positive-wash": { "$value": "#DFECE5" },
    "caution": { "$value": "#C27C0E" },
    "caution-ink": { "$value": "#8F5600" },
    "caution-wash": { "$value": "#F5ECDB" },
    "critical": { "$value": "#A3241C" },
    "critical-ink": { "$value": "#A3241C" },
    "critical-wash": { "$value": "#F1E1DD" },
    "neutral": { "$value": "{color.not-black.700}" },
    "neutral-ink": { "$value": "{color.not-black.700}" },
    "neutral-wash": { "$value": "{color.not-white.200}" }
  },
  "relationship": {
    "$type": "color",
    "$description": "Sequential ramp for relationship strength between a team member and an LP. One hue, light to dark; validated as an ordinal ramp on Not White.",
    "$extensions": { "actions": { "status": "proposed" } },
    "strong": { "$value": "{color.violet.800}" },
    "medium": { "$value": "{color.violet.500}" },
    "weak": { "$value": "{color.violet.300}" },
    "none": { "$value": "{color.not-white.300}" }
  },
  "font": {
    "family": {
      "$type": "fontFamily",
      "sans": {
        "$value": ["Geist", "ui-sans-serif", "system-ui", "-apple-system", "Segoe UI", "sans-serif"],
        "$description": "Geist is our primary and only font. It is a Google font, so it also works in Google Docs and Slides. (p.31)",
        "$extensions": { "actions": { "cssVariable": "--font-geist-sans" } }
      }
    },
    "weight": {
      "$type": "fontWeight",
      "light": { "$value": 300, "$description": "Headlines. We don't shout, so never Bold for headlines." },
      "regular": { "$value": 400, "$description": "Body copy and secondary headlines." },
      "semibold": { "$value": 600, "$description": "Highlights inside body copy only." }
    }
  },
  "typography": {
    "$type": "typography",
    "$description": "Sizes are the brand-book examples (p.31), used as the desktop maximum. Web sizes scale fluidly down to minSize between 375px and 1440px viewports.",
    "impact": {
      "$value": { "fontFamily": "{font.family.sans}", "fontWeight": "{font.weight.light}", "fontSize": "112px", "lineHeight": 0.97, "letterSpacing": "-0.04em" },
      "$description": "Impact headline. Short copy 85% line height, longer copy 100%. (p.31, p.34)",
      "$extensions": { "actions": { "minSize": "56px", "lineHeightShort": 0.85, "lineHeightLong": 1 } }
    },
    "primary": {
      "$value": { "fontFamily": "{font.family.sans}", "fontWeight": "{font.weight.light}", "fontSize": "64px", "lineHeight": 1.05, "letterSpacing": "-0.02em" },
      "$description": "Primary headline. Short copy 90% line height, longer copy 100%. (p.31, p.34)",
      "$extensions": { "actions": { "minSize": "40px", "lineHeightShort": 0.9, "lineHeightLong": 1 } }
    },
    "secondary": {
      "$value": { "fontFamily": "{font.family.sans}", "fontWeight": "{font.weight.regular}", "fontSize": "32px", "lineHeight": 1.05, "letterSpacing": "-0.02em" },
      "$description": "Secondary headline. (p.31, p.44)",
      "$extensions": { "actions": { "minSize": "24px" } }
    },
    "paragraph": {
      "$value": { "fontFamily": "{font.family.sans}", "fontWeight": "{font.weight.regular}", "fontSize": "18px", "lineHeight": 1.3, "letterSpacing": "0em" },
      "$description": "Paragraph. Always 130% line height; 50-75 characters per line. (p.31, p.35)",
      "$extensions": { "actions": { "minSize": "16px" } }
    },
    "small": {
      "$value": { "fontFamily": "{font.family.sans}", "fontWeight": "{font.weight.regular}", "fontSize": "14px", "lineHeight": 1.4, "letterSpacing": "0em" },
      "$description": "Dense UI text such as tables and form labels.",
      "$extensions": { "actions": { "status": "proposed" } }
    },
    "caption": {
      "$value": { "fontFamily": "{font.family.sans}", "fontWeight": "{font.weight.regular}", "fontSize": "12px", "lineHeight": 1.4, "letterSpacing": "0em" },
      "$description": "Captions and metadata.",
      "$extensions": { "actions": { "status": "proposed" } }
    }
  },
  "measure": {
    "$type": "dimension",
    "$description": "Paragraph line length: 50-75 characters, about 11 words. (p.35)",
    "min": { "$value": "50ch" },
    "default": { "$value": "65ch" },
    "max": { "$value": "75ch" }
  },
  "space": {
    "$type": "dimension",
    "$description": "4px spacing scale. Not in Brand Book v1.",
    "$extensions": { "actions": { "status": "proposed" } },
    "1": { "$value": "4px" },
    "2": { "$value": "8px" },
    "3": { "$value": "12px" },
    "4": { "$value": "16px" },
    "6": { "$value": "24px" },
    "8": { "$value": "32px" },
    "12": { "$value": "48px" },
    "16": { "$value": "64px" },
    "24": { "$value": "96px" },
    "32": { "$value": "128px" }
  },
  "radius": {
    "$type": "dimension",
    "$description": "Square corners everywhere. Every panel, swatch and photo in the brand book is square-cornered.",
    "$extensions": { "actions": { "status": "derived" } },
    "default": { "$value": "0px" }
  },
  "shape": {
    "$description": "Geometry of the brandmark planes, measured from the logo artwork. Use it for layered-plane backgrounds and swatches.",
    "$extensions": { "actions": { "status": "derived" } },
    "skew": { "$type": "number", "$value": 15.4, "$description": "Degrees. The planes' top and bottom edges fall 15.4 degrees from left to right." },
    "slope": { "$type": "number", "$value": 0.2755, "$description": "tan(15.4 degrees): vertical drop per unit of width." },
    "step": { "$type": "number", "$value": 0.75, "$description": "Each plane is three quarters the size of the plane behind it." },
    "aspect": { "$type": "number", "$value": 0.609, "$description": "Plane width divided by plane height." }
  },
  "motion": {
    "$description": "Not in Brand Book v1.",
    "$extensions": { "actions": { "status": "proposed" } },
    "duration-fast": { "$type": "duration", "$value": "120ms" },
    "duration-base": { "$type": "duration", "$value": "200ms" },
    "duration-slow": { "$type": "duration", "$value": "400ms" },
    "ease-standard": { "$type": "cubicBezier", "$value": [0.2, 0, 0, 1] }
  },
  "layout": {
    "$type": "dimension",
    "$description": "Not in Brand Book v1. The brand book's rules pages pair a violet panel (one third) with content (two thirds).",
    "$extensions": { "actions": { "status": "proposed" } },
    "container": { "$value": "1280px" },
    "gutter": { "$value": "24px" },
    "gutter-mobile": { "$value": "16px" }
  }
}
