{
  "$schema": "bobby-brand/master-brand-book/v2",
  "version": {
    "brandId": "bobby-brand",
    "systemVersion": "1.0.0",
    "status": "Canonical — Product Owner approved, published brand system, active production identity",
    "approvedBy": "Alex — Product Owner; intended Platform Owner, not provisioned (alex@siteways.io)",
    "approvalDate": "2026-08-26",
    "acceptanceRecordId": "bb-acceptance-0001",
    "selectedDirection": "A — Brand Beam / Neon Studio",
    "decidedBy": "Alex — Product Owner; intended Platform Owner, not provisioned",
    "decisionDate": "2026-08-25",
    "selectedConstruction": "R1 — True Aperture (canonical beeldmerk construction, selected 2026-08-25)",
    "microMark": "Micro R1 — responsive derivative of R1, not a separate logo. Used below 32 px.",
    "supersedes": [
      "0.1.0-candidate",
      "0.2.0-candidate"
    ],
    "archivedDirections": [
      {
        "id": "frame",
        "name": "B — Identity Frame",
        "status": "Rejected — archived decision evidence"
      },
      {
        "id": "living",
        "name": "C — Living Mark",
        "status": "Rejected — archived decision evidence"
      }
    ],
    "archivedRefinements": [
      {
        "id": "r2",
        "name": "R2 — Squircle Carrier",
        "status": "Rejected — archived decision evidence"
      },
      {
        "id": "r3",
        "name": "R3 — Open Beam",
        "status": "Rejected — archived decision evidence"
      }
    ],
    "generationMethod": "Hand-authored by the Bobby Brand pilot agent under owner direction (no generation backend is operational).",
    "reviewEvidence": "Owner review of P1A and P1B comparison studios; owner direction decision of 2026-08-25; owner refinement decision (R1) of 2026-08-25; owner review of /brand/production-review and final approval of 0.2.0-candidate on 2026-08-26.",
    "openOwnerDecisions": [
      "Included post-completion Bobby Credit quantity (undecided)."
    ]
  },
  "provenance": [
    {
      "field": "selectedDirection",
      "provenance": "Approved",
      "source": "Owner decision, Alex, 2026-08-25."
    },
    {
      "field": "sourceColours",
      "provenance": "Approved",
      "source": "Owner decision, five named hex values."
    },
    {
      "field": "colourTokens.derived",
      "provenance": "Inferred",
      "source": "Derived in P1C from approved source colours; contrast computed."
    },
    {
      "field": "typography",
      "provenance": "Inferred",
      "source": "Selected in P1C for OFL licensing and rendering quality; not owner-approved."
    },
    {
      "field": "strategy",
      "provenance": "Inferred",
      "source": "Authored in P1C from owner product direction across P0–P1B."
    },
    {
      "field": "commercialTruth",
      "provenance": "Approved",
      "source": "Owner-stated commercial model (€199 one-time, Bobby Credits)."
    },
    {
      "field": "logoRules.breakpoints",
      "provenance": "Observed",
      "source": "Rendered small-size tests at 16/24/32/48/64/96/128 px in the brand studio."
    },
    {
      "field": "refinements",
      "provenance": "Inferred",
      "source": "Derived strictly from the approved Brand Beam concept; owner selection pending."
    },
    {
      "field": "designRecommendation",
      "provenance": "Inferred",
      "source": "Rendered small-size evidence. Non-binding — carries no owner authority."
    },
    {
      "field": "identity.legal",
      "provenance": "Inferred",
      "source": "MISSING — no legal entity facts supplied. Deliberately not invented."
    },
    {
      "field": "designSystem",
      "provenance": "Inferred",
      "source": "Iconography, imagery, graphic elements, layout and motion authored in P1C."
    },
    {
      "field": "applicationPreviews",
      "provenance": "Observed",
      "source": "Rendered in the browser during the P1C screenshot inspection pass."
    }
  ],
  "truthStatements": [
    {
      "id": "truth-direction",
      "subject": "Brand Beam direction",
      "statement": "selected"
    },
    {
      "id": "truth-refinements",
      "subject": "R1 / R2 / R3",
      "statement": "R1 selected; R2 and R3 rejected and archived"
    },
    {
      "id": "truth-canonical-mark",
      "subject": "Exact canonical mark",
      "statement": "resolved — R1 True Aperture, drawn only by src/lib/r1-geometry.ts"
    },
    {
      "id": "truth-micro-mark",
      "subject": "Micro R1",
      "statement": "responsive derivative of R1 below 32 px, not a separate logo"
    },
    {
      "id": "truth-final-approval",
      "subject": "Brand-system acceptance",
      "statement": "granted — 0.2.0-candidate accepted by Product Owner Alex on 2026-08-26 (bb-acceptance-0001) and promoted to canonical 1.0.0; no Platform Owner database role exists"
    },
    {
      "id": "truth-favicon-family",
      "subject": "Favicon family",
      "statement": "generated from R1"
    },
    {
      "id": "truth-favicon-ico",
      "subject": "/favicon.ico",
      "statement": "Bobby Brand R1 icon with 16/32/48 px frames — template default replaced"
    },
    {
      "id": "truth-packages",
      "subject": "Production packages",
      "statement": "nine canonical 1.0.0 packages generated and verified"
    },
    {
      "id": "truth-print",
      "subject": "Press-ready print exports",
      "statement": "not generated — physical artwork is production-size RGB vector only"
    },
    {
      "id": "truth-embroidery",
      "subject": "Embroidery files",
      "statement": "not generated"
    },
    {
      "id": "truth-auth",
      "subject": "Authentication",
      "statement": "active foundation; identity grants no role by itself"
    },
    {
      "id": "truth-platform-owner",
      "subject": "Platform Owner",
      "statement": "not provisioned"
    },
    {
      "id": "truth-backend",
      "subject": "Backend",
      "statement": "P2A authority foundation active; brand generation, checkout and billing inactive"
    },
    {
      "id": "truth-generation",
      "subject": "Customer brand generation",
      "statement": "not operational"
    },
    {
      "id": "truth-api",
      "subject": "API / MCP",
      "statement": "planned"
    },
    {
      "id": "truth-mailinator",
      "subject": "Mailinator canary",
      "statement": "future governed requirement, not implemented"
    },
    {
      "id": "truth-recommendation",
      "subject": "R2 recommendation",
      "statement": "historical non-binding advice, not followed, no authority"
    }
  ],
  "identity": {
    "tradingNames": [
      "Bobby Brand"
    ],
    "domain": "bobbybrand.com",
    "industry": "Brand design & brand governance software",
    "brandType": "product",
    "languages": [
      "en"
    ],
    "regions": [
      "MISSING — not supplied by owner"
    ],
    "legalName": "MISSING — not supplied by owner"
  },
  "decisionLog": [
    {
      "recordId": "bb-decision-0001",
      "at": "2026-08-25",
      "subject": "Creative direction and source palette",
      "outcome": "Direction A — Brand Beam / Neon Studio selected. B and C rejected and archived.",
      "stateAtTheTime": "Beeldmerk refinement unresolved; R1, R2 and R3 all candidates."
    },
    {
      "recordId": "bb-decision-0002",
      "at": "2026-08-25",
      "subject": "Beeldmerk refinement selection",
      "outcome": "R1 — True Aperture selected as canonical construction. R2 and R3 rejected and archived.",
      "stateAtTheTime": "R2 carried a non-binding design recommendation, which the owner considered and did not follow."
    },
    {
      "recordId": "bb-decision-0003",
      "at": "2026-08-26",
      "subject": "Final approval of the R1 production system and canonical release",
      "outcome": "0.2.0-candidate approved by Product Owner Alex (alex@siteways.io), the intended Platform Owner who is not provisioned in the database, after visual review of /brand/production-review; recorded as bb-acceptance-0001 and promoted to canonical 1.0.0 — published brand system and active production identity.",
      "stateAtTheTime": "Approval covers the brand system only, not operational platform functionality. The decorative Brand Beam motif remains a supporting graphic element; R2, R3, B and C remain rejected archival evidence."
    }
  ],
  "ownership": {
    "ownerDecisionRecord": {
      "recordId": "bb-decision-0001",
      "recordedAt": "2026-08-25",
      "product": "Bobby Brand",
      "canonicalDomain": "bobbybrand.com",
      "productOwner": "Alex",
      "productOwnerEmail": "alex@siteways.io",
      "intendedPlatformOwnerIdentity": "The future verified Bobby Brand account belonging to Alex at alex@siteways.io. No such application account is known to exist; existence is unverified and must not be assumed.",
      "selectedDirection": "Direction A — Brand Beam / Neon Studio",
      "rejectedDirections": [
        "Direction B — Identity Frame (reviewed, rejected for production use, retained as immutable evidence)",
        "Direction C — Living Mark (reviewed, rejected for production use, retained as immutable evidence)"
      ],
      "selectedConceptualFoundation": [
        "The Brand Beam concept: one continuous signal travelling unchanged across every surface.",
        "Rounded beam geometry.",
        "Dark-first cinematic presentation.",
        "Controlled glow — decoration, never structure.",
        "Playful, spectacular character with precise mechanics."
      ],
      "approvedSourcePalette": [
        "Carbon Black #09090B",
        "Neon Magenta #FF2BD6",
        "Electric Cyan #16E8FF",
        "Clean White #F8FAFC",
        "Neutral Graphite #52525B"
      ],
      "approvalDate": "2026-08-25",
      "decisionScope": "This decision approves the creative direction and the source palette only. It does not approve any specific refined mark geometry, any exported asset, any copy line as final, or any operational capability.",
      "unresolved": [
        "The exact beeldmerk refinement (R1, R2 or R3) remains unresolved. No refinement is canonical, final, preferred or the vector source of truth.",
        "Final production approval of the asset family remains pending.",
        "Included post-completion Bobby Credit quantity remains undecided and must not be stated."
      ],
      "p1cStatus": "P1C is presentation-only: refinement candidates, a master brand-book candidate, archived rejected directions, structured brand data and a static JSON export. No backend, authentication, billing, provisioning or email capability was introduced.",
      "laterPhaseBoundaries": [
        "Authentication, workspace tenancy and server-side authorization are later, separately approved phases.",
        "Platform Owner provisioning requires its own governed ceremony phase.",
        "Transactional email — including the Mailinator delivery canary — is a later phase.",
        "Brand generation, credits, billing, API and MCP are later phases."
      ],
      "authorityNote": "An email address identifies an intended provisioning candidate. It never grants, implies or simulates Platform Owner authority."
    },
    "refinementDecisionRecord": {
      "recordId": "bb-decision-0002",
      "recordedAt": "2026-08-25",
      "supersedes": [
        "bb-decision-0001 — unresolved item: exact beeldmerk refinement"
      ],
      "decidedBy": "Alex — Product Owner; intended Platform Owner",
      "decidedByEmail": "alex@siteways.io",
      "authorityNote": "The email address identifies the intended provisioning candidate. It does not itself grant Platform Owner authority; no Platform Owner account is provisioned.",
      "selectedRefinement": "R1 — True Aperture",
      "selectedState": "selected_canonical_construction",
      "ownerReasons": [
        "Most faithful to the approved Brand Beam concept.",
        "The circular aperture is distinctive and ownable.",
        "Preserves the neon identity and the beam metaphor.",
        "Works as avatar and badge."
      ],
      "ownerResolutionOfWeakness": "The known small-size weakness is solved by a strictly R1-derived micro rendering, not by adopting a different construction.",
      "rejectedRefinements": [
        "R2 — Squircle Carrier: rejected for production use; retained as immutable archival evidence at /brand-archive.",
        "R3 — Open Beam: rejected for production use; retained as immutable archival evidence at /brand-archive."
      ],
      "recommendationHandling": "The P1C design recommendation favoured R2. It was advisory only, was not followed, and is retained as historical non-binding advice.",
      "microMarkStatus": "Micro R1 is a responsive derivative of R1, not a separate logo, and is not separately approvable.",
      "systemVersion": "0.2.0-candidate",
      "scope": "This decision selects the canonical beeldmerk construction and authorises generation of the production asset system from it. It does not constitute final approval of that system.",
      "finalApproval": "pending",
      "unresolved": [
        "Final Platform Owner approval of the R1 production system 0.2.0-candidate.",
        "Included post-completion Bobby Credit quantity remains undecided and must not be stated."
      ]
    },
    "productOwner": {
      "name": "Alex",
      "contactIdentifier": "alex@siteways.io",
      "roles": [
        "Product Owner",
        "Platform Owner (intended, not provisioned)"
      ],
      "identifierIsNotAuthorization": true
    },
    "authorityBoundaries": [
      "Only the Product Owner (Alex) may approve a creative direction, a refinement or an asset.",
      "An email address identifies an intended provisioning candidate. It never grants, implies or simulates authority.",
      "A design recommendation is evidence, never a decision, and never changes a candidate's state.",
      "Rendering a candidate in a preview or mockup confers no selection, preference or approval.",
      "Absence of a decision is recorded as unresolved; it is never resolved by default, by recommendation or by convenience.",
      "Authorization for any future operational capability is server-side only, deny-by-default, and auditable."
    ],
    "platformOwnerProvisioning": {
      "state": "not_provisioned",
      "intendedCandidate": "Alex — alex@siteways.io",
      "candidateAccountVerified": false,
      "requirements": [
        "Alex (alex@siteways.io) is the intended initial Platform Owner.",
        "Email identifies the intended provisioning candidate; it is not itself an authorization grant.",
        "No hardcoded client-side email bypass, ever.",
        "No role may be inferred merely from an email match.",
        "No automatic Platform Owner assignment during signup.",
        "The initial Platform Owner may not be invited.",
        "No ordinary Admin may create or replace the initial Platform Owner.",
        "Platform Owner activation requires an authenticated, verified identity and an explicit governed provisioning ceremony.",
        "A single active initial Platform Owner invariant is enforced.",
        "Authorization and invariant enforcement are performed server-side only.",
        "Append-only audit evidence is recorded for every provisioning attempt and outcome.",
        "Fail closed on ambiguity, conflicting accounts or existing ownership.",
        "Platform setup and overview surfaces must display actual provisioning state, never an assumed one.",
        "/admin remains unavailable until real provisioning and server-side authorization exist.",
        "Recovery, replacement, suspension and succession each require separate governed procedures."
      ],
      "currentState": "Not provisioned. The role tables and ceremony path exist, but no Platform Owner role is assigned and no usable authorization material exists.",
      "implementationState": "documented_not_generated"
    }
  },
  "statusMatrix": [
    {
      "item": "Brand Beam concept",
      "state": "selected",
      "detail": "Approved by the Platform Owner on 2026-08-25 as the sole active creative direction."
    },
    {
      "item": "R1 — True Aperture beeldmerk",
      "state": "selected",
      "detail": "Selected by the Platform Owner on 2026-08-25 as the canonical beeldmerk construction. R2 and R3 are rejected archival evidence."
    },
    {
      "item": "Micro R1",
      "state": "selected",
      "detail": "Responsive derivative of R1 used below 32 px. Not a separate logo and never separately approvable."
    },
    {
      "item": "Complete production asset system",
      "state": "approved",
      "detail": "Version 1.0.0. Generated from the canonical R1 source, verified, Product Owner approved on 2026-08-26 (bb-acceptance-0001) and published as the active production identity."
    },
    {
      "item": "Master brand book",
      "state": "approved",
      "detail": "Canonical 1.0.0 documentation generated from the Product Owner accepted production system. It records inactive operational capabilities separately."
    },
    {
      "item": "Checkout",
      "state": "inactive",
      "detail": "No payment provider, no cart, no order. The control is deliberately disabled."
    },
    {
      "item": "Authentication",
      "state": "approved",
      "detail": "Active foundation for P2A verification. Account identity never grants platform or workspace authority by itself."
    },
    {
      "item": "Platform Owner",
      "state": "absent",
      "detail": "Not provisioned. The bootstrap is implemented, eligible and bound, but not armed; usable authorisation material is zero."
    },
    {
      "item": "Workspace console",
      "state": "approved",
      "detail": "Active foundation route reads signed-in identity, own memberships and disabled feature flags. Brand projects are not implemented."
    },
    {
      "item": "Platform admin",
      "state": "approved",
      "detail": "Active authority boundary for P2A verification. Owner provisioning is not armed and role administration is not implemented."
    },
    {
      "item": "Backend",
      "state": "approved",
      "detail": "Database authority foundation is active: profiles, roles, workspaces, audit/security records and feature flags. Storage and job runners are not in use."
    },
    {
      "item": "Customer brand generation",
      "state": "absent",
      "detail": "No generation capability exists. Everything shown is hand-authored."
    },
    {
      "item": "API and MCP",
      "state": "planned",
      "detail": "The structured brand data is shaped for future API/MCP use. No endpoint exists."
    },
    {
      "item": "Mailinator delivery canary",
      "state": "planned",
      "detail": "Recorded as a binding future standard. Nothing is configured or sent."
    }
  ],
  "futureRequirements": [
    {
      "id": "req-mailinator-canary",
      "name": "Bobby Network — Mailinator Email Delivery Canary Standard",
      "state": "deferred",
      "implemented": false,
      "scope": "Applies to Bobby Brand when transactional email is introduced. No credentials, addresses, provider configuration, templates, functions, migrations or operational controls exist yet.",
      "requirements": [
        "Dedicated tokenless delivery-canary messages only.",
        "Never send password recovery, confirmation, magic link, OTP, authentication token, customer data or real account identifiers to Mailinator.",
        "No forwarded real email.",
        "Official Mailinator API only.",
        "Private Mailinator domain preferred.",
        "API secret stored and used server-side only.",
        "Governed Admin configuration surface.",
        "Capability checks before any canary action.",
        "Step-up authentication for sensitive configuration.",
        "Reason capture, CSRF protection, rate limiting and idempotency on every canary send.",
        "Append-only audit evidence.",
        "Sanitized history — no message bodies or identifiers retained.",
        "Sanitized failure alerts to admin@bobbyid.com.",
        "General delivery testing kept strictly separate from authentication-flow testing.",
        "Schedule support prepared but disabled until explicit Product Owner approval.",
        "A public inert information route on bobbybrand.com describing the standard.",
        "Implementation completeness never activates a schedule."
      ]
    }
  ],
  "strategy": {
    "purpose": "Most organisations never get a real brand — they get a logo, a colour and a slow drift into inconsistency. Bobby Brand exists to make a complete, governed brand system reachable for everyone, not only for those who can fund a months-long agency project.",
    "mission": "Give every organisation one complete, approved, machine-readable brand system, and keep it consistent everywhere it is used.",
    "vision": "A world where a brand is a live, structured system that people and AI can both read — not a PDF that ages in a shared drive.",
    "positioning": "Bobby Brand is an AI-assisted brand-book platform: it produces complete brand systems — strategy, language, identity and applications — under explicit human approval, and keeps them governed and versioned afterwards.",
    "audiences": [
      {
        "name": "Founders and small companies",
        "need": "A credible complete brand without an agency budget or a three-month timeline."
      },
      {
        "name": "Marketing leads in scale-ups",
        "need": "One authoritative source that stops every team inventing its own version of the brand."
      },
      {
        "name": "Agencies and freelancers",
        "need": "A structured way to deliver and hand over brand systems clients can actually maintain."
      },
      {
        "name": "Product and engineering teams",
        "need": "Brand as data — tokens and rules an app or an AI tool can read directly."
      }
    ],
    "problem": "Brand knowledge lives in people's heads, scattered files and outdated PDFs. Nobody knows which logo, which pink, which tone or which claim is current. Every new asset drifts a little further from the last one.",
    "promise": "One complete brand system, explicitly approved by you, kept versioned and readable by both humans and machines.",
    "valueProposition": "For €199, one time, you get a complete brand book — strategy, voice, vocabulary, identity, colour, typography and application guidance — not a logo file. It stays in your workspace, versioned, with every rejected direction preserved as evidence of how you decided.",
    "differentiators": [
      "Complete systems, not logo packs.",
      "Five genuinely distinct directions — different positioning, symbol, colour logic, typography and voice, not five colourways.",
      "Explicit human approval at every gate; nothing is 'auto-approved'.",
      "Immutable version history — rejected directions are archived, never deleted.",
      "Designed from day one to be readable as structured data by apps and AI tools.",
      "One-time price for the brand book, with continued workspace access afterwards."
    ],
    "personality": [
      "Spectacular",
      "Precise",
      "Playful",
      "Direct",
      "Generous with clarity",
      "Never hype-driven"
    ],
    "archetype": "The Magician with a Creator's discipline: transformation you can see, backed by rules you can audit.",
    "story": "Bobby Brand started from a simple irritation: brands are treated as artwork when they are really systems. A colour is a decision. A tone of voice is a decision. A logo at 16px is a decision. Most of those decisions are made once, badly documented, and then quietly re-made by whoever needs an asset on a Friday afternoon. Bobby Brand makes each decision explicit, shows it to you, waits for your approval, and then keeps it — as a document you can read and as data your systems can query. The beam in our mark is the point: one signal, sent once, travelling unchanged across every surface it reaches.",
    "descriptions": {
      "oneSentence": "Bobby Brand builds complete, approved, machine-readable brand systems.",
      "short": "Bobby Brand is an AI-assisted platform that creates complete brand books — strategy, voice, identity and applications — under your explicit approval, and keeps them versioned in your workspace.",
      "medium": "Bobby Brand turns a brand from scattered files into one governed system. You start a new brand or upload an existing one, compare five genuinely distinct complete directions, request corrections, and approve exactly one. What you get back is a complete brand book: purpose, positioning, audiences, tone of voice, vocabulary, logo system, colour tokens, typography, emoji rules, social copy and application guidance — plus a structured representation your website, apps and AI tools can read. €199, one time. The brand book stays yours.",
      "full": "Bobby Brand is a brand-book generation and governance platform. It exists because most organisations own brand fragments rather than a brand: a logo file, a hex code somebody remembers, a tone of voice that changes with whoever is writing. Bobby Brand produces the whole system in one guided pass. You choose a pathway — create a new brand, or upgrade an existing one by analysing what is already live. You receive five complete, genuinely distinct directions (for an existing brand: five evolutionary directions plus two revolutionary logo concepts). You compare them side by side at real sizes, in real applications, request corrections, and approve one. Bobby Brand then assembles the canonical brand book: strategy and positioning, audiences and problem framing, promise and value proposition, personality and voice, vocabulary and naming conventions, the logo system with clear-space and minimum-size rules, a governed colour token system with contrast evidence, a typography system with licensing you can actually use, an emoji system, social copy and templates, digital and business applications, and do/don't guidance. Everything is versioned: rejected directions are archived as decision evidence rather than deleted, and every approval is recorded against the person who made it. The result is delivered twice — once as a brand book people read, and once as structured data that apps and AI tools can query. Post-completion work uses Bobby Credits; the brand book itself is a one-time €199 purchase and remains in your workspace.",
      "elevatorPitch": "You know how every company has a logo but almost none of them have a brand anybody can actually follow? Bobby Brand generates the whole system — strategy, voice, colour, typography, applications — you approve one of five complete directions, and it stays versioned in your workspace as something both your team and your AI tools can read. €199, once.",
      "boilerplate": "Bobby Brand is an AI-assisted brand-book platform that creates complete, governed brand systems — strategy, tone of voice, visual identity and applications — under explicit human approval. Brand books are delivered as both human-readable documents and structured, machine-readable data, versioned in the customer's workspace. Bobby Brand is developed by the Bobby Brand pilot team."
    },
    "tagline": "Brand systems on autopilot",
    "supportingTaglines": [
      "One signal. Every surface.",
      "A complete brand, not a logo file.",
      "Decide once. Stay consistent everywhere.",
      "Your brand, readable by humans and machines.",
      "Five complete directions. You approve one."
    ],
    "vocabulary": [
      {
        "term": "Complete Brand Book",
        "meaning": "The full deliverable: strategy, language, identity and applications. €199, one time.",
        "not": "'brand kit', 'logo package'"
      },
      {
        "term": "Direction",
        "meaning": "One complete candidate brand system. Bobby Brand produces five.",
        "not": "'option', 'concept', 'mockup'"
      },
      {
        "term": "Beeldmerk",
        "meaning": "The symbol alone, without the wordmark.",
        "not": "'icon' (an icon is UI furniture)"
      },
      {
        "term": "Lockup",
        "meaning": "An approved fixed arrangement of beeldmerk, wordmark and descriptor.",
        "not": "'logo variation'"
      },
      {
        "term": "Bobby Credits",
        "meaning": "The unit for post-completion work: revisions, extra assets, additional directions.",
        "not": "'tokens', 'points', 'coins'"
      },
      {
        "term": "Workspace",
        "meaning": "The tenant that owns brand projects, people and billing.",
        "not": "'account', 'organisation'"
      },
      {
        "term": "Approval gate",
        "meaning": "A point where a named human must explicitly approve before work continues.",
        "not": "'sign-off flow'"
      },
      {
        "term": "Provenance",
        "meaning": "Where a fact came from: Observed, Inferred or Approved.",
        "not": "'source data'"
      },
      {
        "term": "Upgrade Existing Brand",
        "meaning": "The pathway that analyses a live brand and proposes evolutionary and revolutionary directions.",
        "not": "'rebrand'"
      }
    ],
    "namingConventions": [
      "The product is 'Bobby Brand' — two words, both capitalised. Never 'BobbyBrand', 'bobbybrand' outside a URL, or 'Bobby'.",
      "Features are named as plain nouns: Complete Brand Book, Brand Studio, Bobby Credits, Workspace.",
      "Version identifiers are semantic with an explicit state suffix: 0.1.0-candidate, 1.0.0-approved.",
      "Asset identifiers are lowercase kebab-case, scoped: bb-logo-horizontal-dark-svg.",
      "Never invent capability names for things that are not implemented."
    ],
    "voice": {
      "principles": [
        "Say the true thing first. Status before enthusiasm.",
        "Be spectacular about the outcome, precise about the mechanism.",
        "Short sentences. Concrete nouns. No filler adverbs.",
        "Name the human in the loop: you decide, you approve, you own it.",
        "Playful in the margins, never in the facts.",
        "Never claim a capability that has not been implemented and verified."
      ],
      "wordsToUse": [
        "complete",
        "approved",
        "versioned",
        "governed",
        "direction",
        "system",
        "evidence",
        "yours",
        "one-time",
        "consistent",
        "signal"
      ],
      "wordsToAvoid": [
        "revolutionary (as filler)",
        "seamless",
        "effortless",
        "world-class",
        "unlimited",
        "guaranteed",
        "instantly",
        "industry-leading",
        "trusted by thousands",
        "AI magic",
        "10x"
      ],
      "doDont": [
        {
          "do": "Five complete directions. You approve one.",
          "dont": "Unlimited AI-generated logos in seconds!"
        },
        {
          "do": "Checkout is not active in the pilot.",
          "dont": "Get started today — it only takes a minute!"
        },
        {
          "do": "Your brand book stays in your workspace after completion.",
          "dont": "Lifetime access, forever, guaranteed."
        },
        {
          "do": "This is a preview, not a print-ready file.",
          "dont": "Download your print-ready pack."
        }
      ],
      "cta": [
        {
          "label": "Create My Brand",
          "use": "Primary conversion CTA everywhere."
        },
        {
          "label": "Upgrade my existing brand",
          "use": "Mode B entry."
        },
        {
          "label": "Compare directions",
          "use": "Studio entry."
        },
        {
          "label": "Approve this direction",
          "use": "Owner approval gate."
        },
        {
          "label": "Request a correction",
          "use": "Revision request."
        },
        {
          "label": "Read the brand book",
          "use": "Documentation entry."
        }
      ],
      "modes": [
        {
          "mode": "Error",
          "rule": "Name what failed, what it means, and the one next action. Never blame the user, never apologise twice.",
          "example": "That file didn't upload — it's larger than 20 MB. Try a smaller export, or paste your site URL instead."
        },
        {
          "mode": "Support",
          "rule": "Warm, specific, fast. Confirm what you understood before answering.",
          "example": "You want the magenta swapped in the stacked lockup only — got it. Here's what that changes, and what it costs in credits."
        },
        {
          "mode": "Sales",
          "rule": "Facts and scope, no pressure. Price and limits stated plainly.",
          "example": "€199, one time, for the complete brand book. Post-completion work uses Bobby Credits. No subscription."
        },
        {
          "mode": "Documentation",
          "rule": "Second person, present tense, one instruction per sentence, status labelled honestly.",
          "example": "Approve a direction to lock the colour tokens. Approval is recorded against your name and cannot be edited afterwards."
        }
      ]
    },
    "commercialTruth": [
      "€199 one-time for the Complete Brand Book.",
      "Five genuinely distinct complete directions.",
      "Create New Brand pathway and Upgrade Existing Brand pathway.",
      "Existing-brand pathway: five evolutionary directions plus two revolutionary logo concepts.",
      "Continued workspace access after completion.",
      "Post-completion work may use Bobby Credits.",
      "The included post-completion credit quantity is undecided and must not be stated.",
      "No operational capability may be claimed before it is implemented and verified."
    ]
  },
  "typography": {
    "families": [
      {
        "id": "display",
        "name": "Space Grotesk",
        "licence": "SIL Open Font License 1.1 — free for web, print, merchandise and customer assets.",
        "stack": "\"Space Grotesk\", \"Segoe UI\", ui-sans-serif, system-ui, sans-serif",
        "use": "Display headlines, page titles, section headings, the wordmark, social key art, merchandise.",
        "weights": "500 Medium, 700 Bold"
      },
      {
        "id": "sans",
        "name": "IBM Plex Sans",
        "licence": "SIL Open Font License 1.1 — free for web, print and embedding.",
        "stack": "\"IBM Plex Sans\", ui-sans-serif, system-ui, sans-serif",
        "use": "Body copy, UI labels, buttons, navigation, email, documents.",
        "weights": "400 Regular, 500 Medium, 600 SemiBold"
      },
      {
        "id": "mono",
        "name": "IBM Plex Mono",
        "licence": "SIL Open Font License 1.1.",
        "stack": "\"IBM Plex Mono\", ui-monospace, monospace",
        "use": "Technical metadata, tokens, status labels, code and structured-data presentation.",
        "weights": "400 Regular, 500 Medium"
      }
    ],
    "scale": [
      {
        "role": "Display",
        "font": "Space Grotesk 500",
        "size": "clamp(2.75rem, 6vw, 4.5rem)",
        "lh": "1.02",
        "ls": "-0.03em",
        "note": "Hero only. One per page."
      },
      {
        "role": "Page title (H1)",
        "font": "Space Grotesk 600",
        "size": "2.25–3rem",
        "lh": "1.06",
        "ls": "-0.03em",
        "note": "Exactly one H1 per route."
      },
      {
        "role": "Section heading (H2)",
        "font": "Space Grotesk 600",
        "size": "1.5rem",
        "lh": "1.15",
        "ls": "-0.02em",
        "note": ""
      },
      {
        "role": "Sub-heading (H3)",
        "font": "Space Grotesk 600",
        "size": "1.125rem",
        "lh": "1.25",
        "ls": "-0.01em",
        "note": ""
      },
      {
        "role": "Body",
        "font": "IBM Plex Sans 400",
        "size": "1rem",
        "lh": "1.65",
        "ls": "0",
        "note": "Max 72 characters per line."
      },
      {
        "role": "Body large",
        "font": "IBM Plex Sans 400",
        "size": "1.125rem",
        "lh": "1.6",
        "ls": "0",
        "note": "Intros only."
      },
      {
        "role": "UI label / button",
        "font": "IBM Plex Sans 600",
        "size": "0.875rem",
        "lh": "1.2",
        "ls": "0",
        "note": "Sentence case."
      },
      {
        "role": "Navigation",
        "font": "IBM Plex Sans 500",
        "size": "0.875rem",
        "lh": "1",
        "ls": "0",
        "note": ""
      },
      {
        "role": "Caption",
        "font": "IBM Plex Sans 400",
        "size": "0.8125rem",
        "lh": "1.5",
        "ls": "0",
        "note": "Muted text token."
      },
      {
        "role": "Technical metadata",
        "font": "IBM Plex Mono 500",
        "size": "0.6875rem",
        "lh": "1.3",
        "ls": "0.18em",
        "note": "UPPERCASE. Status, tokens, versions."
      },
      {
        "role": "Code / structured data",
        "font": "IBM Plex Mono 400",
        "size": "0.8125rem",
        "lh": "1.6",
        "ls": "0",
        "note": "Never uppercase."
      },
      {
        "role": "Print body",
        "font": "IBM Plex Sans 400",
        "size": "10pt",
        "lh": "1.5",
        "ls": "0",
        "note": "Documents, invoices, letterhead."
      }
    ],
    "casing": [
      "Sentence case for headings, buttons, navigation and body. Bobby Brand does not shout.",
      "UPPERCASE only for mono technical metadata, with ≥0.18em letter spacing.",
      "Title Case only inside legal document titles and proper product names (Complete Brand Book, Bobby Credits).",
      "Never all-caps a full sentence of body copy."
    ],
    "misuse": [
      "Space Grotesk for paragraphs of body copy.",
      "IBM Plex Mono for headlines.",
      "Faux bold or faux italic — use the shipped weights.",
      "Letter spacing on lowercase body text.",
      "Mixing a fourth typeface into any Bobby Brand asset.",
      "Justified text."
    ]
  },
  "colour": {
    "source": [
      {
        "id": "carbon",
        "name": "Carbon Black",
        "hex": "#09090B",
        "role": "Primary surface. Dark-first canvas for every Bobby Brand appearance.",
        "print": "Rich black — CMYK 75/68/67/90. Never plain 100K on coated stock."
      },
      {
        "id": "magenta",
        "name": "Neon Magenta",
        "hex": "#FF2BD6",
        "role": "Primary brand energy. Beam start, primary accent, key interaction.",
        "print": "Requires a fluorescent or Pantone spot equivalent; process CMYK cannot reach it."
      },
      {
        "id": "cyan",
        "name": "Electric Cyan",
        "hex": "#16E8FF",
        "role": "Secondary brand energy. Beam end, focus, informational accent.",
        "print": "Spot colour recommended; process build is duller by design."
      },
      {
        "id": "white",
        "name": "Clean White",
        "hex": "#F8FAFC",
        "role": "Primary text on dark, light-mode canvas, one-colour reversed logo.",
        "print": "Paper white / knockout."
      },
      {
        "id": "graphite",
        "name": "Neutral Graphite",
        "hex": "#52525B",
        "role": "Neutral structure: borders, muted text, technical metadata.",
        "print": "CMYK 0/0/0/72."
      }
    ],
    "tokens": [
      {
        "group": "Surfaces — dark mode (default)",
        "rows": [
          {
            "token": "--bb-bg",
            "value": "#09090B",
            "tracesTo": "Carbon Black",
            "use": "Page background."
          },
          {
            "token": "--bb-surface",
            "value": "#0F0F13",
            "tracesTo": "Carbon Black +4% white",
            "use": "Sections, sticky header."
          },
          {
            "token": "--bb-card",
            "value": "#151519",
            "tracesTo": "Carbon Black +8% white",
            "use": "Cards, panels."
          },
          {
            "token": "--bb-elevated",
            "value": "#1D1D23",
            "tracesTo": "Carbon Black +12% white",
            "use": "Popovers, hovered cards."
          },
          {
            "token": "--bb-border",
            "value": "#2A2A31",
            "tracesTo": "Neutral Graphite @ 55% on Carbon",
            "use": "Hairlines, dividers, inputs."
          }
        ]
      },
      {
        "group": "Surfaces — light mode",
        "rows": [
          {
            "token": "--bb-bg-light",
            "value": "#F8FAFC",
            "tracesTo": "Clean White",
            "use": "Print, documents, light-mode UI."
          },
          {
            "token": "--bb-card-light",
            "value": "#FFFFFF",
            "tracesTo": "Clean White +",
            "use": "Cards on light."
          },
          {
            "token": "--bb-border-light",
            "value": "#D6D7DC",
            "tracesTo": "Neutral Graphite @ 22%",
            "use": "Light-mode hairlines."
          }
        ]
      },
      {
        "group": "Text",
        "rows": [
          {
            "token": "--bb-text",
            "value": "#F8FAFC",
            "tracesTo": "Clean White",
            "use": "Primary text on dark.",
            "contrast": "18.9:1 on Carbon — AAA"
          },
          {
            "token": "--bb-text-secondary",
            "value": "#C4C4CC",
            "tracesTo": "Clean White → Graphite mix",
            "use": "Body support text.",
            "contrast": "11.2:1 on Carbon — AAA"
          },
          {
            "token": "--bb-text-muted",
            "value": "#8E8E99",
            "tracesTo": "Neutral Graphite lightened",
            "use": "Captions, metadata.",
            "contrast": "5.6:1 on Carbon — AA"
          },
          {
            "token": "--bb-text-inverse",
            "value": "#09090B",
            "tracesTo": "Carbon Black",
            "use": "Text on light or on neon fills."
          },
          {
            "token": "--bb-text-light",
            "value": "#18181B",
            "tracesTo": "Carbon Black lifted",
            "use": "Primary text in light mode.",
            "contrast": "16.4:1 on Clean White — AAA"
          }
        ]
      },
      {
        "group": "Brand interaction",
        "rows": [
          {
            "token": "--bb-magenta",
            "value": "#FF2BD6",
            "tracesTo": "Neon Magenta",
            "use": "Primary accent, beam start, filled CTA background.",
            "contrast": "6.9:1 on Carbon — AA for ≥18px only"
          },
          {
            "token": "--bb-magenta-ink",
            "value": "#FF7BE6",
            "tracesTo": "Neon Magenta lightened 24%",
            "use": "Magenta used AS TEXT at body size.",
            "contrast": "9.4:1 on Carbon — AAA"
          },
          {
            "token": "--bb-cyan",
            "value": "#16E8FF",
            "tracesTo": "Electric Cyan",
            "use": "Secondary accent, beam end, focus ring.",
            "contrast": "11.8:1 on Carbon — AAA"
          },
          {
            "token": "--bb-cyan-ink",
            "value": "#16E8FF",
            "tracesTo": "Electric Cyan",
            "use": "Links and inline accents on dark."
          },
          {
            "token": "--bb-link",
            "value": "#16E8FF",
            "tracesTo": "Electric Cyan",
            "use": "Links on dark; underline on hover."
          },
          {
            "token": "--bb-link-light",
            "value": "#B4009B",
            "tracesTo": "Neon Magenta darkened for light backgrounds",
            "use": "Links on Clean White.",
            "contrast": "5.9:1 on Clean White — AA"
          },
          {
            "token": "--bb-focus",
            "value": "#16E8FF",
            "tracesTo": "Electric Cyan",
            "use": "2px focus outline, 3px offset, every interactive element."
          }
        ]
      },
      {
        "group": "Status (derived, deliberately outside brand energy)",
        "rows": [
          {
            "token": "--bb-success",
            "value": "#2FE38A",
            "tracesTo": "Electric Cyan rotated to green, matched luminance",
            "use": "Confirmed, approved, verified."
          },
          {
            "token": "--bb-warning",
            "value": "#FFC14D",
            "tracesTo": "Neutral warm, matched luminance",
            "use": "Needs owner decision, awaiting review."
          },
          {
            "token": "--bb-error",
            "value": "#FF5A6E",
            "tracesTo": "Neon Magenta rotated to red",
            "use": "Failure, rejection, destructive."
          },
          {
            "token": "--bb-info",
            "value": "#7FD4FF",
            "tracesTo": "Electric Cyan desaturated",
            "use": "Neutral information, pilot notices."
          },
          {
            "token": "--bb-disabled",
            "value": "#52525B",
            "tracesTo": "Neutral Graphite",
            "use": "Disabled controls; always paired with a text explanation."
          }
        ]
      },
      {
        "group": "Gradients & glow",
        "rows": [
          {
            "token": "--bb-beam",
            "value": "linear-gradient(90deg, #FF2BD6 0%, #16E8FF 100%)",
            "tracesTo": "Magenta → Cyan",
            "use": "The beam. Horizontal by default; 96° allowed for text."
          },
          {
            "token": "--bb-beam-soft",
            "value": "linear-gradient(90deg, #FF2BD6 0%, #16E8FF 100%) @ 18% opacity",
            "tracesTo": "Beam",
            "use": "Large background washes and rules."
          },
          {
            "token": "--bb-glow-1",
            "value": "0 0 14px rgba(255,43,214,.28)",
            "tracesTo": "Magenta",
            "use": "Level 1 — subtle. Default for UI."
          },
          {
            "token": "--bb-glow-2",
            "value": "0 0 28px rgba(22,232,255,.30)",
            "tracesTo": "Cyan",
            "use": "Level 2 — hero and key art only."
          },
          {
            "token": "--bb-glow-3",
            "value": "0 0 60px rgba(255,43,214,.34)",
            "tracesTo": "Magenta",
            "use": "Level 3 — full-bleed cinematic backgrounds only. Never on logos below 96px."
          }
        ]
      }
    ],
    "prohibitedCombinations": [
      "Neon Magenta text at body size on Carbon Black — use --bb-magenta-ink instead.",
      "Neon Magenta on Electric Cyan (or the reverse) as text/background pair — 1.7:1, illegible.",
      "Electric Cyan text on Clean White — 1.6:1. Cyan on light is a fill or a rule, never text.",
      "Neon Magenta on Clean White for small text — use --bb-link-light.",
      "Beam gradient behind body copy.",
      "Neutral Graphite text on Carbon Black — 3.0:1, below AA.",
      "Any glow level on text smaller than 18px.",
      "Neon on neon: two brand colours never touch without Carbon or White separating them."
    ]
  },
  "logo": {
    "creativeDirection": {
      "id": "direction-a-brand-beam",
      "name": "Direction A — Brand Beam / Neon Studio",
      "state": "approved_creative_direction",
      "approvedBy": "Alex",
      "approvedAt": "2026-08-25",
      "scope": "This decision approves the creative direction and the source palette only. It does not approve any specific refined mark geometry, any exported asset, any copy line as final, or any operational capability."
    },
    "canonicalMark": {
      "state": "selected_canonical_construction",
      "resolved": true,
      "id": "r1-true-aperture",
      "name": "R1 — True Aperture",
      "selectedBy": "Alex (alex@siteways.io) — Platform Owner & Product Owner",
      "selectedAt": "2026-08-25",
      "sourceOfTruth": "src/lib/r1-geometry.ts — r1Svg()",
      "singleSourceRule": "R1 is drawn in exactly one place. React components, favicons, app icons, avatars, social, email and print exports all call r1Svg(). No independent redraw is permitted.",
      "approvalState": "Product Owner accepted corrected 0.2.0-candidate and promoted it to canonical 1.0.0; no Platform Owner database role is provisioned",
      "construction": {
        "id": "r1-true-aperture",
        "name": "R1 — True Aperture",
        "state": "selected_canonical_construction",
        "selectedBy": "Alex (alex@siteways.io) — Platform Owner & Product Owner",
        "selectedAt": "2026-08-25",
        "sourceOfTruth": "src/lib/r1-geometry.ts — r1Svg()",
        "singleSourceRule": "R1 is drawn in exactly one place. React components, favicons, app icons, avatars, social, email and print exports all call r1Svg(). No independent redraw is permitted.",
        "circleGeometry": "Perfect circle, centre 50,50 on a 100-unit grid, radius 40 (full) / 38 (micro). No squircle, no ellipse, no optical flattening.",
        "ringThickness": "6 units full R1 (6% of the grid). 11 units micro R1 — an optical correction, not a new shape.",
        "beamThickness": "Primary (magenta) beam 9 units; secondary (cyan) beams 7 units. Micro R1: 11 and 9 units respectively.",
        "beamLengths": "Full R1: cyan 38, magenta 62 (breaks out through the ring), cyan 30. Micro R1: cyan 40, magenta 64.",
        "beamSpacing": "7 units edge-to-edge between beams in full R1; 9 units in micro R1 (increased internal spacing).",
        "opticalCentring": "Beams are left-aligned at x=24 (full) / x=22 (micro) and the beam block is centred on the optical axis y=50, not the arithmetic bounding box. The long magenta beam crosses the ring on the horizontal axis.",
        "colourAssignments": "Ring: Clean White on dark, Carbon Black on light, single colour in monochrome. Long beam: Neon Magenta. Short beams: Electric Cyan. The cyan-over-magenta beam relationship is fixed and may never be inverted.",
        "clearSpace": "Minimum clear space equals the ring thickness × 2 (12 grid units = 12% of mark height) on all four sides. Nothing may enter it.",
        "alignment": "In lockups the beeldmerk optical centre aligns to the wordmark's cap-height centre, not to its bounding box.",
        "glowConstruction": "Gaussian blur stdDeviation 2.2 grid units merged under the source graphic, applied to the beams only — never to the ring. Permitted at ≥96 px rendered size.",
        "noGlowConstruction": "Identical geometry with the filter removed. The no-glow build is the default for favicons, app icons, print, embroidery and any rendered size below 96 px.",
        "monochromeConstruction": "Ring and all beams take one colour (white, carbon or graphite). Beam lengths and spacing are unchanged, so the aperture and the beam hierarchy still read.",
        "minimumSizes": "Full R1: 32 px digital, 12 mm print. Micro R1: 16 px digital minimum. Below 16 px no Bobby Brand mark may be used.",
        "responsiveVariants": "Micro R1 is used BELOW 32 px (16–31 px). Full R1 is used AT AND ABOVE 32 px, so 32 px itself renders full R1.",
        "breakpointEvidence": "Rendered and rasterised at 16, 20, 24, 28, 32, 40 and 48 px in both constructions. At 28 px and below the 6-unit full-R1 ring falls under 1.7 device px at 1× and the lower secondary cyan beam merges optically into the ring; the 11-unit micro ring holds a full device pixel at 16 px. 32 px is the first size at which the ring and all three beams stay separately legible at 1×, so 32 px renders full R1 and every size below it renders micro R1.",
        "prohibitedDerivations": [
          "Replacing the circle with R2's squircle.",
          "Removing or opening the aperture as in R3.",
          "Substituting a letter or any unrelated form for the aperture.",
          "Creating a second, independent Bobby Brand logo.",
          "Inverting the cyan-over-magenta beam relationship."
        ]
      },
      "geometry": {
        "grid": 100,
        "circle": {
          "cx": 50,
          "cy": 50,
          "r": 40
        },
        "full": {
          "ringThickness": 6,
          "ringRadius": 40,
          "beams": [
            {
              "x": 24,
              "y": 32,
              "w": 38,
              "h": 7,
              "role": "secondary"
            },
            {
              "x": 24,
              "y": 46,
              "w": 62,
              "h": 9,
              "role": "primary"
            },
            {
              "x": 24,
              "y": 62,
              "w": 30,
              "h": 7,
              "role": "secondary"
            }
          ],
          "beamSpacing": [
            7,
            7
          ],
          "plateRadius": 22,
          "glow": {
            "stdDeviation": 2.2,
            "minSize": 96
          }
        },
        "micro": {
          "ringThickness": 11,
          "ringRadius": 38,
          "beams": [
            {
              "x": 22,
              "y": 33,
              "w": 40,
              "h": 9,
              "role": "secondary"
            },
            {
              "x": 22,
              "y": 51,
              "w": 64,
              "h": 11,
              "role": "primary"
            }
          ],
          "beamSpacing": [
            9
          ],
          "plateRadius": 20,
          "glow": {
            "stdDeviation": 0,
            "minSize": null
          }
        }
      },
      "elements": [
        {
          "id": "aperture-ring",
          "name": "Aperture ring",
          "role": "Container. A perfect circle, centre 50,50, stroked — never filled.",
          "full": "r = 40, stroke 6",
          "micro": "r = 38, stroke 11 (optical correction — same circle, heavier stroke)",
          "inMicro": true,
          "colour": "Clean White on dark, Carbon Black on light, single colour in monochrome"
        },
        {
          "id": "beam-secondary-upper",
          "name": "Upper secondary beam (cyan)",
          "role": "Sits above the primary beam and establishes the cyan-over-magenta hierarchy.",
          "full": "x 24, y 32, 38 × 7",
          "micro": "x 22, y 33, 40 × 9",
          "inMicro": true,
          "colour": "Electric Cyan #16E8FF"
        },
        {
          "id": "beam-primary",
          "name": "Primary beam (magenta)",
          "role": "The Brand Beam itself. The longest beam; it crosses and breaks the ring on the horizontal axis.",
          "full": "x 24, y 46, 62 × 9",
          "micro": "x 22, y 51, 64 × 11",
          "inMicro": true,
          "colour": "Neon Magenta #FF2BD6"
        },
        {
          "id": "beam-secondary-lower",
          "name": "Lower secondary beam (cyan)",
          "role": "Shortest element. Adds density and rhythm at display sizes only. Carries no unique brand meaning.",
          "full": "x 24, y 62, 30 × 7",
          "micro": "omitted",
          "inMicro": false,
          "colour": "Electric Cyan #16E8FF"
        }
      ],
      "prohibitedDerivations": [
        "Replacing the circle with R2's squircle.",
        "Removing or opening the aperture as in R3.",
        "Substituting a letter or any unrelated form for the aperture.",
        "Creating a second, independent Bobby Brand logo.",
        "Inverting the cyan-over-magenta beam relationship."
      ]
    },
    "microMark": {
      "state": "responsive_derivative",
      "isSeparateLogo": false,
      "derivation": {
        "state": "responsive_derivative_of_r1",
        "isSeparateLogo": false,
        "terminologyCorrection": "Earlier P1D reporting said micro R1 'drops the third beam'. Corrected: micro R1 omits the LOWER SECONDARY CYAN BEAM (element beam-secondary-lower). R1 contains one primary magenta beam and two secondary cyan beams; 'third beam' was ordinal shorthand, not a named element, and is no longer used.",
        "derivationRules": [
          "Rule 1 — Same container. The circle is retained: centre 50,50, concentric, unmodified in shape. Radius moves 40 → 38 only to make room for the heavier stroke inside the same 100-unit grid.",
          "Rule 2 — Same aperture. The ring stays a stroked open circle. It is never filled, never opened into arcs, never cornered.",
          "Rule 3 — Same hierarchy. Cyan above magenta, magenta longest and ring-breaking. The relationship may never be inverted.",
          "Rule 4 — Optical stroke correction only. Ring 6 → 11 and beams 7/9 → 9/11 units. Thickening for rasterisation is permitted; reshaping is not.",
          "Rule 5 — One permitted omission. Only beam-secondary-lower may be removed, and only below the breakpoint. No other element may be added, removed or substituted.",
          "Rule 6 — One renderer. Both variants are produced by r1Body() in this module from one geometry table. There is no second drawing."
        ],
        "preserved": [
          "Perfect circular aperture",
          "Stroked, closed ring",
          "Cyan-over-magenta hierarchy",
          "Primary magenta beam breaking the ring on the horizontal axis",
          "Left-aligned beam block on the optical axis y = 50",
          "Rounded beam caps (rx = height / 2)",
          "Approved source palette only"
        ],
        "notIntroduced": [
          "No R2 squircle / superellipse container.",
          "No R2 knock-out beams in a filled carrier.",
          "No R3 open arcs or removed container.",
          "No letter, monogram, glyph or unrelated symbol substituted for the aperture.",
          "No second independent Bobby Brand mark."
        ],
        "verification": "Verified structurally: micro R1's emitted SVG contains exactly one <circle> with fill=none plus two <rect> beams; full R1 contains the same circle plus three <rect> beams. Element-for-element, micro is full R1 minus beam-secondary-lower with stroke widths corrected."
      },
      "breakpointPx": 32,
      "breakpointSemantics": {
        "breakpointPx": 32,
        "rule": "micro < 32 px ≤ full",
        "statement": "Micro R1 is used below 32 px. Full R1 is used at 32 px and above. 32 px itself renders full R1.",
        "ambiguityNote": "Stated as a half-open interval so no size is served by two constructions: micro covers 16–31 px inclusive, full covers 32 px upward. Below 16 px no Bobby Brand mark may be used."
      },
      "breakpointEvidence": [
        {
          "size": 16,
          "construction": "micro",
          "ringIntegrity": "Full R1 ring = 0.96 device px at 1× → grey mush. Micro ring = 1.76 px → solid.",
          "beamSeparation": "Full: beams merge into one bar. Micro: two beams stay separated by 1.4 px.",
          "colourRecognition": "Magenta and cyan both still identifiable in micro; full reads as one violet smear.",
          "monoRecognition": "Micro reads as ring + two bars. Full reads as a filled disc.",
          "pixelGrid": "Micro coordinates land on whole pixels at 16 px (grid ÷ 6.25).",
          "glow": "Prohibited in both.",
          "highDpi": "At 2× full R1 is borderline acceptable; micro is still preferred for consistency.",
          "normalDpi": "Micro only."
        },
        {
          "size": 20,
          "construction": "micro",
          "ringIntegrity": "Full ring 1.2 px, breaks up. Micro ring 2.2 px, clean.",
          "beamSeparation": "Full: lower two beams touch. Micro: clear.",
          "colourRecognition": "Clear in micro.",
          "monoRecognition": "Aperture clearly circular in micro.",
          "pixelGrid": "Stable.",
          "glow": "Prohibited.",
          "highDpi": "Full acceptable at 2×; micro still adopted.",
          "normalDpi": "Micro only."
        },
        {
          "size": 24,
          "construction": "micro",
          "ringIntegrity": "Full ring 1.44 px — greys out. Micro ring 2.64 px.",
          "beamSeparation": "Full: lower secondary beam merges into the ring. Micro: clear.",
          "colourRecognition": "Both hues legible in micro; magenta dominates in full.",
          "monoRecognition": "Micro holds; full loses the aperture.",
          "pixelGrid": "Stable.",
          "glow": "Prohibited.",
          "highDpi": "Full is usable at 2× but inconsistent with 1× — micro adopted for both.",
          "normalDpi": "Micro only."
        },
        {
          "size": 28,
          "construction": "micro",
          "ringIntegrity": "Full ring 1.68 px — still under two device px, edges anti-alias to grey.",
          "beamSeparation": "Full: 1.96 px gaps; the lower beam and the ring visually fuse.",
          "colourRecognition": "Full: cyan beams desaturate against the ring. Micro: unaffected.",
          "monoRecognition": "Full: aperture closes optically. Micro: intact.",
          "pixelGrid": "Full R1 beams land on half pixels at 28 px; micro stays whole-pixel.",
          "glow": "Prohibited.",
          "highDpi": "Full is acceptable at 2× (3.4 px ring) — but 1× governs, so micro is used.",
          "normalDpi": "Micro only. Last micro size."
        },
        {
          "size": 32,
          "construction": "full",
          "ringIntegrity": "Full ring 1.92 px — holds with clean anti-aliasing. Adopted breakpoint.",
          "beamSeparation": "All three beams separate; 2.24 px gaps.",
          "colourRecognition": "Magenta, cyan and cyan all individually identifiable.",
          "monoRecognition": "Ring and three bars read as one mark, aperture open.",
          "pixelGrid": "Grid ÷ 3.125 — beam edges land within a quarter pixel.",
          "glow": "Prohibited (below 96 px).",
          "highDpi": "Excellent at 2×.",
          "normalDpi": "Acceptable at 1× — this is exactly why 32 px is the breakpoint."
        },
        {
          "size": 40,
          "construction": "full",
          "ringIntegrity": "2.4 px — comfortable.",
          "beamSeparation": "Clear at 1×.",
          "colourRecognition": "Full palette reads.",
          "monoRecognition": "Full construction reads in one colour.",
          "pixelGrid": "Stable.",
          "glow": "Prohibited.",
          "highDpi": "Excellent.",
          "normalDpi": "Comfortable."
        },
        {
          "size": 48,
          "construction": "full",
          "ringIntegrity": "2.88 px — as drawn.",
          "beamSeparation": "As drawn.",
          "colourRecognition": "As drawn.",
          "monoRecognition": "As drawn.",
          "pixelGrid": "Stable.",
          "glow": "Prohibited below 96 px.",
          "highDpi": "As drawn.",
          "normalDpi": "As drawn."
        }
      ],
      "sizeLadder": [
        {
          "size": 16,
          "variant": "micro",
          "verdict": "Ring holds 1 device px; two beams legible. Minimum permitted size."
        },
        {
          "size": 20,
          "variant": "micro",
          "verdict": "Aperture clearly circular; beam hierarchy readable."
        },
        {
          "size": 24,
          "variant": "micro",
          "verdict": "Comfortable. Full R1 ring would render at 1.4 px and grey out here."
        },
        {
          "size": 32,
          "variant": "full",
          "verdict": "Breakpoint. All three beams and the thin ring separate."
        },
        {
          "size": 48,
          "variant": "full",
          "verdict": "Full construction as drawn."
        },
        {
          "size": 64,
          "variant": "full",
          "verdict": "Full construction as drawn."
        },
        {
          "size": 96,
          "variant": "full",
          "verdict": "Glow permitted from this size upward."
        },
        {
          "size": 128,
          "variant": "full",
          "verdict": "Display size. Glow permitted."
        }
      ]
    },
    "decorativeBeamMotif": {
      "id": "brand-beam-motif",
      "name": "Brand Beam motif",
      "classification": "decorative_graphic_element",
      "definition": "Three floating cyan/magenta/cyan rounded bars used only as supporting decoration.",
      "identityMark": false,
      "rules": [
        "May be used in layouts, backgrounds and supporting compositions.",
        "May not replace R1 in any logo or context lockup.",
        "May not be called R1 Full, R1 Micro, beeldmerk or logo.",
        "May not be used as favicon, app icon, avatar or identity mark.",
        "Must remain visibly subordinate to a complete R1 identity mark when both appear."
      ]
    },
    "rules": {
      "clearSpace": "Clear space equals the beam height (the thick centre beam) on all four sides. For the wordmark, it equals the cap height of 'B'. Nothing — not text, not an edge, not another logo — enters that area.",
      "breakpoints": [
        {
          "range": "≥ 96 px",
          "variant": "Full beeldmerk",
          "detail": "Three beams, aperture ring, optional glow level 1."
        },
        {
          "range": "32–95 px",
          "variant": "Simplified beeldmerk",
          "detail": "Two beams, thicker ring, no glow."
        },
        {
          "range": "16–31 px",
          "variant": "Micro beeldmerk",
          "detail": "One beam, solid ring, pixel-aligned, no glow, no rounding below 20px."
        },
        {
          "range": "< 16 px",
          "variant": "Not permitted",
          "detail": "Use a text label instead. The mark is not legible below 16px."
        }
      ],
      "minimums": [
        {
          "context": "Digital beeldmerk",
          "min": "16 px"
        },
        {
          "context": "Digital horizontal lockup",
          "min": "120 px wide"
        },
        {
          "context": "Lockup with descriptor",
          "min": "180 px wide — below this, drop the descriptor"
        },
        {
          "context": "Print beeldmerk",
          "min": "8 mm"
        },
        {
          "context": "Print horizontal lockup",
          "min": "32 mm wide"
        },
        {
          "context": "Embroidery",
          "min": "25 mm — one colour, no ring detail below this"
        },
        {
          "context": "Vehicle / signage",
          "min": "150 mm, viewed from ≥ 3 m"
        }
      ],
      "glow": [
        "Glow is decoration, never structure: the mark must be fully recognisable with glow removed.",
        "Glow level 1 only on marks ≥ 96 px. Levels 2–3 are background art, never applied to the mark itself.",
        "No glow in print, embroidery, signage, favicons, app icons or monochrome use.",
        "No glow on light backgrounds."
      ],
      "backgrounds": [
        "Carbon Black or near-black: full-colour mark. Preferred.",
        "Clean White or light: full-colour mark with the ring in Carbon, never a white ring.",
        "Photography: only on an area with ≥ 60% uniform luminance contrast, or place the mark inside a Carbon container.",
        "Brand-colour fields: monochrome white or monochrome Carbon only — never full colour on magenta or cyan."
      ],
      "prohibited": [
        "Stretching or distorting any part of the mark.",
        "Rotating the mark or the beams.",
        "Recolouring outside the approved variants.",
        "Changing beam spacing, length ratios or the ring weight.",
        "Separating the beams from the ring, or using a beam alone as a mark.",
        "Adding drop shadows, bevels, outlines or uncontrolled glow.",
        "Excessive glow, or glow at small sizes.",
        "Placing the mark on low-contrast or busy backgrounds.",
        "Using the descriptor below its readable minimum (180 px lockup width / 9 px descriptor).",
        "Substituting a letter, monogram or unrelated mark at small sizes.",
        "Re-typesetting the wordmark in a different typeface or weight.",
        "Boxing the lockup in a border that violates clear space."
      ],
      "coBranding": [
        "Partner marks sit to the right of the Bobby Brand lockup, separated by a 1px Graphite rule at 2× clear space.",
        "Both marks are optically matched on cap height, not bounding box.",
        "Bobby Brand never appears smaller than a partner mark in Bobby-owned material, and never larger in partner-owned material.",
        "No lockup merging, no shared containers, no combined gradients."
      ]
    },
    "refinementCandidates": [
      {
        "id": "r1",
        "name": "R1 — True aperture",
        "state": "candidate_refinement",
        "selected": false,
        "approved": false,
        "canonical": false,
        "preferred": false,
        "premise": "Keeps the P1B circular container. The ring is a perfect circle; beams are optically centred rather than mathematically centred.",
        "rationale": "Treats the Brand Beam as an optical instrument: a closed aperture with the beam passing through it. The most literal reading of the approved concept.",
        "constructionChanges": [
          "Ring stroke 6/100 units, unchanged across variants for a consistent optical weight.",
          "Beams re-spaced on a 12-unit rhythm; centre beam breaks the ring by 8 units to signal travel.",
          "Beam ends fully rounded (radius = half beam height).",
          "Beam lengths follow 0.62 / 1.0 / 0.48 — a clear dominant signal."
        ],
        "differencesFromConcept": [
          "Ring is now a mathematically perfect circle at a constant 6/100 stroke, where the P1B concept varied stroke by size.",
          "Beams are optically centred rather than centred on the bounding box.",
          "The dominant beam now breaks the ring by 8 units to express travel.",
          "Beam length ratios fixed at 0.62 / 1.00 / 0.48."
        ],
        "strengths": [
          "Closest to the direction the owner approved — lowest interpretation risk.",
          "Reads as a lens/aperture, which supports the 'signal' story.",
          "Works well in the horizontal lockup: the circle balances the wordmark's cap height."
        ],
        "topStrength": "Closest to the direction the owner approved — lowest interpretation risk.",
        "risks": [
          "A thin circular ring is the least distinctive silhouette at 16–24 px.",
          "Ring stroke is close to hairline in embroidery below 25 mm.",
          "Three beams inside a circle can look busy on photographic backgrounds."
        ],
        "topRisk": "A thin circular ring is the least distinctive silhouette at 16–24 px.",
        "responsive": [
          "≥ 96 px: full — three beams, ring, optional glow level 1.",
          "32–95 px: simplified — two beams, no glow.",
          "16–31 px: micro — one beam, thicker 8-unit ring, pixel-aligned, no rounding below 20 px.",
          "< 16 px: text label only."
        ],
        "tradeoff": "Most faithful to the approved concept; the circle is the least distinctive part at favicon size.",
        "recommendedByLovable": false,
        "assetFamilyGenerated": false
      },
      {
        "id": "r2",
        "name": "R2 — Squircle carrier",
        "state": "candidate_refinement",
        "selected": false,
        "approved": false,
        "canonical": false,
        "preferred": false,
        "premise": "Replaces the circle with a superellipse container, matching app-icon geometry so the mark and the app icon are the same object.",
        "rationale": "Treats the Brand Beam as a product object: a filled squircle carrier with the beams knocked out, so the mark and the app icon are literally the same geometry.",
        "constructionChanges": [
          "Squircle carrier (28/100 corner radius) instead of a ring outline.",
          "Beams knock out of the carrier rather than sitting inside it — one-colour and embroidery safe by construction.",
          "Higher fill area means better recognition at 16–24 px.",
          "Beam lengths 0.55 / 1.0 / 0.42, flush left, breaking the right edge."
        ],
        "differencesFromConcept": [
          "Container changes from a circle to a superellipse with a 28/100 corner radius.",
          "Beams are knock-outs in a filled carrier instead of positive shapes inside an outline.",
          "Full-colour version carries a magenta→cyan gradient across the carrier rather than in the beams.",
          "Beam ratios 0.55 / 1.00 / 0.42, flush left."
        ],
        "strengths": [
          "Highest recognition at 16–24 px because the silhouette is solid, not linear.",
          "One-colour and embroidery safe by construction — no hairlines anywhere.",
          "App icon, favicon and avatar need no separate construction."
        ],
        "topStrength": "Highest recognition at 16–24 px because the silhouette is solid, not linear.",
        "risks": [
          "Reads more as a software product icon than as a brand symbol.",
          "Knock-out beams require a known background colour; on photography it needs a plate.",
          "Large solid neon fill can dominate a page and fight the dark-first palette."
        ],
        "topRisk": "Reads more as a software product icon than as a brand symbol.",
        "responsive": [
          "≥ 96 px: full — three knock-out beams, 28-unit radius.",
          "32–95 px: simplified — two knock-out beams, slightly heavier beams.",
          "16–31 px: micro — one beam, 22-unit radius.",
          "Print/embroidery: single-colour carrier, beams knocked to the substrate."
        ],
        "tradeoff": "Reads strongest at small sizes and on merchandise; less 'optical instrument', more 'product icon'.",
        "recommendedByLovable": true,
        "assetFamilyGenerated": false
      },
      {
        "id": "r3",
        "name": "R3 — Open beam",
        "state": "candidate_refinement",
        "selected": false,
        "approved": false,
        "canonical": false,
        "preferred": false,
        "premise": "Drops the closed container entirely: two arc fragments imply the aperture while the beam passes through unobstructed.",
        "rationale": "Treats the Brand Beam as motion: the container is opened into two arc fragments so the beam visibly travels through, unobstructed.",
        "constructionChanges": [
          "Ring reduced to two 96° arcs, top-left and bottom-right.",
          "Single dominant beam plus one supporting beam; no third beam at any size.",
          "Maximum negative space, strongest at large display sizes.",
          "Micro variant becomes the beam alone inside a Carbon square."
        ],
        "differencesFromConcept": [
          "The closed container is abandoned; only two 96° arcs remain, top-left and bottom-right.",
          "Beam extends beyond the implied circle on both sides.",
          "Third beam is dropped entirely at every size.",
          "Micro variant becomes the beam alone inside a Carbon square."
        ],
        "strengths": [
          "Most distinctive and most energetic at hero and display sizes.",
          "Maximum negative space — excellent on dark cinematic backgrounds.",
          "Strong asymmetry makes it memorable next to competitors' closed roundels."
        ],
        "topStrength": "Most distinctive and most energetic at hero and display sizes.",
        "risks": [
          "Rounded arc caps degrade quickly below 24 px and in embroidery.",
          "The micro variant loses the arcs entirely, so brand recognition at 16 px depends on colour alone.",
          "Open form is harder to place in tight navigation and avatar circles."
        ],
        "topRisk": "Rounded arc caps degrade quickly below 24 px and in embroidery.",
        "responsive": [
          "≥ 96 px: full — two arcs, dominant beam plus one supporting beam.",
          "32–95 px: simplified — two arcs, single beam, heavier stroke.",
          "24–31 px: arcs dropped; beam inside a Carbon square.",
          "< 24 px: not recommended — use the wordmark or a text label."
        ],
        "tradeoff": "Most distinctive at hero scale; the arcs are fragile below 24 px and in embroidery.",
        "recommendedByLovable": false,
        "assetFamilyGenerated": false
      }
    ],
    "recommendation": {
      "id": "rec-p1c-0001",
      "state": "historical_non_binding_advice",
      "supersededByOwnerDecision": "bb-decision-0002 — R1 selected. The recommendation was not followed.",
      "followed": false,
      "label": "Design recommendation (P1C, historical) — evidence only, NOT owner approval",
      "recommends": "R2 — Squircle carrier",
      "recommendedCandidateId": "r2",
      "binding": false,
      "carriesOwnerApproval": false,
      "reasonsFor": [
        "It is the only candidate that survives every required context without a second construction: 16 px favicon, one-colour embroidery, photographic background and app icon.",
        "Small-size inspection shows R1's ring collapsing to a grey circle at 16 px and R3 losing its arcs entirely.",
        "R2 keeps the beam ratio and the magenta→cyan travel that the owner approved."
      ],
      "reasonsAgainst": [
        "R1 is the most faithful to the approved concept and the safest interpretation decision.",
        "R3 is the strongest brand statement at display sizes, where most first impressions are formed."
      ],
      "disclaimer": "This is a documented design opinion with rendered evidence. It is not an approval, and no asset family has been generated from it."
    },
    "resolvedRefinementDecision": {
      "id": "decision-refinement-selection",
      "state": "resolved",
      "question": "Which Brand Beam beeldmerk refinement becomes canonical: R1, R2 or R3?",
      "options": [
        "r1",
        "r2",
        "r3"
      ],
      "selected": "r1",
      "rejected": [
        "r2",
        "r3"
      ],
      "decidedBy": "Alex — Product Owner; intended Platform Owner",
      "decidedAt": "2026-08-25",
      "recordId": "bb-decision-0002",
      "reasons": [
        "Most faithful to the approved Brand Beam concept.",
        "The circular aperture is distinctive and ownable.",
        "Preserves the neon identity and the beam metaphor.",
        "Works as avatar and badge."
      ],
      "unblocked": [
        "del-favicon-family",
        "del-logo-pack",
        "del-packaging"
      ],
      "requestedAction": "None outstanding for the brand system: 0.2.0-candidate was approved on 2026-08-26 (bb-acceptance-0001) and promoted to canonical 1.0.0.",
      "otherOpenDecisions": [
        "Included post-completion Bobby Credit quantity (undecided)."
      ]
    },
    "lockups": [
      "horizontal",
      "horizontal-descriptor",
      "stacked",
      "stacked-descriptor",
      "beeldmerk-only",
      "wordmark-only",
      "navigation",
      "mobile-header",
      "console",
      "admin",
      "email",
      "social-profile"
    ],
    "tones": [
      "fullColour-dark",
      "fullColour-light",
      "monoWhite",
      "monoCarbon",
      "monoGraphite",
      "no-glow"
    ]
  },
  "designSystem": {
    "iconography": {
      "style": "Single-weight 1.75px outline icons on a 24px grid, rounded caps and joins, 2px corner radius, no fills, no duotone.",
      "colour": "Icons inherit text colour. Electric Cyan only when the icon expresses state or focus; never magenta at icon scale.",
      "rules": [
        "One icon family only. Never mix outline and filled sets.",
        "Icons support a label; they never replace one in navigation or buttons.",
        "Minimum rendered size 16px; below that use text.",
        "No icon carries brand identity — the beeldmerk is not an icon."
      ]
    },
    "imagery": {
      "direction": "Dark, cinematic, high-contrast. Light behaving as a physical object: beams, apertures, refraction, long exposure.",
      "treatment": "Carbon-graded shadows, one neon light source, no warm skin-tone push. Photography is always dimmed under text with a Carbon scrim at ≥ 60% opacity.",
      "avoid": [
        "Stock-photo teams pointing at laptops.",
        "Purple/indigo AI clichés and glowing brain imagery.",
        "Busy gradient meshes behind copy.",
        "Faces used as decoration."
      ],
      "status": "Direction authored in P1C. No photographic library has been produced or licensed."
    },
    "graphicElements": [
      {
        "name": "The beam",
        "use": "Magenta→cyan rule, 3px on screen. Opens or closes a surface. Maximum one per viewport.",
        "rule": "Always horizontal or at 96°; never vertical text-length rules under body copy."
      },
      {
        "name": "Beam field",
        "use": "Large, low-opacity gradient wash behind hero sections.",
        "rule": "Never behind body copy; never above 20% opacity."
      },
      {
        "name": "Aperture arc",
        "use": "Structural arc fragment borrowed from the mark, used as a section marker.",
        "rule": "Never combined with the beeldmerk in the same composition."
      },
      {
        "name": "Mono metadata strip",
        "use": "Uppercase mono line carrying status, version or token names.",
        "rule": "≥ 0.18em tracking; never longer than one line."
      },
      {
        "name": "Hairline grid",
        "use": "1px Graphite structure for tables and specimen frames.",
        "rule": "Never used as decoration."
      }
    ],
    "layout": {
      "grid": "12-column fluid grid, 1280px max content width, 24px gutters desktop / 16px mobile.",
      "spacing": "4px base scale: 4, 8, 12, 16, 24, 32, 48, 64, 96, 128.",
      "radii": "8px controls, 12px inputs, 16px cards, 24px panels, 999px pills. App-icon plate 22/100 units.",
      "elevation": "Elevation is expressed by surface tone first, shadow second. Maximum two elevation steps per view.",
      "rules": [
        "One display heading per page.",
        "Body copy never exceeds 72 characters per line.",
        "Sections separated by tone change, not by decorative dividers.",
        "Mobile-first: every specimen table scrolls horizontally rather than shrinking type."
      ]
    },
    "motion": {
      "principles": [
        "Motion expresses travel — things arrive along the beam axis.",
        "Durations 120ms (state), 240ms (entry), 480ms (hero). Nothing longer.",
        "Easing: cubic-bezier(0.2, 0.8, 0.2, 1) for entry, linear for continuous beams.",
        "Motion never carries information on its own.",
        "Everything is suppressed under prefers-reduced-motion: reduce."
      ],
      "prohibited": [
        "Parallax on text.",
        "Looping glow pulses under body copy.",
        "Bounce or elastic easing.",
        "Auto-playing video in a hero."
      ]
    }
  },
  "emoji": {
    "primary": [
      {
        "e": "⚡",
        "name": "Beam",
        "use": "The signature. Brand energy, launches, the beam metaphor."
      },
      {
        "e": "🩷",
        "name": "Magenta heart",
        "use": "Brand warmth, community, thanks."
      },
      {
        "e": "🧊",
        "name": "Cyan cube",
        "use": "Structure, tokens, the system side of Bobby Brand."
      }
    ],
    "supporting": [
      {
        "e": "🎯",
        "name": "Positioning",
        "use": "Strategy and audience posts."
      },
      {
        "e": "🧭",
        "name": "Direction",
        "use": "Choosing between directions."
      },
      {
        "e": "📐",
        "name": "Craft",
        "use": "Geometry, spacing, logo rules."
      },
      {
        "e": "🗂️",
        "name": "Brand book",
        "use": "Chapters and structure."
      }
    ],
    "functional": [
      {
        "e": "✅",
        "name": "Approved",
        "use": "Approved state only — never as decoration."
      },
      {
        "e": "🕗",
        "name": "Awaiting decision",
        "use": "Open owner decision."
      },
      {
        "e": "🚧",
        "name": "Not operational",
        "use": "Pilot limitation labels."
      },
      {
        "e": "⚠️",
        "name": "Warning",
        "use": "Misuse, contrast failure, risk."
      }
    ],
    "avoid": [
      "🔥",
      "🚀",
      "💯",
      "🤯",
      "🙏",
      "💰",
      "😂",
      "Any skin-tone or identity-specific emoji in brand-owned copy",
      "Emoji inside legal, invoice or error text"
    ],
    "rules": [
      "Maximum two emoji per social post; maximum one in product UI.",
      "Never open a headline with an emoji; never end a sentence with a bare emoji.",
      "Functional emoji carry meaning — never reuse ✅ decoratively.",
      "No emoji in legal pages, invoices, error messages or the wordmark.",
      "Emoji never replace a word in a sentence."
    ],
    "examples": [
      {
        "context": "Social",
        "text": "Five complete directions. You approve one. ⚡"
      },
      {
        "context": "Support",
        "text": "Fixed — your stacked lockup now uses the approved magenta 🩷"
      },
      {
        "context": "Product",
        "text": "Direction approved ✅ · version 1.0.0-approved"
      }
    ]
  },
  "social": {
    "bioShort": "Complete brand systems on autopilot. Strategy, voice, identity — approved by you. ⚡",
    "bioExtended": "Bobby Brand builds complete, governed brand books: strategy, tone of voice, vocabulary, logo system, colour tokens, typography and applications. Five genuinely distinct directions — you approve one. €199, one time. Human-readable and machine-readable. Currently in pilot; product not yet operational.",
    "posts": [
      {
        "id": "launch",
        "platform": "LinkedIn",
        "label": "Launch announcement",
        "text": "We're building Bobby Brand.\n\nMost companies don't have a brand — they have a logo and a hex code somebody half-remembers. Bobby Brand produces the whole system: strategy, positioning, tone of voice, vocabulary, logo system, colour tokens, typography and applications. Five genuinely distinct complete directions. You approve exactly one.\n\n€199, one time. The brand book stays in your workspace, versioned.\n\nWe're in pilot — nothing is operational yet, and we'll say so plainly until it is. ⚡"
      },
      {
        "id": "product",
        "platform": "X",
        "label": "Product introduction",
        "text": "A logo is one decision.\nA brand is about four hundred.\n\nBobby Brand makes each one explicit, shows it to you, and waits for your approval. ⚡"
      },
      {
        "id": "offer",
        "platform": "Instagram",
        "label": "€199 offer announcement",
        "text": "€199. One time. One complete brand book.\n\nStrategy · voice · vocabulary · logo system · colour tokens · typography · applications.\n\nNot a subscription. Not a logo pack. Post-completion work uses Bobby Credits. 🧊"
      },
      {
        "id": "feature",
        "platform": "LinkedIn",
        "label": "Feature announcement",
        "text": "Every brand book Bobby Brand produces is delivered twice: once as a document your team reads, once as structured data your apps and AI tools can query.\n\nSame content. Same version. No drift between them."
      },
      {
        "id": "education",
        "platform": "LinkedIn",
        "label": "Educational post",
        "text": "Your logo has three jobs your designer probably never tested:\n\n1. A 16px favicon\n2. A one-colour embroidery file\n3. A photograph background\n\nIf it only works at hero size on a white slide, it isn't finished. 📐"
      },
      {
        "id": "tip",
        "platform": "X",
        "label": "Brand tip",
        "text": "Neon brand colour ≠ text colour.\n\nOur own magenta is #FF2BD6. At body size on black we don't use it — we use a lightened ink variant, because 6.9:1 isn't enough for 14px. Brand colours are decisions, not defaults. ⚠️"
      },
      {
        "id": "illustrative",
        "platform": "LinkedIn",
        "label": "Customer-success-style example — ILLUSTRATIVE ONLY, not a real customer",
        "text": "Illustrative example (not a real customer): a five-person studio arrives with three versions of their logo in circulation and no written tone of voice. They compare five directions, approve one, and leave with a versioned brand book their developers can query directly. That's the shape of the product. No real customer results exist yet."
      },
      {
        "id": "community",
        "platform": "Instagram",
        "label": "Playful community post",
        "text": "Show us the worst place your logo has ever ended up.\n\nStretched on a van. Embroidered into a blob. 12px in a footer, unreadable. We'll take the blob. 🩷"
      },
      {
        "id": "facebook",
        "platform": "Facebook",
        "label": "Facebook-style post",
        "text": "What's actually in a Bobby Brand book?\n\nPurpose, positioning, audiences, promise, personality, tone of voice, vocabulary, the full logo system with clear-space and minimum sizes, colour tokens with contrast evidence, typography with usable licences, an emoji system, social copy, and business and merchandise applications.\n\n€199, one time. Pilot in progress — nothing is operational yet."
      }
    ],
    "ctas": [
      "Create My Brand",
      "Compare five directions",
      "See what's in the book",
      "Upgrade an existing brand",
      "Read the brand book"
    ],
    "hashtagRules": [
      "Maximum three hashtags. Never inside a sentence.",
      "Always available: #BobbyBrand.",
      "Topic tags from a fixed set: #BrandSystems #BrandBook #DesignOps #BrandGovernance.",
      "No trend-chasing tags, no #ad-style stuffing, no hashtags on LinkedIn articles."
    ],
    "emojiRules": [
      "Two per post maximum.",
      "Signature ⚡ 🩷 🧊 only; functional emoji only when they carry status."
    ],
    "assetFormats": [
      {
        "id": "avatar",
        "name": "Profile avatar",
        "size": "1024×1024",
        "note": "Simplified beeldmerk on Carbon, safe area 12%."
      },
      {
        "id": "cover",
        "name": "Social cover",
        "size": "1584×396 (LinkedIn)",
        "note": "Beam runs edge to edge; wordmark left, clear space respected."
      },
      {
        "id": "og",
        "name": "Open Graph",
        "size": "1200×630",
        "note": "Horizontal lockup + one line of copy. Never more than 9 words."
      },
      {
        "id": "post",
        "name": "Post template",
        "size": "1080×1080",
        "note": "Beam rule top, statement centre, mono metadata bottom."
      },
      {
        "id": "story",
        "name": "Story template",
        "size": "1080×1920",
        "note": "Beam vertical on the left edge; text block bottom third."
      },
      {
        "id": "thumb",
        "name": "Video thumbnail",
        "size": "1280×720",
        "note": "One statement, beam underline, no faces, no arrows, no shouting."
      }
    ]
  },
  "applications": {
    "notes": {
      "digital": "Rendered live in this pilot as HTML/CSS/SVG. Exportable as SVG/PNG.",
      "print": "Every printed item shown in this pilot is an APPLICATION PREVIEW rendered in the browser. It is not a print-ready file: no bleed, no crop marks, no CMYK/spot separation, no embedded ICC profile, no outlined type. Production export (PDF/X-4 with 3 mm bleed, spot colours for magenta and cyan, outlined wordmark) is a future phase requirement.",
      "merchandise": "Merchandise items are placement previews only. Production requires: one-colour embroidery digitising (DST/EMB), screen-print separations, a minimum 25 mm mark, and substrate-specific colour matching — none of which this phase generates.",
      "vehicle": "Vehicle and signage previews show placement, safe area and minimum size only. Production requires vinyl cut files, substrate colour proofing and installer-supplied templates per vehicle model."
    },
    "previewDisclaimer": "Application previews render the canonical R1 construction (or its micro derivative) from the approved 1.0.0 production system.",
    "previews": [
      {
        "id": "prev-social-avatar",
        "name": "Social avatar",
        "category": "social",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Also compared across R1/R2/R3 in the key-application comparison."
      },
      {
        "id": "prev-social-cover",
        "name": "Social cover",
        "category": "social",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Illustration only."
      },
      {
        "id": "prev-social-post",
        "name": "Post template",
        "category": "social",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Illustration only."
      },
      {
        "id": "prev-social-story",
        "name": "Story template",
        "category": "social",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Illustration only."
      },
      {
        "id": "prev-og",
        "name": "Open Graph card",
        "category": "social",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "No OG image file is generated."
      },
      {
        "id": "prev-email-header",
        "name": "Email header",
        "category": "email",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "No email capability exists."
      },
      {
        "id": "prev-email-signature",
        "name": "Email signature",
        "category": "email",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "No email capability exists."
      },
      {
        "id": "prev-site-desktop",
        "name": "Desktop site header",
        "category": "digital",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Compared across R1/R2/R3 in the key-application comparison."
      },
      {
        "id": "prev-site-mobile",
        "name": "Mobile site header",
        "category": "digital",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Illustration only."
      },
      {
        "id": "prev-appicon",
        "name": "App icon",
        "category": "digital",
        "rendersRefinement": "all",
        "state": "preview",
        "note": "Rendered once per candidate — no candidate is favoured."
      },
      {
        "id": "prev-favicon",
        "name": "Favicon experiment",
        "category": "digital",
        "rendersRefinement": "all",
        "state": "preview",
        "note": "Rendered once per candidate; no favicon family is generated."
      },
      {
        "id": "prev-card",
        "name": "Business card",
        "category": "business",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Compared across R1/R2/R3 in the key-application comparison."
      },
      {
        "id": "prev-letterhead",
        "name": "Letterhead",
        "category": "business",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Not a print-ready file."
      },
      {
        "id": "prev-invoice",
        "name": "Invoice header",
        "category": "business",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Specimen figures; no billing capability."
      },
      {
        "id": "prev-presentation",
        "name": "Presentation cover",
        "category": "business",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Illustration only."
      },
      {
        "id": "prev-signage",
        "name": "Signage",
        "category": "environment",
        "rendersRefinement": "r1",
        "state": "preview",
        "note": "Compared across R1/R2/R3 in the key-application comparison."
      },
      {
        "id": "prev-vehicle",
        "name": "Vehicle branding",
        "category": "environment",
        "rendersRefinement": "r1",
        "state": "mockup",
        "note": "Compared across R1/R2/R3 in the key-application comparison."
      },
      {
        "id": "prev-garments",
        "name": "Apparel (hoodie, tee, cap, tote)",
        "category": "merchandise",
        "rendersRefinement": "r1",
        "state": "mockup",
        "note": "Placement only; no production files."
      },
      {
        "id": "prev-stickers",
        "name": "Sticker set",
        "category": "merchandise",
        "rendersRefinement": "r1",
        "state": "mockup",
        "note": "Placement only; no die-cut files."
      }
    ],
    "comparedAcrossAllCandidates": [
      "app-icon",
      "social-avatar",
      "website-navigation",
      "business-card",
      "vehicle-and-signage"
    ]
  },
  "accessibility": {
    "contrastTargets": "Body text ≥ 4.5:1, large text and UI ≥ 3:1, focus indicator ≥ 3:1 against adjacent colour.",
    "measured": [
      {
        "pair": "Clean White on Carbon Black",
        "ratio": "18.9:1",
        "verdict": "AAA"
      },
      {
        "pair": "--bb-text-secondary on Carbon Black",
        "ratio": "11.2:1",
        "verdict": "AAA"
      },
      {
        "pair": "--bb-text-muted on Carbon Black",
        "ratio": "5.6:1",
        "verdict": "AA"
      },
      {
        "pair": "Electric Cyan on Carbon Black",
        "ratio": "11.8:1",
        "verdict": "AAA"
      },
      {
        "pair": "Neon Magenta on Carbon Black",
        "ratio": "6.9:1",
        "verdict": "AA — large text and UI only"
      },
      {
        "pair": "--bb-magenta-ink on Carbon Black",
        "ratio": "9.4:1",
        "verdict": "AAA"
      },
      {
        "pair": "Carbon Black on Neon Magenta",
        "ratio": "6.9:1",
        "verdict": "AA — button labels ≥ 14px semibold"
      },
      {
        "pair": "Neutral Graphite on Carbon Black",
        "ratio": "3.0:1",
        "verdict": "FAIL for text — borders only"
      }
    ],
    "motion": "All animation is suppressed under prefers-reduced-motion: reduce. No animation conveys information on its own.",
    "altText": [
      "Logo images: describe the variant, not the pixels — 'Bobby Brand horizontal lockup'.",
      "Decorative beams, glows and plates are aria-hidden.",
      "Every mockup preview states that it is a preview in visible text, not only in alt text."
    ],
    "audit": "No third-party accessibility audit has been performed. Contrast values are computed, not certified."
  },
  "assets": [
    {
      "id": "bb-mark-r1-full",
      "name": "Beeldmerk R1 full",
      "category": "beeldmerk",
      "variant": "R1 / full",
      "use": "Marks ≥ 96 px, hero, brand-book cover.",
      "format": "SVG (React component)",
      "dimensions": "100×100 units",
      "colourMode": "Full colour",
      "background": "Carbon or transparent",
      "minSize": "96 px",
      "safeArea": "Beam height on all sides",
      "source": "BeamMark.tsx",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "role=img, aria-label per variant."
    },
    {
      "id": "bb-mark-r1-simplified",
      "name": "Beeldmerk R1 simplified",
      "category": "beeldmerk",
      "variant": "R1 / simplified",
      "use": "32–95 px.",
      "format": "SVG (React component)",
      "dimensions": "100×100 units",
      "colourMode": "Full colour",
      "background": "Carbon or transparent",
      "minSize": "32 px",
      "safeArea": "Beam height",
      "source": "bb-mark-r1-full",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "role=img."
    },
    {
      "id": "bb-mark-r1-micro",
      "name": "Beeldmerk R1 micro",
      "category": "beeldmerk",
      "variant": "R1 / micro",
      "use": "16–31 px, favicon.",
      "format": "SVG (React component)",
      "dimensions": "100×100 units",
      "colourMode": "Full colour",
      "background": "Carbon required",
      "minSize": "16 px",
      "safeArea": "10 units",
      "source": "bb-mark-r1-full",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "role=img."
    },
    {
      "id": "bb-mark-r2",
      "name": "Beeldmerk R2 squircle carrier",
      "category": "beeldmerk",
      "variant": "R2 / full·simplified·micro",
      "use": "REJECTED refinement — retained only as archived decision evidence at /brand-archive. Appears in no production package.",
      "format": "SVG (React component)",
      "dimensions": "100×100 units",
      "colourMode": "Full colour",
      "background": "Any",
      "minSize": "16 px",
      "safeArea": "8 units",
      "source": "Brand Beam concept",
      "classification": "source",
      "printReady": "n/a",
      "status": "rejected — archived evidence",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "role=img."
    },
    {
      "id": "bb-mark-r3",
      "name": "Beeldmerk R3 open beam",
      "category": "beeldmerk",
      "variant": "R3 / full·simplified·micro",
      "use": "REJECTED refinement — retained only as archived decision evidence at /brand-archive. Appears in no production package.",
      "format": "SVG (React component)",
      "dimensions": "100×100 units",
      "colourMode": "Full colour",
      "background": "Carbon preferred",
      "minSize": "24 px",
      "safeArea": "Beam height",
      "source": "Brand Beam concept",
      "classification": "source",
      "printReady": "n/a",
      "status": "rejected — archived evidence",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "role=img."
    },
    {
      "id": "bb-mark-mono-white",
      "name": "Beeldmerk monochrome white",
      "category": "beeldmerk",
      "variant": "mono white / no glow",
      "use": "One-colour print, embroidery, dark fields.",
      "format": "SVG (React component)",
      "dimensions": "100×100 units",
      "colourMode": "Monochrome white",
      "background": "Dark only",
      "minSize": "25 mm embroidery",
      "safeArea": "Beam height",
      "source": "bb-mark-r1-full",
      "classification": "source",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "role=img."
    },
    {
      "id": "bb-mark-mono-carbon",
      "name": "Beeldmerk monochrome carbon",
      "category": "beeldmerk",
      "variant": "mono carbon / no glow",
      "use": "Light backgrounds, invoices, documents, fax-grade print.",
      "format": "SVG (React component)",
      "dimensions": "100×100 units",
      "colourMode": "Monochrome carbon",
      "background": "Light only",
      "minSize": "8 mm",
      "safeArea": "Beam height",
      "source": "bb-mark-r1-full",
      "classification": "source",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "role=img."
    },
    {
      "id": "bb-wordmark",
      "name": "Bobby Brand wordmark",
      "category": "wordmark",
      "variant": "beam / no-beam",
      "use": "Wordmark-only contexts.",
      "format": "SVG (React component)",
      "dimensions": "300×80 units",
      "colourMode": "Mixed",
      "background": "Carbon or Clean White",
      "minSize": "96 px wide",
      "safeArea": "Cap height of B",
      "source": "Space Grotesk 300/700",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "role=img, aria-label 'Bobby Brand wordmark'."
    },
    {
      "id": "bb-lockup-h",
      "name": "Primary horizontal lockup",
      "category": "lockup",
      "variant": "dark / light / mono / no-glow",
      "use": "Default logo in all horizontal contexts.",
      "format": "SVG (React component)",
      "dimensions": "Fluid",
      "colourMode": "Mixed",
      "background": "Carbon or Clean White",
      "minSize": "120 px wide",
      "safeArea": "Beam height",
      "source": "bb-mark + bb-wordmark",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "Composed of labelled SVGs."
    },
    {
      "id": "bb-lockup-h-desc",
      "name": "Horizontal lockup with descriptor",
      "category": "lockup",
      "variant": "descriptor",
      "use": "Covers, presentations, email headers.",
      "format": "SVG (React component)",
      "dimensions": "Fluid",
      "colourMode": "Mixed",
      "background": "Carbon or Clean White",
      "minSize": "180 px wide",
      "safeArea": "Beam height",
      "source": "bb-lockup-h",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "Descriptor is real text."
    },
    {
      "id": "bb-lockup-stacked",
      "name": "Stacked lockup",
      "category": "lockup",
      "variant": "with / without descriptor",
      "use": "Square formats, merchandise, covers.",
      "format": "SVG (React component)",
      "dimensions": "Fluid",
      "colourMode": "Mixed",
      "background": "Carbon or Clean White",
      "minSize": "96 px wide (140 px with descriptor)",
      "safeArea": "Beam height",
      "source": "bb-lockup-h",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "Composed of labelled SVGs."
    },
    {
      "id": "bb-lockup-nav",
      "name": "Navigation lockup",
      "category": "lockup",
      "variant": "desktop / mobile header",
      "use": "Site header.",
      "format": "HTML/CSS",
      "dimensions": "30 px mark + text",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "120 px wide",
      "safeArea": "16 px",
      "source": "bb-lockup-h",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "Link labelled 'Bobby Brand — home'."
    },
    {
      "id": "bb-lockup-console",
      "name": "Console lockup",
      "category": "lockup",
      "variant": "context label",
      "use": "Workspace console surface.",
      "format": "HTML/CSS",
      "dimensions": "26 px mark + label",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "140 px wide",
      "safeArea": "16 px",
      "source": "bb-lockup-nav",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "Context label is text."
    },
    {
      "id": "bb-lockup-admin",
      "name": "Admin lockup",
      "category": "lockup",
      "variant": "context label",
      "use": "Platform admin surface.",
      "format": "HTML/CSS",
      "dimensions": "26 px mark + label",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "140 px wide",
      "safeArea": "16 px",
      "source": "bb-lockup-nav",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "Context label is text."
    },
    {
      "id": "bb-lockup-email",
      "name": "Email lockup",
      "category": "email",
      "variant": "light background",
      "use": "Email header and signature.",
      "format": "HTML/CSS",
      "dimensions": "180 px wide",
      "colourMode": "Mixed",
      "background": "Clean White",
      "minSize": "140 px wide",
      "safeArea": "Beam height",
      "source": "bb-lockup-h",
      "classification": "preview",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "Requires alt text when exported as PNG."
    },
    {
      "id": "bb-lockup-social",
      "name": "Social-profile lockup",
      "category": "social",
      "variant": "avatar + cover",
      "use": "Profile identity across platforms.",
      "format": "HTML/CSS",
      "dimensions": "1024×1024 / 1584×396",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "n/a",
      "safeArea": "12%",
      "source": "bb-mark-r1-simplified",
      "classification": "preview",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "Platform alt text required at upload."
    },
    {
      "id": "bb-appicon",
      "name": "App icon",
      "category": "icon",
      "variant": "rounded plate",
      "use": "iOS / Android / PWA.",
      "format": "SVG (React component)",
      "dimensions": "1024×1024 target",
      "colourMode": "Full colour",
      "background": "Carbon plate required",
      "minSize": "48 px",
      "safeArea": "12%",
      "source": "bb-mark-r1-simplified",
      "classification": "source",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamMark.tsx",
      "a11y": "OS-supplied label."
    },
    {
      "id": "bb-favicon-family",
      "name": "Production favicon and touch-icon family",
      "category": "favicon",
      "variant": "R1 full ≥32 px · micro R1 <32 px · no glow",
      "use": "Browser tabs, bookmarks, iOS home screen, PWA install, maskable Android icon.",
      "format": "SVG",
      "dimensions": "SVG 100×100 units; PNG 16/32/48/180/192/512; ICO 16+32+48",
      "colourMode": "Full colour",
      "background": "Carbon plate (transparent variant for maskable safe area)",
      "minSize": "16 px",
      "safeArea": "12 units (20% inset on the maskable build)",
      "source": "src/lib/r1-geometry.ts — r1Svg()",
      "classification": "export",
      "printReady": "n/a",
      "status": "canonical — selected, approval pending",
      "path": "public/favicon.svg + public/brand-assets/icons/*",
      "a11y": "Decorative."
    },
    {
      "id": "bb-favicon-raster-family",
      "name": "Favicon / touch-icon raster family",
      "category": "favicon",
      "variant": "16 / 32 / 48 / 180 / 192 / 512",
      "use": "Generated PNG/ICO raster family. Micro R1 below 32 px, full R1 at 32 px and above.",
      "format": "PNG",
      "dimensions": "16²·32²·48²·180²·192²·512²",
      "colourMode": "Full colour",
      "background": "Carbon plate",
      "minSize": "16 px",
      "safeArea": "12%",
      "source": "src/lib/r1-geometry.ts — r1Svg()",
      "classification": "export",
      "printReady": "n/a",
      "status": "canonical — selected, approval pending",
      "path": "public/brand-assets/icons/*",
      "a11y": "Decorative."
    },
    {
      "id": "bb-og",
      "name": "Open Graph image",
      "category": "social",
      "variant": "1200×630",
      "use": "Link sharing.",
      "format": "HTML/CSS",
      "dimensions": "1200×630",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "n/a",
      "safeArea": "80 px",
      "source": "bb-lockup-h-desc",
      "classification": "preview",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "Not generated as a file in P1C; hosting supplies the screenshot."
    },
    {
      "id": "bb-post",
      "name": "Post template",
      "category": "social",
      "variant": "1080×1080",
      "use": "Feed posts.",
      "format": "HTML/CSS",
      "dimensions": "1080×1080",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "n/a",
      "safeArea": "64 px",
      "source": "bb-lockup-h",
      "classification": "preview",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "Copy must also exist as post text."
    },
    {
      "id": "bb-story",
      "name": "Story template",
      "category": "social",
      "variant": "1080×1920",
      "use": "Stories / reels covers.",
      "format": "HTML/CSS",
      "dimensions": "1080×1920",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "n/a",
      "safeArea": "180 px top/bottom",
      "source": "bb-post",
      "classification": "preview",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "Captions required."
    },
    {
      "id": "bb-thumb",
      "name": "Video thumbnail",
      "category": "social",
      "variant": "1280×720",
      "use": "Video covers.",
      "format": "HTML/CSS",
      "dimensions": "1280×720",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "n/a",
      "safeArea": "64 px",
      "source": "bb-post",
      "classification": "preview",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-card",
      "name": "Business card front & back",
      "category": "business",
      "variant": "85×55 mm",
      "use": "Stationery.",
      "format": "HTML/CSS",
      "dimensions": "85×55 mm at screen scale",
      "colourMode": "Mixed",
      "background": "Carbon front, Clean White back",
      "minSize": "n/a",
      "safeArea": "5 mm",
      "source": "bb-lockup-h",
      "classification": "preview",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-letterhead",
      "name": "Letterhead",
      "category": "business",
      "variant": "A4",
      "use": "Correspondence.",
      "format": "HTML/CSS",
      "dimensions": "A4",
      "colourMode": "Mixed",
      "background": "Clean White",
      "minSize": "n/a",
      "safeArea": "20 mm",
      "source": "bb-lockup-h",
      "classification": "preview",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-invoice",
      "name": "Invoice",
      "category": "business",
      "variant": "A4",
      "use": "Commercial document.",
      "format": "HTML/CSS",
      "dimensions": "A4",
      "colourMode": "Mixed",
      "background": "Clean White",
      "minSize": "n/a",
      "safeArea": "20 mm",
      "source": "bb-letterhead",
      "classification": "preview",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "Illustrative figures only — no real orders."
    },
    {
      "id": "bb-envelope",
      "name": "Envelope",
      "category": "business",
      "variant": "C5",
      "use": "Stationery.",
      "format": "HTML/CSS",
      "dimensions": "C5",
      "colourMode": "Mixed",
      "background": "Clean White",
      "minSize": "n/a",
      "safeArea": "10 mm",
      "source": "bb-lockup-h",
      "classification": "preview",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-badge",
      "name": "Identity card / staff badge",
      "category": "business",
      "variant": "portrait",
      "use": "Access identity.",
      "format": "HTML/CSS",
      "dimensions": "54×86 mm",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "n/a",
      "safeArea": "4 mm",
      "source": "bb-lockup-stacked",
      "classification": "preview",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "Illustrative name only."
    },
    {
      "id": "bb-presentation",
      "name": "Presentation template",
      "category": "document",
      "variant": "cover + content",
      "use": "Decks.",
      "format": "HTML/CSS",
      "dimensions": "16:9",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "n/a",
      "safeArea": "64 px",
      "source": "bb-lockup-h-desc",
      "classification": "preview",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-brandbook-cover",
      "name": "Brand-book cover",
      "category": "document",
      "variant": "A4 portrait",
      "use": "Brand book and document covers.",
      "format": "HTML/CSS",
      "dimensions": "A4",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "n/a",
      "safeArea": "24 mm",
      "source": "bb-lockup-stacked",
      "classification": "preview",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-office-sign",
      "name": "Office sign",
      "category": "environment",
      "variant": "reception",
      "use": "Premises identity.",
      "format": "HTML/CSS",
      "dimensions": "600×300 mm indicative",
      "colourMode": "Full colour",
      "background": "Carbon panel",
      "minSize": "150 mm mark",
      "safeArea": "1× mark height",
      "source": "bb-lockup-h",
      "classification": "preview",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-door-sign",
      "name": "Door sign",
      "category": "environment",
      "variant": "portrait",
      "use": "Room identity.",
      "format": "HTML/CSS",
      "dimensions": "150×210 mm indicative",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "40 mm mark",
      "safeArea": "10 mm",
      "source": "bb-lockup-stacked",
      "classification": "preview",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-window",
      "name": "Window sticker",
      "category": "environment",
      "variant": "one-colour white",
      "use": "Glass application.",
      "format": "HTML/CSS",
      "dimensions": "300 mm indicative",
      "colourMode": "Monochrome white",
      "background": "Glass / transparent",
      "minSize": "60 mm",
      "safeArea": "1× mark height",
      "source": "bb-mark-mono-white",
      "classification": "preview",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-vehicle",
      "name": "Vehicle branding",
      "category": "environment",
      "variant": "van side",
      "use": "Transport identity.",
      "format": "HTML/CSS",
      "dimensions": "Indicative",
      "colourMode": "Full colour",
      "background": "Carbon wrap",
      "minSize": "150 mm mark",
      "safeArea": "1× mark height from panel edges",
      "source": "bb-lockup-h-desc",
      "classification": "mockup",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-tshirt",
      "name": "T-shirt",
      "category": "merchandise",
      "variant": "chest mark / back beam",
      "use": "Apparel.",
      "format": "HTML/CSS",
      "dimensions": "Indicative",
      "colourMode": "Monochrome white",
      "background": "Carbon garment",
      "minSize": "60 mm print",
      "safeArea": "n/a",
      "source": "bb-mark-mono-white",
      "classification": "mockup",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-hoodie",
      "name": "Hoodie",
      "category": "merchandise",
      "variant": "embroidered mark",
      "use": "Apparel.",
      "format": "HTML/CSS",
      "dimensions": "Indicative",
      "colourMode": "Monochrome white",
      "background": "Carbon garment",
      "minSize": "25 mm embroidery",
      "safeArea": "n/a",
      "source": "bb-mark-mono-white",
      "classification": "mockup",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-cap",
      "name": "Cap",
      "category": "merchandise",
      "variant": "embroidered micro mark",
      "use": "Apparel.",
      "format": "HTML/CSS",
      "dimensions": "Indicative",
      "colourMode": "Monochrome white",
      "background": "Carbon",
      "minSize": "25 mm",
      "safeArea": "n/a",
      "source": "bb-mark-r1-micro",
      "classification": "mockup",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-tote",
      "name": "Tote bag",
      "category": "merchandise",
      "variant": "stacked lockup",
      "use": "Merchandise.",
      "format": "HTML/CSS",
      "dimensions": "Indicative",
      "colourMode": "Monochrome carbon",
      "background": "Natural canvas",
      "minSize": "80 mm",
      "safeArea": "n/a",
      "source": "bb-lockup-stacked",
      "classification": "mockup",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-mug",
      "name": "Mug",
      "category": "merchandise",
      "variant": "beam wrap",
      "use": "Merchandise.",
      "format": "HTML/CSS",
      "dimensions": "Indicative",
      "colourMode": "Full colour",
      "background": "Carbon glaze",
      "minSize": "40 mm",
      "safeArea": "n/a",
      "source": "bb-lockup-h",
      "classification": "mockup",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-bottle",
      "name": "Bottle",
      "category": "merchandise",
      "variant": "vertical beam",
      "use": "Merchandise.",
      "format": "HTML/CSS",
      "dimensions": "Indicative",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "30 mm",
      "safeArea": "n/a",
      "source": "bb-mark-r1-simplified",
      "classification": "mockup",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-stickers",
      "name": "Sticker collection",
      "category": "merchandise",
      "variant": "5 shapes",
      "use": "Laptop and packaging stickers.",
      "format": "HTML/CSS",
      "dimensions": "Indicative",
      "colourMode": "Mixed",
      "background": "Mixed",
      "minSize": "20 mm",
      "safeArea": "2 mm bleed indicated only",
      "source": "bb-mark-r1-simplified",
      "classification": "mockup",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-box",
      "name": "Presentation box",
      "category": "merchandise",
      "variant": "lid + sleeve",
      "use": "Shipping / presentation.",
      "format": "HTML/CSS",
      "dimensions": "Indicative",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "40 mm mark",
      "safeArea": "10 mm",
      "source": "bb-lockup-stacked",
      "classification": "mockup",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/components/brand/BeamApplications.tsx",
      "a11y": "n/a."
    },
    {
      "id": "bb-data-json",
      "name": "Machine-readable brand data",
      "category": "data",
      "variant": "v0.2.0-candidate",
      "use": "Structured brand representation for later API/MCP use.",
      "format": "JSON",
      "dimensions": "n/a",
      "colourMode": "Mixed",
      "background": "n/a",
      "minSize": "n/a",
      "safeArea": "n/a",
      "source": "src/lib/brand-data.ts",
      "classification": "export",
      "printReady": "n/a",
      "status": "approved",
      "path": "public/brand/bobby-brand.0.2.0-candidate.json",
      "a11y": "n/a."
    },
    {
      "id": "bb-decision-record",
      "name": "Owner decision & version record",
      "category": "data",
      "variant": "P1C",
      "use": "Durable record of the Brand Beam selection.",
      "format": "Markdown",
      "dimensions": "n/a",
      "colourMode": "n/a",
      "background": "n/a",
      "minSize": "n/a",
      "safeArea": "n/a",
      "source": "Owner message 2026-08-25",
      "classification": "documentation",
      "printReady": "n/a",
      "status": "approved",
      "path": "docs/bobby-brand-decision-record.md",
      "a11y": "n/a."
    },
    {
      "id": "bb-brandbook-web",
      "name": "Bobby Brand brand book (web)",
      "category": "document",
      "variant": "canonical",
      "use": "Human-readable brand book.",
      "format": "HTML/CSS",
      "dimensions": "Responsive",
      "colourMode": "Full colour",
      "background": "Carbon",
      "minSize": "n/a",
      "safeArea": "n/a",
      "source": "src/lib/brand-beam.ts",
      "classification": "documentation",
      "printReady": "no — preview only",
      "status": "approved",
      "path": "src/routes/brand.tsx",
      "a11y": "Semantic headings, one H1, skip link."
    },
    {
      "id": "bb-archive-bc",
      "name": "Archived directions B & C",
      "category": "data",
      "variant": "decision evidence",
      "use": "Preserved rejected candidates.",
      "format": "HTML/CSS",
      "dimensions": "Responsive",
      "colourMode": "Mixed",
      "background": "Carbon",
      "minSize": "n/a",
      "safeArea": "n/a",
      "source": "P1B candidate system",
      "classification": "documentation",
      "printReady": "n/a",
      "status": "approved",
      "path": "src/routes/brand-archive.tsx",
      "a11y": "Labelled archived, excluded from primary navigation flow."
    }
  ],
  "assetIndex": {
    "brand": "Bobby Brand",
    "version": "1.0.0",
    "status": "Canonical — Product Owner approved, published brand system, active production identity",
    "canonicalMark": {
      "id": "r1-true-aperture",
      "name": "R1 — True Aperture",
      "state": "selected_canonical_construction"
    },
    "microBreakpointPx": 32,
    "generatedFrom": "src/lib/r1-geometry.ts — r1Svg()",
    "decorativeBeamMotif": {
      "id": "brand-beam-motif",
      "name": "Brand Beam motif",
      "classification": "decorative_graphic_element",
      "definition": "Three floating cyan/magenta/cyan rounded bars used only as supporting decoration.",
      "identityMark": false,
      "rules": [
        "May be used in layouts, backgrounds and supporting compositions.",
        "May not replace R1 in any logo or context lockup.",
        "May not be called R1 Full, R1 Micro, beeldmerk or logo.",
        "May not be used as favicon, app icon, avatar or identity mark.",
        "Must remain visibly subordinate to a complete R1 identity mark when both appear."
      ]
    },
    "containsR2orR3Assets": false,
    "classifications": {
      "source": "Editable vector source of truth.",
      "digital-export": "Raster export for screens.",
      "production-size-vector": "RGB vector artwork drawn at real physical size in millimetres. A print-production candidate, NOT press-ready: no bleed, no trim marks, no CMYK or spot separation and no ICC output intent. A printer must impose, separate and convert it."
    },
    "printReadiness": {
      "state": "not_press_ready",
      "assessedAt": "P1D",
      "appliesTo": "every asset with kind = production-size-vector",
      "physicalDimensions": "Declared in millimetres in the SVG width/height and viewBox. Verified.",
      "bleed": "None. Artwork is drawn to trim only; add 3 mm bleed at imposition.",
      "trim": "Trim = the stated mm dimensions. No trim marks are drawn.",
      "safeArea": "Clear space = 2 x ring thickness (12% of mark height). No document-level safe-area guide is drawn.",
      "colourMode": "sRGB. No CMYK conversion has been performed.",
      "colourProfileOutputIntent": "None embedded. SVG cannot carry a PDF/X output intent.",
      "spotColour": "Neon Magenta #FF2BD6 and Electric Cyan #16E8FF are outside process CMYK. A fluorescent or Pantone spot equivalent is required and has not been specified or proofed.",
      "fonts": "No live font reference in any exported SVG. Wordmark geometry is outlined by scripts/gen-wordmark-paths.py and all other visible text (descriptor, console/admin context labels, social and presentation copy) by scripts/gen-text-outlines.py, both from Space Grotesk 2.0.0 (SIL OFL 1.1). Verified by scan of all exported SVG files: no @font-face, no font-family attribute and no <text> element.",
      "linkedResources": "None. Every file is self-contained; no external images or links.",
      "rasterResolution": "Not applicable — the artwork contains no raster content. Verified: no <image> element.",
      "transparency": "Business, signage and merchandise artwork is drawn on an opaque plate. Transparent variants exist only for screen use and are flagged separately.",
      "overprint": "Not set. Rich-black and overprint decisions belong to the printer.",
      "minimumStrokeWidths": "The thinnest drawn element is the beam rule at 1.4 mm; the R1 ring at the smallest physical use (12 mm mark) is 0.72 mm. Both are above the common 0.25 mm minimum. No hairline strokes are used.",
      "productionFormat": "SVG 1.1. PDF/X-4, EPS and AI are NOT produced.",
      "intendedProcess": "Digital or offset litho for paper items; print-and-cut vinyl for signage and vehicle panels; screen print or DTG for apparel. None has been confirmed with a vendor.",
      "vendorDependencies": "Every item depends on a named printer or vendor for imposition, bleed, separation, substrate and colour proofing. No vendor has been engaged.",
      "permittedClassifications": [
        "production-size vector artwork",
        "print-production candidate",
        "application artwork"
      ],
      "prohibitedClaim": "No Bobby Brand SVG or PNG may be described as print-ready, press-ready or PDF/X compliant."
    },
    "counts": {
      "logo": 36,
      "beeldmerk": 4,
      "micro-mark": 4,
      "size-evidence": 8,
      "favicon": 5,
      "app-icon": 8,
      "avatar": 4,
      "social": 8,
      "email": 6,
      "business": 9,
      "environment": 4,
      "merchandise": 9
    },
    "formats": {
      "svg": 77,
      "png": 27,
      "ico": 1
    },
    "total": 105,
    "assets": [
      {
        "path": "logo/bb-logo-horizontal-on-dark.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": false,
        "note": "Primary horizontal logo. Full colour on Carbon Black.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-on-dark.svg"
      },
      {
        "path": "logo/bb-logo-stacked-on-dark.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 201.54,
        "height": 219.6,
        "transparent": false,
        "note": "Stacked logo. Full colour on Carbon Black.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-stacked-on-dark.svg"
      },
      {
        "path": "logo/bb-logo-horizontal-descriptor-on-dark.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": false,
        "note": "Primary horizontal logo with descriptor “Brand systems on autopilot”. Full colour on Carbon Black.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-descriptor-on-dark.svg"
      },
      {
        "path": "logo/bb-logo-stacked-descriptor-on-dark.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 201.54,
        "height": 240.28,
        "transparent": false,
        "note": "Stacked logo with descriptor. Full colour on Carbon Black.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-stacked-descriptor-on-dark.svg"
      },
      {
        "path": "logo/bb-wordmark-on-dark.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 297.45,
        "height": 104,
        "transparent": false,
        "note": "Wordmark only (outlined Space Grotesk). Full colour on Carbon Black.",
        "identityVariant": "none",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-wordmark-on-dark.svg"
      },
      {
        "path": "logo/bb-logo-horizontal-on-light.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": false,
        "note": "Primary horizontal logo. Full colour on Clean White.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-on-light.svg"
      },
      {
        "path": "logo/bb-logo-stacked-on-light.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 201.54,
        "height": 219.6,
        "transparent": false,
        "note": "Stacked logo. Full colour on Clean White.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-stacked-on-light.svg"
      },
      {
        "path": "logo/bb-logo-horizontal-descriptor-on-light.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": false,
        "note": "Primary horizontal logo with descriptor “Brand systems on autopilot”. Full colour on Clean White.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-descriptor-on-light.svg"
      },
      {
        "path": "logo/bb-logo-stacked-descriptor-on-light.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 201.54,
        "height": 240.28,
        "transparent": false,
        "note": "Stacked logo with descriptor. Full colour on Clean White.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-stacked-descriptor-on-light.svg"
      },
      {
        "path": "logo/bb-wordmark-on-light.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 297.45,
        "height": 104,
        "transparent": false,
        "note": "Wordmark only (outlined Space Grotesk). Full colour on Clean White.",
        "identityVariant": "none",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-wordmark-on-light.svg"
      },
      {
        "path": "logo/bb-logo-horizontal-transparent.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": true,
        "note": "Primary horizontal logo. Full colour, transparent background.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-transparent.svg"
      },
      {
        "path": "logo/bb-logo-stacked-transparent.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 201.54,
        "height": 219.6,
        "transparent": true,
        "note": "Stacked logo. Full colour, transparent background.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-stacked-transparent.svg"
      },
      {
        "path": "logo/bb-logo-horizontal-descriptor-transparent.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": true,
        "note": "Primary horizontal logo with descriptor “Brand systems on autopilot”. Full colour, transparent background.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-descriptor-transparent.svg"
      },
      {
        "path": "logo/bb-logo-stacked-descriptor-transparent.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 201.54,
        "height": 240.28,
        "transparent": true,
        "note": "Stacked logo with descriptor. Full colour, transparent background.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-stacked-descriptor-transparent.svg"
      },
      {
        "path": "logo/bb-wordmark-transparent.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 297.45,
        "height": 104,
        "transparent": true,
        "note": "Wordmark only (outlined Space Grotesk). Full colour, transparent background.",
        "identityVariant": "none",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-wordmark-transparent.svg"
      },
      {
        "path": "logo/bb-logo-horizontal-mono-white.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": true,
        "note": "Primary horizontal logo. Monochrome Clean White, transparent.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-mono-white.svg"
      },
      {
        "path": "logo/bb-logo-stacked-mono-white.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 201.54,
        "height": 219.6,
        "transparent": true,
        "note": "Stacked logo. Monochrome Clean White, transparent.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-stacked-mono-white.svg"
      },
      {
        "path": "logo/bb-logo-horizontal-descriptor-mono-white.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": true,
        "note": "Primary horizontal logo with descriptor “Brand systems on autopilot”. Monochrome Clean White, transparent.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-descriptor-mono-white.svg"
      },
      {
        "path": "logo/bb-logo-stacked-descriptor-mono-white.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 201.54,
        "height": 240.28,
        "transparent": true,
        "note": "Stacked logo with descriptor. Monochrome Clean White, transparent.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-stacked-descriptor-mono-white.svg"
      },
      {
        "path": "logo/bb-wordmark-mono-white.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 297.45,
        "height": 104,
        "transparent": true,
        "note": "Wordmark only (outlined Space Grotesk). Monochrome Clean White, transparent.",
        "identityVariant": "none",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-wordmark-mono-white.svg"
      },
      {
        "path": "logo/bb-logo-horizontal-mono-carbon.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": true,
        "note": "Primary horizontal logo. Monochrome Carbon Black, transparent.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-mono-carbon.svg"
      },
      {
        "path": "logo/bb-logo-stacked-mono-carbon.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 201.54,
        "height": 219.6,
        "transparent": true,
        "note": "Stacked logo. Monochrome Carbon Black, transparent.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-stacked-mono-carbon.svg"
      },
      {
        "path": "logo/bb-logo-horizontal-descriptor-mono-carbon.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": true,
        "note": "Primary horizontal logo with descriptor “Brand systems on autopilot”. Monochrome Carbon Black, transparent.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-descriptor-mono-carbon.svg"
      },
      {
        "path": "logo/bb-logo-stacked-descriptor-mono-carbon.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 201.54,
        "height": 240.28,
        "transparent": true,
        "note": "Stacked logo with descriptor. Monochrome Carbon Black, transparent.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-stacked-descriptor-mono-carbon.svg"
      },
      {
        "path": "logo/bb-wordmark-mono-carbon.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 297.45,
        "height": 104,
        "transparent": true,
        "note": "Wordmark only (outlined Space Grotesk). Monochrome Carbon Black, transparent.",
        "identityVariant": "none",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-wordmark-mono-carbon.svg"
      },
      {
        "path": "logo/bb-logo-horizontal-on-dark-glow.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": false,
        "note": "Horizontal logo with the governed glow construction. Display use at ≥96 px only.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-logo-horizontal-on-dark-glow.svg"
      },
      {
        "path": "logo/bb-lockup-navigation-on-dark.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 153.1,
        "height": 64,
        "transparent": false,
        "note": "navigation lockup at 40px mark size.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-lockup-navigation-on-dark.svg"
      },
      {
        "path": "logo/bb-lockup-navigation-on-light.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 153.1,
        "height": 64,
        "transparent": false,
        "note": "navigation lockup, light background.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-lockup-navigation-on-light.svg"
      },
      {
        "path": "logo/bb-lockup-mobile-on-dark.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 130.88,
        "height": 56,
        "transparent": false,
        "note": "mobile lockup at 32px mark size.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-lockup-mobile-on-dark.svg"
      },
      {
        "path": "logo/bb-lockup-mobile-on-light.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 130.88,
        "height": 56,
        "transparent": false,
        "note": "mobile lockup, light background.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-lockup-mobile-on-light.svg"
      },
      {
        "path": "logo/bb-lockup-console-on-dark.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 287.52,
        "height": 80,
        "transparent": false,
        "note": "console lockup at 56px mark size with “Console” context label.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-lockup-console-on-dark.svg"
      },
      {
        "path": "logo/bb-lockup-console-on-light.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 287.52,
        "height": 80,
        "transparent": false,
        "note": "console lockup, light background.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-lockup-console-on-light.svg"
      },
      {
        "path": "logo/bb-lockup-admin-on-dark.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 271.34,
        "height": 80,
        "transparent": false,
        "note": "admin lockup at 56px mark size with “Admin” context label.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-lockup-admin-on-dark.svg"
      },
      {
        "path": "logo/bb-lockup-admin-on-light.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 271.34,
        "height": 80,
        "transparent": false,
        "note": "admin lockup, light background.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-lockup-admin-on-light.svg"
      },
      {
        "path": "logo/bb-lockup-email-on-dark.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 241.97,
        "height": 96,
        "transparent": false,
        "note": "email lockup at 72px mark size.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-lockup-email-on-dark.svg"
      },
      {
        "path": "logo/bb-lockup-email-on-light.svg",
        "format": "svg",
        "category": "logo",
        "kind": "source",
        "width": 241.97,
        "height": 96,
        "transparent": false,
        "note": "email lockup, light background.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/logo/bb-lockup-email-on-light.svg"
      },
      {
        "path": "beeldmerk/bb-beeldmerk-full-colour-dark.svg",
        "format": "svg",
        "category": "beeldmerk",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": false,
        "note": "Canonical R1 beeldmerk. Use at 32 px and above.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/beeldmerk/bb-beeldmerk-full-colour-dark.svg"
      },
      {
        "path": "beeldmerk/bb-beeldmerk-full-colour-transparent.svg",
        "format": "svg",
        "category": "beeldmerk",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": true,
        "note": "Canonical R1 beeldmerk. Use at 32 px and above.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/beeldmerk/bb-beeldmerk-full-colour-transparent.svg"
      },
      {
        "path": "beeldmerk/bb-beeldmerk-full-mono-white.svg",
        "format": "svg",
        "category": "beeldmerk",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": true,
        "note": "Canonical R1 beeldmerk. Use at 32 px and above.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/beeldmerk/bb-beeldmerk-full-mono-white.svg"
      },
      {
        "path": "beeldmerk/bb-beeldmerk-full-mono-carbon.svg",
        "format": "svg",
        "category": "beeldmerk",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": true,
        "note": "Canonical R1 beeldmerk. Use at 32 px and above.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/beeldmerk/bb-beeldmerk-full-mono-carbon.svg"
      },
      {
        "path": "beeldmerk/micro/bb-beeldmerk-micro-colour-dark.svg",
        "format": "svg",
        "category": "micro-mark",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": false,
        "note": "Strictly R1-derived micro rendering. Use below 32 px.",
        "identityVariant": "Micro R1",
        "decorativeMotif": false,
        "url": "/brand-assets/beeldmerk/micro/bb-beeldmerk-micro-colour-dark.svg"
      },
      {
        "path": "beeldmerk/micro/bb-beeldmerk-micro-colour-transparent.svg",
        "format": "svg",
        "category": "micro-mark",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": true,
        "note": "Strictly R1-derived micro rendering. Use below 32 px.",
        "identityVariant": "Micro R1",
        "decorativeMotif": false,
        "url": "/brand-assets/beeldmerk/micro/bb-beeldmerk-micro-colour-transparent.svg"
      },
      {
        "path": "beeldmerk/micro/bb-beeldmerk-micro-mono-white.svg",
        "format": "svg",
        "category": "micro-mark",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": true,
        "note": "Strictly R1-derived micro rendering. Use below 32 px.",
        "identityVariant": "Micro R1",
        "decorativeMotif": false,
        "url": "/brand-assets/beeldmerk/micro/bb-beeldmerk-micro-mono-white.svg"
      },
      {
        "path": "beeldmerk/micro/bb-beeldmerk-micro-mono-carbon.svg",
        "format": "svg",
        "category": "micro-mark",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": true,
        "note": "Strictly R1-derived micro rendering. Use below 32 px.",
        "identityVariant": "Micro R1",
        "decorativeMotif": false,
        "url": "/brand-assets/beeldmerk/micro/bb-beeldmerk-micro-mono-carbon.svg"
      },
      {
        "path": "beeldmerk/ladder/bb-beeldmerk-16.png",
        "format": "png",
        "width": 16,
        "height": 16,
        "category": "size-evidence",
        "kind": "digital-export",
        "transparent": false,
        "note": "Micro R1 at 16 px — Ring holds 1 device px; two beams legible. Minimum permitted size.",
        "url": "/brand-assets/beeldmerk/ladder/bb-beeldmerk-16.png"
      },
      {
        "path": "beeldmerk/ladder/bb-beeldmerk-20.png",
        "format": "png",
        "width": 20,
        "height": 20,
        "category": "size-evidence",
        "kind": "digital-export",
        "transparent": false,
        "note": "Micro R1 at 20 px — Aperture clearly circular; beam hierarchy readable.",
        "url": "/brand-assets/beeldmerk/ladder/bb-beeldmerk-20.png"
      },
      {
        "path": "beeldmerk/ladder/bb-beeldmerk-24.png",
        "format": "png",
        "width": 24,
        "height": 24,
        "category": "size-evidence",
        "kind": "digital-export",
        "transparent": false,
        "note": "Micro R1 at 24 px — Comfortable. Full R1 ring would render at 1.4 px and grey out here.",
        "url": "/brand-assets/beeldmerk/ladder/bb-beeldmerk-24.png"
      },
      {
        "path": "beeldmerk/ladder/bb-beeldmerk-32.png",
        "format": "png",
        "width": 32,
        "height": 32,
        "category": "size-evidence",
        "kind": "digital-export",
        "transparent": false,
        "note": "Full R1 at 32 px — Breakpoint. All three beams and the thin ring separate.",
        "url": "/brand-assets/beeldmerk/ladder/bb-beeldmerk-32.png"
      },
      {
        "path": "beeldmerk/ladder/bb-beeldmerk-48.png",
        "format": "png",
        "width": 48,
        "height": 48,
        "category": "size-evidence",
        "kind": "digital-export",
        "transparent": false,
        "note": "Full R1 at 48 px — Full construction as drawn.",
        "url": "/brand-assets/beeldmerk/ladder/bb-beeldmerk-48.png"
      },
      {
        "path": "beeldmerk/ladder/bb-beeldmerk-64.png",
        "format": "png",
        "width": 64,
        "height": 64,
        "category": "size-evidence",
        "kind": "digital-export",
        "transparent": false,
        "note": "Full R1 at 64 px — Full construction as drawn.",
        "url": "/brand-assets/beeldmerk/ladder/bb-beeldmerk-64.png"
      },
      {
        "path": "beeldmerk/ladder/bb-beeldmerk-96.png",
        "format": "png",
        "width": 96,
        "height": 96,
        "category": "size-evidence",
        "kind": "digital-export",
        "transparent": false,
        "note": "Full R1 at 96 px — Glow permitted from this size upward.",
        "url": "/brand-assets/beeldmerk/ladder/bb-beeldmerk-96.png"
      },
      {
        "path": "beeldmerk/ladder/bb-beeldmerk-128.png",
        "format": "png",
        "width": 128,
        "height": 128,
        "category": "size-evidence",
        "kind": "digital-export",
        "transparent": false,
        "note": "Full R1 at 128 px — Display size. Glow permitted.",
        "url": "/brand-assets/beeldmerk/ladder/bb-beeldmerk-128.png"
      },
      {
        "path": "icons/favicon.svg",
        "format": "svg",
        "category": "favicon",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": false,
        "note": "Favicon source. Micro R1 on a rounded Carbon plate — the evidence-backed rendering at 16–24 px.",
        "identityVariant": "Micro R1",
        "decorativeMotif": false,
        "url": "/brand-assets/icons/favicon.svg"
      },
      {
        "path": "icons/favicon-16.png",
        "format": "png",
        "width": 16,
        "height": 16,
        "category": "favicon",
        "kind": "digital-export",
        "transparent": false,
        "note": "Favicon raster at 16×16. Micro R1.",
        "url": "/brand-assets/icons/favicon-16.png"
      },
      {
        "path": "icons/favicon-32.png",
        "format": "png",
        "width": 32,
        "height": 32,
        "category": "favicon",
        "kind": "digital-export",
        "transparent": false,
        "note": "Favicon raster at 32×32. R1 Full.",
        "url": "/brand-assets/icons/favicon-32.png"
      },
      {
        "path": "icons/favicon-48.png",
        "format": "png",
        "width": 48,
        "height": 48,
        "category": "favicon",
        "kind": "digital-export",
        "transparent": false,
        "note": "Favicon raster at 48×48. R1 Full.",
        "url": "/brand-assets/icons/favicon-48.png"
      },
      {
        "path": "icons/app-icon-square.svg",
        "format": "svg",
        "category": "app-icon",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": false,
        "note": "Square app-icon source: full R1 inset 12% inside a Carbon plate, square corners for platform masking.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/icons/app-icon-square.svg"
      },
      {
        "path": "icons/apple-touch-icon.png",
        "format": "png",
        "width": 180,
        "height": 180,
        "category": "app-icon",
        "kind": "digital-export",
        "transparent": false,
        "note": "Apple touch icon 180×180, opaque, 12% safe padding.",
        "url": "/brand-assets/icons/apple-touch-icon.png"
      },
      {
        "path": "icons/app-icon-rounded.svg",
        "format": "svg",
        "category": "app-icon",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": false,
        "note": "Rounded app-icon source used for PWA and Android icons.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/icons/app-icon-rounded.svg"
      },
      {
        "path": "icons/pwa-192.png",
        "format": "png",
        "width": 192,
        "height": 192,
        "category": "app-icon",
        "kind": "digital-export",
        "transparent": false,
        "note": "PWA / Android icon 192×192, opaque.",
        "url": "/brand-assets/icons/pwa-192.png"
      },
      {
        "path": "icons/pwa-512.png",
        "format": "png",
        "width": 512,
        "height": 512,
        "category": "app-icon",
        "kind": "digital-export",
        "transparent": false,
        "note": "PWA / Android icon 512×512, opaque.",
        "url": "/brand-assets/icons/pwa-512.png"
      },
      {
        "path": "icons/maskable.svg",
        "format": "svg",
        "category": "app-icon",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": false,
        "note": "Maskable icon source: full R1 inset 20% — the mark stays inside the 80% safe zone under any mask.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/icons/maskable.svg"
      },
      {
        "path": "icons/maskable-512.png",
        "format": "png",
        "width": 512,
        "height": 512,
        "category": "app-icon",
        "kind": "digital-export",
        "transparent": false,
        "note": "Maskable PWA icon 512×512, 20% safe area.",
        "url": "/brand-assets/icons/maskable-512.png"
      },
      {
        "path": "icons/app-store-preview-1024.png",
        "format": "png",
        "width": 1024,
        "height": 1024,
        "category": "app-icon",
        "kind": "digital-export",
        "transparent": false,
        "note": "App Store-style 1024×1024 icon preview, opaque, no alpha channel required by stores.",
        "url": "/brand-assets/icons/app-store-preview-1024.png"
      },
      {
        "path": "avatars/social-avatar.svg",
        "format": "svg",
        "category": "avatar",
        "kind": "source",
        "width": 100,
        "height": 100,
        "transparent": false,
        "note": "Circular social avatar source: full R1 inset 14% on a Carbon disc.",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/avatars/social-avatar.svg"
      },
      {
        "path": "avatars/social-avatar-400.png",
        "format": "png",
        "width": 400,
        "height": 400,
        "category": "avatar",
        "kind": "digital-export",
        "transparent": true,
        "note": "Social avatar 400×400 (circular artwork, transparent outside the disc).",
        "url": "/brand-assets/avatars/social-avatar-400.png"
      },
      {
        "path": "avatars/company-avatar-800.png",
        "format": "png",
        "width": 800,
        "height": 800,
        "category": "avatar",
        "kind": "digital-export",
        "transparent": true,
        "note": "Company avatar 800×800 for directories and marketplaces.",
        "url": "/brand-assets/avatars/company-avatar-800.png"
      },
      {
        "path": "avatars/avatar-24-check.png",
        "format": "png",
        "width": 24,
        "height": 24,
        "category": "avatar",
        "kind": "digital-export",
        "transparent": false,
        "note": "24 px avatar rendering evidence — micro R1.",
        "url": "/brand-assets/avatars/avatar-24-check.png",
        "duplicateOf": "beeldmerk/ladder/bb-beeldmerk-24.png",
        "duplicateNote": "Byte-identical to the referenced file. It is the same artwork delivered under a context-specific name and package, not a different variant."
      },
      {
        "path": "social/bb-open-graph.svg",
        "format": "svg",
        "category": "social",
        "kind": "source",
        "width": 1200,
        "height": 630,
        "transparent": false,
        "note": "Open Graph / Twitter card image. Vector source.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/social/bb-open-graph.svg"
      },
      {
        "path": "social/bb-open-graph.png",
        "format": "png",
        "width": 1200,
        "height": 630,
        "category": "social",
        "kind": "digital-export",
        "transparent": false,
        "note": "Open Graph / Twitter card image. 1200×630 PNG export.",
        "url": "/brand-assets/social/bb-open-graph.png"
      },
      {
        "path": "social/bb-social-cover.svg",
        "format": "svg",
        "category": "social",
        "kind": "source",
        "width": 1500,
        "height": 500,
        "transparent": false,
        "note": "LinkedIn / X cover image. Vector source.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/social/bb-social-cover.svg"
      },
      {
        "path": "social/bb-social-cover.png",
        "format": "png",
        "width": 1500,
        "height": 500,
        "category": "social",
        "kind": "digital-export",
        "transparent": false,
        "note": "LinkedIn / X cover image. 1500×500 PNG export.",
        "url": "/brand-assets/social/bb-social-cover.png"
      },
      {
        "path": "social/bb-social-post.svg",
        "format": "svg",
        "category": "social",
        "kind": "source",
        "width": 1080,
        "height": 1080,
        "transparent": false,
        "note": "Square social post key art. Vector source.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/social/bb-social-post.svg"
      },
      {
        "path": "social/bb-social-post.png",
        "format": "png",
        "width": 1080,
        "height": 1080,
        "category": "social",
        "kind": "digital-export",
        "transparent": false,
        "note": "Square social post key art. 1080×1080 PNG export.",
        "url": "/brand-assets/social/bb-social-post.png"
      },
      {
        "path": "social/bb-social-story.svg",
        "format": "svg",
        "category": "social",
        "kind": "source",
        "width": 1080,
        "height": 1920,
        "transparent": false,
        "note": "Story / vertical key art. Vector source.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/social/bb-social-story.svg"
      },
      {
        "path": "social/bb-social-story.png",
        "format": "png",
        "width": 1080,
        "height": 1920,
        "category": "social",
        "kind": "digital-export",
        "transparent": false,
        "note": "Story / vertical key art. 1080×1920 PNG export.",
        "url": "/brand-assets/social/bb-social-story.png"
      },
      {
        "path": "email/bb-email-logo.svg",
        "format": "svg",
        "category": "email",
        "kind": "source",
        "width": 286.73,
        "height": 124,
        "transparent": false,
        "note": "Email logo source (horizontal lockup on Carbon).",
        "identityVariant": "R1 Full",
        "decorativeMotif": false,
        "url": "/brand-assets/email/bb-email-logo.svg",
        "duplicateOf": "logo/bb-logo-horizontal-on-dark.svg",
        "duplicateNote": "Byte-identical to the referenced file. It is the same artwork delivered under a context-specific name and package, not a different variant."
      },
      {
        "path": "email/bb-email-logo-480.png",
        "format": "png",
        "width": 480,
        "height": 208,
        "category": "email",
        "kind": "digital-export",
        "transparent": false,
        "note": "Email logo raster, 480 px wide (2× for a 240 px display width).",
        "url": "/brand-assets/email/bb-email-logo-480.png"
      },
      {
        "path": "email/bb-email-header.svg",
        "format": "svg",
        "category": "email",
        "kind": "source",
        "width": 1200,
        "height": 124,
        "transparent": false,
        "note": "Email header band, 1200×124 vector source.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/email/bb-email-header.svg"
      },
      {
        "path": "email/bb-email-header-1200.png",
        "format": "png",
        "width": 1200,
        "height": 124,
        "category": "email",
        "kind": "digital-export",
        "transparent": false,
        "note": "Email header 1200×124 PNG (600 px display width at 2×).",
        "url": "/brand-assets/email/bb-email-header-1200.png"
      },
      {
        "path": "email/bb-email-signature.svg",
        "format": "svg",
        "category": "email",
        "kind": "source",
        "width": 320,
        "height": 64,
        "transparent": false,
        "note": "Email signature lockup, 320×64 vector source.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/email/bb-email-signature.svg"
      },
      {
        "path": "email/bb-email-signature-640.png",
        "format": "png",
        "width": 640,
        "height": 128,
        "category": "email",
        "kind": "digital-export",
        "transparent": false,
        "note": "Email signature raster 640×128 (2×).",
        "url": "/brand-assets/email/bb-email-signature-640.png"
      },
      {
        "path": "business/bb-business-card-front-85x55mm.svg",
        "format": "svg",
        "category": "business",
        "kind": "production-size-vector",
        "width": 85,
        "height": 55,
        "transparent": false,
        "note": "Business card front, 85×55 mm trim, vector, no raster content. Add 3 mm bleed at the printer.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/business/bb-business-card-front-85x55mm.svg"
      },
      {
        "path": "business/bb-business-card-back-85x55mm.svg",
        "format": "svg",
        "category": "business",
        "kind": "production-size-vector",
        "width": 85,
        "height": 55,
        "transparent": false,
        "note": "Business card back, 85×55 mm trim, one-colour Carbon mark on Clean White.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/business/bb-business-card-back-85x55mm.svg"
      },
      {
        "path": "business/bb-letterhead-a4.svg",
        "format": "svg",
        "category": "business",
        "kind": "production-size-vector",
        "width": 210,
        "height": 297,
        "transparent": false,
        "note": "A4 letterhead, 210×297 mm, one-colour mark, beam footer rule. Text areas are left empty for the document system.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/business/bb-letterhead-a4.svg"
      },
      {
        "path": "business/bb-invoice-header-a4.svg",
        "format": "svg",
        "category": "business",
        "kind": "production-size-vector",
        "width": 210,
        "height": 40,
        "transparent": false,
        "note": "Invoice header band for A4 documents, 210×40 mm.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/business/bb-invoice-header-a4.svg"
      },
      {
        "path": "business/bb-identity-card-54x86mm.svg",
        "format": "svg",
        "category": "business",
        "kind": "production-size-vector",
        "width": 54,
        "height": 86,
        "transparent": false,
        "note": "Illustrative identity-card application artwork, 54×86 mm trim. Contains no person name, email address or platform-authority title.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/business/bb-identity-card-54x86mm.svg"
      },
      {
        "path": "business/bb-presentation-cover-16x9.svg",
        "format": "svg",
        "category": "business",
        "kind": "source",
        "width": 1920,
        "height": 1080,
        "transparent": false,
        "note": "16:9 presentation cover, vector source.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/business/bb-presentation-cover-16x9.svg"
      },
      {
        "path": "business/bb-presentation-cover-1920.png",
        "format": "png",
        "width": 1920,
        "height": 1080,
        "category": "business",
        "kind": "digital-export",
        "transparent": false,
        "note": "Presentation cover 1920×1080 PNG.",
        "url": "/brand-assets/business/bb-presentation-cover-1920.png"
      },
      {
        "path": "business/bb-document-cover-a4.svg",
        "format": "svg",
        "category": "business",
        "kind": "production-size-vector",
        "width": 210,
        "height": 297,
        "transparent": false,
        "note": "A4 document cover, dark, 210×297 mm.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/business/bb-document-cover-a4.svg"
      },
      {
        "path": "business/bb-brand-book-cover-a4.svg",
        "format": "svg",
        "category": "business",
        "kind": "production-size-vector",
        "width": 210,
        "height": 297,
        "transparent": false,
        "note": "Brand-book cover, A4 portrait, dark.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/business/bb-brand-book-cover-a4.svg"
      },
      {
        "path": "print/bb-sign-exterior.svg",
        "format": "svg",
        "category": "environment",
        "kind": "production-size-vector",
        "width": 900,
        "height": 300,
        "transparent": false,
        "note": "Exterior sign artwork, 900×300 mm. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/print/bb-sign-exterior.svg"
      },
      {
        "path": "print/bb-window-sticker.svg",
        "format": "svg",
        "category": "environment",
        "kind": "production-size-vector",
        "width": 300,
        "height": 300,
        "transparent": true,
        "note": "Window sticker, 300×300 mm, one-colour white vinyl cut-ready outline. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/print/bb-window-sticker.svg"
      },
      {
        "path": "print/bb-door-sticker.svg",
        "format": "svg",
        "category": "environment",
        "kind": "production-size-vector",
        "width": 200,
        "height": 200,
        "transparent": true,
        "note": "Door sticker, 200×200 mm, one-colour white. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/print/bb-door-sticker.svg"
      },
      {
        "path": "merchandise/bb-sticker-general.svg",
        "format": "svg",
        "category": "merchandise",
        "kind": "production-size-vector",
        "width": 80,
        "height": 80,
        "transparent": false,
        "note": "General sticker, 80×80 mm, full colour on Carbon. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/merchandise/bb-sticker-general.svg"
      },
      {
        "path": "merchandise/bb-sticker-laptop.svg",
        "format": "svg",
        "category": "merchandise",
        "kind": "production-size-vector",
        "width": 60,
        "height": 60,
        "transparent": false,
        "note": "Laptop sticker, 60×60 mm. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/merchandise/bb-sticker-laptop.svg"
      },
      {
        "path": "print/bb-vehicle-side.svg",
        "format": "svg",
        "category": "environment",
        "kind": "production-size-vector",
        "width": 1800,
        "height": 600,
        "transparent": true,
        "note": "Vehicle side artwork, 1800×600 mm, one-colour white vinyl. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/print/bb-vehicle-side.svg"
      },
      {
        "path": "merchandise/bb-tshirt-chest.svg",
        "format": "svg",
        "category": "merchandise",
        "kind": "production-size-vector",
        "width": 260,
        "height": 200,
        "transparent": true,
        "note": "T-shirt chest print, 260×200 mm, one colour. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/merchandise/bb-tshirt-chest.svg"
      },
      {
        "path": "merchandise/bb-hoodie-chest.svg",
        "format": "svg",
        "category": "merchandise",
        "kind": "production-size-vector",
        "width": 280,
        "height": 220,
        "transparent": true,
        "note": "Hoodie chest print, 280×220 mm, one colour. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/merchandise/bb-hoodie-chest.svg"
      },
      {
        "path": "merchandise/bb-cap-front.svg",
        "format": "svg",
        "category": "merchandise",
        "kind": "production-size-vector",
        "width": 100,
        "height": 50,
        "transparent": true,
        "note": "Cap front, 100×50 mm — embroidery artwork; ring thickness verified above the 1 mm stitch minimum. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/merchandise/bb-cap-front.svg"
      },
      {
        "path": "merchandise/bb-tote-bag.svg",
        "format": "svg",
        "category": "merchandise",
        "kind": "production-size-vector",
        "width": 260,
        "height": 260,
        "transparent": true,
        "note": "Tote bag print, 260×260 mm, one-colour Carbon on natural canvas. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/merchandise/bb-tote-bag.svg"
      },
      {
        "path": "merchandise/bb-mug-wrap.svg",
        "format": "svg",
        "category": "merchandise",
        "kind": "production-size-vector",
        "width": 200,
        "height": 80,
        "transparent": true,
        "note": "Mug wrap artwork, 200×80 mm. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/merchandise/bb-mug-wrap.svg"
      },
      {
        "path": "merchandise/bb-bottle-wrap.svg",
        "format": "svg",
        "category": "merchandise",
        "kind": "production-size-vector",
        "width": 180,
        "height": 70,
        "transparent": true,
        "note": "Bottle wrap artwork, 180×70 mm. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/merchandise/bb-bottle-wrap.svg"
      },
      {
        "path": "merchandise/bb-packaging-box.svg",
        "format": "svg",
        "category": "merchandise",
        "kind": "production-size-vector",
        "width": 300,
        "height": 200,
        "transparent": false,
        "note": "Presentation box lid artwork, 300×200 mm. Vector, real physical dimensions. This is artwork, not a mockup.",
        "identityVariant": "R1 Full",
        "decorativeMotif": true,
        "url": "/brand-assets/merchandise/bb-packaging-box.svg"
      },
      {
        "path": "icons/favicon.ico",
        "category": "favicon",
        "kind": "digital-export",
        "format": "ico",
        "transparent": false,
        "note": "Multi-resolution ICO containing 16, 32 and 48 px micro-R1 renderings.",
        "url": "/brand-assets/icons/favicon.ico"
      }
    ],
    "packages": [
      {
        "id": "logo",
        "file": "/brand-assets/packages/bobby-brand-logo-1.0.0.zip",
        "title": "Bobby Brand — Logo package",
        "fileCount": 59,
        "bytes": 294299,
        "sha256": "2235ae2618383bf8972285f255f1e62a4b40f2e8248b3800a80b42baf65b89fe",
        "includesFonts": true,
        "files": [
          "FONTS-AND-LICENCES.md",
          "MANIFEST.md",
          "VERSION.txt",
          "beeldmerk/bb-beeldmerk-full-colour-dark.svg",
          "beeldmerk/bb-beeldmerk-full-colour-transparent.svg",
          "beeldmerk/bb-beeldmerk-full-mono-carbon.svg",
          "beeldmerk/bb-beeldmerk-full-mono-white.svg",
          "beeldmerk/ladder/bb-beeldmerk-128.png",
          "beeldmerk/ladder/bb-beeldmerk-16.png",
          "beeldmerk/ladder/bb-beeldmerk-20.png",
          "beeldmerk/ladder/bb-beeldmerk-24.png",
          "beeldmerk/ladder/bb-beeldmerk-32.png",
          "beeldmerk/ladder/bb-beeldmerk-48.png",
          "beeldmerk/ladder/bb-beeldmerk-64.png",
          "beeldmerk/ladder/bb-beeldmerk-96.png",
          "beeldmerk/micro/bb-beeldmerk-micro-colour-dark.svg",
          "beeldmerk/micro/bb-beeldmerk-micro-colour-transparent.svg",
          "beeldmerk/micro/bb-beeldmerk-micro-mono-carbon.svg",
          "beeldmerk/micro/bb-beeldmerk-micro-mono-white.svg",
          "fonts/SpaceGrotesk-Bold.ttf",
          "fonts/SpaceGrotesk-Light.ttf",
          "fonts/SpaceGrotesk-OFL.txt",
          "fonts/SpaceGrotesk-Regular.ttf",
          "logo/bb-lockup-admin-on-dark.svg",
          "logo/bb-lockup-admin-on-light.svg",
          "logo/bb-lockup-console-on-dark.svg",
          "logo/bb-lockup-console-on-light.svg",
          "logo/bb-lockup-email-on-dark.svg",
          "logo/bb-lockup-email-on-light.svg",
          "logo/bb-lockup-mobile-on-dark.svg",
          "logo/bb-lockup-mobile-on-light.svg",
          "logo/bb-lockup-navigation-on-dark.svg",
          "logo/bb-lockup-navigation-on-light.svg",
          "logo/bb-logo-horizontal-descriptor-mono-carbon.svg",
          "logo/bb-logo-horizontal-descriptor-mono-white.svg",
          "logo/bb-logo-horizontal-descriptor-on-dark.svg",
          "logo/bb-logo-horizontal-descriptor-on-light.svg",
          "logo/bb-logo-horizontal-descriptor-transparent.svg",
          "logo/bb-logo-horizontal-mono-carbon.svg",
          "logo/bb-logo-horizontal-mono-white.svg",
          "logo/bb-logo-horizontal-on-dark-glow.svg",
          "logo/bb-logo-horizontal-on-dark.svg",
          "logo/bb-logo-horizontal-on-light.svg",
          "logo/bb-logo-horizontal-transparent.svg",
          "logo/bb-logo-stacked-descriptor-mono-carbon.svg",
          "logo/bb-logo-stacked-descriptor-mono-white.svg",
          "logo/bb-logo-stacked-descriptor-on-dark.svg",
          "logo/bb-logo-stacked-descriptor-on-light.svg",
          "logo/bb-logo-stacked-descriptor-transparent.svg",
          "logo/bb-logo-stacked-mono-carbon.svg",
          "logo/bb-logo-stacked-mono-white.svg",
          "logo/bb-logo-stacked-on-dark.svg",
          "logo/bb-logo-stacked-on-light.svg",
          "logo/bb-logo-stacked-transparent.svg",
          "logo/bb-wordmark-mono-carbon.svg",
          "logo/bb-wordmark-mono-white.svg",
          "logo/bb-wordmark-on-dark.svg",
          "logo/bb-wordmark-on-light.svg",
          "logo/bb-wordmark-transparent.svg"
        ]
      },
      {
        "id": "icons",
        "file": "/brand-assets/packages/bobby-brand-icons-1.0.0.zip",
        "title": "Bobby Brand — Icon and favicon package",
        "fileCount": 15,
        "bytes": 113358,
        "sha256": "ddd7603bbfb5e283fa208af81fa8bea82b952f085f75fe5b679ff504936c2e50",
        "includesFonts": false,
        "files": [
          "MANIFEST.md",
          "VERSION.txt",
          "icons/app-icon-rounded.svg",
          "icons/app-icon-square.svg",
          "icons/app-store-preview-1024.png",
          "icons/apple-touch-icon.png",
          "icons/favicon-16.png",
          "icons/favicon-32.png",
          "icons/favicon-48.png",
          "icons/favicon.ico",
          "icons/favicon.svg",
          "icons/maskable-512.png",
          "icons/maskable.svg",
          "icons/pwa-192.png",
          "icons/pwa-512.png"
        ]
      },
      {
        "id": "digital",
        "file": "/brand-assets/packages/bobby-brand-digital-1.0.0.zip",
        "title": "Bobby Brand — Digital package",
        "fileCount": 63,
        "bytes": 398659,
        "sha256": "a5cb5e639e6d2be8f8d4f013b1b0676fa1991bf5500e67431628373483edf32f",
        "includesFonts": false,
        "files": [
          "MANIFEST.md",
          "VERSION.txt",
          "avatars/avatar-24-check.png",
          "avatars/company-avatar-800.png",
          "avatars/social-avatar-400.png",
          "avatars/social-avatar.svg",
          "icons/app-icon-rounded.svg",
          "icons/app-icon-square.svg",
          "icons/app-store-preview-1024.png",
          "icons/apple-touch-icon.png",
          "icons/favicon-16.png",
          "icons/favicon-32.png",
          "icons/favicon-48.png",
          "icons/favicon.ico",
          "icons/favicon.svg",
          "icons/maskable-512.png",
          "icons/maskable.svg",
          "icons/pwa-192.png",
          "icons/pwa-512.png",
          "logo/bb-lockup-admin-on-dark.svg",
          "logo/bb-lockup-admin-on-light.svg",
          "logo/bb-lockup-console-on-dark.svg",
          "logo/bb-lockup-console-on-light.svg",
          "logo/bb-lockup-email-on-dark.svg",
          "logo/bb-lockup-email-on-light.svg",
          "logo/bb-lockup-mobile-on-dark.svg",
          "logo/bb-lockup-mobile-on-light.svg",
          "logo/bb-lockup-navigation-on-dark.svg",
          "logo/bb-lockup-navigation-on-light.svg",
          "logo/bb-logo-horizontal-descriptor-mono-carbon.svg",
          "logo/bb-logo-horizontal-descriptor-mono-white.svg",
          "logo/bb-logo-horizontal-descriptor-on-dark.svg",
          "logo/bb-logo-horizontal-descriptor-on-light.svg",
          "logo/bb-logo-horizontal-descriptor-transparent.svg",
          "logo/bb-logo-horizontal-mono-carbon.svg",
          "logo/bb-logo-horizontal-mono-white.svg",
          "logo/bb-logo-horizontal-on-dark-glow.svg",
          "logo/bb-logo-horizontal-on-dark.svg",
          "logo/bb-logo-horizontal-on-light.svg",
          "logo/bb-logo-horizontal-transparent.svg",
          "logo/bb-logo-stacked-descriptor-mono-carbon.svg",
          "logo/bb-logo-stacked-descriptor-mono-white.svg",
          "logo/bb-logo-stacked-descriptor-on-dark.svg",
          "logo/bb-logo-stacked-descriptor-on-light.svg",
          "logo/bb-logo-stacked-descriptor-transparent.svg",
          "logo/bb-logo-stacked-mono-carbon.svg",
          "logo/bb-logo-stacked-mono-white.svg",
          "logo/bb-logo-stacked-on-dark.svg",
          "logo/bb-logo-stacked-on-light.svg",
          "logo/bb-logo-stacked-transparent.svg",
          "logo/bb-wordmark-mono-carbon.svg",
          "logo/bb-wordmark-mono-white.svg",
          "logo/bb-wordmark-on-dark.svg",
          "logo/bb-wordmark-on-light.svg",
          "logo/bb-wordmark-transparent.svg",
          "social/bb-open-graph.png",
          "social/bb-open-graph.svg",
          "social/bb-social-cover.png",
          "social/bb-social-cover.svg",
          "social/bb-social-post.png",
          "social/bb-social-post.svg",
          "social/bb-social-story.png",
          "social/bb-social-story.svg"
        ]
      },
      {
        "id": "social",
        "file": "/brand-assets/packages/bobby-brand-social-1.0.0.zip",
        "title": "Bobby Brand — Social package",
        "fileCount": 14,
        "bytes": 186258,
        "sha256": "4cece27e987b5f95eff0b805a486e304fc60796b2291e61e9fae0f896ead5133",
        "includesFonts": false,
        "files": [
          "MANIFEST.md",
          "VERSION.txt",
          "avatars/avatar-24-check.png",
          "avatars/company-avatar-800.png",
          "avatars/social-avatar-400.png",
          "avatars/social-avatar.svg",
          "social/bb-open-graph.png",
          "social/bb-open-graph.svg",
          "social/bb-social-cover.png",
          "social/bb-social-cover.svg",
          "social/bb-social-post.png",
          "social/bb-social-post.svg",
          "social/bb-social-story.png",
          "social/bb-social-story.svg"
        ]
      },
      {
        "id": "email",
        "file": "/brand-assets/packages/bobby-brand-email-1.0.0.zip",
        "title": "Bobby Brand — Email package",
        "fileCount": 8,
        "bytes": 35214,
        "sha256": "b1c2ba06e5c51099985627b4b8babb02590aa853c8ba072d9aa385426d730d8a",
        "includesFonts": false,
        "files": [
          "MANIFEST.md",
          "VERSION.txt",
          "email/bb-email-header-1200.png",
          "email/bb-email-header.svg",
          "email/bb-email-logo-480.png",
          "email/bb-email-logo.svg",
          "email/bb-email-signature-640.png",
          "email/bb-email-signature.svg"
        ]
      },
      {
        "id": "business",
        "file": "/brand-assets/packages/bobby-brand-business-1.0.0.zip",
        "title": "Bobby Brand — Business package",
        "fileCount": 16,
        "bytes": 227078,
        "sha256": "01a4a131630ae5b44f658c38acee392fcc1688f9fe043fea926f8d8e714eff27",
        "includesFonts": true,
        "files": [
          "FONTS-AND-LICENCES.md",
          "MANIFEST.md",
          "VERSION.txt",
          "business/bb-brand-book-cover-a4.svg",
          "business/bb-business-card-back-85x55mm.svg",
          "business/bb-business-card-front-85x55mm.svg",
          "business/bb-document-cover-a4.svg",
          "business/bb-identity-card-54x86mm.svg",
          "business/bb-invoice-header-a4.svg",
          "business/bb-letterhead-a4.svg",
          "business/bb-presentation-cover-16x9.svg",
          "business/bb-presentation-cover-1920.png",
          "fonts/SpaceGrotesk-Bold.ttf",
          "fonts/SpaceGrotesk-Light.ttf",
          "fonts/SpaceGrotesk-OFL.txt",
          "fonts/SpaceGrotesk-Regular.ttf"
        ]
      },
      {
        "id": "merchandise",
        "file": "/brand-assets/packages/bobby-brand-merchandise-1.0.0.zip",
        "title": "Bobby Brand — Merchandise and environment artwork package",
        "fileCount": 15,
        "bytes": 31023,
        "sha256": "7e32df11c3761c01880bc5f353383ec7c14d1d4b7219c493ee0903d154594b06",
        "includesFonts": false,
        "files": [
          "MANIFEST.md",
          "VERSION.txt",
          "merchandise/bb-bottle-wrap.svg",
          "merchandise/bb-cap-front.svg",
          "merchandise/bb-hoodie-chest.svg",
          "merchandise/bb-mug-wrap.svg",
          "merchandise/bb-packaging-box.svg",
          "merchandise/bb-sticker-general.svg",
          "merchandise/bb-sticker-laptop.svg",
          "merchandise/bb-tote-bag.svg",
          "merchandise/bb-tshirt-chest.svg",
          "print/bb-door-sticker.svg",
          "print/bb-sign-exterior.svg",
          "print/bb-vehicle-side.svg",
          "print/bb-window-sticker.svg"
        ]
      },
      {
        "id": "complete",
        "file": "/brand-assets/packages/bobby-brand-complete-1.0.0.zip",
        "title": "Bobby Brand — Complete package",
        "fileCount": 112,
        "bytes": 710900,
        "sha256": "d508c422c0b23b8eb0906ec0d504f40a53f0a7c445a11124891598b9dedf4054",
        "includesFonts": true,
        "files": [
          "FONTS-AND-LICENCES.md",
          "MANIFEST.md",
          "VERSION.txt",
          "avatars/avatar-24-check.png",
          "avatars/company-avatar-800.png",
          "avatars/social-avatar-400.png",
          "avatars/social-avatar.svg",
          "beeldmerk/bb-beeldmerk-full-colour-dark.svg",
          "beeldmerk/bb-beeldmerk-full-colour-transparent.svg",
          "beeldmerk/bb-beeldmerk-full-mono-carbon.svg",
          "beeldmerk/bb-beeldmerk-full-mono-white.svg",
          "beeldmerk/ladder/bb-beeldmerk-128.png",
          "beeldmerk/ladder/bb-beeldmerk-16.png",
          "beeldmerk/ladder/bb-beeldmerk-20.png",
          "beeldmerk/ladder/bb-beeldmerk-24.png",
          "beeldmerk/ladder/bb-beeldmerk-32.png",
          "beeldmerk/ladder/bb-beeldmerk-48.png",
          "beeldmerk/ladder/bb-beeldmerk-64.png",
          "beeldmerk/ladder/bb-beeldmerk-96.png",
          "beeldmerk/micro/bb-beeldmerk-micro-colour-dark.svg",
          "beeldmerk/micro/bb-beeldmerk-micro-colour-transparent.svg",
          "beeldmerk/micro/bb-beeldmerk-micro-mono-carbon.svg",
          "beeldmerk/micro/bb-beeldmerk-micro-mono-white.svg",
          "business/bb-brand-book-cover-a4.svg",
          "business/bb-business-card-back-85x55mm.svg",
          "business/bb-business-card-front-85x55mm.svg",
          "business/bb-document-cover-a4.svg",
          "business/bb-identity-card-54x86mm.svg",
          "business/bb-invoice-header-a4.svg",
          "business/bb-letterhead-a4.svg",
          "business/bb-presentation-cover-16x9.svg",
          "business/bb-presentation-cover-1920.png",
          "email/bb-email-header-1200.png",
          "email/bb-email-header.svg",
          "email/bb-email-logo-480.png",
          "email/bb-email-logo.svg",
          "email/bb-email-signature-640.png",
          "email/bb-email-signature.svg",
          "fonts/SpaceGrotesk-Bold.ttf",
          "fonts/SpaceGrotesk-Light.ttf",
          "fonts/SpaceGrotesk-OFL.txt",
          "fonts/SpaceGrotesk-Regular.ttf",
          "icons/app-icon-rounded.svg",
          "icons/app-icon-square.svg",
          "icons/app-store-preview-1024.png",
          "icons/apple-touch-icon.png",
          "icons/favicon-16.png",
          "icons/favicon-32.png",
          "icons/favicon-48.png",
          "icons/favicon.ico",
          "icons/favicon.svg",
          "icons/maskable-512.png",
          "icons/maskable.svg",
          "icons/pwa-192.png",
          "icons/pwa-512.png",
          "logo/bb-lockup-admin-on-dark.svg",
          "logo/bb-lockup-admin-on-light.svg",
          "logo/bb-lockup-console-on-dark.svg",
          "logo/bb-lockup-console-on-light.svg",
          "logo/bb-lockup-email-on-dark.svg",
          "logo/bb-lockup-email-on-light.svg",
          "logo/bb-lockup-mobile-on-dark.svg",
          "logo/bb-lockup-mobile-on-light.svg",
          "logo/bb-lockup-navigation-on-dark.svg",
          "logo/bb-lockup-navigation-on-light.svg",
          "logo/bb-logo-horizontal-descriptor-mono-carbon.svg",
          "logo/bb-logo-horizontal-descriptor-mono-white.svg",
          "logo/bb-logo-horizontal-descriptor-on-dark.svg",
          "logo/bb-logo-horizontal-descriptor-on-light.svg",
          "logo/bb-logo-horizontal-descriptor-transparent.svg",
          "logo/bb-logo-horizontal-mono-carbon.svg",
          "logo/bb-logo-horizontal-mono-white.svg",
          "logo/bb-logo-horizontal-on-dark-glow.svg",
          "logo/bb-logo-horizontal-on-dark.svg",
          "logo/bb-logo-horizontal-on-light.svg",
          "logo/bb-logo-horizontal-transparent.svg",
          "logo/bb-logo-stacked-descriptor-mono-carbon.svg",
          "logo/bb-logo-stacked-descriptor-mono-white.svg",
          "logo/bb-logo-stacked-descriptor-on-dark.svg",
          "logo/bb-logo-stacked-descriptor-on-light.svg",
          "logo/bb-logo-stacked-descriptor-transparent.svg",
          "logo/bb-logo-stacked-mono-carbon.svg",
          "logo/bb-logo-stacked-mono-white.svg",
          "logo/bb-logo-stacked-on-dark.svg",
          "logo/bb-logo-stacked-on-light.svg",
          "logo/bb-logo-stacked-transparent.svg",
          "logo/bb-wordmark-mono-carbon.svg",
          "logo/bb-wordmark-mono-white.svg",
          "logo/bb-wordmark-on-dark.svg",
          "logo/bb-wordmark-on-light.svg",
          "logo/bb-wordmark-transparent.svg",
          "merchandise/bb-bottle-wrap.svg",
          "merchandise/bb-cap-front.svg",
          "merchandise/bb-hoodie-chest.svg",
          "merchandise/bb-mug-wrap.svg",
          "merchandise/bb-packaging-box.svg",
          "merchandise/bb-sticker-general.svg",
          "merchandise/bb-sticker-laptop.svg",
          "merchandise/bb-tote-bag.svg",
          "merchandise/bb-tshirt-chest.svg",
          "print/bb-door-sticker.svg",
          "print/bb-sign-exterior.svg",
          "print/bb-vehicle-side.svg",
          "print/bb-window-sticker.svg",
          "social/bb-open-graph.png",
          "social/bb-open-graph.svg",
          "social/bb-social-cover.png",
          "social/bb-social-cover.svg",
          "social/bb-social-post.png",
          "social/bb-social-post.svg",
          "social/bb-social-story.png",
          "social/bb-social-story.svg"
        ]
      },
      {
        "id": "data",
        "file": "/brand-assets/packages/bobby-brand-data-1.0.0.zip",
        "title": "Bobby Brand — Machine-readable brand-data package",
        "fileCount": 2,
        "bytes": 50249,
        "sha256": "self-referential — this archive contains this JSON; the hash is recorded in src/lib/asset-index.generated.ts",
        "includesFonts": false,
        "files": [
          "MANIFEST.md",
          "bobby-brand.1.0.0.json"
        ]
      }
    ]
  },
  "printReadiness": {
    "state": "not_press_ready",
    "reclassifiedFrom": "print-ready",
    "reclassifiedTo": "production-size vector artwork (print-production candidate)",
    "appliesToCategories": [
      "business",
      "environment",
      "merchandise"
    ],
    "rows": [
      {
        "attribute": "Physical dimensions",
        "finding": "Declared in mm in width/height and viewBox. Verified per file.",
        "verdict": "met"
      },
      {
        "attribute": "Bleed",
        "finding": "None drawn. 3 mm must be added at imposition.",
        "verdict": "not met"
      },
      {
        "attribute": "Trim",
        "finding": "Trim equals the stated mm size; no trim or registration marks.",
        "verdict": "partial"
      },
      {
        "attribute": "Safe area",
        "finding": "Brand clear space respected; no document safe-area guide drawn.",
        "verdict": "partial"
      },
      {
        "attribute": "Colour mode",
        "finding": "sRGB throughout. No CMYK conversion performed.",
        "verdict": "not met"
      },
      {
        "attribute": "Colour profile / output intent",
        "finding": "None embedded; SVG cannot carry a PDF/X output intent.",
        "verdict": "not met"
      },
      {
        "attribute": "Spot colours",
        "finding": "Neon Magenta and Electric Cyan are outside process CMYK; no Pantone or fluorescent equivalent specified or proofed.",
        "verdict": "not met"
      },
      {
        "attribute": "Font outlining",
        "finding": "Every exported SVG — wordmark, logo, lockup, context lockup, social template, business and presentation artwork — uses outlined paths generated from the approved Space Grotesk source (OFL 1.1) by scripts/gen-wordmark-paths.py and scripts/gen-text-outlines.py. Verified by scan: zero occurrences of font-family, @font-face or <text> across all 77 exported SVG files. No portable export depends on a locally installed font.",
        "verdict": "met"
      },
      {
        "attribute": "Linked resources",
        "finding": "None. Every file is self-contained.",
        "verdict": "met"
      },
      {
        "attribute": "Raster resolution",
        "finding": "No raster content in the vector artwork (no <image> element).",
        "verdict": "met"
      },
      {
        "attribute": "Transparency",
        "finding": "Physical artwork is drawn on an opaque plate; transparency is confined to screen variants.",
        "verdict": "met"
      },
      {
        "attribute": "Overprint",
        "finding": "Not set. Rich-black and overprint remain printer decisions.",
        "verdict": "not met"
      },
      {
        "attribute": "Minimum stroke width",
        "finding": "Thinnest drawn element 1.4 mm; R1 ring at the 12 mm minimum mark size is 0.72 mm. Above the 0.25 mm threshold.",
        "verdict": "met"
      },
      {
        "attribute": "Production format",
        "finding": "SVG 1.1 only. No PDF/X-4, EPS or AI.",
        "verdict": "not met"
      },
      {
        "attribute": "Intended process",
        "finding": "Digital/offset for paper, print-and-cut vinyl for signage and vehicle, screen print or DTG for apparel. Unconfirmed with any vendor.",
        "verdict": "documented"
      },
      {
        "attribute": "Vendor dependencies",
        "finding": "Imposition, separation, substrate and proofing all depend on a named printer. None engaged.",
        "verdict": "open"
      }
    ],
    "deferredFormats": [
      "PDF/X-4 press exports",
      "Embroidery digitising (DST/EMB)",
      "Screen-print separations",
      "Vendor-specific vehicle wrap die-lines",
      "Pantone / fluorescent spot specification"
    ],
    "prohibitedClaim": "No Bobby Brand SVG or PNG may be described as print-ready, press-ready or PDF/X compliant."
  },
  "packaging": [
    {
      "pack": "Logo pack",
      "contents": "Horizontal, stacked, wordmark-only, beeldmerk-only × dark/light/mono/no-glow",
      "formats": "SVG source + PNG size ladder",
      "state": "Generated in P1D from canonical R1 — candidate, not finally approved"
    },
    {
      "pack": "Icon pack",
      "contents": "App icon, favicon family, PWA 192/512, Apple touch 180, Android adaptive",
      "formats": "SVG, PNG, ICO",
      "state": "Generated in P1D from canonical R1 (SVG, PNG, ICO, maskable) — candidate"
    },
    {
      "pack": "Social pack",
      "contents": "Avatar, covers per platform, OG, post/story templates, thumbnail",
      "formats": "PNG, SVG",
      "state": "Generated in P1D (avatar, cover, post, story, Open Graph) — candidate"
    },
    {
      "pack": "Email pack",
      "contents": "Header, signature, logo at 1× and 2×",
      "formats": "SVG + PNG",
      "state": "Generated in P1D — candidate. No email capability exists."
    },
    {
      "pack": "Business pack",
      "contents": "Card, letterhead, invoice, envelope, badge, presentation",
      "formats": "Production-size RGB SVG in millimetres",
      "state": "Generated in P1D as production-size vector artwork. NOT press-ready: PDF/X-4, bleed and spot colour remain deferred."
    },
    {
      "pack": "Merchandise pack",
      "contents": "One-colour marks, embroidery digitising, screen-print separations",
      "formats": "Production-size RGB SVG in millimetres",
      "state": "Application artwork generated in P1D. Embroidery digitising (DST) and screen separations remain deferred."
    },
    {
      "pack": "Brand book",
      "contents": "Human-readable brand book",
      "formats": "Web, PDF",
      "state": "Web complete as candidate; PDF export planned"
    },
    {
      "pack": "Brand data",
      "contents": "Structured brand representation",
      "formats": "JSON",
      "state": "Regenerated and reconciled in P1D at version 0.2.0-candidate"
    }
  ],
  "favicon": {
    "productionFamilyState": "generated_from_canonical_r1",
    "supersededProvisional": {
      "path": "public/favicon.svg (P1C)",
      "state": "superseded",
      "geometry": "The P1C provisional favicon was direction-level only — a single rounded magenta→cyan beam with no R1 ring. It was replaced in P1D once R1 was selected.",
      "replacedBy": "R1-derived favicon family generated by scripts/build-assets.ts."
    },
    "templateDefault": {
      "path": "public/favicon.ico",
      "state": "replaced",
      "reason": "The Lovable template default was removed in P1C. /favicon.ico is now a genuine Bobby Brand R1 icon containing 16, 32 and 48 px frames."
    },
    "generated": [
      "favicon.svg — micro R1 below 32 px, full R1 above, no glow",
      "favicon-16.png / favicon-32.png / favicon-48.png",
      "favicon.ico — 16/32/48 px frames",
      "apple-touch-icon.png — 180 px, rounded Carbon plate",
      "pwa-192.png / pwa-512.png",
      "maskable-512.png — 20% safe-area inset"
    ],
    "variantRule": "Every icon at or above 32 px renders full R1. The 16 px frame and the 16–31 px range of favicon.svg render micro R1.",
    "notGenerated": [
      "Windows tile assets",
      "Android adaptive foreground/background XML"
    ]
  },
  "deliverables": {
    "missing": [
      {
        "id": "del-legal-identity",
        "name": "Legal entity, registration and regions",
        "state": "missing",
        "blockedBy": "Owner-supplied facts",
        "detail": "No legal facts were supplied and none were invented."
      },
      {
        "id": "del-credit-quantity",
        "name": "Included post-completion Bobby Credit quantity",
        "state": "missing",
        "blockedBy": "Owner decision",
        "detail": "Undecided; must not be stated anywhere."
      },
      {
        "id": "del-a11y-audit",
        "name": "Third-party accessibility audit",
        "state": "missing",
        "blockedBy": "Later phase",
        "detail": "Contrast values are computed, not certified."
      },
      {
        "id": "del-photo-library",
        "name": "Photographic imagery library",
        "state": "missing",
        "blockedBy": "Later phase",
        "detail": "Imagery direction authored; nothing shot or licensed."
      }
    ],
    "deferred": [
      {
        "id": "del-print",
        "name": "Press-ready print exports (PDF/X-4, bleed, trim marks, output intent, spot colour)",
        "state": "deferred",
        "blockedBy": "Print production phase and a named printer",
        "detail": "The generated business, signage and merchandise SVGs are production-size RGB vector artwork in millimetres. They carry no bleed, no trim marks, no CMYK/spot separation and no ICC output intent, so they are not press-ready."
      },
      {
        "id": "del-embroidery",
        "name": "Embroidery digitising (DST/EMB) and screen separations",
        "state": "deferred",
        "blockedBy": "Vendor production phase",
        "detail": "Merchandise artwork is application artwork only; no stitch file or separation exists."
      },
      {
        "id": "del-vehicle-template",
        "name": "Vendor-specific vehicle wrap templates",
        "state": "deferred",
        "blockedBy": "Named vehicle model and wrap vendor",
        "detail": "The vehicle artwork is a generic proportional panel, not a die-line for any vehicle."
      },
      {
        "id": "del-spot-colour",
        "name": "Spot-colour specification (Pantone / fluorescent equivalents)",
        "state": "deferred",
        "blockedBy": "Printer consultation",
        "detail": "Neon Magenta and Electric Cyan are outside process CMYK. No spot equivalent has been proofed or agreed."
      },
      {
        "id": "del-brandbook-pdf",
        "name": "Brand book PDF export",
        "state": "deferred",
        "blockedBy": "Later phase",
        "detail": "The brand book exists as a web candidate only."
      },
      {
        "id": "del-auth",
        "name": "Authentication, tenancy and server-side authorization",
        "state": "deferred",
        "blockedBy": "Separately approved phase",
        "detail": "Not connected in any form."
      },
      {
        "id": "del-owner-ceremony",
        "name": "Platform Owner provisioning ceremony",
        "state": "deferred",
        "blockedBy": "Separately approved phase",
        "detail": "Requirements recorded only."
      },
      {
        "id": "del-email",
        "name": "Transactional email incl. Mailinator canary",
        "state": "deferred",
        "blockedBy": "Separately approved phase",
        "detail": "Standard recorded; nothing configured or sent."
      },
      {
        "id": "del-generation",
        "name": "Customer brand generation, credits and billing",
        "state": "deferred",
        "blockedBy": "Separately approved phase",
        "detail": "No generation, credit or payment capability exists."
      },
      {
        "id": "del-api",
        "name": "API and MCP endpoints",
        "state": "deferred",
        "blockedBy": "Separately approved phase",
        "detail": "Structured data is shaped for it; no endpoint exists."
      }
    ]
  },
  "approval": {
    "approvalState": "approved 1.0.0 — creative direction approved, R1 construction selected, production export repair P1D-R1 completed after a verification escape, Product Owner acceptance granted 2026-08-26 (bb-acceptance-0001) and the accepted candidate promoted to canonical 1.0.0; no Platform Owner database role is provisioned",
    "publicationState": "published — 1.0.0 is the canonical, Product Owner approved, active production identity. The accepted 0.2.0-candidate evidence is preserved unmodified as its reviewed predecessor.",
    "publishedAssets": [],
    "supersededAssets": [],
    "approvalControl": "No approval control exists in the product. Selection and approval happen by explicit owner instruction only."
  },
  "acceptance": {
    "recordId": "bb-acceptance-0001",
    "immutable": true,
    "product": "Bobby Brand",
    "canonicalDomain": "bobbybrand.com",
    "productOwner": "Alex",
    "productOwnerEmail": "alex@siteways.io",
    "role": "Product Owner; intended Platform Owner, not provisioned in the database",
    "approvedSystem": "Brand Beam / Neon Studio — R1 True Aperture",
    "approvedCandidate": "0.2.0-candidate",
    "reviewSurface": "/brand/production-review",
    "approvalDate": "2026-08-26",
    "approvalTimestampUtc": "2026-08-26T00:25:00Z",
    "assetCount": 105,
    "packageCount": 9,
    "schemaVersion": "bobby-brand-data/1",
    "jsonArtefact": "/brand/bobby-brand.0.2.0-candidate.json",
    "microBreakpointPx": 32,
    "packages": [
      {
        "id": "logo",
        "file": "/brand-evidence/0.2.0-candidate/packages/bobby-brand-logo-0.2.0-candidate.zip",
        "fileCount": 59,
        "bytes": 294283,
        "sha256": "8756e4445c7e85d5e0f4ef7c928381ef835535f209635b3530df5ca56441db09"
      },
      {
        "id": "icons",
        "file": "/brand-evidence/0.2.0-candidate/packages/bobby-brand-icons-0.2.0-candidate.zip",
        "fileCount": 15,
        "bytes": 113351,
        "sha256": "28477c92dc479aaf79c9cf3154fb20ec50ed617a3306b50520266d067ee0dc80"
      },
      {
        "id": "digital",
        "file": "/brand-evidence/0.2.0-candidate/packages/bobby-brand-digital-0.2.0-candidate.zip",
        "fileCount": 63,
        "bytes": 398655,
        "sha256": "0e6700be3a8d8fe7fa7a2d9dcb7f463c4dcebd95398590f013320be82f31fe56"
      },
      {
        "id": "social",
        "file": "/brand-evidence/0.2.0-candidate/packages/bobby-brand-social-0.2.0-candidate.zip",
        "fileCount": 14,
        "bytes": 186255,
        "sha256": "1866b010d2c06a7d1a1672c04d544b3143ce1bf26ee796c59cc1a6b770ec690a"
      },
      {
        "id": "email",
        "file": "/brand-evidence/0.2.0-candidate/packages/bobby-brand-email-0.2.0-candidate.zip",
        "fileCount": 8,
        "bytes": 35210,
        "sha256": "1ce3a237eb76b67dde976a4bc8da2878e6f3bc451aa6f57ab30b4f01768727b5"
      },
      {
        "id": "business",
        "file": "/brand-evidence/0.2.0-candidate/packages/bobby-brand-business-0.2.0-candidate.zip",
        "fileCount": 16,
        "bytes": 227015,
        "sha256": "e626699954ca0fb760c5ee0d22d914ecf3dfc91090461044fa2548c281d7403b"
      },
      {
        "id": "merchandise",
        "file": "/brand-evidence/0.2.0-candidate/packages/bobby-brand-merchandise-0.2.0-candidate.zip",
        "fileCount": 15,
        "bytes": 31021,
        "sha256": "18038cf25e8aeb81df53a1c4a25ee7202a1a28965f634326e703dbc6ca60f9b6"
      },
      {
        "id": "complete",
        "file": "/brand-evidence/0.2.0-candidate/packages/bobby-brand-complete-0.2.0-candidate.zip",
        "fileCount": 112,
        "bytes": 710841,
        "sha256": "24c70f6790c5d0dcd42582258862953c9c08881fee62181b2f506a1568c0718c"
      },
      {
        "id": "data",
        "file": "/brand-evidence/0.2.0-candidate/packages/bobby-brand-data-0.2.0-candidate.zip",
        "fileCount": 2,
        "bytes": 47729,
        "sha256": "293cdc95ac204beb4a8e2b52d2e51f86d87417be3a25e901d3344347b5488a55"
      }
    ],
    "approvedScope": [
      "Brand Beam / Neon Studio direction",
      "R1 — True Aperture canonical beeldmerk construction",
      "Strictly R1-derived micro rendering and the documented 32 px breakpoint",
      "Wordmark, typography, horizontal and stacked lockups, descriptor",
      "Dark, light, monochrome, glow and no-glow systems",
      "Colour palette and tokens",
      "Favicons, app icons, avatars",
      "Social, email, business, environmental and merchandise artwork",
      "Human-readable master brand book and machine-readable representation",
      "Asset manifest and the nine verified packages",
      "The currently documented honest production limitations"
    ],
    "knownLimitations": [
      "Contrast values are computed, not certified by a third-party accessibility audit.",
      "Neon Magenta and Electric Cyan sit outside process CMYK; no spot equivalent is proofed.",
      "Business, signage and merchandise SVGs are production-size RGB vector artwork without bleed, trim marks, separations or ICC output intent.",
      "Merchandise artwork carries no stitch files or screen separations.",
      "The vehicle panel is proportional artwork, not a vendor die-line.",
      "The brand book exists as a web document only.",
      "No photographic imagery library is shot or licensed."
    ],
    "deferredProductionFormats": [
      "Press-ready PDF/X-4 exports",
      "CMYK and spot-colour separations",
      "Embroidery digitising (DST/EMB)",
      "Screen-print separations",
      "Vendor-specific vehicle wrap die-lines",
      "Brand book PDF export"
    ],
    "scopeConfirmation": "This approval covers the Bobby Brand brand system only. It does not provision any Platform Owner database role and does not approve, certify or activate customer brand generation, crawling, integrations, billing, credits, API or MCP capability.",
    "decorativeMotifConstraint": "The decorative Brand Beam motif remains a supporting graphic element. It is not the beeldmerk and may not replace full or micro R1 inside identity lockups.",
    "rejectedEvidence": "Directions B and C, and refinements R2 and R3, remain rejected archival evidence and are never produced as production artwork."
  },
  "release": {
    "version": "1.0.0",
    "status": "Canonical — Product Owner approved, published brand system, active production identity",
    "states": [
      "canonical",
      "product-owner-approved",
      "published",
      "active-production-identity"
    ],
    "promotedFrom": "0.2.0-candidate",
    "promotedBy": "Alex (alex@siteways.io)",
    "promotedAtUtc": "2026-08-26T00:25:00Z",
    "acceptanceRecordId": "bb-acceptance-0001",
    "promotionMethod": "Deterministic regeneration from the same governed source modules. Only version, status and reference values changed; no asset geometry, colour, typography, layout or copy was redesigned during promotion.",
    "predecessorPreservation": "The accepted 0.2.0-candidate JSON, asset index snapshot and nine archives remain on disk, unmodified, as the exact reviewed predecessor.",
    "preservedHistory": [
      "P1B candidate directions A, B and C (/brand-archive)",
      "R1 / R2 / R3 refinement evidence (/brand-refinements, /brand-archive)",
      "Corrected P1D-R1 defect and verification-escape evidence (governance records)",
      "0.2.0-candidate accepted evidence (JSON, asset index snapshot, nine archives)",
      "1.0.0 canonical release (this release)"
    ],
    "scopeConfirmation": "This approval covers the Bobby Brand brand system only. It does not provision any Platform Owner database role and does not approve, certify or activate customer brand generation, crawling, integrations, billing, credits, API or MCP capability."
  },
  "phaseClosure": {
    "phase": "P1D — R1 canonicalization and complete production asset system",
    "state": "accepted_and_closed",
    "acceptedBy": "Alex (alex@siteways.io)",
    "acceptedAtUtc": "2026-08-26T00:25:00Z",
    "acceptedArtefact": "0.2.0-candidate",
    "releasedArtefact": "1.0.0"
  },
  "stateVocabulary": {
    "assetStates": [
      {
        "id": "approved_creative_direction",
        "label": "Approved creative direction",
        "definition": "A creative direction explicitly approved by the brand owner. Approval covers concept and named source values only, never geometry or files.",
        "impliesOwnerApproval": true
      },
      {
        "id": "candidate_refinement",
        "label": "Candidate refinement",
        "definition": "A materially distinct refinement of an approved direction, presented for owner selection. Not selected, not preferred, not canonical.",
        "impliesOwnerApproval": false
      },
      {
        "id": "non_binding_recommendation",
        "label": "Non-binding recommendation",
        "definition": "A documented design opinion with rendered evidence. It carries no authority and never advances a candidate's state.",
        "impliesOwnerApproval": false
      },
      {
        "id": "owner_selected_refinement",
        "label": "Owner-selected refinement",
        "definition": "The single refinement the owner has explicitly selected. Absent until the owner selects one.",
        "impliesOwnerApproval": true
      },
      {
        "id": "production_candidate",
        "label": "Production candidate",
        "definition": "Geometry or copy proposed for production, derived from an owner-selected refinement, still awaiting asset approval.",
        "impliesOwnerApproval": false
      },
      {
        "id": "owner_approved_asset",
        "label": "Owner-approved asset",
        "definition": "A specific asset the owner has approved as final for its stated use.",
        "impliesOwnerApproval": true
      },
      {
        "id": "published_asset",
        "label": "Published asset",
        "definition": "An owner-approved asset that is live at a stated location.",
        "impliesOwnerApproval": true
      },
      {
        "id": "superseded_asset",
        "label": "Superseded asset",
        "definition": "A previously approved or published asset replaced by a later version. Retained, never edited or deleted.",
        "impliesOwnerApproval": false
      },
      {
        "id": "preview",
        "label": "Preview",
        "definition": "A rendering that explains placement, safe area or minimum size. Never a production or print-ready file.",
        "impliesOwnerApproval": false
      },
      {
        "id": "mockup",
        "label": "Mockup",
        "definition": "An illustrative composition used to show context. Not a deliverable in any format.",
        "impliesOwnerApproval": false
      },
      {
        "id": "documented_not_generated",
        "label": "Documented but not generated",
        "definition": "Requirements, sizes and rules are recorded, but no file has been produced.",
        "impliesOwnerApproval": false
      },
      {
        "id": "not_applicable",
        "label": "Not applicable",
        "definition": "The brand legitimately does not need this. Must always carry a reason.",
        "impliesOwnerApproval": false
      },
      {
        "id": "deferred",
        "label": "Deferred",
        "definition": "In scope for the brand but explicitly postponed to a later approved phase.",
        "impliesOwnerApproval": false
      },
      {
        "id": "missing",
        "label": "Missing",
        "definition": "Required information or decision that has not been supplied. Never invented to fill the gap.",
        "impliesOwnerApproval": false
      },
      {
        "id": "provisional",
        "label": "Provisional",
        "definition": "A deliberately temporary artefact that must not be read as canonical, and which is replaced once the blocking decision is made.",
        "impliesOwnerApproval": false
      }
    ],
    "assetStateLabels": {
      "approved_creative_direction": "Approved creative direction",
      "candidate_refinement": "Candidate refinement",
      "non_binding_recommendation": "Non-binding recommendation",
      "owner_selected_refinement": "Owner-selected refinement",
      "production_candidate": "Production candidate",
      "owner_approved_asset": "Owner-approved asset",
      "published_asset": "Published asset",
      "superseded_asset": "Superseded asset",
      "preview": "Preview",
      "mockup": "Mockup",
      "documented_not_generated": "Documented but not generated",
      "not_applicable": "Not applicable",
      "deferred": "Deferred",
      "missing": "Missing",
      "provisional": "Provisional"
    },
    "coverageStates": {
      "not_applicable": "Not applicable",
      "missing_information": "Missing information",
      "owner_decision_required": "Owner decision required",
      "generated": "Generated",
      "reviewed": "Reviewed",
      "approved": "Approved",
      "superseded": "Superseded"
    }
  },
  "template": {
    "schema": "bobby-brand/master-brand-book/v2",
    "modules": [
      {
        "id": "identity",
        "chapter": "01 Foundation",
        "title": "Legal & identity facts",
        "necessity": "required",
        "purpose": "Who the brand legally is, in which regions, under which names.",
        "fields": [
          {
            "key": "legalName",
            "label": "Legal entity name",
            "kind": "text",
            "necessity": "conditional",
            "condition": "Personal brands may have no legal entity."
          },
          {
            "key": "tradingNames",
            "label": "Trading / product names",
            "kind": "list",
            "necessity": "required"
          },
          {
            "key": "regions",
            "label": "Regions of operation",
            "kind": "list",
            "necessity": "required"
          },
          {
            "key": "languages",
            "label": "Brand languages",
            "kind": "list",
            "necessity": "required"
          },
          {
            "key": "industry",
            "label": "Industry / category",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "brandType",
            "label": "Brand type (corporate, personal, product, service, non-profit)",
            "kind": "enum",
            "necessity": "required"
          }
        ]
      },
      {
        "id": "strategy",
        "chapter": "01 Foundation",
        "title": "Strategy",
        "necessity": "required",
        "purpose": "Why the brand exists and where it stands.",
        "fields": [
          {
            "key": "purpose",
            "label": "Purpose",
            "kind": "richtext",
            "necessity": "required"
          },
          {
            "key": "mission",
            "label": "Mission",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "vision",
            "label": "Vision",
            "kind": "text",
            "necessity": "recommended"
          },
          {
            "key": "positioning",
            "label": "Positioning statement",
            "kind": "richtext",
            "necessity": "required"
          },
          {
            "key": "problem",
            "label": "Customer problem",
            "kind": "richtext",
            "necessity": "required"
          },
          {
            "key": "promise",
            "label": "Brand promise",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "valueProposition",
            "label": "Value proposition",
            "kind": "richtext",
            "necessity": "required"
          },
          {
            "key": "differentiators",
            "label": "Differentiators",
            "kind": "list",
            "necessity": "required"
          },
          {
            "key": "story",
            "label": "Brand story",
            "kind": "richtext",
            "necessity": "recommended"
          },
          {
            "key": "archetype",
            "label": "Archetype",
            "kind": "text",
            "necessity": "optional"
          }
        ]
      },
      {
        "id": "audience",
        "chapter": "01 Foundation",
        "title": "Audiences",
        "necessity": "required",
        "purpose": "Who the brand speaks to and what each group needs.",
        "fields": [
          {
            "key": "segments",
            "label": "Audience segments",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "antiAudience",
            "label": "Who this brand is not for",
            "kind": "list",
            "necessity": "optional"
          }
        ]
      },
      {
        "id": "personality",
        "chapter": "02 Language",
        "title": "Personality & voice",
        "necessity": "required",
        "purpose": "How the brand sounds, consistently.",
        "fields": [
          {
            "key": "personality",
            "label": "Personality traits",
            "kind": "list",
            "necessity": "required"
          },
          {
            "key": "principles",
            "label": "Writing principles",
            "kind": "list",
            "necessity": "required"
          },
          {
            "key": "wordsToUse",
            "label": "Words to use",
            "kind": "list",
            "necessity": "recommended"
          },
          {
            "key": "wordsToAvoid",
            "label": "Words to avoid",
            "kind": "list",
            "necessity": "recommended"
          },
          {
            "key": "doDont",
            "label": "Do / don't examples",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "modes",
            "label": "Voice modes (error, support, sales, docs)",
            "kind": "table",
            "necessity": "recommended"
          },
          {
            "key": "multilingual",
            "label": "Per-language voice guidance",
            "kind": "table",
            "necessity": "conditional",
            "condition": "Only for brands operating in more than one language."
          }
        ]
      },
      {
        "id": "vocabulary",
        "chapter": "02 Language",
        "title": "Vocabulary & naming",
        "necessity": "required",
        "purpose": "Agreed terms, and what never to call them.",
        "fields": [
          {
            "key": "terms",
            "label": "Term / meaning / not",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "namingConventions",
            "label": "Naming conventions",
            "kind": "list",
            "necessity": "recommended"
          }
        ]
      },
      {
        "id": "descriptions",
        "chapter": "02 Language",
        "title": "Descriptions & taglines",
        "necessity": "required",
        "purpose": "Reusable copy at every length.",
        "fields": [
          {
            "key": "oneSentence",
            "label": "One-sentence description",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "short",
            "label": "Short description",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "medium",
            "label": "Medium description",
            "kind": "richtext",
            "necessity": "required"
          },
          {
            "key": "full",
            "label": "Full description",
            "kind": "richtext",
            "necessity": "recommended"
          },
          {
            "key": "elevatorPitch",
            "label": "Elevator pitch",
            "kind": "richtext",
            "necessity": "recommended"
          },
          {
            "key": "boilerplate",
            "label": "Boilerplate",
            "kind": "richtext",
            "necessity": "recommended"
          },
          {
            "key": "tagline",
            "label": "Tagline",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "supportingTaglines",
            "label": "Supporting taglines",
            "kind": "list",
            "necessity": "optional"
          }
        ]
      },
      {
        "id": "logo",
        "chapter": "03 Identity",
        "title": "Logo system",
        "necessity": "required",
        "purpose": "Every approved arrangement of the mark, and its limits.",
        "fields": [
          {
            "key": "beeldmerk",
            "label": "Symbol variants",
            "kind": "assets",
            "necessity": "conditional",
            "condition": "Wordmark-only brands have no symbol."
          },
          {
            "key": "wordmark",
            "label": "Wordmark",
            "kind": "assets",
            "necessity": "required"
          },
          {
            "key": "lockups",
            "label": "Lockups",
            "kind": "assets",
            "necessity": "required"
          },
          {
            "key": "descriptor",
            "label": "Descriptor",
            "kind": "text",
            "necessity": "optional"
          },
          {
            "key": "clearSpace",
            "label": "Clear space",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "minimums",
            "label": "Minimum sizes",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "breakpoints",
            "label": "Responsive breakpoints",
            "kind": "table",
            "necessity": "recommended"
          },
          {
            "key": "monochrome",
            "label": "Monochrome behaviour",
            "kind": "assets",
            "necessity": "required"
          },
          {
            "key": "effects",
            "label": "Effect rules (glow, shadow, texture)",
            "kind": "list",
            "necessity": "conditional",
            "condition": "Only for brands whose identity uses effects at all."
          },
          {
            "key": "prohibited",
            "label": "Prohibited uses",
            "kind": "list",
            "necessity": "required"
          },
          {
            "key": "coBranding",
            "label": "Co-branding",
            "kind": "list",
            "necessity": "optional"
          }
        ]
      },
      {
        "id": "colour",
        "chapter": "03 Identity",
        "title": "Colour system",
        "necessity": "required",
        "purpose": "Source colours, derived tokens and contrast evidence.",
        "fields": [
          {
            "key": "source",
            "label": "Source colours",
            "kind": "tokens",
            "necessity": "required"
          },
          {
            "key": "derived",
            "label": "Derived tokens by role",
            "kind": "tokens",
            "necessity": "required"
          },
          {
            "key": "modes",
            "label": "Light / dark / print / monochrome",
            "kind": "tokens",
            "necessity": "recommended"
          },
          {
            "key": "contrast",
            "label": "Contrast evidence",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "prohibited",
            "label": "Prohibited combinations",
            "kind": "list",
            "necessity": "required"
          }
        ]
      },
      {
        "id": "typography",
        "chapter": "03 Identity",
        "title": "Typography",
        "necessity": "required",
        "purpose": "Families, licensing, scale and misuse.",
        "fields": [
          {
            "key": "families",
            "label": "Families & licensing",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "scale",
            "label": "Type scale",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "casing",
            "label": "Casing rules",
            "kind": "list",
            "necessity": "recommended"
          },
          {
            "key": "misuse",
            "label": "Misuse examples",
            "kind": "list",
            "necessity": "recommended"
          }
        ]
      },
      {
        "id": "iconography",
        "chapter": "03 Identity",
        "title": "Iconography, imagery & pattern",
        "necessity": "recommended",
        "purpose": "Supporting visual language.",
        "fields": [
          {
            "key": "icons",
            "label": "Icon style",
            "kind": "text",
            "necessity": "recommended"
          },
          {
            "key": "imagery",
            "label": "Imagery direction",
            "kind": "richtext",
            "necessity": "recommended"
          },
          {
            "key": "pattern",
            "label": "Pattern / texture",
            "kind": "text",
            "necessity": "optional"
          },
          {
            "key": "motion",
            "label": "Motion principles",
            "kind": "list",
            "necessity": "conditional",
            "condition": "Only for brands with digital motion surfaces."
          }
        ]
      },
      {
        "id": "layout",
        "chapter": "03 Identity",
        "title": "Layout & grid",
        "necessity": "recommended",
        "purpose": "Spacing rhythm, grid, radii, elevation.",
        "fields": [
          {
            "key": "spacing",
            "label": "Spacing scale",
            "kind": "tokens",
            "necessity": "recommended"
          },
          {
            "key": "grid",
            "label": "Grid",
            "kind": "text",
            "necessity": "recommended"
          },
          {
            "key": "radius",
            "label": "Radii",
            "kind": "tokens",
            "necessity": "optional"
          },
          {
            "key": "elevation",
            "label": "Elevation",
            "kind": "tokens",
            "necessity": "optional"
          }
        ]
      },
      {
        "id": "emoji",
        "chapter": "04 Communication",
        "title": "Emoji system",
        "necessity": "optional",
        "purpose": "Governed emoji selection.",
        "appliesWhen": "Brand communicates on channels where emoji are appropriate.",
        "fields": [
          {
            "key": "primary",
            "label": "Signature emoji",
            "kind": "list",
            "necessity": "optional"
          },
          {
            "key": "functional",
            "label": "Functional emoji",
            "kind": "list",
            "necessity": "optional"
          },
          {
            "key": "avoid",
            "label": "Emoji to avoid",
            "kind": "list",
            "necessity": "optional"
          },
          {
            "key": "rules",
            "label": "Frequency & context rules",
            "kind": "list",
            "necessity": "optional"
          }
        ]
      },
      {
        "id": "social",
        "chapter": "04 Communication",
        "title": "Social system",
        "necessity": "conditional",
        "purpose": "Profiles, copy patterns and templates per platform.",
        "appliesWhen": "Brand maintains at least one social profile.",
        "fields": [
          {
            "key": "bios",
            "label": "Biographies",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "posts",
            "label": "Example posts per platform",
            "kind": "table",
            "necessity": "recommended"
          },
          {
            "key": "hashtags",
            "label": "Hashtag rules",
            "kind": "list",
            "necessity": "optional"
          },
          {
            "key": "templates",
            "label": "Post / story / cover templates",
            "kind": "assets",
            "necessity": "recommended"
          }
        ]
      },
      {
        "id": "email",
        "chapter": "04 Communication",
        "title": "Email identity",
        "necessity": "recommended",
        "purpose": "Header, signature, transactional tone.",
        "fields": [
          {
            "key": "header",
            "label": "Email header",
            "kind": "assets",
            "necessity": "recommended"
          },
          {
            "key": "signature",
            "label": "Signature",
            "kind": "assets",
            "necessity": "recommended"
          },
          {
            "key": "tone",
            "label": "Transactional tone",
            "kind": "text",
            "necessity": "optional"
          }
        ]
      },
      {
        "id": "digital",
        "chapter": "05 Applications",
        "title": "Digital assets",
        "necessity": "required",
        "purpose": "Web, app, icon and sharing assets.",
        "fields": [
          {
            "key": "web",
            "label": "Site header / footer",
            "kind": "assets",
            "necessity": "required"
          },
          {
            "key": "appIcons",
            "label": "App icons & favicons",
            "kind": "assets",
            "necessity": "conditional",
            "condition": "Brands without a digital product may not need app icons."
          },
          {
            "key": "og",
            "label": "Open Graph / sharing",
            "kind": "assets",
            "necessity": "recommended"
          },
          {
            "key": "product",
            "label": "Product UI surfaces",
            "kind": "assets",
            "necessity": "conditional",
            "condition": "Only for brands that own software."
          }
        ]
      },
      {
        "id": "business",
        "chapter": "05 Applications",
        "title": "Business documents",
        "necessity": "recommended",
        "purpose": "Stationery and commercial documents.",
        "fields": [
          {
            "key": "card",
            "label": "Business card",
            "kind": "assets",
            "necessity": "recommended"
          },
          {
            "key": "letterhead",
            "label": "Letterhead & envelope",
            "kind": "assets",
            "necessity": "optional"
          },
          {
            "key": "invoice",
            "label": "Invoice",
            "kind": "assets",
            "necessity": "optional"
          },
          {
            "key": "presentation",
            "label": "Presentation template",
            "kind": "assets",
            "necessity": "recommended"
          },
          {
            "key": "badge",
            "label": "Identity card / staff badge",
            "kind": "assets",
            "necessity": "conditional",
            "condition": "Only for brands with staff or premises."
          }
        ]
      },
      {
        "id": "environment",
        "chapter": "05 Applications",
        "title": "Environmental & vehicle",
        "necessity": "conditional",
        "purpose": "Physical premises and transport.",
        "appliesWhen": "Brand has premises, signage or vehicles.",
        "fields": [
          {
            "key": "signage",
            "label": "Office / door signage",
            "kind": "assets",
            "necessity": "conditional"
          },
          {
            "key": "window",
            "label": "Window graphics",
            "kind": "assets",
            "necessity": "optional"
          },
          {
            "key": "vehicle",
            "label": "Vehicle branding",
            "kind": "assets",
            "necessity": "conditional",
            "condition": "Not applicable to brands without vehicles."
          }
        ]
      },
      {
        "id": "merchandise",
        "chapter": "05 Applications",
        "title": "Merchandise & packaging",
        "necessity": "conditional",
        "purpose": "Apparel, giveaways, packaging.",
        "appliesWhen": "Brand produces physical goods or merchandise.",
        "fields": [
          {
            "key": "apparel",
            "label": "Apparel",
            "kind": "assets",
            "necessity": "optional"
          },
          {
            "key": "stickers",
            "label": "Stickers",
            "kind": "assets",
            "necessity": "optional"
          },
          {
            "key": "drinkware",
            "label": "Drinkware",
            "kind": "assets",
            "necessity": "optional"
          },
          {
            "key": "packaging",
            "label": "Packaging",
            "kind": "assets",
            "necessity": "conditional",
            "condition": "Required for product brands, not applicable to most service brands."
          },
          {
            "key": "uniform",
            "label": "Uniforms",
            "kind": "assets",
            "necessity": "conditional",
            "condition": "Retail/hospitality brands only."
          }
        ]
      },
      {
        "id": "accessibility",
        "chapter": "06 Governance",
        "title": "Accessibility",
        "necessity": "required",
        "purpose": "Contrast, motion, language and alternative text requirements.",
        "fields": [
          {
            "key": "contrast",
            "label": "Contrast targets",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "motion",
            "label": "Reduced-motion behaviour",
            "kind": "text",
            "necessity": "conditional",
            "condition": "Digital surfaces only."
          },
          {
            "key": "altText",
            "label": "Alt-text conventions",
            "kind": "list",
            "necessity": "recommended"
          },
          {
            "key": "regional",
            "label": "Regional accessibility obligations",
            "kind": "list",
            "necessity": "conditional"
          }
        ]
      },
      {
        "id": "governance",
        "chapter": "06 Governance",
        "title": "Approval, version & provenance",
        "necessity": "required",
        "purpose": "Who approved what, when, and what it supersedes.",
        "fields": [
          {
            "key": "version",
            "label": "System version",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "status",
            "label": "Approval status",
            "kind": "enum",
            "necessity": "required"
          },
          {
            "key": "decisionRecord",
            "label": "Owner decision record",
            "kind": "richtext",
            "necessity": "required"
          },
          {
            "key": "provenance",
            "label": "Provenance (Observed / Inferred / Approved)",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "archived",
            "label": "Archived directions",
            "kind": "table",
            "necessity": "recommended"
          },
          {
            "key": "openDecisions",
            "label": "Open owner decisions",
            "kind": "list",
            "necessity": "required"
          }
        ]
      },
      {
        "id": "assets",
        "chapter": "06 Governance",
        "title": "Asset manifest",
        "necessity": "required",
        "purpose": "Every asset, its variant, format, status and whether it is a preview or a production export.",
        "fields": [
          {
            "key": "records",
            "label": "Asset records",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "packaging",
            "label": "Delivery packages",
            "kind": "table",
            "necessity": "recommended"
          }
        ]
      }
    ],
    "governanceModules": [
      {
        "id": "owner_decision",
        "chapter": "06 Governance",
        "title": "Owner decision record",
        "necessity": "required",
        "purpose": "The durable, immutable record of what the brand owner decided, when, and with what scope.",
        "fields": [
          {
            "key": "recordId",
            "label": "Record identifier",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "decidedBy",
            "label": "Deciding person and role",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "decisionDate",
            "label": "Decision date",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "selected",
            "label": "Selected direction",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "rejected",
            "label": "Rejected directions",
            "kind": "list",
            "necessity": "recommended"
          },
          {
            "key": "scope",
            "label": "Explicit decision scope",
            "kind": "richtext",
            "necessity": "required"
          },
          {
            "key": "unresolved",
            "label": "Unresolved decisions",
            "kind": "list",
            "necessity": "required"
          }
        ]
      },
      {
        "id": "owner_identity",
        "chapter": "06 Governance",
        "title": "Product owner identity & authority boundaries",
        "necessity": "required",
        "purpose": "Who holds brand authority, and the limits of what an identifier proves.",
        "fields": [
          {
            "key": "productOwner",
            "label": "Product owner",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "contactIdentifier",
            "label": "Contact identifier",
            "kind": "text",
            "necessity": "optional"
          },
          {
            "key": "authorityBoundaries",
            "label": "Authority boundaries",
            "kind": "list",
            "necessity": "required"
          }
        ]
      },
      {
        "id": "platform_provisioning",
        "chapter": "06 Governance",
        "title": "Platform owner provisioning state & requirements",
        "necessity": "conditional",
        "purpose": "Whether an operational owner account exists, and the binding requirements to create one.",
        "appliesWhen": "The brand is delivered through a multi-tenant platform with privileged roles.",
        "fields": [
          {
            "key": "state",
            "label": "Provisioning state",
            "kind": "enum",
            "necessity": "required"
          },
          {
            "key": "intendedCandidate",
            "label": "Intended provisioning candidate",
            "kind": "text",
            "necessity": "conditional"
          },
          {
            "key": "requirements",
            "label": "Binding provisioning requirements",
            "kind": "list",
            "necessity": "required"
          }
        ]
      },
      {
        "id": "status_matrix",
        "chapter": "06 Governance",
        "title": "Public status matrix",
        "necessity": "required",
        "purpose": "One truthful list of what exists, what is candidate, what is inactive and what is absent.",
        "fields": [
          {
            "key": "items",
            "label": "Item / state / detail",
            "kind": "table",
            "necessity": "required"
          }
        ]
      },
      {
        "id": "future_requirements",
        "chapter": "06 Governance",
        "title": "Recorded future requirements",
        "necessity": "optional",
        "purpose": "Standards recorded as binding for a later phase, explicitly not implemented now.",
        "fields": [
          {
            "key": "name",
            "label": "Requirement name",
            "kind": "text",
            "necessity": "required"
          },
          {
            "key": "state",
            "label": "Implementation state",
            "kind": "enum",
            "necessity": "required"
          },
          {
            "key": "requirements",
            "label": "Requirement clauses",
            "kind": "list",
            "necessity": "required"
          }
        ]
      },
      {
        "id": "application_previews",
        "chapter": "05 Applications",
        "title": "Application preview register",
        "necessity": "recommended",
        "purpose": "Which mark geometry each preview renders, and why that choice implies nothing.",
        "fields": [
          {
            "key": "previews",
            "label": "Preview / category / rendered geometry / state",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "disclaimer",
            "label": "Illustration disclaimer",
            "kind": "text",
            "necessity": "conditional",
            "condition": "Required whenever previews render an unselected candidate."
          }
        ]
      },
      {
        "id": "deliverables",
        "chapter": "06 Governance",
        "title": "Missing & deferred deliverables",
        "necessity": "required",
        "purpose": "Everything a complete brand system would contain that this version does not yet contain.",
        "fields": [
          {
            "key": "missing",
            "label": "Missing deliverables",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "deferred",
            "label": "Deferred deliverables",
            "kind": "table",
            "necessity": "required"
          },
          {
            "key": "blockedBy",
            "label": "Blocking decision per deliverable",
            "kind": "table",
            "necessity": "recommended"
          }
        ]
      },
      {
        "id": "publication",
        "chapter": "06 Governance",
        "title": "Approval & publication state",
        "necessity": "required",
        "purpose": "Whether this brand version is approved, and whether any asset is published.",
        "fields": [
          {
            "key": "approvalState",
            "label": "Approval state",
            "kind": "enum",
            "necessity": "required"
          },
          {
            "key": "publicationState",
            "label": "Publication state",
            "kind": "enum",
            "necessity": "required"
          },
          {
            "key": "publishedAssets",
            "label": "Published assets",
            "kind": "table",
            "necessity": "required"
          }
        ]
      }
    ],
    "coverage": [
      {
        "moduleId": "identity",
        "state": "missing_information",
        "note": "Legal entity, registration and region facts not supplied by the owner. Deliberately not invented."
      },
      {
        "moduleId": "strategy",
        "state": "generated",
        "note": "Authored in P1C from owner direction. Awaiting owner review."
      },
      {
        "moduleId": "audience",
        "state": "generated",
        "note": "Four segments authored; no market research evidence exists."
      },
      {
        "moduleId": "personality",
        "state": "generated",
        "note": "Voice, principles, modes and do/don't authored. Multilingual guidance not applicable — English only in the pilot."
      },
      {
        "moduleId": "vocabulary",
        "state": "generated",
        "note": "Nine governed terms and naming conventions authored."
      },
      {
        "moduleId": "descriptions",
        "state": "generated",
        "note": "All description lengths, tagline and boilerplate authored."
      },
      {
        "moduleId": "logo",
        "state": "owner_decision_required",
        "note": "Three refinements (R1/R2/R3) presented. Owner must select one before any variant becomes production-final."
      },
      {
        "moduleId": "colour",
        "state": "generated",
        "note": "Five source colours approved; derived tokens and contrast evidence authored in P1C."
      },
      {
        "moduleId": "typography",
        "state": "generated",
        "note": "Three OFL families with usable licences; scale and misuse documented."
      },
      {
        "moduleId": "iconography",
        "state": "missing_information",
        "note": "Icon, imagery and pattern direction not yet authored. Motion principles partially expressed in CSS only."
      },
      {
        "moduleId": "layout",
        "state": "generated",
        "note": "Spacing, radii and elevation exist as CSS tokens; not yet documented as a chapter."
      },
      {
        "moduleId": "emoji",
        "state": "generated",
        "note": "Signature, supporting, functional and avoided emoji authored with frequency rules."
      },
      {
        "moduleId": "social",
        "state": "generated",
        "note": "Bios, nine example posts, hashtag and emoji rules, template specs. No real customer evidence used."
      },
      {
        "moduleId": "email",
        "state": "generated",
        "note": "Header, logo and signature previews rendered. No sending capability exists."
      },
      {
        "moduleId": "digital",
        "state": "generated",
        "note": "Header, console, admin, app icon, favicon family and OG rendered as candidates."
      },
      {
        "moduleId": "business",
        "state": "generated",
        "note": "Card, invoice, letterhead, envelope, badge and presentation rendered as previews, not print-ready files."
      },
      {
        "moduleId": "environment",
        "state": "generated",
        "note": "Office sign, door sign, window sticker and vehicle rendered as placement previews only."
      },
      {
        "moduleId": "merchandise",
        "state": "generated",
        "note": "Apparel, cap, tote, mug, bottle, stickers and box rendered as placement previews. Packaging not applicable — Bobby Brand ships no physical product."
      },
      {
        "moduleId": "accessibility",
        "state": "reviewed",
        "note": "Contrast values computed for text tokens; reduced-motion honoured globally. No third-party audit exists."
      },
      {
        "moduleId": "governance",
        "state": "approved",
        "note": "Owner decision of 2026-08-25 recorded; directions B and C archived."
      },
      {
        "moduleId": "assets",
        "state": "generated",
        "note": "Manifest authored; every entry labelled source, export, preview, mockup, documentation or data."
      },
      {
        "moduleId": "owner_decision",
        "state": "approved",
        "note": "Record bb-decision-0001 captured from the owner decision of 2026-08-25."
      },
      {
        "moduleId": "owner_identity",
        "state": "approved",
        "note": "Product Owner identity and authority boundaries recorded."
      },
      {
        "moduleId": "platform_provisioning",
        "state": "owner_decision_required",
        "note": "Requirements recorded; no provisioning ceremony, account or authorization path exists."
      },
      {
        "moduleId": "status_matrix",
        "state": "reviewed",
        "note": "Single truthful status list maintained in brand-governance.ts."
      },
      {
        "moduleId": "future_requirements",
        "state": "generated",
        "note": "Mailinator delivery-canary standard recorded as binding future requirement."
      },
      {
        "moduleId": "application_previews",
        "state": "generated",
        "note": "Every preview registers the refinement geometry it renders and states that it is illustration only."
      },
      {
        "moduleId": "deliverables",
        "state": "reviewed",
        "note": "Missing and deferred deliverables enumerated with their blocking decision."
      },
      {
        "moduleId": "publication",
        "state": "owner_decision_required",
        "note": "Version is a candidate; no asset is owner-approved or published."
      }
    ],
    "coverageStates": {
      "not_applicable": "Not applicable",
      "missing_information": "Missing information",
      "owner_decision_required": "Owner decision required",
      "generated": "Generated",
      "reviewed": "Reviewed",
      "approved": "Approved",
      "superseded": "Superseded"
    },
    "coverageRules": [
      "A brand book is never described as complete because unsupported modules were silently omitted.",
      "Every module carries an explicit state; 'not applicable' must carry a reason.",
      "Conditional modules are evaluated per brand — never assumed from the template author's own brand.",
      "Approved state requires a named human, a date and an immutable version identifier.",
      "Superseded versions are retained; they are never edited or deleted."
    ]
  },
  "operationalStatus": {
    "backend": "P2A authority foundation active",
    "authentication": "active foundation; identity grants no role by itself",
    "platformOwner": "not provisioned",
    "billing": "not implemented",
    "generation": "not operational",
    "api": "planned",
    "mcp": "planned",
    "mailinatorCanary": "future governed requirement, not implemented",
    "note": "The Bobby Brand R1 brand system is canonical. P2A backend authority foundations are active for verification, but customer brand generation, checkout, billing, AI, crawling, integrations, API, MCP and Autopilot are not operational."
  }
}
