{
  "id": "duolingo",
  "version": "1.0.0",
  "name": "Duolingo",
  "description": "Duolingo is the world's largest language-learning platform — free, gamified, mobile-first, and anchored by Duo the green owl, one of the most recognizable mascots in consumer software. The brand voice is playful, character-led, and unapologetically extrinsic: streaks, hearts, gems, leagues, push notifications with personality. Visually, Duolingo is light-first with Snow / Polar canvases, an Eel ink text color (never pure black), and the famous Feather Green (#58CC02) as the primary action and identity color. The entire palette is animal-named — Owl, Macaw, Cardinal, Bee, Beetle, Eel, Swan, Hare — and that vocabulary is itself part of the brand's voice. Typography is the proprietary DIN Round Pro (body) and Feather Bold (display).\n",
  "provenance": {
    "source": "https://design.duolingo.com/",
    "license": "Proprietary — All Rights Reserved",
    "attribution": "Duolingo, Inc. — visual identity captured from the published Duolingo Brand Guidelines (design.duolingo.com) and the deployed stylesheet on duolingo.com. The animal-named palette is the brand's own vocabulary. Duolingo, Duo, the green owl, the Feather typeface, and associated marks are property of Duolingo, Inc.\n",
    "importedDate": "2026-05-19",
    "notes": "Duolingo's proprietary typefaces are DIN Round Pro (Regular, Medium, Bold) for body and Feather Bold for display headings. Neither is publicly distributed; this atom references inter@1 as the open-source substitute for both the display and body roles, with jetbrainsmono-nerdfont@1 for incidental code snippets in support content. The canonical text ink is Eel (#4B4B4B), NOT pure #000000 — pure black is forbidden in body copy per the published guidelines, which is encoded as a colorChoice rule below.\n"
  },
  "tags": [
    "duolingo",
    "education",
    "language-learning",
    "gamified",
    "brand",
    "light-first",
    "green",
    "feather",
    "owl"
  ],
  "palette": {
    "ref": "duolingo@1.0.0",
    "swatches": [
      {
        "id": "feather-green",
        "name": "Feather Green (Owl)",
        "value": "#58CC02",
        "description": "Duo the owl's signature green. The brand's primary action and identity color.",
        "aliases": [
          "owl"
        ]
      },
      {
        "id": "mask-green",
        "name": "Mask Green",
        "value": "#89E219",
        "description": "Brighter sibling of Feather Green — used for signage and lighting accents on the mascot's face mask.",
        "aliases": []
      },
      {
        "id": "tree-frog",
        "name": "Tree Frog",
        "value": "#58A700",
        "description": "Pressed / active variant of Feather Green; the deeper-shadow green.",
        "aliases": []
      },
      {
        "id": "sea-sponge",
        "name": "Sea Sponge",
        "value": "#D7FFB8",
        "description": "Pale lesson-complete green tint.",
        "aliases": []
      },
      {
        "id": "turtle",
        "name": "Turtle",
        "value": "#A5ED6E",
        "description": "Mid-pale green — secondary accent and badge fill.",
        "aliases": []
      },
      {
        "id": "snow",
        "name": "Snow",
        "value": "#FFFFFF",
        "description": "Pure white — page canvas in light mode.",
        "aliases": []
      },
      {
        "id": "polar",
        "name": "Polar",
        "value": "#F7F7F7",
        "description": "Off-white surface tint; the canonical page background hint.",
        "aliases": []
      },
      {
        "id": "swan",
        "name": "Swan",
        "value": "#E5E5E5",
        "description": "Border / quiet divider color on Polar.",
        "aliases": []
      },
      {
        "id": "hare",
        "name": "Hare",
        "value": "#AFAFAF",
        "description": "Mid grey — disabled state and tertiary text.",
        "aliases": []
      },
      {
        "id": "wolf",
        "name": "Wolf",
        "value": "#777777",
        "description": "Deep grey — secondary text on light surfaces.",
        "aliases": []
      },
      {
        "id": "eel",
        "name": "Eel",
        "value": "#4B4B4B",
        "description": "The canonical Duolingo text ink. Used in place of pure black for body copy.",
        "aliases": []
      },
      {
        "id": "cardinal",
        "name": "Cardinal",
        "value": "#FF4B4B",
        "description": "Duolingo's error / wrong-answer red. The most recognizable red in the system.",
        "aliases": []
      },
      {
        "id": "fire-ant",
        "name": "Fire Ant",
        "value": "#EA2B2B",
        "description": "Pressed / active variant of Cardinal — destructive confirmation.",
        "aliases": []
      },
      {
        "id": "crab",
        "name": "Crab",
        "value": "#FF7878",
        "description": "Soft red — hover tint and error background.",
        "aliases": []
      },
      {
        "id": "flamingo",
        "name": "Flamingo",
        "value": "#FFB2B2",
        "description": "Pale rose-pink — error background wash.",
        "aliases": []
      },
      {
        "id": "bee",
        "name": "Bee",
        "value": "#FFC800",
        "description": "Streak / achievement gold. The motivational yellow.",
        "aliases": []
      },
      {
        "id": "lion",
        "name": "Lion",
        "value": "#FFB100",
        "description": "Slightly deeper variant of Bee — pressed gold.",
        "aliases": []
      },
      {
        "id": "fox",
        "name": "Fox",
        "value": "#FF9600",
        "description": "Vivid orange — celebration and tier-up moments.",
        "aliases": []
      },
      {
        "id": "duck",
        "name": "Duck",
        "value": "#FBE56D",
        "description": "Pale lemon yellow — soft yellow background.",
        "aliases": []
      },
      {
        "id": "canary",
        "name": "Canary",
        "value": "#FFF5D3",
        "description": "Pale cream — gentle warning background.",
        "aliases": []
      },
      {
        "id": "macaw",
        "name": "Macaw",
        "value": "#1CB0F6",
        "description": "Duolingo's signature info-blue. Links, hints, and learning-tip accents.",
        "aliases": []
      },
      {
        "id": "whale",
        "name": "Whale",
        "value": "#1899D6",
        "description": "Pressed / active variant of Macaw.",
        "aliases": []
      },
      {
        "id": "humpback",
        "name": "Humpback",
        "value": "#2B70C9",
        "description": "Deeper navy-blue — secondary info accent.",
        "aliases": []
      },
      {
        "id": "narwhal",
        "name": "Narwhal",
        "value": "#1453A3",
        "description": "Deepest navy — chart and data-viz anchor.",
        "aliases": []
      },
      {
        "id": "blue-jay",
        "name": "Blue Jay",
        "value": "#84D8FF",
        "description": "Pale sky blue — soft hint accent.",
        "aliases": []
      },
      {
        "id": "moon-jelly",
        "name": "Moon Jelly",
        "value": "#7AF0F2",
        "description": "Soft cyan — illustration accent.",
        "aliases": []
      },
      {
        "id": "beetle",
        "name": "Beetle",
        "value": "#CE82FF",
        "description": "Soft purple — the recognizable Super Duolingo subscription accent.",
        "aliases": []
      },
      {
        "id": "betta",
        "name": "Betta",
        "value": "#9069CD",
        "description": "Mid-purple — pressed Super accent.",
        "aliases": []
      },
      {
        "id": "butterfly",
        "name": "Butterfly",
        "value": "#6F4EA1",
        "description": "Deep purple — Super hero gradient anchor.",
        "aliases": []
      },
      {
        "id": "starfish",
        "name": "Starfish",
        "value": "#FFAADE",
        "description": "Pale pink — illustration accent paired with purples.",
        "aliases": []
      }
    ],
    "modes": {
      "light": {
        "roles": {
          "background": "snow",
          "surface": "polar",
          "surface-elevated": "snow",
          "text-primary": "eel",
          "text-secondary": "wolf",
          "text-tertiary": "hare",
          "primary": "feather-green",
          "primary-hover": "tree-frog",
          "accent": "macaw",
          "accent-hover": "whale",
          "warning": "bee",
          "warning-hover": "lion",
          "error": "cardinal",
          "success": "feather-green",
          "border": "swan"
        }
      },
      "dark": {
        "roles": {
          "background": "eel",
          "surface": "wolf",
          "surface-elevated": "hare",
          "text-primary": "snow",
          "text-secondary": "polar",
          "text-tertiary": "swan",
          "primary": "feather-green",
          "primary-hover": "mask-green",
          "accent": "macaw",
          "accent-hover": "blue-jay",
          "warning": "bee",
          "warning-hover": "lion",
          "error": "cardinal",
          "success": "mask-green",
          "border": "wolf"
        }
      }
    }
  },
  "fonts": [
    {
      "role": "heading",
      "ref": "inter@1.0.0",
      "family": "Inter",
      "classification": "sans-serif",
      "source": {
        "kind": "google-fonts",
        "family": "Inter",
        "url": "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"
      },
      "fallbackStack": [
        "-apple-system",
        "BlinkMacSystemFont",
        "Segoe UI",
        "Roboto",
        "Helvetica Neue",
        "Arial",
        "sans-serif"
      ],
      "availableStyles": [
        {
          "weight": 100,
          "style": "normal"
        },
        {
          "weight": 100,
          "style": "italic"
        },
        {
          "weight": 200,
          "style": "normal"
        },
        {
          "weight": 200,
          "style": "italic"
        },
        {
          "weight": 300,
          "style": "normal"
        },
        {
          "weight": 300,
          "style": "italic"
        },
        {
          "weight": 400,
          "style": "normal"
        },
        {
          "weight": 400,
          "style": "italic"
        },
        {
          "weight": 500,
          "style": "normal"
        },
        {
          "weight": 500,
          "style": "italic"
        },
        {
          "weight": 600,
          "style": "normal"
        },
        {
          "weight": 600,
          "style": "italic"
        },
        {
          "weight": 700,
          "style": "normal"
        },
        {
          "weight": 700,
          "style": "italic"
        },
        {
          "weight": 800,
          "style": "normal"
        },
        {
          "weight": 800,
          "style": "italic"
        },
        {
          "weight": 900,
          "style": "normal"
        },
        {
          "weight": 900,
          "style": "italic"
        }
      ]
    },
    {
      "role": "body",
      "ref": "inter@1.0.0",
      "family": "Inter",
      "classification": "sans-serif",
      "source": {
        "kind": "google-fonts",
        "family": "Inter",
        "url": "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"
      },
      "fallbackStack": [
        "-apple-system",
        "BlinkMacSystemFont",
        "Segoe UI",
        "Roboto",
        "Helvetica Neue",
        "Arial",
        "sans-serif"
      ],
      "availableStyles": [
        {
          "weight": 100,
          "style": "normal"
        },
        {
          "weight": 100,
          "style": "italic"
        },
        {
          "weight": 200,
          "style": "normal"
        },
        {
          "weight": 200,
          "style": "italic"
        },
        {
          "weight": 300,
          "style": "normal"
        },
        {
          "weight": 300,
          "style": "italic"
        },
        {
          "weight": 400,
          "style": "normal"
        },
        {
          "weight": 400,
          "style": "italic"
        },
        {
          "weight": 500,
          "style": "normal"
        },
        {
          "weight": 500,
          "style": "italic"
        },
        {
          "weight": 600,
          "style": "normal"
        },
        {
          "weight": 600,
          "style": "italic"
        },
        {
          "weight": 700,
          "style": "normal"
        },
        {
          "weight": 700,
          "style": "italic"
        },
        {
          "weight": 800,
          "style": "normal"
        },
        {
          "weight": 800,
          "style": "italic"
        },
        {
          "weight": 900,
          "style": "normal"
        },
        {
          "weight": 900,
          "style": "italic"
        }
      ]
    },
    {
      "role": "mono",
      "ref": "jetbrainsmono-nerdfont@1.0.0",
      "family": "JetBrainsMono Nerd Font",
      "classification": "monospace",
      "source": {
        "kind": "external",
        "family": "JetBrainsMono Nerd Font",
        "notes": "Nerd-Font-patched build of JetBrains Mono. Not available via Google Fonts. Download woff2/ttf files from the Nerd Fonts GitHub release and self-host, or install system-wide for terminal/IDE use.\n"
      },
      "fallbackStack": [
        "JetBrains Mono",
        "Fira Code",
        "Menlo",
        "Monaco",
        "Consolas",
        "Liberation Mono",
        "monospace"
      ],
      "availableStyles": [
        {
          "weight": 100,
          "style": "normal"
        },
        {
          "weight": 100,
          "style": "italic"
        },
        {
          "weight": 200,
          "style": "normal"
        },
        {
          "weight": 200,
          "style": "italic"
        },
        {
          "weight": 300,
          "style": "normal"
        },
        {
          "weight": 300,
          "style": "italic"
        },
        {
          "weight": 400,
          "style": "normal"
        },
        {
          "weight": 400,
          "style": "italic"
        },
        {
          "weight": 500,
          "style": "normal"
        },
        {
          "weight": 500,
          "style": "italic"
        },
        {
          "weight": 600,
          "style": "normal"
        },
        {
          "weight": 600,
          "style": "italic"
        },
        {
          "weight": 700,
          "style": "normal"
        },
        {
          "weight": 700,
          "style": "italic"
        },
        {
          "weight": 800,
          "style": "normal"
        },
        {
          "weight": 800,
          "style": "italic"
        }
      ]
    }
  ],
  "roles": {
    "colors": {
      "identity": "snow",
      "on-identity": "eel",
      "primary": "feather-green",
      "primary-hover": "tree-frog",
      "accent": "macaw",
      "accent-hover": "whale",
      "mark": "feather-green",
      "success": "feather-green",
      "warning": "bee",
      "error": "cardinal",
      "text-primary-light": "eel",
      "text-primary-dark": "snow",
      "background-light": "snow",
      "background-dark": "eel",
      "surface-light": "polar",
      "surface-dark": "wolf",
      "text-secondary-light": "wolf",
      "text-tertiary-light": "hare",
      "border-light": "swan",
      "border-dark": "wolf"
    },
    "typography": {
      "display": "heading",
      "prose": "body",
      "code": "mono"
    }
  },
  "assets": [],
  "rules": [
    {
      "type": "colorChoice",
      "target": "roles.colors.primary",
      "severity": "error",
      "rationale": "Feather Green (#58CC02) is Duo the owl's signature color and the brand's primary action color across every surface in the product. Mask Green is the brighter signage sibling reserved for illustration; Macaw, Bee, Cardinal, Beetle, and Fox are character / semantic secondaries that must not stand in for the primary brand action color.\n",
      "allowed": [
        "feather-green",
        "tree-frog"
      ],
      "forbidden": [
        "mask-green",
        "macaw",
        "bee",
        "cardinal",
        "beetle",
        "fox"
      ]
    },
    {
      "type": "colorChoice",
      "target": "roles.colors.text-primary-light",
      "severity": "error",
      "rationale": "Duolingo's published guidelines explicitly avoid pure #000000 for body copy. The canonical text ink is Eel (#4B4B4B) on light surfaces; Wolf (#777777) is the secondary text grey. Pure black reads too harsh against the brand's playful, child-friendly posture and breaks the warmth of the Snow / Polar canvas.\n",
      "allowed": [
        "eel",
        "wolf"
      ],
      "forbidden": [
        "black"
      ]
    },
    {
      "type": "colorChoice",
      "target": "roles.colors.mark",
      "severity": "error",
      "rationale": "Duo the owl mascot's body fill is Feather Green specifically. Tree Frog is the pressed / shadow variant and must not be used as the mark fill itself. Recolored mascots — purple Duo, blue Duo, red Duo — only appear in sanctioned editorial moments (e.g., Super promotional art) and are not part of the standard mark vocabulary.\n",
      "allowed": [
        "feather-green"
      ],
      "forbidden": [
        "tree-frog",
        "mask-green",
        "macaw",
        "bee",
        "cardinal",
        "beetle"
      ]
    },
    {
      "type": "forbiddenTreatment",
      "target": "logo",
      "severity": "error",
      "rationale": "Duo the owl and the Duolingo wordmark are precise brand assets. The mascot has a documented set of poses and emotions; arbitrary skew, rotation, or recoloring breaks the character vocabulary. Drop shadows conflict with the brand's flat, illustration-first visual system.\n",
      "treatments": [
        "stretched",
        "skewed",
        "rotated",
        "drop-shadow",
        "recolored-arbitrary",
        "on-busy-photo",
        "low-contrast-fill"
      ]
    },
    {
      "type": "contrastRatio",
      "target": "text-primary",
      "severity": "error",
      "rationale": "Eel (#4B4B4B) on Snow (#FFFFFF) gives roughly 9.5:1 — clears AA decisively. Duolingo's product surfaces are used by children and language learners worldwide; the AA contrast floor is the floor and consumers must not drop below it when composing custom text colors on the Snow / Polar canvas.\n",
      "against": "background",
      "minRatio": 4.5,
      "standard": "WCAG-AA"
    },
    {
      "type": "enumMembership",
      "target": "typography.heading.fontWeight",
      "severity": "warning",
      "rationale": "Duolingo's product UI uses DIN Round Pro at Medium (500) and Bold (700) for body and headings, with Feather Bold (700) for display. The brand does not use Light (300) or Black (900) weights on product surfaces — they conflict with the rounded, friendly type voice. Inter substitutes preserve the same weight band.\n",
      "allowed": [
        "500",
        "700"
      ]
    },
    {
      "type": "fontPairing",
      "target": "typography.display",
      "severity": "error",
      "rationale": "Duolingo pairs the heavier Feather Bold display face with DIN Round Pro for body prose on lesson and marketing surfaces. A 1.5× minimum display-to-prose size ratio preserves the typographic hierarchy that makes streak counters, XP rewards, and lesson titles read as celebrations rather than as labels.\n",
      "requires": "prose",
      "minSizeRatio": 1.5
    },
    {
      "type": "contextRestriction",
      "target": "roles.colors.error",
      "severity": "error",
      "rationale": "Cardinal (#FF4B4B) is reserved for wrong-answer feedback, streak-loss warnings, and destructive confirmations. Using Cardinal as a large background fill or hero accent conflicts with its established negative-feedback meaning in the product — learners read large red surfaces as mistakes.\n",
      "allowedContexts": [
        "error-state",
        "destructive-action",
        "data-viz-negative"
      ],
      "forbiddenContexts": [
        "confirmation",
        "completion",
        "large-fill",
        "hero"
      ]
    },
    {
      "type": "compositionConstraint",
      "target": "roles.colors.primary",
      "severity": "recommendation",
      "rationale": "Feather Green reads cleanest against the Snow / Polar canvas or as a fill on the Eel ink. Placing Feather Green adjacent to Mask Green creates near-identical green-on-green; adjacent Bee and Fox introduce warm-cool conflict that fights the green for the same eye position without resolving into hierarchy.\n",
      "pairsWith": [
        "snow",
        "polar",
        "eel",
        "tree-frog"
      ],
      "doesNotPairWith": [
        "mask-green",
        "bee",
        "fox"
      ]
    },
    {
      "type": "accessibilityRequirement",
      "target": "*",
      "severity": "error",
      "rationale": "WCAG 2.1 Success Criterion 1.4.3 (Contrast Minimum) — Level AA. Duolingo serves a global K-12 and adult learner audience; consumers composing in-brand surfaces must preserve the AA contrast floor on every text-on-color combination.\n",
      "standard": "WCAG-AA",
      "criterion": "1.4.3"
    }
  ]
}
