{
  "metadata": {
    "version": "1.1.0",
    "lastUpdated": "2026-07-14",
    "description": "Plansmith brand guidelines as structured data, for AI agents and developers. Plansmith is the planning agent, built by BrainGrid. One visual language, two modes: a light mode (warm cream) and a dark mode (warm charcoal), with backgrounds taken from radial. Pine is the primary and appears only as a foreground, never a background; antique brass is the single secondary accent.",
    "parentBrand": {
      "name": "BrainGrid",
      "brandJson": "https://braingrid.ai/brand.json"
    },
    "sibling": {
      "name": "radial",
      "note": "Sibling product. Plansmith takes its backgrounds and neutrals from radial: warm cream in light, warm charcoal in dark, a neutral primary button, and one color used sparingly as the identity accent (orange for radial, brass for Plansmith)."
    }
  },
  "identity": {
    "name": "Plansmith",
    "url": "https://www.plansmith.co",
    "category": "The planning agent",
    "tagline": "Plansmith. The planning agent.",
    "closingLine": "Where the plan gets good.",
    "oneLiner": {
      "full": "Plansmith is the planning agent for the people who know what to build, but don't know how to code enterprise production-grade software. It plans with your context: your team's code, documents, websites, and knowledge bases. You create a Plan, it shapes build-ready Specs, and you hand them to your dev team in one click.",
      "tight": "Plan with all your context. Hand your dev team build-ready Specs."
    },
    "hero": {
      "badge": "THE PLANNING AGENT",
      "h1": "Turn business requirements into a plan your dev team can build.",
      "subtext": "The business twin of the coding agent, built for complex enterprise projects."
    },
    "nameRule": "Always \"Plansmith\": one word, capital P only. Never \"PlanSmith\", \"Plan Smith\", or \"plansmith\" in prose. The wordmark splits the two-tone \"Plan\" and \"smith\", but the name is one word."
  },
  "colors": {
    "identity": [
      {
        "name": "Pine",
        "hex": "#02261a",
        "cssVariable": "--color-pine",
        "mode": "shared",
        "usage": "The core of the identity: the mark, and the focus ring in light mode. Never a background, never a filled slab, and never body text. At paragraph scale a deep green reads as a colour choice rather than as text, so the ink in both modes is charcoal."
      },
      {
        "name": "Antique Brass",
        "hex": "#c79a46",
        "cssVariable": "--color-accent",
        "mode": "shared",
        "usage": "The single secondary accent, in both modes. The identity pop: kickers, the mark, active states, one-word highlights. Used sparingly. Muted so it reads gold, not orange."
      },
      {
        "name": "Brass Ink",
        "hex": "#1a1205",
        "cssVariable": "--color-accent-foreground",
        "mode": "shared",
        "usage": "The only text color on brass."
      }
    ],
    "light": [
      {
        "name": "Cream",
        "hex": "#fbf6eb",
        "cssVariable": "--color-background",
        "mode": "light",
        "usage": "The light canvas. Radial's warm cream."
      },
      {
        "name": "Warm white",
        "hex": "#fffdf7",
        "cssVariable": "--color-card",
        "mode": "light",
        "usage": "Cards and popovers in light mode."
      },
      {
        "name": "Sand",
        "hex": "#f2ece0",
        "cssVariable": "--color-elevated",
        "mode": "light",
        "usage": "Elevated surfaces, secondary buttons, muted fills."
      },
      {
        "name": "Border (light)",
        "hex": "#e0dace",
        "cssVariable": "--color-border",
        "mode": "light",
        "usage": "The crisp 1px border in light mode."
      },
      {
        "name": "Foreground (light)",
        "hex": "#1d1b1a",
        "cssVariable": "--color-foreground",
        "mode": "light",
        "usage": "Primary text in light mode: the same warm charcoal the dark canvas uses. Body copy is never green, because at paragraph scale pine reads as a colour choice rather than as text."
      },
      {
        "name": "Primary (light)",
        "hex": "#1d1b1a",
        "cssVariable": "--color-primary",
        "mode": "light",
        "usage": "The filled primary button in light mode. The same warm charcoal as the text and as the dark canvas, so both modes run a neutral primary with brass as the single accent."
      },
      {
        "name": "Muted (light)",
        "hex": "#68625b",
        "cssVariable": "--color-muted-foreground",
        "mode": "light",
        "usage": "Secondary text in light mode."
      },
      {
        "name": "Success (light)",
        "hex": "#2f7d4f",
        "cssVariable": "--color-success",
        "mode": "light",
        "usage": "Positive states in light mode."
      },
      {
        "name": "Destructive (light)",
        "hex": "#b3462f",
        "cssVariable": "--color-destructive",
        "mode": "light",
        "usage": "Errors in light mode."
      }
    ],
    "dark": [
      {
        "name": "Charcoal",
        "hex": "#1d1b1a",
        "cssVariable": "--color-background",
        "mode": "dark",
        "usage": "The dark canvas. Radial's warm near-black. No green on a background."
      },
      {
        "name": "Dark surface",
        "hex": "#262422",
        "cssVariable": "--color-card",
        "mode": "dark",
        "usage": "Cards and popovers in dark mode."
      },
      {
        "name": "Dark elevated",
        "hex": "#312f2c",
        "cssVariable": "--color-elevated",
        "mode": "dark",
        "usage": "Elevated surfaces, secondary buttons, muted fills."
      },
      {
        "name": "Border (dark)",
        "hex": "#383633",
        "cssVariable": "--color-border",
        "mode": "dark",
        "usage": "The crisp 1px border in dark mode."
      },
      {
        "name": "Foreground (dark)",
        "hex": "#ebe9e7",
        "cssVariable": "--color-foreground",
        "mode": "dark",
        "usage": "Primary text in dark mode."
      },
      {
        "name": "Primary (dark)",
        "hex": "#ebe9e7",
        "cssVariable": "--color-primary",
        "mode": "dark",
        "usage": "The filled primary button in dark mode. The mirror of light: a neutral fill, with brass kept for the single accent."
      },
      {
        "name": "Muted (dark)",
        "hex": "#a8a49f",
        "cssVariable": "--color-muted-foreground",
        "mode": "dark",
        "usage": "Secondary text in dark mode."
      },
      {
        "name": "Success (dark)",
        "hex": "#5fb37a",
        "cssVariable": "--color-success",
        "mode": "dark",
        "usage": "Positive states in dark mode."
      },
      {
        "name": "Destructive (dark)",
        "hex": "#d96a5a",
        "cssVariable": "--color-destructive",
        "mode": "dark",
        "usage": "Errors in dark mode."
      }
    ]
  },
  "modes": {
    "light": {
      "appliesTo": "The marketing site today, and the app in light mode after migration.",
      "colorScheme": "light",
      "radius": "0px (square corners, matching the marketing surface).",
      "tokens": {
        "background": "#fbf6eb",
        "foreground": "#1d1b1a",
        "card": "#fffdf7",
        "card-foreground": "#1d1b1a",
        "elevated": "#f2ece0",
        "elevated-foreground": "#1d1b1a",
        "popover": "#fffdf7",
        "popover-foreground": "#1d1b1a",
        "primary": "#1d1b1a",
        "primary-foreground": "#fbf6eb",
        "secondary": "#f2ece0",
        "secondary-foreground": "#1d1b1a",
        "muted": "#f2ece0",
        "muted-foreground": "#68625b",
        "accent": "#c79a46",
        "accent-foreground": "#1a1205",
        "destructive": "#b3462f",
        "destructive-foreground": "#fffdf7",
        "success": "#2f7d4f",
        "success-foreground": "#fffdf7",
        "border": "#e0dace",
        "input": "#e0dace",
        "ring": "#02261a"
      }
    },
    "dark": {
      "appliesTo": "The app dark mode (target). A pine-tinted charcoal that replaces the older neutral-dark theme.",
      "colorScheme": "dark",
      "radius": "0px (square corners).",
      "tokens": {
        "background": "#1d1b1a",
        "foreground": "#ebe9e7",
        "card": "#262422",
        "card-foreground": "#ebe9e7",
        "elevated": "#312f2c",
        "elevated-foreground": "#ebe9e7",
        "popover": "#262422",
        "popover-foreground": "#ebe9e7",
        "primary": "#ebe9e7",
        "primary-foreground": "#1d1b1a",
        "secondary": "#312f2c",
        "secondary-foreground": "#ebe9e7",
        "muted": "#312f2c",
        "muted-foreground": "#a8a49f",
        "accent": "#c79a46",
        "accent-foreground": "#1a1205",
        "destructive": "#d96a5a",
        "destructive-foreground": "#1d1b1a",
        "success": "#5fb37a",
        "success-foreground": "#1d1b1a",
        "border": "#383633",
        "input": "#383633",
        "ring": "#c79a46"
      }
    }
  },
  "typography": {
    "fonts": [
      {
        "name": "Geist",
        "cssVariable": "--font-geist",
        "utility": "font-marketing",
        "weights": [
          400,
          500,
          600,
          700
        ],
        "usage": "The brand face for set text: all headlines and body. One face for UI across the site and the parent.",
        "status": null
      },
      {
        "name": "DM Sans",
        "cssVariable": "--font-dm-sans",
        "utility": "font-body",
        "weights": [
          400,
          500,
          600,
          700
        ],
        "usage": "App body face. Product UI text.",
        "status": null
      },
      {
        "name": "Geist Mono",
        "cssVariable": "--font-geist-mono",
        "utility": "font-mono",
        "weights": [
          400,
          500
        ],
        "usage": "Code, data, and tabular figures. SPEC-n ids and effort/readiness chips.",
        "status": null
      },
      {
        "name": "Besley",
        "cssVariable": "none",
        "utility": "none",
        "weights": [
          600
        ],
        "usage": "The wordmark face, and only the wordmark: a Clarendon born of the type foundries, forged type for a smith.",
        "status": "Ships as outlined SVG paths in the lockup assets; never loaded as a webfont. Do not set UI text in Besley."
      }
    ],
    "styles": [
      {
        "name": "Hero H1",
        "family": "Geist",
        "weight": 600,
        "size": "2.25rem, 3.75rem at md",
        "letterSpacing": "tight",
        "usage": "One per page."
      },
      {
        "name": "Section headline",
        "family": "Geist",
        "weight": 600,
        "size": "1.875rem, 3rem at md",
        "letterSpacing": "tight",
        "usage": "Section titles."
      },
      {
        "name": "Kicker",
        "family": "Geist",
        "weight": 600,
        "size": "0.75rem",
        "letterSpacing": "widest",
        "usage": "Uppercase eyebrow, brass or muted."
      },
      {
        "name": "Body large",
        "family": "Geist",
        "weight": 400,
        "size": "1.125rem",
        "letterSpacing": "normal",
        "usage": "Hero subtext and section leads, muted-foreground."
      },
      {
        "name": "Body small",
        "family": "Geist",
        "weight": 400,
        "size": "0.875rem",
        "letterSpacing": "normal",
        "usage": "Capability bullets: bold lead, regular tail."
      }
    ]
  },
  "logos": {
    "story": "The mark is \"Nodes\": four node-and-connector elbow units in pinwheel rotation. Specs are nodes, dependencies are the connectors; the plan is a connected graph. It shares construction DNA with the BrainGrid parent mark.",
    "minSize": "Proposed: 16px minimum for the mark; the wordmark never smaller than text-lg.",
    "sizes": {
      "md": "24px mark, text-lg wordmark. App chrome (header, login).",
      "lg": "32px mark, text-2xl wordmark. Marketing nav and footer."
    },
    "wordmark": {
      "family": "Besley",
      "weight": 600,
      "note": "Besley SemiBold (600), a Clarendon born of the type foundries: forged type for a smith. Ships as outlined SVG paths in the lockup, never as a loaded webfont; UI text stays Geist. \"Plan\" takes the foreground token; \"smith\" takes muted-foreground. The mark follows contrast, not a fixed hue.",
      "parts": [
        {
          "part": "Plan",
          "token": "--color-foreground",
          "light": "#1d1b1a",
          "dark": "#ebe9e7"
        },
        {
          "part": "smith",
          "token": "--color-muted-foreground",
          "light": "#68625b",
          "dark": "#a8a49f"
        },
        {
          "part": "mark",
          "token": "pine on light, brass on dark",
          "light": "#02261a",
          "dark": "#c79a46"
        }
      ]
    },
    "perMode": {
      "light": {
        "summary": "Pine mark, \"Plan\" in pine, \"smith\" in warm gray, on cream.",
        "mark": "/brand/plansmith-mark-pine.svg",
        "lockup": "/brand/plansmith-lockup-light.svg",
        "tile": "/brand/plansmith-mark-pine-on-paper.svg"
      },
      "dark": {
        "summary": "Brass mark, \"Plan\" in off-white, \"smith\" in muted gray, on charcoal.",
        "mark": "/brand/plansmith-mark-brass.svg",
        "lockup": "/brand/plansmith-lockup-dark.svg",
        "tile": "/brand/plansmith-mark-brass-on-dark.svg"
      }
    },
    "lockups": [
      {
        "name": "Lockup, light mode",
        "use": "For light surfaces",
        "svg": "/brand/plansmith-lockup-light.svg",
        "png": [
          {
            "size": 800,
            "path": "/brand/plansmith-lockup-light-800.png"
          },
          {
            "size": 1600,
            "path": "/brand/plansmith-lockup-light-1600.png"
          }
        ]
      },
      {
        "name": "Lockup, dark mode",
        "use": "For dark surfaces",
        "svg": "/brand/plansmith-lockup-dark.svg",
        "png": [
          {
            "size": 800,
            "path": "/brand/plansmith-lockup-dark-800.png"
          },
          {
            "size": 1600,
            "path": "/brand/plansmith-lockup-dark-1600.png"
          }
        ]
      }
    ],
    "marks": [
      {
        "name": "Nodes mark, pine",
        "use": "For light surfaces",
        "color": "#02261a",
        "bg": "#fbf6eb",
        "svg": "/brand/plansmith-mark-pine.svg",
        "png": [
          {
            "size": 256,
            "path": "/brand/plansmith-mark-pine-256.png"
          },
          {
            "size": 512,
            "path": "/brand/plansmith-mark-pine-512.png"
          },
          {
            "size": 1024,
            "path": "/brand/plansmith-mark-pine-1024.png"
          }
        ]
      },
      {
        "name": "Nodes mark, brass",
        "use": "For dark surfaces",
        "color": "#c79a46",
        "bg": "#1d1b1a",
        "svg": "/brand/plansmith-mark-brass.svg",
        "png": [
          {
            "size": 256,
            "path": "/brand/plansmith-mark-brass-256.png"
          },
          {
            "size": 512,
            "path": "/brand/plansmith-mark-brass-512.png"
          },
          {
            "size": 1024,
            "path": "/brand/plansmith-mark-brass-1024.png"
          }
        ]
      }
    ],
    "assets": [
      {
        "name": "Lockup, light mode",
        "path": "/brand/plansmith-lockup-light.svg",
        "format": "svg"
      },
      {
        "name": "Lockup, dark mode",
        "path": "/brand/plansmith-lockup-dark.svg",
        "format": "svg"
      },
      {
        "name": "Mark, pine (light mode)",
        "path": "/brand/plansmith-mark-pine.svg",
        "format": "svg"
      },
      {
        "name": "Mark, brass (dark mode)",
        "path": "/brand/plansmith-mark-brass.svg",
        "format": "svg"
      },
      {
        "name": "Mark PNG, pine 1024",
        "path": "/brand/plansmith-mark-pine-1024.png",
        "format": "png"
      },
      {
        "name": "Mark PNG, brass 1024",
        "path": "/brand/plansmith-mark-brass-1024.png",
        "format": "png"
      },
      {
        "name": "Mark, currentColor source",
        "path": "/brand/plansmith-mark.svg",
        "format": "svg"
      },
      {
        "name": "Light mode tile (pine on cream)",
        "path": "/brand/plansmith-mark-pine-on-paper.svg",
        "format": "svg"
      },
      {
        "name": "Dark mode tile (brass on charcoal)",
        "path": "/brand/plansmith-mark-brass-on-dark.svg",
        "format": "svg"
      },
      {
        "name": "App icon (Nodes squircle)",
        "path": "/brand/plansmith-app-icon.svg",
        "format": "svg"
      }
    ],
    "rules": [
      "The mark follows contrast: pine on light surfaces, brass on dark. Brass on cream is too washed out.",
      "Single color always, via currentColor. Never recolor into a second hue, outline, distort, or add effects.",
      "The wordmark is two-tone: \"Plan\" in the foreground token, \"smith\" in muted-foreground, Besley SemiBold outlined to paths. Wordmark only; UI text stays Geist."
    ]
  },
  "spacing": {
    "scale": "Tailwind v4 default scale (0.25rem base). No custom scale, no tailwind.config.",
    "container": "max-w-6xl with px-6 side padding.",
    "sections": {
      "sm": "py-12 md:py-16",
      "md": "py-16 md:py-24",
      "lg": "py-24 md:py-32"
    }
  },
  "motion": {
    "curve": "cubic-bezier(0.16, 1, 0.3, 1)",
    "reveal": "Content rises 24px and fades in over 0.7s on viewport entry.",
    "rule": "Motion restraint is a brand trait. All motion sits behind prefers-reduced-motion; reduced-motion renders everything settled. Nothing loops except the faint grid pulse and the slow hero drift."
  },
  "guidelines": {
    "dos": [
      "Use semantic tokens only (bg-background, text-primary); the mapping, not the component, changes per mode.",
      "Take backgrounds and neutrals from radial: cream in light, charcoal in dark.",
      "Pine is the primary; brass is the single secondary accent, used sparingly.",
      "Use 1px borders for separation; keep shadows near-invisible.",
      "Square corners across the system.",
      "Render the mark in currentColor; brass for the identity pop.",
      "Split the wordmark two-tone: \"Plan\" in foreground, \"smith\" in muted-foreground.",
      "Render readiness as Rough, Shaping, Ready and effort as Low, Med, High, never raw numbers.",
      "Pair any code-access claim with: read access only; it never changes a line."
    ],
    "donts": [
      "Never write a dark: prefix or hardcode palette colors; the theme guard fails the build. Modes are handled by the tokens.",
      "Never use the green as a background or a surface; it is a foreground color only.",
      "Never let brass drift vivid; keep it muted so it reads gold, not orange.",
      "Never promote brass to the primary; it stays the secondary accent.",
      "Never add a second accent color or a gradient on a UI surface.",
      "Never recolor, outline, distort, or add effects to the mark; single color always.",
      "No em dashes anywhere in site copy.",
      "Never use the hype words in the banned list; state the bet plainly instead.",
      "No fabricated customers, logos, testimonials, case studies, or metrics; no compliance claims.",
      "Never disparage issue trackers; the enemy is the handoff."
    ]
  },
  "principles": [
    {
      "name": "Pine is primary",
      "body": "The deep green is the core identity: primary actions and ink in light mode. Always a foreground, never a background or a surface."
    },
    {
      "name": "Brass is the accent",
      "body": "Antique brass is the single secondary accent. The identity pop, used sparingly, the way lime works against jungle. Muted so it reads gold, not orange."
    },
    {
      "name": "Neutrals from radial",
      "body": "Backgrounds and surfaces are radial's warm neutrals: cream in light, charcoal in dark. One set of semantic tokens; only the mapping changes."
    },
    {
      "name": "Crisp, not soft",
      "body": "1px borders, near-invisible shadows, square corners, high contrast."
    },
    {
      "name": "Quiet confidence",
      "body": "No hype, no exclamation marks, no superlatives that outrun the product. State the bet; let the Specs prove it."
    },
    {
      "name": "Concrete over abstract",
      "body": "SPEC-4, the AC3 criterion, \"Pushed 14 issues to Linear.\" Never free-floating \"insights\" or \"workflows\"."
    }
  ],
  "voice": {
    "persona": "The Translator: someone who has lived both sides of the handoff, empathetic to the operator, credible with engineers. Not a guru, not a futurist. Speaks from specifics: real tickets, real bounce-backs, real rewrites.",
    "markers": [
      "Craft verbs: shape, forge, ground, score, hand off. The plan is worked like material.",
      "Quiet confidence. No hype, no exclamation marks.",
      "Short sentences for emphasis. \"Rough. Shaping. Ready.\" \"Handed off, not handed back.\"",
      "Second person, singular team: your dev team, your issue tracker, your context.",
      "Plain words. If a cold visitor cannot parse a sentence, it loses.",
      "User verbs only: describe, review, refine, hand off. The agent reads code; the user never does."
    ],
    "bannedWords": [
      "revolutionize",
      "supercharge",
      "10x",
      "unleash",
      "seamless",
      "streamline"
    ],
    "noEmDashes": true,
    "lines": [
      "Your dev team doesn't need more tickets. They need better ones.",
      "The handoff is where good requirements die.",
      "Engineering got agents. Now it is your turn.",
      "Rough. Shaping. Ready.",
      "Handed off, not handed back.",
      "Business requirements in. Build-ready out.",
      "Where the plan gets good."
    ]
  },
  "terminology": {
    "ontology": [
      "Team",
      "Project",
      "Plan",
      "Spec"
    ],
    "labels": {
      "readiness": [
        "Rough",
        "Shaping",
        "Ready"
      ],
      "effort": [
        "Low",
        "Med",
        "High"
      ],
      "note": "Render the labels, never the raw 1 to 5 numbers."
    },
    "connectors": {
      "note": "A Connector, always. Three kinds, three jobs.",
      "kinds": [
        {
          "name": "Project Management",
          "detail": "Linear, Jira, Asana, Radial: where plans land."
        },
        {
          "name": "Code",
          "detail": "GitHub, GitLab, Bitbucket: what the agent reads, read-only."
        },
        {
          "name": "MCP",
          "detail": "Everything else: any source that speaks MCP, such as Notion, Confluence, Google Drive."
        }
      ]
    },
    "preferred": [
      {
        "term": "Team -> Project -> Plan -> Spec",
        "context": "The ontology, locked. A Spec is the atomic unit; SPEC-n ids appear in visuals deliberately."
      },
      {
        "term": "Spec",
        "context": "The buildable unit: numbered acceptance criteria, effort, readiness, and \"needs first\" links. Capital S."
      },
      {
        "term": "build-ready",
        "context": "Always. It replaces dev-ready everywhere."
      },
      {
        "term": "business requirements",
        "context": "What the user brings; never \"ideas\"."
      },
      {
        "term": "issue tracker",
        "context": "Always the full phrase, never bare \"tracker\". A respected destination and the plan of record."
      },
      {
        "term": "Connector",
        "context": "Always. Never adapter, never integration."
      },
      {
        "term": "the planning agent",
        "context": "The category. The business twin of the coding agent."
      }
    ],
    "avoid": [
      {
        "term": "epic, requirement, artifact",
        "reason": "Ontology lock: only Team, Project, Plan, Spec."
      },
      {
        "term": "ticket (as our own noun)",
        "reason": "Tickets and issues live in the issue tracker; Specs live in Plansmith."
      },
      {
        "term": "integration, adapter",
        "reason": "It is a Connector, always."
      },
      {
        "term": "dev-ready",
        "reason": "Replaced by build-ready; sweep on contact."
      },
      {
        "term": "ideas",
        "reason": "Reads vibe-coding-ish; this persona owns business requirements."
      },
      {
        "term": "tracker (bare)",
        "reason": "Plain business words: issue tracker."
      },
      {
        "term": "Spec tree",
        "reason": "Retired from customer copy; readers see Specs and Plans."
      },
      {
        "term": "free, Get started free",
        "reason": "No free tier and no \"free\" language."
      }
    ]
  },
  "visualPersonality": {
    "attributes": [
      "premium",
      "high-contrast",
      "crafted",
      "calm",
      "precise",
      "restrained"
    ],
    "avoid": [
      "vivid orange",
      "gradients on surfaces",
      "glassmorphism",
      "heavy shadows",
      "a second accent"
    ]
  }
}
