{
  "$description": "Brand: Next.js (nextjs@1.0.0)",
  "color": {
    "swatches": {
      "$description": "Source-of-truth color swatches from palette nextjs@1.0.0",
      "next-black": {
        "$value": "#000000",
        "$type": "color",
        "$description": "Primary brand color — the triangle mark fill in light mode and the dark-mode canvas. Pure black.\n"
      },
      "next-white": {
        "$value": "#FFFFFF",
        "$type": "color",
        "$description": "Companion brand color — the triangle mark fill in dark mode and the light-mode canvas. Pure white.\n"
      },
      "dark-bg-100": {
        "$value": "#0A0A0A",
        "$type": "color",
        "$description": "Geist dark canvas tint used by nextjs.org dark mode."
      },
      "dark-gray-100": {
        "$value": "#1A1A1A",
        "$type": "color",
        "$description": "Geist dark surface tint."
      },
      "dark-gray-300": {
        "$value": "#292929",
        "$type": "color",
        "$description": "Geist dark gray for borders."
      },
      "dark-gray-500": {
        "$value": "#454545",
        "$type": "color",
        "$description": "Geist dark gray for hairlines."
      },
      "dark-gray-900": {
        "$value": "#A1A1A1",
        "$type": "color",
        "$description": "Geist muted text on dark."
      },
      "dark-gray-1000": {
        "$value": "#EDEDED",
        "$type": "color",
        "$description": "Geist primary text on dark."
      },
      "light-bg-200": {
        "$value": "#FAFAFA",
        "$type": "color",
        "$description": "Geist light layered surface."
      },
      "light-gray-200": {
        "$value": "#EAEAEA",
        "$type": "color",
        "$description": "Geist light hairline border."
      },
      "light-gray-600": {
        "$value": "#666666",
        "$type": "color",
        "$description": "Geist secondary text on light."
      },
      "light-gray-1000": {
        "$value": "#171717",
        "$type": "color",
        "$description": "Geist primary text on light."
      },
      "vercel-blue": {
        "$value": "#0070F3",
        "$type": "color",
        "$description": "Functional accent — link / focus."
      },
      "vercel-blue-bright": {
        "$value": "#52A8FF",
        "$type": "color",
        "$description": "Functional accent on dark surfaces."
      },
      "vercel-red": {
        "$value": "#FF6166",
        "$type": "color",
        "$description": "Functional error / destructive."
      },
      "vercel-amber": {
        "$value": "#F2A60D",
        "$type": "color",
        "$description": "Functional warning."
      },
      "vercel-green": {
        "$value": "#62C073",
        "$type": "color",
        "$description": "Functional success."
      }
    }
  },
  "font": {
    "$description": "Typography roles mapped to font atoms",
    "heading": {
      "family": {
        "$value": [
          "Geist",
          "-apple-system",
          "BlinkMacSystemFont",
          "Segoe UI",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "$type": "fontFamily",
        "$description": "heading role → Geist Sans (geist@1.0.0)"
      },
      "weight": {
        "100": {
          "$value": 100,
          "$type": "fontWeight"
        },
        "200": {
          "$value": 200,
          "$type": "fontWeight"
        },
        "300": {
          "$value": 300,
          "$type": "fontWeight"
        },
        "400": {
          "$value": 400,
          "$type": "fontWeight"
        },
        "500": {
          "$value": 500,
          "$type": "fontWeight"
        },
        "600": {
          "$value": 600,
          "$type": "fontWeight"
        },
        "700": {
          "$value": 700,
          "$type": "fontWeight"
        },
        "800": {
          "$value": 800,
          "$type": "fontWeight"
        },
        "900": {
          "$value": 900,
          "$type": "fontWeight"
        },
        "$description": "Available font weights"
      }
    },
    "body": {
      "family": {
        "$value": [
          "Geist",
          "-apple-system",
          "BlinkMacSystemFont",
          "Segoe UI",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "$type": "fontFamily",
        "$description": "body role → Geist Sans (geist@1.0.0)"
      },
      "weight": {
        "100": {
          "$value": 100,
          "$type": "fontWeight"
        },
        "200": {
          "$value": 200,
          "$type": "fontWeight"
        },
        "300": {
          "$value": 300,
          "$type": "fontWeight"
        },
        "400": {
          "$value": 400,
          "$type": "fontWeight"
        },
        "500": {
          "$value": 500,
          "$type": "fontWeight"
        },
        "600": {
          "$value": 600,
          "$type": "fontWeight"
        },
        "700": {
          "$value": 700,
          "$type": "fontWeight"
        },
        "800": {
          "$value": 800,
          "$type": "fontWeight"
        },
        "900": {
          "$value": 900,
          "$type": "fontWeight"
        },
        "$description": "Available font weights"
      }
    },
    "mono": {
      "family": {
        "$value": [
          "Geist Mono",
          "SFMono-Regular",
          "Menlo",
          "Monaco",
          "Consolas",
          "Liberation Mono",
          "Courier New",
          "monospace"
        ],
        "$type": "fontFamily",
        "$description": "mono role → Geist Mono (geist-mono@1.0.0)"
      },
      "weight": {
        "100": {
          "$value": 100,
          "$type": "fontWeight"
        },
        "200": {
          "$value": 200,
          "$type": "fontWeight"
        },
        "300": {
          "$value": 300,
          "$type": "fontWeight"
        },
        "400": {
          "$value": 400,
          "$type": "fontWeight"
        },
        "500": {
          "$value": 500,
          "$type": "fontWeight"
        },
        "600": {
          "$value": 600,
          "$type": "fontWeight"
        },
        "700": {
          "$value": 700,
          "$type": "fontWeight"
        },
        "800": {
          "$value": 800,
          "$type": "fontWeight"
        },
        "900": {
          "$value": 900,
          "$type": "fontWeight"
        },
        "$description": "Available font weights"
      }
    }
  },
  "$extensions": {
    "com.brand-atoms.rules": [
      {
        "type": "forbiddenTreatment",
        "target": "logo",
        "severity": "error",
        "rationale": "The Next.js triangle mark is monochrome by design. Gradient, recolored, or skewed variants are explicitly disallowed per the Vercel brand expression at vercel.com/design/brands (which governs Next.js as a Vercel-stewarded property).\n",
        "treatments": [
          "stretched",
          "rotated",
          "recolored",
          "gradient-fill",
          "drop-shadow",
          "on-busy-photo",
          "composited-with-product-logo"
        ]
      },
      {
        "type": "colorChoice",
        "target": "roles.colors.primary",
        "severity": "error",
        "rationale": "Next.js's primary brand color is monochrome — black in light mode, white in dark. The functional hues (blue/red/amber/green) carry semantic meaning and must not stand in as the brand identity.\n",
        "allowed": [
          "next-black",
          "next-white"
        ],
        "forbidden": [
          "vercel-blue",
          "vercel-red",
          "vercel-amber",
          "vercel-green"
        ]
      },
      {
        "type": "enumMembership",
        "target": "typography.heading.fontWeight",
        "severity": "warning",
        "rationale": "Next.js marketing surfaces use Geist Medium (500), SemiBold (600), and Bold (700) for headings. Lighter weights are reserved for fine UI labels; weights above 800 compromise Geist's neutral geometric voice.\n",
        "allowed": [
          "500",
          "600",
          "700",
          "800"
        ]
      },
      {
        "type": "contrastRatio",
        "target": "text-primary",
        "severity": "error",
        "rationale": "Geist's foreground/background pairs are designed AA-out-of-the-box: light-gray-1000 (#171717) on light-bg-200 (#FAFAFA) gives ~15:1 and dark-gray-1000 (#EDEDED) on dark-bg-100 (#0A0A0A) gives ~17:1. Both clear AA with substantial margin.\n",
        "against": "background",
        "minRatio": 4.5,
        "standard": "WCAG-AA"
      },
      {
        "type": "contextRestriction",
        "target": "roles.colors.accent",
        "severity": "warning",
        "rationale": "Vercel Blue (#0070F3) is the documented link / focus accent inherited from the Geist Design System — used as a thin stroke or small-glyph fill, never as a large background block. Large blue fills compete with the monochrome brand voice.\n",
        "allowedContexts": [
          "link",
          "focus-ring",
          "data-viz-primary"
        ],
        "forbiddenContexts": [
          "background",
          "large-fill"
        ]
      },
      {
        "type": "fontPairing",
        "target": "typography.heading",
        "severity": "error",
        "rationale": "Geist Sans is the only display face on nextjs.org and vercel.com; the visual hierarchy is established entirely by size. A 1.5× minimum heading-to-body ratio preserves the typographic rhythm without introducing a second family.\n",
        "requires": "body",
        "minSizeRatio": 1.5
      },
      {
        "type": "compositionConstraint",
        "target": "roles.colors.identity",
        "severity": "error",
        "rationale": "The brand block is black-on-white or white-on-black only. Pairing the triangle directly with functional hues breaks the monochrome brand contract.\n",
        "pairsWith": [
          "next-white"
        ],
        "doesNotPairWith": [
          "vercel-blue",
          "vercel-red",
          "vercel-amber",
          "vercel-green"
        ]
      },
      {
        "type": "accessibilityRequirement",
        "target": "*",
        "severity": "error",
        "rationale": "WCAG 2.1 Success Criterion 1.4.3 (Contrast Minimum) — Level AA. Geist Design System tokens are AA-compliant by construction; consumers must not derive intermediate stops that defeat that property.\n",
        "standard": "WCAG-AA",
        "criterion": "1.4.3"
      },
      {
        "type": "contextRestriction",
        "target": "trademark.use",
        "severity": "error",
        "rationale": "The Vercel brand policy forbids product names that imply Next.js or Vercel endorsement. Use the mark to indicate compatibility, not as part of a product identity.\n",
        "forbiddenContexts": [
          "product-name-prefix",
          "implied-endorsement"
        ]
      }
    ],
    "com.brand-atoms.assets": [],
    "com.brand-atoms.provenance": {
      "source": "https://nextjs.org/",
      "license": "MIT",
      "attribution": "Next.js is MIT-licensed and maintained by Vercel, Inc. The Next.js triangle mark and \"Next.js\" word mark are property of Vercel. The brand expression is monochrome black/white paired with the open-source Geist typeface family; status hues mirror the Geist Design System functional ramps shared with the Vercel atom. This atom is brand-atoms' machine- readable encoding; no logos are bundled.\n",
      "importedDate": "2026-05-18",
      "notes": "Next.js does not publish a standalone brand-guidelines document; the brand expression on nextjs.org is the source of truth. Geist is in the brand-atoms catalog (geist@1, geist-mono@1), released by Vercel under the SIL Open Font License v1.1.\n"
    },
    "com.brand-atoms.references": {
      "palette": "nextjs@1.0.0",
      "fonts": {
        "heading": "geist@1.0.0",
        "body": "geist@1.0.0",
        "mono": "geist-mono@1.0.0"
      }
    }
  }
}
