OPF
SpecDefinition referenceView source

Color Scheme

Color palette used by the design system. Every slot and role is a hex color ('#RGB', '#RRGGBB' or '#RRGGBBAA'); a color-scheme name or a 'var:<id>' reference is not valid here, because those resolve through the scheme. The slot fields (accent1-accent6, dark1, dark2, light1, light2, hyperlink, followedHyperlink) mirror color-scheme.schema.json (https://openpresentation.org/schema/opf-color-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields. Two parallel models are supported and may be mixed: - OOXML slots - the 12-slot PowerPoint theme model that round-trips directly to OOXML. Use these for full control over the palette as PowerPoint sees it. - Abstract roles (primary, secondary, accent, background, surface, text, textSecondary) - OPF-specific semantic aliases the engine maps onto the OOXML slots. Convenient for inline overrides without thinking in slot numbers; not part of the catalog record schema. In design.colorScheme, 'id' resolves a colorSchemes record as the base; slot and role overrides on the same object take precedence over the resolved scheme. The string form of design.colorScheme is equivalent to setting only 'id'.

Metadata

Definition
#/$defs/ColorScheme
Form
object
Source
spec/schemas/opf.schema.json

Field index

FieldTypeReq.Description
idref:CatalogReference—Colour-scheme reference (a bare id or 'name:id') resolved as the base; slot and role overrides on the surrounding ColorScheme object take precedence over the resolved scheme.
accent1ref:HexColor—Accent 1 color (hex). Mirrors the OOXML accent1 slot.
accent2ref:HexColor—Accent 2 color (hex). Mirrors the OOXML accent2 slot.
accent3ref:HexColor—Accent 3 color (hex). Mirrors the OOXML accent3 slot.
accent4ref:HexColor—Accent 4 color (hex). Mirrors the OOXML accent4 slot.
accent5ref:HexColor—Accent 5 color (hex). Mirrors the OOXML accent5 slot.
accent6ref:HexColor—Accent 6 color (hex). Mirrors the OOXML accent6 slot.
dark1ref:HexColor—Dark 1 color (hex). Typically the deepest neutral; OOXML dark1.
dark2ref:HexColor—Dark 2 color (hex). Secondary dark; OOXML dark2.
light1ref:HexColor—Light 1 color (hex). Typically the slide canvas; OOXML lt1.
light2ref:HexColor—Light 2 color (hex). Secondary light surface; OOXML lt2.
hyperlinkref:HexColor—Hyperlink color (hex). OOXML hlink. Link runs with no color of their own are drawn underlined in it, in the preview and in PowerPoint, unless it has under 4.5:1 contrast against the slide background, then in the slide text color.
followedHyperlinkref:HexColor—Followed-hyperlink color (hex). OOXML folHlink.
primaryref:HexColor—Abstract role: primary brand color (hex). The engine maps this onto an OOXML accent slot when serializing.
secondaryref:HexColor—Abstract role: secondary brand color (hex).
accentref:HexColor—Abstract role: accent color used for highlights and emphasis (hex).
backgroundref:HexColor—Abstract role: default slide background color (hex), used when the design names no single-color background (and for gradient and picture backgrounds). Overrides light1 as that default.
surfaceref:HexColor—Abstract role: color for elevated surfaces such as cards and panels (hex). Overrides the default of light2 (dark2 on a dark slide).
textref:HexColor—Abstract role: primary body text color (hex). Overrides dark1 on a light slide only; a dark slide always uses light1.
textSecondaryref:HexColor—Abstract role: secondary or muted text color used for captions and supporting copy (hex). Overrides the default of dark2 (light2 on a dark slide).

id

typeref:CatalogReferencerequirednodefault—

Colour-scheme reference (a bare id or 'name:id') resolved as the base; slot and role overrides on the surrounding ColorScheme object take precedence over the resolved scheme.

id.json
{
  "id": "cool-horizon"
}

accent1

typeref:HexColorrequirednodefault—

Accent 1 color (hex). Mirrors the OOXML accent1 slot.

accent1.json
{
  "accent1": "#2874A6"
}

accent2

typeref:HexColorrequirednodefault—

Accent 2 color (hex). Mirrors the OOXML accent2 slot.

accent2.json
{
  "accent2": "#1B4F72"
}

accent3

typeref:HexColorrequirednodefault—

Accent 3 color (hex). Mirrors the OOXML accent3 slot.

accent3.json
{
  "accent3": "#5499C7"
}

accent4

typeref:HexColorrequirednodefault—

Accent 4 color (hex). Mirrors the OOXML accent4 slot.

accent4.json
{
  "accent4": "#7BDBB2"
}

accent5

typeref:HexColorrequirednodefault—

Accent 5 color (hex). Mirrors the OOXML accent5 slot.

accent5.json
{
  "accent5": "#3AC67A"
}

accent6

typeref:HexColorrequirednodefault—

Accent 6 color (hex). Mirrors the OOXML accent6 slot.

accent6.json
{
  "accent6": "#24A89E"
}

dark1

typeref:HexColorrequirednodefault—

Dark 1 color (hex). Typically the deepest neutral; OOXML dark1.

dark1.json
{
  "dark1": "#000000"
}

dark2

typeref:HexColorrequirednodefault—

Dark 2 color (hex). Secondary dark; OOXML dark2.

dark2.json
{
  "dark2": "#011842"
}

light1

typeref:HexColorrequirednodefault—

Light 1 color (hex). Typically the slide canvas; OOXML lt1.

light1.json
{
  "light1": "#FFFFFF"
}

light2

typeref:HexColorrequirednodefault—

Light 2 color (hex). Secondary light surface; OOXML lt2.

light2.json
{
  "light2": "#F0F0F0"
}

primary

typeref:HexColorrequirednodefault—

Abstract role: primary brand color (hex). The engine maps this onto an OOXML accent slot when serializing.

primary.json
{
  "primary": "#1E40AF"
}

secondary

typeref:HexColorrequirednodefault—

Abstract role: secondary brand color (hex).

secondary.json
{
  "secondary": "#3B82F6"
}

accent

typeref:HexColorrequirednodefault—

Abstract role: accent color used for highlights and emphasis (hex).

accent.json
{
  "accent": "#F59E0B"
}

background

typeref:HexColorrequirednodefault—

Abstract role: default slide background color (hex), used when the design names no single-color background (and for gradient and picture backgrounds). Overrides light1 as that default.

background.json
{
  "background": "#FFFFFF"
}

surface

typeref:HexColorrequirednodefault—

Abstract role: color for elevated surfaces such as cards and panels (hex). Overrides the default of light2 (dark2 on a dark slide).

surface.json
{
  "surface": "#F8FAFC"
}

text

typeref:HexColorrequirednodefault—

Abstract role: primary body text color (hex). Overrides dark1 on a light slide only; a dark slide always uses light1.

text.json
{
  "text": "#0F172A"
}

textSecondary

typeref:HexColorrequirednodefault—

Abstract role: secondary or muted text color used for captions and supporting copy (hex). Overrides the default of dark2 (light2 on a dark slide).

textSecondary.json
{
  "textSecondary": "#475569"
}
Complete definition constraints
Schema constraints
{
  "type": "object",
  "description": "Color palette used by the design system. Every slot and role is a hex color ('#RGB', '#RRGGBB' or '#RRGGBBAA'); a color-scheme name or a 'var:<id>' reference is not valid here, because those resolve through the scheme. The slot fields (accent1-accent6, dark1, dark2, light1, light2, hyperlink, followedHyperlink) mirror color-scheme.schema.json (https://openpresentation.org/schema/opf-color-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields.\n\nTwo parallel models are supported and may be mixed:\n- OOXML slots - the 12-slot PowerPoint theme model that round-trips directly to OOXML. Use these for full control over the palette as PowerPoint sees it.\n- Abstract roles (primary, secondary, accent, background, surface, text, textSecondary) - OPF-specific semantic aliases the engine maps onto the OOXML slots. Convenient for inline overrides without thinking in slot numbers; not part of the catalog record schema.\n\nIn design.colorScheme, 'id' resolves a colorSchemes record as the base; slot and role overrides on the same object take precedence over the resolved scheme. The string form of design.colorScheme is equivalent to setting only 'id'.",
  "properties": {
    "id": {
      "$ref": "#/$defs/CatalogReference",
      "description": "Colour-scheme reference (a bare id or 'name:id') resolved as the base; slot and role overrides on the surrounding ColorScheme object take precedence over the resolved scheme.",
      "examples": [
        "cool-horizon",
        "boost",
        "burnt-orange",
        "ocean-depth",
        "corporate-blue"
      ]
    },
    "accent1": {
      "$ref": "#/$defs/HexColor",
      "description": "Accent 1 color (hex). Mirrors the OOXML accent1 slot.",
      "examples": [
        "#2874A6",
        "#FD3223",
        "#F77F00"
      ]
    },
    "accent2": {
      "$ref": "#/$defs/HexColor",
      "description": "Accent 2 color (hex). Mirrors the OOXML accent2 slot.",
      "examples": [
        "#1B4F72",
        "#0308DB",
        "#D62828"
      ]
    },
    "accent3": {
      "$ref": "#/$defs/HexColor",
      "description": "Accent 3 color (hex). Mirrors the OOXML accent3 slot.",
      "examples": [
        "#5499C7",
        "#4F4955",
        "#003049"
      ]
    },
    "accent4": {
      "$ref": "#/$defs/HexColor",
      "description": "Accent 4 color (hex). Mirrors the OOXML accent4 slot.",
      "examples": [
        "#7BDBB2",
        "#A1DB30",
        "#FCBF49"
      ]
    },
    "accent5": {
      "$ref": "#/$defs/HexColor",
      "description": "Accent 5 color (hex). Mirrors the OOXML accent5 slot.",
      "examples": [
        "#3AC67A",
        "#0682FE",
        "#EAE2B7"
      ]
    },
    "accent6": {
      "$ref": "#/$defs/HexColor",
      "description": "Accent 6 color (hex). Mirrors the OOXML accent6 slot.",
      "examples": [
        "#24A89E",
        "#FC03BE",
        "#BFBFBF"
      ]
    },
    "dark1": {
      "$ref": "#/$defs/HexColor",
      "description": "Dark 1 color (hex). Typically the deepest neutral; OOXML dark1.",
      "examples": [
        "#000000"
      ]
    },
    "dark2": {
      "$ref": "#/$defs/HexColor",
      "description": "Dark 2 color (hex). Secondary dark; OOXML dark2.",
      "examples": [
        "#011842",
        "#2C2C2C"
      ]
    },
    "light1": {
      "$ref": "#/$defs/HexColor",
      "description": "Light 1 color (hex). Typically the slide canvas; OOXML lt1.",
      "examples": [
        "#FFFFFF"
      ]
    },
    "light2": {
      "$ref": "#/$defs/HexColor",
      "description": "Light 2 color (hex). Secondary light surface; OOXML lt2.",
      "examples": [
        "#F0F0F0",
        "#F3F7FF"
      ]
    },
    "hyperlink": {
      "$ref": "#/$defs/HexColor",
      "description": "Hyperlink color (hex). OOXML hlink. Link runs with no color of their own are drawn underlined in it, in the preview and in PowerPoint, unless it has under 4.5:1 contrast against the slide background, then in the slide text color.",
      "examples": [
        "#0563C1",
        "#0066CC"
      ]
    },
    "followedHyperlink": {
      "$ref": "#/$defs/HexColor",
      "description": "Followed-hyperlink color (hex). OOXML folHlink.",
      "examples": [
        "#954F72",
        "#551A8B"
      ]
    },
    "primary": {
      "$ref": "#/$defs/HexColor",
      "description": "Abstract role: primary brand color (hex). The engine maps this onto an OOXML accent slot when serializing.",
      "examples": [
        "#1E40AF",
        "#0F172A"
      ]
    },
    "secondary": {
      "$ref": "#/$defs/HexColor",
      "description": "Abstract role: secondary brand color (hex).",
      "examples": [
        "#3B82F6",
        "#64748B"
      ]
    },
    "accent": {
      "$ref": "#/$defs/HexColor",
      "description": "Abstract role: accent color used for highlights and emphasis (hex).",
      "examples": [
        "#F59E0B",
        "#22D3EE"
      ]
    },
    "background": {
      "$ref": "#/$defs/HexColor",
      "description": "Abstract role: default slide background color (hex), used when the design names no single-color background (and for gradient and picture backgrounds). Overrides light1 as that default.",
      "examples": [
        "#FFFFFF",
        "#0B1220"
      ]
    },
    "surface": {
      "$ref": "#/$defs/HexColor",
      "description": "Abstract role: color for elevated surfaces such as cards and panels (hex). Overrides the default of light2 (dark2 on a dark slide).",
      "examples": [
        "#F8FAFC",
        "#1E293B"
      ]
    },
    "text": {
      "$ref": "#/$defs/HexColor",
      "description": "Abstract role: primary body text color (hex). Overrides dark1 on a light slide only; a dark slide always uses light1.",
      "examples": [
        "#0F172A",
        "#F8FAFC"
      ]
    },
    "textSecondary": {
      "$ref": "#/$defs/HexColor",
      "description": "Abstract role: secondary or muted text color used for captions and supporting copy (hex). Overrides the default of dark2 (light2 on a dark slide).",
      "examples": [
        "#475569",
        "#94A3B8"
      ]
    }
  }
}