{
  "$schema": "https://www.digitaltableteur.com/schemas/contract-spec/1.0/contract.schema.json",
  "specVersion": "1.0",
  "name": "BrandLockup",
  "status": "alpha",
  "description": "The Digitaltableteur lockup: the mark in its brand disc beside the name in live Satoshi Bold, sized as one unit from the disc height so the parts never drift apart.",
  "props": {
    "size": {
      "type": "\"sm\" | \"md\" | \"lg\" | \"xl\"",
      "optional": true,
      "description": "Disc height 32, 40, 64 or 80 px; the name and the gap scale with it. Defaults to `\"md\"`."
    },
    "animated": {
      "type": "boolean",
      "optional": true,
      "description": "Pulses the mark's three leading bars while true, driven by the consumer's hover or focus. Defaults to `false`."
    },
    "className": {
      "type": "string",
      "optional": true,
      "description": "Extra class names on the root; set `--brand-lockup-height` here to resize at a breakpoint"
    }
  },
  "accessibility": {
    "criteria": [
      {
        "id": "axe-no-violations",
        "statement": "Required stories produce no axe violations at the configured severity.",
        "verification": "automated",
        "wcag": [
          "2.5.8"
        ],
        "check": "npm run test:stories:matrix:ci",
        "evidence": [
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-default.dark.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:40.948Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-default.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:22.329Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-default.light.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:31.726Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-example.dark.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:41.439Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-example.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:22.794Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-example.light.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:32.199Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-forced-colors.dark.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:41.697Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-forced-colors.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:23.022Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-forced-colors.light.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:32.430Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-playground.dark.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:41.187Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-playground.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:22.563Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-playground.light.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:31.964Z",
            "passed": true,
            "runner": "local-brand-lockup"
          }
        ]
      },
      {
        "id": "accessibility-tree",
        "statement": "The accessibility tree (role, name, state) matches the committed snapshot for every required story.",
        "verification": "automated",
        "wcag": [
          "1.3.1",
          "4.1.2"
        ],
        "check": "npm run test:stories:matrix:ci",
        "evidence": [
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-default.dark.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:40.948Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-default.forced-colors.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:49.933Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-default.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:22.329Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-default.light.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:31.726Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-example.dark.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:41.439Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-example.forced-colors.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:50.377Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-example.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:22.794Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-example.light.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:32.199Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-forced-colors.dark.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:41.697Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-forced-colors.forced-colors.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:50.589Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-forced-colors.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:23.022Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-forced-colors.light.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:32.430Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-playground.dark.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:41.187Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-playground.forced-colors.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:50.151Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-playground.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:22.563Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-playground.light.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:31.964Z",
            "passed": true,
            "runner": "local-brand-lockup"
          }
        ]
      },
      {
        "id": "forced-colors-real-browser",
        "statement": "The component remains legible and operable under a real browser forced-colors: active pass.",
        "verification": "automated",
        "check": "npm run test:stories:hc",
        "evidence": [
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-default.forced-colors.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:49.933Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-example.forced-colors.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:50.377Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-forced-colors.forced-colors.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:50.589Z",
            "passed": true,
            "runner": "local-brand-lockup"
          },
          {
            "artifact": "../../../nextjs-app/shared/components/BrandLockup/__a11y-evidence__/content-brandlockup-playground.forced-colors.json",
            "sourceCommit": "6523cea567f01ddb6949c009234f35fc77e44cd0",
            "capturedAt": "2026-11-07T14:07:50.151Z",
            "passed": true,
            "runner": "local-brand-lockup"
          }
        ]
      },
      {
        "id": "reduced-motion",
        "statement": "Positional, scale, and opacity motion is suppressed under prefers-reduced-motion.",
        "verification": "unverified",
        "wcag": [
          "2.2.2",
          "2.3.3"
        ],
        "note": "Marked reviewed, but no review date was recorded."
      },
      {
        "id": "keyboard-contract",
        "statement": "Every documented keyboard interaction works as specified.",
        "verification": "unverified",
        "wcag": [
          "2.1.1",
          "2.1.2"
        ],
        "note": "Marked reviewed, but no review date was recorded."
      },
      {
        "id": "aria-requirements",
        "statement": "Documented ARIA roles, states, and properties are present on the rendered output.",
        "verification": "unverified",
        "wcag": [
          "4.1.2"
        ],
        "note": "No exportable evidence record for this check; re-run the check to capture one."
      }
    ]
  },
  "source": [
    "../../../nextjs-app/shared/components/BrandLockup/BrandLockup.module.css",
    "../../../nextjs-app/shared/components/BrandLockup/BrandLockup.tsx"
  ]
}
