{
  "slug": "fundamentalco",
  "name": "FUNDAMENTALco",
  "version": "0.1.0",
  "media": [
    "web",
    "slides"
  ],
  "sources": [
    {
      "id": "website",
      "description": "www.fundamental.co and its source repo (~/dev/fundamentalco-website)"
    },
    {
      "id": "decks",
      "description": "Six client SPA decks as PDF (A24, Equinix, Evident, The Met, Olaplex, Vista). Fonts partly substituted by LibreOffice."
    },
    {
      "id": "george",
      "description": "Decisions by George Strakhov"
    }
  ],
  "gaps": [
    "Written brand guidelines, if any exist. Nothing here is the brand owner's prose yet.",
    "Deck source files (.pptx / .key) to measure slide sizes, margins and colours exactly.",
    "Font licence. The website's Adobe Fonts kit belongs to the previous agency; font files are not in this package.",
    "Clear space and minimum size for the wordmark.",
    "Off-brand examples.",
    "Media other than web and slides (documents, social, print, video).",
    "Voice and writing rules.",
    "Static grid device artwork for slides (only the website intro Lottie exists here)."
  ],
  "tokens": [
    {
      "path": "color.black",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          0,
          0,
          0
        ],
        "hex": "#000000"
      },
      "display": "#000000",
      "css": "#000000",
      "status": "sourced",
      "source": "website CSS --black"
    },
    {
      "path": "color.white",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          1,
          1,
          1
        ],
        "hex": "#ffffff"
      },
      "display": "#ffffff",
      "css": "#ffffff",
      "status": "confirmed",
      "source": "George, 2026-11-06: pure white, not the off-white seen in deck PDFs"
    },
    {
      "path": "color.black-10",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          0,
          0,
          0
        ],
        "alpha": 0.1,
        "hex": "#000000"
      },
      "display": "#0000001a",
      "css": "rgb(0 0 0 / 0.1)",
      "status": "sourced",
      "source": "website CSS hairline #0000001a"
    },
    {
      "path": "color.black-25",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          0,
          0,
          0
        ],
        "alpha": 0.25,
        "hex": "#000000"
      },
      "display": "#00000040",
      "css": "rgb(0 0 0 / 0.25)",
      "status": "inferred",
      "source": "dimmed agenda items in decks, about 25%"
    },
    {
      "path": "color.white-20",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          1,
          1,
          1
        ],
        "alpha": 0.2,
        "hex": "#ffffff"
      },
      "display": "#ffffff33",
      "css": "rgb(255 255 255 / 0.2)",
      "status": "assumed",
      "note": "hairline divider on black; mirrors black-10 on white, slightly stronger to read on black"
    },
    {
      "path": "color.white-25",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          1,
          1,
          1
        ],
        "alpha": 0.25,
        "hex": "#ffffff"
      },
      "display": "#ffffff40",
      "css": "rgb(255 255 255 / 0.25)",
      "status": "inferred",
      "source": "dimmed agenda items on dark slides"
    },
    {
      "path": "color.scheme.light.background",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          1,
          1,
          1
        ],
        "hex": "#ffffff"
      },
      "display": "#ffffff",
      "css": "#ffffff",
      "alias": "color.white",
      "status": "inferred",
      "source": "website and light deck slides"
    },
    {
      "path": "color.scheme.light.foreground",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          0,
          0,
          0
        ],
        "hex": "#000000"
      },
      "display": "#000000",
      "css": "#000000",
      "alias": "color.black",
      "status": "inferred",
      "source": "website and light deck slides"
    },
    {
      "path": "color.scheme.light.muted",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          0,
          0,
          0
        ],
        "alpha": 0.25,
        "hex": "#000000"
      },
      "display": "#00000040",
      "css": "rgb(0 0 0 / 0.25)",
      "alias": "color.black-25",
      "status": "inferred",
      "source": "website and light deck slides"
    },
    {
      "path": "color.scheme.light.border",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          0,
          0,
          0
        ],
        "hex": "#000000"
      },
      "display": "#000000",
      "css": "#000000",
      "alias": "color.black",
      "status": "inferred",
      "source": "website and light deck slides",
      "note": "1px outline boxes on slides"
    },
    {
      "path": "color.scheme.light.divider",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          0,
          0,
          0
        ],
        "alpha": 0.1,
        "hex": "#000000"
      },
      "display": "#0000001a",
      "css": "rgb(0 0 0 / 0.1)",
      "alias": "color.black-10",
      "status": "sourced",
      "source": "website section hairlines"
    },
    {
      "path": "color.scheme.dark.background",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          0,
          0,
          0
        ],
        "hex": "#000000"
      },
      "display": "#000000",
      "css": "#000000",
      "alias": "color.black",
      "status": "inferred",
      "source": "deck covers, dividers and the website intro"
    },
    {
      "path": "color.scheme.dark.foreground",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          1,
          1,
          1
        ],
        "hex": "#ffffff"
      },
      "display": "#ffffff",
      "css": "#ffffff",
      "alias": "color.white",
      "status": "inferred",
      "source": "deck covers, dividers and the website intro"
    },
    {
      "path": "color.scheme.dark.muted",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          1,
          1,
          1
        ],
        "alpha": 0.25,
        "hex": "#ffffff"
      },
      "display": "#ffffff40",
      "css": "rgb(255 255 255 / 0.25)",
      "alias": "color.white-25",
      "status": "inferred",
      "source": "deck covers, dividers and the website intro"
    },
    {
      "path": "color.scheme.dark.border",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          1,
          1,
          1
        ],
        "hex": "#ffffff"
      },
      "display": "#ffffff",
      "css": "#ffffff",
      "alias": "color.white",
      "status": "inferred",
      "source": "deck covers, dividers and the website intro"
    },
    {
      "path": "color.scheme.dark.divider",
      "type": "color",
      "value": {
        "colorSpace": "srgb",
        "components": [
          1,
          1,
          1
        ],
        "alpha": 0.2,
        "hex": "#ffffff"
      },
      "display": "#ffffff33",
      "css": "rgb(255 255 255 / 0.2)",
      "alias": "color.white-20",
      "status": "assumed",
      "source": "deck covers, dividers and the website intro"
    },
    {
      "path": "space.gutter",
      "type": "dimension",
      "value": {
        "value": 30,
        "unit": "px"
      },
      "display": "30px",
      "css": "30px",
      "description": "Website column gutter and page margin.",
      "status": "sourced",
      "source": "website CSS"
    },
    {
      "path": "space.margin",
      "type": "dimension",
      "value": {
        "value": 30,
        "unit": "px"
      },
      "display": "30px",
      "css": "30px",
      "alias": "space.gutter",
      "status": "sourced",
      "source": "website CSS"
    },
    {
      "path": "space.slide-margin",
      "type": "dimension",
      "value": {
        "value": 80,
        "unit": "px"
      },
      "display": "80px",
      "css": "80px",
      "description": "Slide margin at 1920×1080.",
      "status": "assumed",
      "source": "estimated from deck PDFs"
    },
    {
      "path": "grid.columns",
      "type": "number",
      "value": 6,
      "display": "6",
      "css": "6",
      "description": "Website content grid.",
      "status": "sourced",
      "source": "website CSS"
    },
    {
      "path": "grid.columns-logos",
      "type": "number",
      "value": 8,
      "display": "8",
      "css": "8",
      "description": "Website client logo grid.",
      "status": "sourced",
      "source": "website CSS"
    },
    {
      "path": "grid.columns-cards",
      "type": "number",
      "value": 3,
      "display": "3",
      "css": "3",
      "description": "Website card grid.",
      "status": "sourced",
      "source": "website CSS"
    },
    {
      "path": "border.hairline",
      "type": "dimension",
      "value": {
        "value": 1,
        "unit": "px"
      },
      "display": "1px",
      "css": "1px",
      "status": "inferred",
      "source": "website hairlines and deck outline boxes"
    },
    {
      "path": "radius.none",
      "type": "dimension",
      "value": {
        "value": 0,
        "unit": "px"
      },
      "display": "0px",
      "css": "0px",
      "status": "inferred",
      "source": "no rounded corners on boxes in site or decks"
    },
    {
      "path": "radius.round",
      "type": "dimension",
      "value": {
        "value": 9999,
        "unit": "px"
      },
      "display": "9999px",
      "css": "9999px",
      "description": "Circular buttons on the website only.",
      "status": "sourced",
      "source": "website CSS border-radius 50%"
    },
    {
      "path": "logo.min-width",
      "type": "dimension",
      "value": {
        "value": 120,
        "unit": "px"
      },
      "display": "120px",
      "css": "120px",
      "description": "Smallest width for the wordmark on screen.",
      "status": "assumed"
    },
    {
      "path": "duration.instant",
      "type": "duration",
      "value": {
        "value": 50,
        "unit": "ms"
      },
      "display": "50ms",
      "css": "50ms",
      "description": "Cursor follow.",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "duration.fast",
      "type": "duration",
      "value": {
        "value": 150,
        "unit": "ms"
      },
      "display": "150ms",
      "css": "150ms",
      "description": "Small reveals (partner list items).",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "duration.hover",
      "type": "duration",
      "value": {
        "value": 200,
        "unit": "ms"
      },
      "display": "200ms",
      "css": "200ms",
      "description": "Round CTA 360° turn on hover.",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "duration.fade",
      "type": "duration",
      "value": {
        "value": 300,
        "unit": "ms"
      },
      "display": "300ms",
      "css": "300ms",
      "description": "Accordion content opacity.",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "duration.reveal",
      "type": "duration",
      "value": {
        "value": 440,
        "unit": "ms"
      },
      "display": "440ms",
      "css": "440ms",
      "description": "Larger reveals (press items).",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "duration.expand",
      "type": "duration",
      "value": {
        "value": 450,
        "unit": "ms"
      },
      "display": "450ms",
      "css": "450ms",
      "description": "Accordion height.",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "duration.flip",
      "type": "duration",
      "value": {
        "value": 500,
        "unit": "ms"
      },
      "display": "500ms",
      "css": "500ms",
      "description": "Card flip.",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "duration.intro-grid",
      "type": "duration",
      "value": {
        "value": 2,
        "unit": "s"
      },
      "display": "2s",
      "css": "2s",
      "description": "Intro grid animation (Lottie, 60 frames at 30fps).",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "duration.stagger.tight",
      "type": "duration",
      "value": {
        "value": 30,
        "unit": "ms"
      },
      "display": "30ms",
      "css": "30ms",
      "description": "Between partner list items.",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "duration.stagger.normal",
      "type": "duration",
      "value": {
        "value": 100,
        "unit": "ms"
      },
      "display": "100ms",
      "css": "100ms",
      "description": "Between press items.",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "duration.stagger.cards",
      "type": "duration",
      "value": {
        "value": 120,
        "unit": "ms"
      },
      "display": "120ms",
      "css": "120ms",
      "description": "Between card flips.",
      "status": "sourced",
      "source": "website JS (src/legacy/body-end.html)"
    },
    {
      "path": "easing.standard",
      "type": "cubicBezier",
      "value": [
        0.25,
        0.1,
        0.25,
        1
      ],
      "display": "cubic-bezier(0.25, 0.1, 0.25, 1)",
      "css": "cubic-bezier(0.25, 0.1, 0.25, 1)",
      "description": "CSS 'ease'. Used for accordion and reveals.",
      "status": "sourced",
      "source": "website JS and CSS"
    },
    {
      "path": "easing.out",
      "type": "cubicBezier",
      "value": [
        0,
        0,
        0.58,
        1
      ],
      "display": "cubic-bezier(0, 0, 0.58, 1)",
      "css": "cubic-bezier(0, 0, 0.58, 1)",
      "description": "CSS 'ease-out'. Cursor.",
      "status": "sourced",
      "source": "website JS and CSS"
    },
    {
      "path": "easing.flip",
      "type": "cubicBezier",
      "value": [
        0.22,
        0.61,
        0.36,
        1
      ],
      "display": "cubic-bezier(0.22, 0.61, 0.36, 1)",
      "css": "cubic-bezier(0.22, 0.61, 0.36, 1)",
      "description": "Card flip.",
      "status": "sourced",
      "source": "website JS and CSS"
    },
    {
      "path": "offset.reveal",
      "type": "dimension",
      "value": {
        "value": 8,
        "unit": "px"
      },
      "display": "8px",
      "css": "8px",
      "description": "Revealed items rise from 8px below.",
      "status": "sourced",
      "source": "website JS translateY(8px)"
    },
    {
      "path": "transition.expand",
      "type": "transition",
      "value": {
        "duration": {
          "value": 450,
          "unit": "ms"
        },
        "delay": {
          "value": 0,
          "unit": "ms"
        },
        "timingFunction": [
          0.25,
          0.1,
          0.25,
          1
        ]
      },
      "display": "450ms cubic-bezier(0.25, 0.1, 0.25, 1)",
      "css": "450ms cubic-bezier(0.25, 0.1, 0.25, 1)",
      "status": "sourced",
      "source": "website JS"
    },
    {
      "path": "transition.reveal",
      "type": "transition",
      "value": {
        "duration": {
          "value": 440,
          "unit": "ms"
        },
        "delay": {
          "value": 0,
          "unit": "ms"
        },
        "timingFunction": [
          0.25,
          0.1,
          0.25,
          1
        ]
      },
      "display": "440ms cubic-bezier(0.25, 0.1, 0.25, 1)",
      "css": "440ms cubic-bezier(0.25, 0.1, 0.25, 1)",
      "status": "sourced",
      "source": "website JS"
    },
    {
      "path": "transition.reveal-fast",
      "type": "transition",
      "value": {
        "duration": {
          "value": 150,
          "unit": "ms"
        },
        "delay": {
          "value": 0,
          "unit": "ms"
        },
        "timingFunction": [
          0.25,
          0.1,
          0.25,
          1
        ]
      },
      "display": "150ms cubic-bezier(0.25, 0.1, 0.25, 1)",
      "css": "150ms cubic-bezier(0.25, 0.1, 0.25, 1)",
      "status": "sourced",
      "source": "website JS"
    },
    {
      "path": "transition.flip",
      "type": "transition",
      "value": {
        "duration": {
          "value": 500,
          "unit": "ms"
        },
        "delay": {
          "value": 0,
          "unit": "ms"
        },
        "timingFunction": [
          0.22,
          0.61,
          0.36,
          1
        ]
      },
      "display": "500ms cubic-bezier(0.22, 0.61, 0.36, 1)",
      "css": "500ms cubic-bezier(0.22, 0.61, 0.36, 1)",
      "status": "sourced",
      "source": "website JS"
    },
    {
      "path": "font.family.sans",
      "type": "fontFamily",
      "value": [
        "Helvetica Neue LT Pro",
        "Helvetica Neue",
        "Helvetica",
        "Arial",
        "sans-serif"
      ],
      "display": "\"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif",
      "css": "\"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif",
      "status": "sourced",
      "source": "website (Adobe Fonts kit znh4ozr) and decks",
      "note": "fallback list is assumed"
    },
    {
      "path": "font.weight.regular",
      "type": "fontWeight",
      "value": 400,
      "display": "400",
      "css": "400",
      "status": "sourced",
      "source": "website CSS"
    },
    {
      "path": "font.weight.medium",
      "type": "fontWeight",
      "value": 500,
      "display": "500",
      "css": "500",
      "status": "sourced",
      "source": "website CSS"
    },
    {
      "path": "typography.display",
      "type": "typography",
      "value": {
        "fontFamily": [
          "Helvetica Neue LT Pro",
          "Helvetica Neue",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "fontSize": {
          "value": 240,
          "unit": "px"
        },
        "fontWeight": 500,
        "letterSpacing": {
          "value": -7.2,
          "unit": "px"
        },
        "lineHeight": 0.75
      },
      "display": "500 240px/0.75 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing -7.2px",
      "css": "500 240px/0.75 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing -7.2px",
      "description": "Website h1. Scales with its container; 240px is the maximum.",
      "status": "sourced",
      "source": "website CSS h1",
      "cssOverride": "font-size: clamp(32px, 13.3779cqw, 240px); letter-spacing: -0.03em; line-height: .75"
    },
    {
      "path": "typography.headline",
      "type": "typography",
      "value": {
        "fontFamily": [
          "Helvetica Neue LT Pro",
          "Helvetica Neue",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "fontSize": {
          "value": 40,
          "unit": "px"
        },
        "fontWeight": 500,
        "letterSpacing": {
          "value": 0,
          "unit": "px"
        },
        "lineHeight": 1
      },
      "display": "500 40px/1 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "css": "500 40px/1 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "description": "Website h2. 32px/32px under 992px, 24px/24px on phones.",
      "status": "sourced",
      "source": "website CSS"
    },
    {
      "path": "typography.title",
      "type": "typography",
      "value": {
        "fontFamily": [
          "Helvetica Neue LT Pro",
          "Helvetica Neue",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "fontSize": {
          "value": 28,
          "unit": "px"
        },
        "fontWeight": 500,
        "letterSpacing": {
          "value": 0,
          "unit": "px"
        },
        "lineHeight": 1
      },
      "display": "500 28px/1 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "css": "500 28px/1 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "description": "Website h3.",
      "status": "sourced",
      "source": "website CSS"
    },
    {
      "path": "typography.body",
      "type": "typography",
      "value": {
        "fontFamily": [
          "Helvetica Neue LT Pro",
          "Helvetica Neue",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "fontSize": {
          "value": 20,
          "unit": "px"
        },
        "fontWeight": 400,
        "letterSpacing": {
          "value": 0,
          "unit": "px"
        },
        "lineHeight": 1.2
      },
      "display": "400 20px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "css": "400 20px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "description": "Website body. 16px/20px under 992px.",
      "status": "sourced",
      "source": "website CSS"
    },
    {
      "path": "typography.slide.title",
      "type": "typography",
      "value": {
        "fontFamily": [
          "Helvetica Neue LT Pro",
          "Helvetica Neue",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "fontSize": {
          "value": 64,
          "unit": "px"
        },
        "fontWeight": 500,
        "letterSpacing": {
          "value": -1.3,
          "unit": "px"
        },
        "lineHeight": 1.05
      },
      "display": "500 64px/1.05 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing -1.3px",
      "css": "500 64px/1.05 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing -1.3px",
      "status": "assumed",
      "source": "estimated from deck PDFs"
    },
    {
      "path": "typography.slide.body",
      "type": "typography",
      "value": {
        "fontFamily": [
          "Helvetica Neue LT Pro",
          "Helvetica Neue",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "fontSize": {
          "value": 28,
          "unit": "px"
        },
        "fontWeight": 400,
        "letterSpacing": {
          "value": 0,
          "unit": "px"
        },
        "lineHeight": 1.25
      },
      "display": "400 28px/1.25 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "css": "400 28px/1.25 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "status": "assumed",
      "source": "estimated from deck PDFs"
    },
    {
      "path": "typography.slide.label",
      "type": "typography",
      "value": {
        "fontFamily": [
          "Helvetica Neue LT Pro",
          "Helvetica Neue",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "fontSize": {
          "value": 20,
          "unit": "px"
        },
        "fontWeight": 500,
        "letterSpacing": {
          "value": 0,
          "unit": "px"
        },
        "lineHeight": 1.2
      },
      "display": "500 20px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "css": "500 20px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "status": "assumed",
      "source": "estimated from deck PDFs"
    },
    {
      "path": "typography.slide.numeral",
      "type": "typography",
      "value": {
        "fontFamily": [
          "Helvetica Neue LT Pro",
          "Helvetica Neue",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "fontSize": {
          "value": 200,
          "unit": "px"
        },
        "fontWeight": 500,
        "letterSpacing": {
          "value": -6,
          "unit": "px"
        },
        "lineHeight": 0.85
      },
      "display": "500 200px/0.85 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing -6px",
      "css": "500 200px/0.85 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing -6px",
      "status": "assumed",
      "source": "estimated from deck PDFs"
    },
    {
      "path": "typography.slide.footer",
      "type": "typography",
      "value": {
        "fontFamily": [
          "Helvetica Neue LT Pro",
          "Helvetica Neue",
          "Helvetica",
          "Arial",
          "sans-serif"
        ],
        "fontSize": {
          "value": 14,
          "unit": "px"
        },
        "fontWeight": 400,
        "letterSpacing": {
          "value": 0,
          "unit": "px"
        },
        "lineHeight": 1.2
      },
      "display": "400 14px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "css": "400 14px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px",
      "status": "assumed",
      "source": "estimated from deck PDFs"
    }
  ],
  "roles": {
    "color": {
      "schemes": [
        "dark",
        "light"
      ],
      "accent": {
        "from": "external",
        "note": "FUNDAMENTALco has no accent colour of its own. A piece made for a client may use one colour from that client's brand."
      },
      "proportion": "Black and white only. A client accent, if used, stays under 10% of the area.",
      "denied": [
        {
          "background": "#000000 (color.black)",
          "foreground": "#00000040 (color.black-25)",
          "reason": "dimmed text is only for inactive items",
          "never for content": null
        }
      ],
      "status": "assumed"
    },
    "typography": {
      "roles": {
        "display": "500 240px/0.75 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing -7.2px (typography.display)",
        "headline": "500 40px/1 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px (typography.headline)",
        "title": "500 28px/1 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px (typography.title)",
        "body": "400 20px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px (typography.body)",
        "slide-title": "500 64px/1.05 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing -1.3px (typography.slide.title)",
        "slide-body": "400 28px/1.25 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px (typography.slide.body)",
        "slide-label": "500 20px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px (typography.slide.label)",
        "slide-numeral": "500 200px/0.85 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing -6px (typography.slide.numeral)",
        "slide-footer": "400 14px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px (typography.slide.footer)"
      },
      "headlineWeight": "500 (font.weight.medium)",
      "status": "sourced"
    },
    "logo": {
      "variantsByBackground": {
        "light": "wordmark-black",
        "dark": "wordmark-white",
        "photo": "wordmark-white"
      },
      "clearSpace": "The height of the wordmark on all sides.",
      "minWidth": "120px (logo.min-width)",
      "status": "assumed"
    },
    "device": {
      "name": "line grid",
      "description": "A rectangular grid of thin lines in the foreground colour. On deck covers it is 4 columns by 2 rows filling the slide inside the margins. The website intro animates a dense grid zooming out to a coarse one.",
      "asset": "grid-intro",
      "status": "inferred"
    },
    "elements": {
      "outline-box": {
        "spec": "Rectangle with a 1px (border.hairline) line in #000000 (color.scheme.light.border) (or dark), no fill, no radius, no shadow. Holds text or a diagram.",
        "status": "inferred"
      },
      "label-box": {
        "spec": "Rectangle filled with the foreground colour, text in the background colour, 500 20px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px (typography.slide.label). Used for row and column labels.",
        "status": "inferred"
      },
      "divider": {
        "spec": "Full-width 1px (border.hairline) line in the scheme's divider colour, between sections.",
        "status": "sourced"
      },
      "round-button": {
        "spec": "Circular button filled with #000000 (color.black), icon in #ffffff (color.white). Turns 360° on hover in 200ms (duration.hover).",
        "status": "sourced"
      },
      "slide-footer": {
        "spec": "\"FUNDAMENTALco Confidential\" bottom-left in 400 14px/1.2 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing 0px (typography.slide.footer); page number bottom-right; client logo small in a top or bottom corner.",
        "status": "inferred"
      }
    },
    "avoid": [
      {
        "rule": "Do not use any colour except black and white for FUNDAMENTALco's own material. A client colour is the only exception.",
        "status": "assumed"
      },
      {
        "rule": "Do not use more than one accent colour in a piece.",
        "status": "assumed"
      },
      {
        "rule": "Do not round corners or add shadows.",
        "status": "inferred"
      },
      {
        "rule": "Do not set headings in bold (700). Use 400 or 500.",
        "status": "assumed"
      },
      {
        "rule": "Do not use an off-white or cream background. White is #FFFFFF.",
        "status": "confirmed"
      },
      {
        "rule": "Do not recolour, outline, stretch or retype the wordmark.",
        "status": "assumed"
      },
      {
        "rule": "Do not use a typeface other than Helvetica Neue for FUNDAMENTALco's own material.",
        "status": "assumed"
      },
      {
        "rule": "Do not add gradients to FUNDAMENTALco's own material.",
        "status": "assumed"
      }
    ]
  },
  "rawRoles": {
    "color": {
      "schemes": [
        "dark",
        "light"
      ],
      "accent": {
        "from": "external",
        "note": "FUNDAMENTALco has no accent colour of its own. A piece made for a client may use one colour from that client's brand."
      },
      "proportion": "Black and white only. A client accent, if used, stays under 10% of the area.",
      "denied": [
        {
          "background": "{color.black}",
          "foreground": "{color.black-25}",
          "reason": "dimmed text is only for inactive items",
          "never for content": null
        }
      ],
      "status": "assumed"
    },
    "typography": {
      "roles": {
        "display": "{typography.display}",
        "headline": "{typography.headline}",
        "title": "{typography.title}",
        "body": "{typography.body}",
        "slide-title": "{typography.slide.title}",
        "slide-body": "{typography.slide.body}",
        "slide-label": "{typography.slide.label}",
        "slide-numeral": "{typography.slide.numeral}",
        "slide-footer": "{typography.slide.footer}"
      },
      "headlineWeight": "{font.weight.medium}",
      "status": "sourced"
    },
    "logo": {
      "variantsByBackground": {
        "light": "wordmark-black",
        "dark": "wordmark-white",
        "photo": "wordmark-white"
      },
      "clearSpace": "The height of the wordmark on all sides.",
      "minWidth": "{logo.min-width}",
      "status": "assumed"
    },
    "device": {
      "name": "line grid",
      "description": "A rectangular grid of thin lines in the foreground colour. On deck covers it is 4 columns by 2 rows filling the slide inside the margins. The website intro animates a dense grid zooming out to a coarse one.",
      "asset": "grid-intro",
      "status": "inferred"
    },
    "elements": {
      "outline-box": {
        "spec": "Rectangle with a {border.hairline} line in {color.scheme.light.border} (or dark), no fill, no radius, no shadow. Holds text or a diagram.",
        "status": "inferred"
      },
      "label-box": {
        "spec": "Rectangle filled with the foreground colour, text in the background colour, {typography.slide.label}. Used for row and column labels.",
        "status": "inferred"
      },
      "divider": {
        "spec": "Full-width {border.hairline} line in the scheme's divider colour, between sections.",
        "status": "sourced"
      },
      "round-button": {
        "spec": "Circular button filled with {color.black}, icon in {color.white}. Turns 360° on hover in {duration.hover}.",
        "status": "sourced"
      },
      "slide-footer": {
        "spec": "\"FUNDAMENTALco Confidential\" bottom-left in {typography.slide.footer}; page number bottom-right; client logo small in a top or bottom corner.",
        "status": "inferred"
      }
    },
    "avoid": [
      {
        "rule": "Do not use any colour except black and white for FUNDAMENTALco's own material. A client colour is the only exception.",
        "status": "assumed"
      },
      {
        "rule": "Do not use more than one accent colour in a piece.",
        "status": "assumed"
      },
      {
        "rule": "Do not round corners or add shadows.",
        "status": "inferred"
      },
      {
        "rule": "Do not set headings in bold (700). Use 400 or 500.",
        "status": "assumed"
      },
      {
        "rule": "Do not use an off-white or cream background. White is #FFFFFF.",
        "status": "confirmed"
      },
      {
        "rule": "Do not recolour, outline, stretch or retype the wordmark.",
        "status": "assumed"
      },
      {
        "rule": "Do not use a typeface other than Helvetica Neue for FUNDAMENTALco's own material.",
        "status": "assumed"
      },
      {
        "rule": "Do not add gradients to FUNDAMENTALco's own material.",
        "status": "assumed"
      }
    ]
  },
  "rules": [
    {
      "id": "COL-01",
      "topic": "color",
      "rule": "Use black and white only. White is pure #FFFFFF.",
      "severity": "must",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "confirmed",
      "source": "George, 2026-11-06 (white); website CSS (black)"
    },
    {
      "id": "COL-02",
      "topic": "color",
      "rule": "A piece made for a client may add one colour taken from the client's brand, used for emphasis only (a numeral, a highlight, a key shape).",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "assumed",
      "source": "Evident (blue), Equinix (magenta), Vista (orange), The Met and Olaplex (yellow highlight)"
    },
    {
      "id": "COL-03",
      "topic": "color",
      "rule": "Keep a client accent under 10% of the area of any slide or screen.",
      "severity": "should",
      "applies_to": [
        "slides",
        "web"
      ],
      "status": "assumed"
    },
    {
      "id": "COL-04",
      "topic": "color",
      "rule": "Show inactive items (for example the other agenda items) at 25% opacity of the foreground colour.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "COL-05",
      "topic": "color",
      "rule": "Use the dark scheme (black background) for covers and section dividers, and the light scheme (white background) for content slides.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "GRID-01",
      "topic": "device",
      "rule": "The line grid is the signature graphic. Use it on deck covers and section dividers, on black.",
      "severity": "should",
      "applies_to": [
        "slides",
        "web"
      ],
      "status": "assumed",
      "source": "every deck cover; A24 and The Met dividers; website intro"
    },
    {
      "id": "GRID-02",
      "topic": "device",
      "rule": "On covers, draw the grid 4 columns by 2 rows inside the margins, in hairline white lines, with the wordmark above it.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "GRID-03",
      "topic": "device",
      "rule": "Do not fill grid cells with colour or images; text may sit inside a cell.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "assumed"
    },
    {
      "id": "IMG-01",
      "topic": "imagery",
      "rule": "Portraits are black and white.",
      "severity": "should",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "IMG-02",
      "topic": "imagery",
      "rule": "Full-bleed photographs carry a dark overlay so white text on top reads clearly.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "IMG-03",
      "topic": "imagery",
      "rule": "Client imagery and product shots appear inside a frame or box, not full bleed.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "LAY-01",
      "topic": "layout",
      "rule": "Website pages use a 6 (grid.columns)-column grid with 30px (space.gutter) gutters and margins.",
      "severity": "must",
      "applies_to": [
        "web"
      ],
      "status": "sourced"
    },
    {
      "id": "LAY-02",
      "topic": "layout",
      "rule": "Separate sections with a full-width hairline in the scheme's divider colour.",
      "severity": "should",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "sourced"
    },
    {
      "id": "LAY-03",
      "topic": "layout",
      "rule": "Put information in outline boxes (1px, square corners, no fill); use filled label boxes for row or column headers.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "LAY-04",
      "topic": "layout",
      "rule": "Leave generous empty space; one idea per slide.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "assumed"
    },
    {
      "id": "LAY-05",
      "topic": "layout",
      "rule": "Keep 80px (space.slide-margin) margins on 1920×1080 slides.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "assumed"
    },
    {
      "id": "LOGO-01",
      "topic": "logo",
      "rule": "The wordmark is \"FUNDAMENTALco\" with a raised lowercase \"co\". Use the supplied files only.",
      "severity": "must",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "sourced",
      "source": "website SVGs"
    },
    {
      "id": "LOGO-02",
      "topic": "logo",
      "rule": "Use the black wordmark on white and the white wordmark on black or on photographs.",
      "severity": "must",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "LOGO-03",
      "topic": "logo",
      "rule": "On covers and the website header, set the wordmark at full width between the page margins, at the top.",
      "severity": "should",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "inferred",
      "source": "all deck covers, website header"
    },
    {
      "id": "LOGO-04",
      "topic": "logo",
      "rule": "In running text write the name as FUNDAMENTALco.",
      "severity": "must",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "MOT-01",
      "topic": "motion",
      "rule": "Motion is short and plain - fades, small rises of 8px (offset.reveal), height changes and flips. No bounce or overshoot.",
      "severity": "should",
      "applies_to": [
        "web"
      ],
      "status": "inferred"
    },
    {
      "id": "MOT-02",
      "topic": "motion",
      "rule": "Lists reveal item by item with a stagger (30ms (duration.stagger.tight) for short items, 100ms (duration.stagger.normal) for larger ones).",
      "severity": "should",
      "applies_to": [
        "web"
      ],
      "status": "sourced"
    },
    {
      "id": "MOT-03",
      "topic": "motion",
      "rule": "Respect reduced motion - with prefers-reduced-motion, show the end state with no transition.",
      "severity": "must",
      "applies_to": [
        "web"
      ],
      "status": "sourced",
      "source": "website JS"
    },
    {
      "id": "MOT-04",
      "topic": "motion",
      "rule": "The intro sequence is the line grid animation, then the wordmark, then the page. Use it only as an opening.",
      "severity": "should",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "SLD-01",
      "topic": "slides",
      "rule": "Slides are 16:9 (1920×1080).",
      "severity": "must",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "SLD-02",
      "topic": "slides",
      "rule": "Every content slide has the footer \"FUNDAMENTALco Confidential\" bottom-left and the page number bottom-right.",
      "severity": "must",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "SLD-03",
      "topic": "slides",
      "rule": "In client work, place the client's logo small in a corner, in one colour (black or white).",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "SLD-04",
      "topic": "slides",
      "rule": "The agenda is a numbered list; when it repeats as a section divider, the current item is full strength and the rest are dimmed.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "SLD-05",
      "topic": "slides",
      "rule": "Use the recurring diagram forms - three-column framework with large letters, two-circle Venn in outline, two poles with a balance triangle, horizontal timeline with dots, quote with large quote marks - drawn in hairline outline.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "SLD-06",
      "topic": "slides",
      "rule": "When a client's own styling is used for a section (as in the Olaplex deck), the FUNDAMENTALco cover, dividers and footer stay as standard.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "assumed"
    },
    {
      "id": "TYPE-01",
      "topic": "typography",
      "rule": "Set everything in Helvetica Neue (LT Pro where available), weights 400 and 500 only.",
      "severity": "must",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "sourced",
      "source": "website CSS and Adobe Fonts kit"
    },
    {
      "id": "TYPE-02",
      "topic": "typography",
      "rule": "Headings use weight 500 with tight leading (line height equal to the font size, 0.75 for the display size).",
      "severity": "must",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "sourced",
      "source": "website CSS h1–h3"
    },
    {
      "id": "TYPE-03",
      "topic": "typography",
      "rule": "Headings and titles are in sentence case. The only capitals are in the wordmark and proper nouns.",
      "severity": "should",
      "applies_to": [
        "web",
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "TYPE-04",
      "topic": "typography",
      "rule": "Slide titles sit top-left and run to at most three lines.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred"
    },
    {
      "id": "TYPE-05",
      "topic": "typography",
      "rule": "Show key figures as large numerals in 500 200px/0.85 \"Helvetica Neue LT Pro\", \"Helvetica Neue\", Helvetica, Arial, sans-serif; letter-spacing -6px (typography.slide.numeral) with a short label beneath.",
      "severity": "should",
      "applies_to": [
        "slides"
      ],
      "status": "inferred",
      "source": "stat slides (70%, $15.7T, 40+)"
    },
    {
      "id": "WEB-01",
      "topic": "web",
      "rule": "Section headings on the website are full-width wordmark-style titles; each section opens and closes like an accordion.",
      "severity": "should",
      "applies_to": [
        "web"
      ],
      "status": "sourced"
    },
    {
      "id": "WEB-02",
      "topic": "web",
      "rule": "Use the round black button with an icon for small calls to action.",
      "severity": "should",
      "applies_to": [
        "web"
      ],
      "status": "sourced"
    }
  ],
  "avoid": [
    {
      "rule": "Do not use any colour except black and white for FUNDAMENTALco's own material. A client colour is the only exception.",
      "status": "assumed"
    },
    {
      "rule": "Do not use more than one accent colour in a piece.",
      "status": "assumed"
    },
    {
      "rule": "Do not round corners or add shadows.",
      "status": "inferred"
    },
    {
      "rule": "Do not set headings in bold (700). Use 400 or 500.",
      "status": "assumed"
    },
    {
      "rule": "Do not use an off-white or cream background. White is #FFFFFF.",
      "status": "confirmed"
    },
    {
      "rule": "Do not recolour, outline, stretch or retype the wordmark.",
      "status": "assumed"
    },
    {
      "rule": "Do not use a typeface other than Helvetica Neue for FUNDAMENTALco's own material.",
      "status": "assumed"
    },
    {
      "rule": "Do not add gradients to FUNDAMENTALco's own material.",
      "status": "assumed"
    }
  ],
  "assets": [
    {
      "id": "wordmark-black",
      "kind": "logo",
      "file": "logo/wordmark-black.svg",
      "background": "light",
      "status": "sourced",
      "source": "website (logo-black.svg, 1388×136)",
      "url": "https://brand.fcopilot.co/fundamentalco/assets/logo/wordmark-black.svg"
    },
    {
      "id": "wordmark-white",
      "kind": "logo",
      "file": "logo/wordmark-white.svg",
      "background": "dark",
      "status": "sourced",
      "source": "website (logo-white.svg, 1388×136)",
      "url": "https://brand.fcopilot.co/fundamentalco/assets/logo/wordmark-white.svg"
    },
    {
      "id": "grid-intro",
      "kind": "motion",
      "file": "motion/grid-intro.lottie.json",
      "background": "dark",
      "status": "sourced",
      "source": "website intro (03_OMSE_Animation_TitleSlide_Grid, 1920×1080, 30fps, 2s)",
      "url": "https://brand.fcopilot.co/fundamentalco/assets/motion/grid-intro.lottie.json"
    }
  ],
  "guidelineBodies": {},
  "counts": {
    "confirmed": 3,
    "sourced": 50,
    "inferred": 37,
    "assumed": 24
  }
}
