{
  "schema": "brand-kit@2",
  "palette": {
    "paper": "#F7F4ED",
    "ink": "#242424",
    "accent": "#34AA45",
    "ink_soft": "#6B6B6B",
    "extras": [
      {
        "name": "Cream",
        "hex": "#F7F4ED",
        "role": "page ground of the logged-out homepage: nav bar, hero field and footer band (one continuous ground)",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)"
      },
      {
        "name": "Ink",
        "hex": "#242424",
        "role": "text color of nav links and the subline; wordmark SVG fill; 1px hairline under the nav and above the footer; story body text",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)"
      },
      {
        "name": "Black",
        "hex": "#000000",
        "role": "the hero headline only (GT Super)",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)"
      },
      {
        "name": "Button black",
        "hex": "#191919",
        "role": "fill and 1px border of both pill buttons (Get started, Start reading)",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)"
      },
      {
        "name": "Button black hover",
        "hex": "#080808",
        "role": "pill button fill on hover",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)"
      },
      {
        "name": "Muted grey",
        "hex": "#6B6B6B",
        "role": "footer links; story subtitles and meta (read time, date)",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30); https://medium.com/blog/a-more-expressive-medium-starting-with-medium-63b562206d8f (a live story page, computed styles at 1440, 2026-10-30)"
      },
      {
        "name": "White",
        "hex": "#FFFFFF",
        "role": "button labels; html/body root ground behind the cream wrapper; wordmark reversed (published: black or white only)",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)"
      },
      {
        "name": "Illustration green",
        "hex": "#34AA45",
        "role": "the flat green of the homepage hero illustration (28.6% of the image's pixels); appears only inside illustration, never as UI color, text or button",
        "prov": "observed",
        "source": "pixel count of the hero image on https://medium.com/ (the hero image file, 1152x1504 PNG), 2026-10-30"
      },
      {
        "name": "Dark ground",
        "hex": "#171717",
        "role": "page ground in dark mode (prefers-color-scheme: dark)",
        "prov": "observed",
        "source": "https://medium.com/ with prefers-color-scheme: dark (Playwright, 1440x900, 2026-10-30)"
      },
      {
        "name": "Dark nav",
        "hex": "#121212",
        "role": "nav bar ground in dark mode; label color of the white pill buttons in dark mode",
        "prov": "observed",
        "source": "https://medium.com/ with prefers-color-scheme: dark (Playwright, 1440x900, 2026-10-30)"
      },
      {
        "name": "Dark text",
        "hex": "#E5E5E5",
        "role": "body text, nav links, footer links and wordmark fill in dark mode",
        "prov": "observed",
        "source": "https://medium.com/ with prefers-color-scheme: dark (Playwright, 1440x900, 2026-10-30)"
      },
      {
        "name": "Dark hairline",
        "hex": "#D2D2D2",
        "role": "1px rule under the nav in dark mode",
        "prov": "observed",
        "source": "https://medium.com/ with prefers-color-scheme: dark (Playwright, 1440x900, 2026-10-30)"
      }
    ],
    "note": "Published: Medium leans primarily on black and white; an expanded secondary palette exists for marketing surfaces about the brand, but its hex values are not published (2020 post). Every hex here is observed on medium.com, 2026-10-30. The accent #34AA45 lives only inside illustration; UI and buttons are black."
  },
  "typography": {
    "display": {
      "family": "Newsreader",
      "weight": 380,
      "weights": [
        380
      ],
      "variation": "font-variation-settings: 'opsz' 72",
      "real_face": "GT Super (Grilli Type), served by medium.com as font-family gt-super, weight 400",
      "fallback_stack": "Georgia, Cambria, \"Times New Roman\", serif",
      "licence": "GT Super is a commercial face from Grilli Type; not supplied. Newsreader is open (SIL OFL, Google Fonts).",
      "stand_in": true,
      "size_adjust": "1.0: use the measured px sizes (120 / 106 / 80) as they are",
      "tracking": "-0.042em (the site uses -0.055em with GT Super)",
      "line_height": "px as measured: 100px at 120, 95px at 106, 72px at 80",
      "google_fonts": "https://fonts.googleapis.com/css2?family=Newsreader:opsz,wght@6..72,380&family=Geist:wght@400;500;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,700&display=swap",
      "calibration": "Calibrated 2026-10-30 by rendering. Reference: GT Super as served by medium.com (font-family gt-super, weight 400, loaded for U+0-7F) rendered in an overlay on the live page at 120px with letter-spacing -6.6px, the hero's own settings. Measured ink: 'Human' 379px wide, 'stories & ideas' 679px, x-height 59px, cap height 84px (x/cap 0.702). Each candidate rendered with identical CSS (Google Fonts, Chromium) and scored on line width, x-height, cap height and total ink. Results (width ratio Human / stories & ideas, x-height, cap, ink vs GT Super): Newsreader 400 opsz 72: 0.987 / 0.982, 63, 87, +9.7%; Newsreader 380 opsz 72: 0.979 / 0.973, 63, 87, +3.0%; Newsreader 360: 0.974 / 0.965, 63, 87, -3.8%; Gelasio 400: 0.979 / 0.985, 59, 84, +15.4% (exact x-height and cap, but Georgia-like low contrast and too dark); Literata 360 opsz 72: 1.000 / 1.022, 63, 89, -2.0%; Playfair Display 400: 0.960 / 1.031, 63, 86, +7.3% (uneven widths); DM Serif Display: 0.929 / 0.999, ink +36%; Source Serif 4 opsz 60: 0.879 / 0.887, ink -22%; Fraunces 400 opsz 144: 0.844 / 0.823, ink -16%; Spectral 400: 0.942 / 0.976, x-height 55; Libre Caslon Display: 0.752 / 0.832; Instrument Serif: 0.734 / 0.710 (far too narrow); Young Serif: 1.129 / 1.138, ink +75%. Pick: Newsreader 380 with opsz 72, at the measured px size. It keeps GT Super's ball terminals, contrast and big x-height (63 vs 59 at 120px, +7%), its ink is within 3%, and with letter-spacing -0.042em (-5.0px at 120, instead of GT Super's -6.6px) the two hero lines land at 377 and 683px vs 379 and 679 (-0.5% / +0.6%). Side-by-side render checked by eye: same two-line shape, same weight; Newsreader's 'a' and '&' are slightly rounder. Keep the measured px line boxes (100px desktop, 95px tablet, 72px phone).",
      "prov": "observed",
      "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30); https://the-brandidentity.com/feed/collins-refresh-medium-keeps-one-eye-future-editorial-origins/ (The Brand Identity, Nov 3 2020, quoting COLLINS; read 2026-10-30)"
    },
    "body": {
      "family": "Geist",
      "weight": 400,
      "weights": [
        400,
        500,
        700
      ],
      "real_face": "Söhne (Klim Type Foundry), served as font-family sohne (300/400/500/700)",
      "fallback_stack": "\"Helvetica Neue\", Helvetica, Arial, sans-serif",
      "licence": "Söhne is a commercial face from Klim; not supplied. Geist is open (SIL OFL, Google Fonts).",
      "stand_in": true,
      "tracking": "-0.012em at every size",
      "google_fonts": "https://fonts.googleapis.com/css2?family=Newsreader:opsz,wght@6..72,380&family=Geist:wght@400;500;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,700&display=swap",
      "calibration": "Calibrated 2026-10-30. Reference: Söhne (font-family sohne, weight 400) rendered on live medium.com. Measured at 200px: x-height 105px, cap 144px (x/cap 0.729); widths at site sizes: subline 22px 526.8px, 'Start reading' 20px 115.6px, 'Our story' 14px 57.9px, 'Membership' 14px 79.2px. Candidates at the same size (width ratio range over those strings; x-height px at 200; cap; ink): Geist 400: 1.006-1.031, 107, 143, -1 to +6% (canvas and DOM runs); Schibsted Grotesk 400: 1.025-1.059, 106, 141, +3%; Hanken Grotesk 400: 0.982-1.033, 99, 140, -4%; Figtree 400: 0.982-1.017, 101 (x-height 4% low), -4%; Inter 400: 1.044-1.075 (too wide), ink +3%; Inter Tight 400: 0.953-0.969 (too narrow); Archivo 400: 0.983-0.995, cap 137 (low); Funnel Sans 400: 0.997-1.016, x-height 101; Host Grotesk 400: 1.008-1.046; Instrument Sans 400: 1.022-1.035; Public Sans 1.025-1.064; Work Sans 1.062-1.119. Pick: Geist 400 at the measured px size with letter-spacing -0.012em: x-height and cap within 2%, ink within a few percent, and the widths land within 1% (subline 543 -> ~529px vs 526.8; 'Start reading' ~116 vs 115.6). Figtree is the runner-up if Geist is unavailable.",
      "prov": "observed",
      "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30); https://the-brandidentity.com/feed/collins-refresh-medium-keeps-one-eye-future-editorial-origins/ (The Brand Identity, Nov 3 2020, quoting COLLINS; read 2026-10-30)"
    },
    "reading": {
      "family": "Source Serif 4",
      "weight": 400,
      "real_face": "source-serif-pro (Adobe Source Serif Pro), the story body face",
      "licence": "Open (SIL OFL); Source Serif 4 is its current Google Fonts release",
      "stand_in": false,
      "note": "Long-form reading only (story pages): 20/32, -0.06px, #242424, 680px measure. Not on the homepage.",
      "prov": "observed",
      "source": "https://medium.com/blog/a-more-expressive-medium-starting-with-medium-63b562206d8f (a live story page, computed styles at 1440, 2026-10-30)"
    }
  },
  "style": {
    "concept": "Text first: the written word is the brand, so the page gives it a quiet ground and gets out of the way",
    "concept_prov": "published",
    "concept_source": "https://medium.design/about-mediums-new-ish-logo-458885b2d8ab (Jason Combs, Oct 31 2024; read 2026-10-30)",
    "mood": [
      "quiet",
      "literary",
      "warm",
      "unhurried"
    ],
    "mood_prov": "inferred (our reading of the about page wording \"quiet yet full of insight\" and the 2024 \"warmer, more human\" direction)",
    "corners": "buttons are full pills (radius 999); nothing else on the homepage has a corner (no cards, no image radius)",
    "shadows": "none anywhere on the homepage",
    "texture": "only inside the illustration: grainy, printed edges on the green shapes",
    "lines": "1px solid #242424 full-bleed hairlines under the nav and above the footer"
  },
  "voice": {
    "tone": [
      "plain",
      "warm",
      "thoughtful",
      "candid"
    ],
    "tone_prov": "inferred",
    "tone_source": "https://medium.com/about (Our story; read 2026-10-30); https://medium.design/about-mediums-new-ish-logo-458885b2d8ab (Jason Combs, Oct 31 2024; read 2026-10-30)",
    "notes": [
      "Two voices. The homepage and product UI are spare: a 3-word headline, a 9-word subline, 2-word buttons, sentence case, no punctuation flourishes (observed). A landing page follows this voice.",
      "Brand and design posts are candid, first-person and lightly funny about Medium itself (published examples: the 2024 logo post opens by admitting the logo changed again). Use that voice only for long-form posts about the company.",
      "The about page states beliefs plainly: what you read and write matters; depth and nuance over sensational takes; substance over packaging; supported by members, not ads (published, paraphrased)."
    ],
    "rules": [
      {
        "kind": "headline_case",
        "value": "sentence",
        "prov": "observed"
      },
      {
        "kind": "person",
        "value": "we_you",
        "prov": "observed"
      },
      {
        "kind": "spelling",
        "value": "en-US",
        "prov": "observed"
      },
      {
        "kind": "exclamations",
        "value": "never",
        "prov": "observed",
        "text": "No exclamation marks on the homepage, about or membership pages (observed; the dark-mode post uses them, so this is a marketing-page rule only)"
      },
      {
        "kind": "other",
        "text": "Buttons are a verb plus one word: Start reading, Get started, Sign in (observed)"
      }
    ],
    "approved": {
      "words": [
        "human",
        "stories",
        "ideas",
        "read",
        "write",
        "deepen",
        "understanding",
        "depth",
        "nuance",
        "writers",
        "members",
        "wisdom"
      ],
      "prov": "observed",
      "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30); https://medium.com/about (Our story; read 2026-10-30); https://medium.com/membership (read 2026-10-30)",
      "note": "Words Medium repeats across its own pages"
    },
    "banned": [],
    "banned_note": "No banned-word list is published"
  },
  "spec": {
    "source": "https://medium.com/ (logged out)",
    "how": "Playwright Chromium computed styles at 1440x900 and 390x844, plus 768, 1024, 1280, 1920 and a 4px-step width sweep 320-1600 for breakpoints, 2026-10-30",
    "motion": [
      {
        "name": "button-color",
        "easing": "linear",
        "duration_ms": 300,
        "use": "pill button background and label color on hover (#191919 to #080808)",
        "prov": "observed",
        "source": "https://medium.com/ (computed styles, 2026-10-30)"
      },
      {
        "name": "app-splash",
        "duration_ms": 1000,
        "use": "app open: the wordmark types on letter by letter, kept under one second (1000ms is the published upper bound; easing not published)",
        "prov": "published",
        "source": "https://medium.design/about-mediums-new-ish-logo-458885b2d8ab"
      }
    ],
    "signature": [
      {
        "name": "One GT Super sentence owns the first screen",
        "where": "the hero of every logged-out marketing page",
        "spec": "Headline GT Super 400 (stand-in Newsreader 380 opsz 72) at 120px with a 100px line box and tight tracking (-0.055em on the real face, -0.042em on the stand-in), pure #000000, left-aligned at the container edge, broken by hand into two lines (\"Human\" / \"stories & ideas\"); under it only a Söhne 22/28 #242424 subline and one #191919 pill",
        "dont": "center the headline, add a second CTA, put an eyebrow or badge above it, color any word, or set it in Söhne or bold",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "example": {
          "text": "Human stories & ideas"
        }
      },
      {
        "name": "Black pill, plain label",
        "where": "every primary action (nav and hero)",
        "spec": "#191919 fill and 1px #191919 border, full-pill radius, #FFFFFF Söhne 400 label in sentence case, no icon or arrow, no shadow; hover darkens to #080808 over 0.3s linear",
        "dont": "use a green or colored button, square corners, an outline secondary button next to it, or an arrow icon",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "example": {
          "text": "Start reading"
        }
      },
      {
        "name": "Cream page held by hairlines",
        "where": "nav, hero and footer",
        "spec": "One #F7F4ED ground from top to bottom; structure comes only from two 1px #242424 full-bleed rules (under the nav, above the footer). No cards, shadows, gradients or panels",
        "dont": "use a white page, grey section bands, drop shadows or rounded cards",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)"
      },
      {
        "name": "Wordmark alone, black or white",
        "where": "nav and anywhere the brand signs",
        "spec": "The GT Super-derived Medium wordmark with no symbol, black (#242424 on the site) or white only, clear space = its height on all sides; in a 1:1 enclosed container use the cropped \"Me\" icon instead",
        "dont": "bring back the ellipsis symbol, color the wordmark, fill it with an image or gradient, or squeeze the full wordmark into a square",
        "prov": "published",
        "source": "https://medium.design/logos-and-brand-guidelines-f1a01a733592 (Medium Logo and Usage Guidelines, last updated Oct 30 2024; read 2026-10-30); https://medium.design/about-mediums-new-ish-logo-458885b2d8ab (Jason Combs, Oct 31 2024; read 2026-10-30)"
      },
      {
        "name": "Printed two-color collage bleeding off the edge",
        "where": "the right side of the desktop hero only",
        "spec": "A still collage of flat #34AA45 green shapes (a flower, a rectangle with a hand holding a pencil cut out of it) and #242424 engraving-style linework (a geometry diagram with lettered points, dotted arcs, eight-point stars, dashed line) with a grainy printed edge; 460x600, cropped by the viewport's right edge; transparent background over the cream",
        "dont": "use color photography, 3-D renders, gradients, more than one hue of green, or put the illustration behind the text",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)"
      }
    ],
    "layout": {
      "page_margin": {
        "desktop": 64,
        "phone": 24
      },
      "container_max": 1192,
      "hero_text_max": 720,
      "columns": 1,
      "columns_phone": 1,
      "nav_height": 76,
      "note": "One centred container, max-width 1192px, side margin 64px at >=904px (so at 1440 it runs x124-1316: margins grow past 1320px), 48px at 728-903px, 24px below 728px. No column grid on this page: the hero text sits in the container and the illustration is positioned against the viewport's right edge, outside the container. No section padding applies (one-screen page). Story pages use a 680px text measure centred (x380 at 1440).",
      "prov": "observed",
      "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)"
    },
    "responsive": {
      "prov": "observed",
      "date": "2026-10-30",
      "measured_at": [
        390,
        768,
        1024,
        1440,
        1920
      ],
      "rows": [
        {
          "what": "Side margin",
          "values": {
            "390": "24",
            "768": "48",
            "1024": "64",
            "1440": "124 (centred 1192)",
            "1920": "364 (centred 1192)"
          }
        },
        {
          "what": "Headline size / line / tracking",
          "values": {
            "390": "80/72, -4.4px",
            "768": "106/95, -5.83px",
            "1024": "120/100, -6.6px",
            "1440": "120/100, -6.6px",
            "1920": "120/100, -6.6px"
          }
        },
        {
          "what": "Headline lines",
          "values": {
            "390": "3",
            "768": "2",
            "1024": "2",
            "1440": "2",
            "1920": "2"
          }
        },
        {
          "what": "h2 to subline gap",
          "values": {
            "390": "32",
            "768": "48",
            "1024": "48",
            "1440": "48",
            "1920": "48"
          }
        },
        {
          "what": "Illustration",
          "values": {
            "390": "hidden",
            "768": "hidden",
            "1024": "460x600 at x782 y112, right 218px cropped",
            "1440": "460x600 at x980 y183",
            "1920": "460x600 at x1460 y280"
          }
        },
        {
          "what": "Nav text links",
          "values": {
            "390": "hidden",
            "768": "shown",
            "1024": "shown",
            "1440": "shown",
            "1920": "shown"
          }
        },
        {
          "what": "Footer links",
          "values": {
            "390": "4, left",
            "768": "4, left",
            "1024": "11, centred row",
            "1440": "11, centred row",
            "1920": "11, centred row"
          }
        },
        {
          "what": "Page height (= viewport)",
          "values": {
            "390": "844",
            "768": "1024",
            "1024": "768",
            "1440": "900",
            "1920": "1080"
          }
        }
      ]
    },
    "breakpoints": {
      "phone_max": 727,
      "all": [
        728,
        904
      ],
      "note": "Width sweep: below 728 phone (24px margin, 80px headline, nav links and illustration hidden, 4 footer links); 728-903 tablet (48px margin, 106px headline, nav links shown); 904 and up desktop (64px margin, 120px headline, illustration and the 11-link footer shown)"
    },
    "type": [
      {
        "id": "hero",
        "role": "Hero headline (h2), \"Human / stories & ideas\"",
        "face": "display",
        "size": {
          "desktop": 120,
          "phone": 80
        },
        "line_height": "100px",
        "weight": 400,
        "tracking_px": -6.6,
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "note": "GT Super 400 on the site: 120/100px, -6.6px (-0.055em) at >=904px; 106/95px, -5.83px at 728-903px; 80/72px, -4.4px below 728px. Color #000000. Desktop and tablet: two lines with a forced break after \"Human\" (markup \"Human <br>stories & ideas\"); phone: three lines, \"Human\" / \"stories\" / \"& ideas\" (natural wrap at 342px). Stand-in Newsreader 380 opsz 72 at the same px sizes and line boxes, letter-spacing -0.042em (-5.0px desktop, -4.45px tablet, -3.36px phone)."
      },
      {
        "id": "subline",
        "role": "Hero subline (h3)",
        "face": "body",
        "size": {
          "desktop": 22,
          "phone": 22
        },
        "line_height": "28px",
        "weight": 400,
        "tracking_px": 0,
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "note": "Söhne 400 22/28 #242424, one line 526.8px wide at desktop; two lines on phone (\"A place to read, write, and deepen\" 330px / \"your understanding\" 192px). Stand-in Geist 400, -0.012em."
      },
      {
        "id": "button-large",
        "role": "Hero CTA label (Start reading)",
        "face": "body",
        "size": {
          "desktop": 20,
          "phone": 20
        },
        "line_height": "28px",
        "weight": 400,
        "tracking_px": 0,
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)"
      },
      {
        "id": "nav",
        "role": "Nav links and the Get started label",
        "face": "body",
        "size": {
          "desktop": 14,
          "phone": 14
        },
        "line_height": "20px",
        "weight": 400,
        "tracking_px": 0,
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "note": "Söhne 400 14/20, #242424 links, #FFFFFF on the pill"
      },
      {
        "id": "footer",
        "role": "Footer links",
        "face": "body",
        "size": {
          "desktop": 13,
          "phone": 13
        },
        "line_height": "20px",
        "weight": 400,
        "tracking_px": 0,
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "note": "Söhne 400 13/20 #6B6B6B, no underline"
      },
      {
        "id": "story-title",
        "role": "Story title (reading page, not on the homepage)",
        "face": "body",
        "size": {
          "desktop": 42,
          "phone": 42
        },
        "line_height": "52px",
        "weight": 700,
        "tracking_px": -0.462,
        "prov": "observed",
        "source": "https://medium.com/blog/a-more-expressive-medium-starting-with-medium-63b562206d8f (a live story page, computed styles at 1440, 2026-10-30)",
        "note": "Söhne 700 #242424; phone size not measured"
      },
      {
        "id": "story-subtitle",
        "role": "Story subtitle",
        "face": "body",
        "size": {
          "desktop": 22,
          "phone": 22
        },
        "line_height": "28px",
        "weight": 400,
        "tracking_px": 0,
        "prov": "observed",
        "source": "https://medium.com/blog/a-more-expressive-medium-starting-with-medium-63b562206d8f (a live story page, computed styles at 1440, 2026-10-30)",
        "note": "Söhne 400 #6B6B6B"
      },
      {
        "id": "story-heading",
        "role": "Section heading inside a story",
        "face": "body",
        "size": {
          "desktop": 20,
          "phone": 20
        },
        "line_height": "24px",
        "weight": 600,
        "tracking_px": 0,
        "prov": "observed",
        "source": "https://medium.com/blog/a-more-expressive-medium-starting-with-medium-63b562206d8f (a live story page, computed styles at 1440, 2026-10-30)"
      },
      {
        "id": "story-body",
        "role": "Story body text (reading serif)",
        "face": "display",
        "size": {
          "desktop": 20,
          "phone": 20
        },
        "line_height": "32px",
        "weight": 400,
        "tracking_px": -0.06,
        "prov": "observed",
        "source": "https://medium.com/blog/a-more-expressive-medium-starting-with-medium-63b562206d8f (a live story page, computed styles at 1440, 2026-10-30)",
        "note": "The site sets body copy in source-serif-pro 400 20/32, -0.06px, #242424, measure 680px. That face is Adobe Source Serif (open, SIL OFL): load Source Serif 4 (opsz 20) for this row, not the display stand-in. Not used on the homepage."
      },
      {
        "id": "story-meta",
        "role": "Byline and meta (read time, date)",
        "face": "body",
        "size": {
          "desktop": 14,
          "phone": 14
        },
        "line_height": "20px",
        "weight": 400,
        "tracking_px": 0,
        "prov": "observed",
        "source": "https://medium.com/blog/a-more-expressive-medium-starting-with-medium-63b562206d8f (a live story page, computed styles at 1440, 2026-10-30)",
        "note": "author #242424, meta #6B6B6B"
      }
    ],
    "components": {
      "button_primary_large": {
        "fill": "#191919",
        "text": "#FFFFFF",
        "height": 46,
        "padding_x": 20,
        "radius": "pill",
        "font_size": 20,
        "weight": 400,
        "face": "body",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "note": "Hero \"Start reading\": 196x46 at every width (not full width on phone). Label Söhne 400 20/28, centred. 1px border #191919 (same as fill), padding 8px 20px plus the border; border-radius 1980px (a full pill). No icon, no shadow",
        "states": {
          "hover": {
            "css": {
              "background": "#080808"
            },
            "measured": {
              "background": "#080808",
              "label": "#FFFFFF"
            },
            "prov": "observed"
          }
        }
      },
      "button_primary_nav": {
        "fill": "#191919",
        "text": "#FFFFFF",
        "height": 38,
        "padding_x": 16,
        "radius": "pill",
        "font_size": 14,
        "weight": 400,
        "face": "body",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "note": "Nav \"Get started\": 104.1x38, padding 8px 16px, 1px border #191919, radius 1386px. Transition background-color 0.3s linear, color 0.3s linear. The same pill on phone",
        "states": {
          "hover": {
            "css": {
              "background": "#080808"
            },
            "measured": {
              "background": "#080808",
              "label": "#FFFFFF"
            },
            "prov": "observed"
          }
        }
      },
      "nav_link": {
        "text": "#242424",
        "font_size": 14,
        "weight": 400,
        "face": "body",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "note": "Plain text links, no underline, 25px apart; hover showed no color, underline or background change in the measurement (Chromium, 600ms after hover)"
      },
      "footer_link": {
        "text": "#6B6B6B",
        "font_size": 13,
        "weight": 400,
        "face": "body",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "note": "Plain text, no underline, 16px apart on desktop, 20px apart below 904px; no hover change measured"
      },
      "hairline": {
        "text": "#242424",
        "prov": "observed",
        "source": "https://medium.com/ (Playwright, Chromium UA Chrome 130 Mac, 1440x900 and 390x844, plus 768/1024/1280/1920 and a 320-1600px width sweep, 2026-10-30)",
        "note": "1px solid #242424 full-bleed rule: the nav bottom border (y75-76) and the footer top border (y831 at 1440x900)"
      }
    },
    "page": {
      "source": "https://medium.com/ (logged out)",
      "date": "2026-10-30",
      "prov": "observed",
      "nav": {
        "summary": "One 76px cream bar (75px + a 1px #242424 bottom rule), fixed to the top. Wordmark at the left edge of the 1192px container; four plain text links and a black pill CTA at its right edge. No dropdowns, no icons, no search.",
        "ground": "#F7F4ED",
        "height": "76px including the 1px bottom border, at every width",
        "border": "1px solid #242424 bottom, full bleed",
        "logo": {
          "variant": "Medium wordmark only (no symbol), fill #242424, inline SVG viewBox 0 0 719 160 (the wordmark SVG in the medium.com header (https://medium.com/))",
          "px": "112.3x25 at every width",
          "position": "x124 y25 at 1440 (container left edge); x64 at 904-1320; x48 at 728-903; x24 on phone"
        },
        "links": {
          "count": "4 text links + 1 pill",
          "labels": "Our story, Membership, Write, Sign in, then the pill Get started. Verbatim, in this order",
          "size": "Söhne 400 14/20 (stand-in Geist 400 14/20, -0.012em)",
          "weight": "400",
          "color": "#242424",
          "alignment": "right-aligned to the container: at 1440 Our story x899.5 (57.9 wide), Membership x982.4 (79.2), Write x1086.6 (33.3), Sign in x1144.9 (42), each 25px after the previous; text box y28.5, 18 tall; Get started pill x1211.9-1316 (104.1x38) at y18.5, 25px after Sign in. The pill right edge = container right edge"
        },
        "actions": "Get started: #191919 pill, #FFFFFF Söhne 400 14/20 label, 38px tall (components.button_primary_nav)",
        "sticky": "yes: position fixed at top 0 over the hero; the hero content starts 75px down",
        "phone": {
          "shows": "wordmark (x24 y25, 112.3x25) and the Get started pill only (x261.7-366, y18.5, 104.3x38); the four text links are hidden below 728px",
          "menu": "none (no hamburger)",
          "cta": "Get started pill, right edge at 366 (24px margin)"
        }
      },
      "hero": {
        "summary": "The whole first screen is one cream field: a two-line GT Super sentence, a Söhne subline and one black pill on the left; a two-color printed collage illustration (green #34AA45 shapes, #242424 linework) pinned to the right viewport edge on desktop only.",
        "desktop": {
          "column_split": "text block in the 1192px container from x124 (at 1440); text column max-width 720px; illustration 460x600, left edge x = max(782, viewport width - 460): flush to the right viewport edge at >=1242px (x980-1440 at 1440, x820 at 1280); pinned at x782 from 904 to 1241px, so the viewport crops its right side (218px cropped at 1024; no horizontal scroll). It never overlaps the headline (headline ink ends x803 at 1440, x743 at 1024)",
          "vertical_anchors": "at 1440x900: h2 box y305.5-505.5 (line 1 \"Human\", line 2 \"stories & ideas\", 100px each); subline y553.5-581.5; button y629.5-675.5; illustration y183-783. The text block (370px: h2 200 + 48 gap + subline 28 + 48 gap + button 46) is vertically centred: h2 top = 150 + (viewport height - 69 - 75 - 445) / 2, which gives 305.5 at 900 tall, 395.5 at 1080, 239.5 at 768",
          "illustration_anchor": "absolute box, top = 75 + 0.54 x (hero height - 75) - 300 (54% down the area under the nav, then translateY(-300px)), where hero height = viewport height - 69: top y183 at any 900-tall viewport, y280 at 1080 tall, y112 at 768 tall",
          "text_max_width": "720px headline wrapper; the subline box spans the container (1192px) but its one line is 526.8px",
          "media": "460x600 <img> inside <picture>, no frame, no radius, no shadow, object-fit fill; the PNG has a transparent background so the cream shows through",
          "cta_size": "196x46 (components.button_primary_large)",
          "height": "hero field = viewport height - footer (831 at 900 tall, 1011 at 1080), min-height 560px; the nav overlays its top 76px",
          "gaps": "h2 to subline 48px; subline to button 48px"
        },
        "phone": {
          "order": "headline, subline, button; no illustration below 904px",
          "alignment": "left, x24",
          "sizes": "h2 80/72px, -4.4px, three lines (\"Human\" 253px, \"stories\" 208px, \"& ideas\" 232px wide), box y262-478; 32px gap; subline 22/28 two lines y510-566; 48px gap; button 196x46 at y614-660. Hero field 0-772 at 390x844",
          "tablet_728_903": "h2 106/95px, -5.83px, two lines; 48px side margins; nav links visible; still no illustration"
        },
        "at_rest": "Fully static: no animation, carousel or video on the page. The illustration is one still image.",
        "media": "the hero image on https://medium.com/ (light), the dark-mode hero image on https://medium.com/ (served under prefers-color-scheme: dark)",
        "type": "kit.spec.type rows hero, subline, button-large",
        "cta": "one: Start reading (#191919 pill, 196x46). No secondary link, no sign-up form in the hero",
        "proof": "none: no logos, numbers, quotes or ratings on the page"
      },
      "sections": [
        {
          "name": "Between hero and footer: nothing",
          "summary": "The logged-out homepage has no sections between the hero and the footer. The 1px #242424 footer rule sits directly under the cream hero field. Build no section here.",
          "ground": "#F7F4ED",
          "desktop": "hero field ends at viewport height - 69 (y831 at 1440x900); the footer rule starts at that y. The full page is exactly one viewport tall (page height 900 at 1440x900, 1080 at 1920x1080): no scroll",
          "phone": "hero field ends at y772 at 390x844; footer 72px fills the rest. Page height = 844: no scroll",
          "anatomy": [
            "No feature grid, no story list, no testimonials, no app badges, no newsletter form",
            "If a page needs more content, it is not this page: see in_use for other formats"
          ],
          "components": []
        }
      ],
      "footer": {
        "summary": "A 69px cream strip under a 1px #242424 rule: one centred row of small grey text links. No logo, no columns, no copyright line, no address, no social icons.",
        "ground": "#F7F4ED",
        "anatomy": [
          "Desktop (>=904px): band y831-900 at 1440x900, 69px tall; 1px #242424 top rule (full bleed); links Söhne 400 13/20 #6B6B6B at y856 (25px below the rule top), each text box 20 tall",
          "Labels verbatim, in order: Help, Status, About, Careers, Press, Blog, Store, Privacy, Rules, Terms, Text to speech (11 links)",
          "Spacing: 16px between links; the row starts x380 at 1440 (x172 at 1024, x300 at 1280, x620 at 1920), i.e. left edge = (viewport width - 680) / 2; widths Help 27.4, Status 37, About 35.8, Careers 45.1, Press 32.3, Blog 26.5, Store 31, Privacy 42.5, Rules 32.2, Terms 36.1, Text to speech 83.8",
          "Targets: Help -> help.medium.com, Status -> status.medium.com, About -> /about, Careers -> jobs page, Press -> mailto:pressinquiries@medium.com, Blog -> blog.medium.com, Store -> /store, Privacy/Rules/Terms -> policy.medium.com, Text to speech -> speechify.com/medium",
          "Copyright line, address, phone: none on this page"
        ],
        "phone": "Below 904px: 72px band, 1px #242424 top rule, four links left-aligned at the page margin: About, Help, Terms, Privacy (verbatim, this order), Söhne 13/20 #6B6B6B, 20px apart (x24, 78.9, 125.9, 180.8 at 390), text at y800.5"
      },
      "dark_ground": {
        "secondary_button": "in dark mode the pill buttons invert: #FFFFFF fill and border with #121212 label (no outline style)",
        "link": "#E5E5E5",
        "muted_text": "#E5E5E5 (footer links and subline both measured #E5E5E5 in dark mode)",
        "hairline": "#D2D2D2 under the nav",
        "logo_variant": "wordmark filled #E5E5E5 (published rule: black or white only); page ground #171717, nav #121212; headline #FFFFFF; illustration swaps to the dark file",
        "scope": "Only under prefers-color-scheme: dark. The reference build is light mode"
      }
    },
    "bands": [
      {
        "label": "Nav (fixed)",
        "ground": "#F7F4ED",
        "content": "wordmark; Our story, Membership, Write, Sign in; Get started pill",
        "desktop": "y0-76 incl. 1px #242424 bottom rule; wordmark 112.3x25 at x124 y25; links Söhne 14/20 #242424 25px apart, pill 104x38 ending at x1316",
        "phone": "y0-76; wordmark at x24; Get started pill only",
        "anatomy": [
          "position fixed",
          "same cream as the hero"
        ]
      },
      {
        "label": "Hero",
        "ground": "#F7F4ED",
        "content": "GT Super headline, Söhne subline, Start reading pill, collage illustration (desktop)",
        "desktop": "cream field y0-831 at 1440x900 (viewport - 69); text block x124, h2 y305.5 (120/100, 2 lines), subline y553.5, button y629.5; image 460x600 at x980 y183 (x = max(782, width - 460))",
        "phone": "field y0-772; h2 80/72 three lines from y262, subline y510, button y614; no image",
        "anatomy": [
          "vertically centred text block",
          "image flush right, desktop only"
        ]
      },
      {
        "label": "Footer",
        "ground": "#F7F4ED",
        "content": "11 grey text links (4 on phone)",
        "desktop": "y831-900; 1px #242424 top rule; Söhne 13/20 #6B6B6B at y856, 16px apart, row from x380",
        "phone": "y772-844; 4 links left at x24, 20px apart",
        "anatomy": [
          "no logo, no copyright line"
        ]
      }
    ]
  },
  "system": {
    "fixed": [
      "Wordmark alone, black or white",
      "GT Super headlines, Söhne UI",
      "Near-black pill buttons",
      "Cream or white ground with near-black text",
      "Text first: one message per screen"
    ],
    "flex": "Illustration and color: from none (product, reading) to a two-color collage on the homepage to the full secondary palette in brand campaigns.",
    "traits": [
      {
        "is": "Thoughtful",
        "not": "highbrow",
        "prov": "inferred"
      },
      {
        "is": "Quiet",
        "not": "dull",
        "prov": "inferred"
      },
      {
        "is": "Human",
        "not": "nostalgic",
        "prov": "inferred"
      },
      {
        "is": "Candid",
        "not": "corporate",
        "prov": "inferred"
      }
    ]
  },
  "formats": [
    {
      "format": "Landing page (medium.com logged-out homepage, as the live site builds it)",
      "level": 2,
      "must": "Exactly kit.spec.page, in this order and nothing more: fixed cream nav (wordmark; Our story, Membership, Write, Sign in; Get started pill), one-screen cream hero (GT Super 120/100 headline in two hand-broken lines, Söhne 22/28 subline, one 196x46 #191919 Start reading pill, the 460x600 illustration flush right on desktop only), footer strip of grey links under a 1px #242424 rule. Stand-ins Newsreader 380 opsz 72 (-0.042em) and Geist 400 (-0.012em) at the measured px. Product voice: three-word headline, sentence case, verb buttons. Labels verbatim. The illustration from study.slot_assets",
      "flex": "The headline and subline copy; the illustration subject (keep two inks, printed texture, right-edge bleed)"
    },
    {
      "format": "Story / article page",
      "level": 0,
      "must": "Söhne title 42/52 700, Source Serif 20/32 body at a 680px measure, #242424 on white, wordmark in the nav",
      "flex": "Writer's own images; no brand illustration"
    },
    {
      "format": "Brand campaign (posters, out of home, social)",
      "level": 4,
      "must": "GT Super headline in sentence case, wordmark black or white with clear space = its height",
      "flex": "Secondary color grounds and illustration (hexes not published: take them from the campaign source, never invent)"
    },
    {
      "format": "App icon, avatar, favicon",
      "level": 1,
      "must": "Cropped \"Me\" icon, black or white, only in 1:1 enclosed containers",
      "flex": "none"
    },
    {
      "format": "Deck or proposal page",
      "level": 2,
      "must": "Cream or white ground, GT Super titles, Söhne text, one near-black pill or none, wordmark alone (our recipe)",
      "flex": "One illustration per section at most, two inks"
    }
  ],
  "examples": [
    {
      "chapter": "color",
      "do": {
        "ground": "paper",
        "text": "Start reading",
        "button": true
      },
      "do_caption": "A #191919 pill with a white Söhne label on cream.",
      "dont": {
        "ground": "paper",
        "text": "Start reading",
        "ink": "accent"
      },
      "dont_caption": "Green as a UI color: Medium keeps #34AA45 inside illustration."
    },
    {
      "chapter": "type",
      "do": {
        "ground": "paper",
        "text": "Human stories & ideas"
      },
      "do_caption": "GT Super regular, tight, sentence case, two lines.",
      "dont": {
        "ground": "paper",
        "text": "HUMAN STORIES & IDEAS"
      },
      "dont_caption": "Caps or bold sans: reads as a generic tech landing page."
    }
  ],
  "make_it_yours": {
    "note": "Everything above transfers. These are Medium's own and must be replaced with yours: name and logo, purpose, positioning, messaging pillars, proof, taglines and boilerplate.",
    "replace": [
      "identity",
      "purpose",
      "positioning",
      "messaging.pillars",
      "messaging.proof_points",
      "messaging.taglines",
      "messaging.boilerplate"
    ],
    "reference": {
      "purpose": {
        "mission": {
          "label": "Goal",
          "text": "To deepen our collective understanding of the world through the power of writing.",
          "prov": "published",
          "source": "https://medium.com/about (Our story; read 2026-10-30)"
        },
        "story": {
          "text": "Founded in 2012 as an open publishing platform: a blank page anyone can write on. Rebranded with COLLINS in 2020 (new wordmark, ellipsis symbol, word-built illustrations); in 2024 dropped the symbol and kept the GT Super-derived wordmark alone, to put text first.",
          "prov": "published",
          "source": "https://blog.medium.com/a-more-expressive-medium-starting-with-medium-63b562206d8f (Karene Tropen, Oct 14 2020; read 2026-10-30); https://medium.design/about-mediums-new-ish-logo-458885b2d8ab (Jason Combs, Oct 31 2024; read 2026-10-30)"
        },
        "values": [
          {
            "name": "What you read and write matters",
            "means": "words can divide or empower, so the product rewards depth and nuance",
            "prov": "published",
            "source": "https://medium.com/about (Our story; read 2026-10-30)"
          },
          {
            "name": "Substance over packaging",
            "means": "thoughtful conversation over drive-by takes; the design stays quiet so the writing leads",
            "prov": "published",
            "source": "https://medium.com/about (Our story; read 2026-10-30)"
          },
          {
            "name": "Anyone can have a voice",
            "means": "open platform regardless of background, affiliation or expertise; the brand takes a back seat to writers",
            "prov": "published",
            "source": "https://blog.medium.com/a-more-expressive-medium-starting-with-medium-63b562206d8f (Karene Tropen, Oct 14 2020; read 2026-10-30)"
          },
          {
            "name": "No ads, no selling data",
            "means": "supported by members; quality comes first",
            "prov": "published",
            "source": "https://medium.com/about (Our story; read 2026-10-30); https://medium.com/membership (read 2026-10-30)"
          }
        ]
      },
      "positioning": {
        "statement": {
          "text": "For people who want to read and write with depth, Medium is the member-supported home for human writing, where anyone can find readers without ads or a following.",
          "prov": "inferred",
          "source": "our reading of the about, membership and 2024 logo pages; Medium publishes no positioning statement"
        },
        "category": {
          "text": "open platform for reading and publishing human writing",
          "prov": "published",
          "source": "https://medium.com/about (Our story; read 2026-10-30)"
        },
        "audience": {
          "text": "readers and writers of every kind: developers, novelists, designers, CEOs, anyone with a story",
          "prov": "published",
          "source": "https://medium.com/about (Our story; read 2026-10-30)"
        },
        "problem": {
          "text": "a noisy internet where sensational stories, ads, spam and AI-generated content win",
          "prov": "published",
          "source": "https://medium.com/about (Our story; read 2026-10-30); https://medium.design/about-mediums-new-ish-logo-458885b2d8ab (Jason Combs, Oct 31 2024; read 2026-10-30)"
        },
        "promise": {
          "text": "deepen your understanding",
          "prov": "published",
          "source": "medium.com homepage subline"
        },
        "differentiators": [
          {
            "text": "Member-funded, no ads"
          },
          {
            "text": "Built-in readers: no mailing list or following needed first"
          },
          {
            "text": "Human writing first"
          }
        ]
      },
      "messaging": {
        "essence": {
          "text": "Human stories & ideas",
          "prov": "published",
          "source": "medium.com homepage headline; about page: \"a home for human stories and ideas\""
        },
        "pillars": [
          {
            "name": "Depth",
            "claim": "a system that rewards depth, nuance and time well spent over sensational, surface-level stories",
            "proof": [],
            "prov": "published",
            "source": "https://medium.com/about (Our story; read 2026-10-30)"
          },
          {
            "name": "Human writing",
            "claim": "text first: human writing without ads, spam or fraud, in an internet full of AI-generated content",
            "proof": [],
            "prov": "published",
            "source": "https://medium.design/about-mediums-new-ish-logo-458885b2d8ab (Jason Combs, Oct 31 2024; read 2026-10-30)"
          },
          {
            "name": "Open to anyone",
            "claim": "anyone can publish and find readers without building a following first",
            "proof": [
              "readers"
            ],
            "prov": "published",
            "source": "https://medium.com/about (Our story; read 2026-10-30); https://blog.medium.com/a-more-expressive-medium-starting-with-medium-63b562206d8f (Karene Tropen, Oct 14 2020; read 2026-10-30)"
          },
          {
            "name": "Member-supported",
            "claim": "funded by members instead of ads or selling data; part of each membership goes to the writers you read",
            "proof": [
              "members"
            ],
            "prov": "published",
            "source": "https://medium.com/about (Our story; read 2026-10-30); https://medium.com/membership (read 2026-10-30)"
          }
        ],
        "proof_points": [
          {
            "id": "readers",
            "text": "Over 100 million people connect and share on Medium every month (about page, read 2026-10-30)",
            "prov": "published",
            "source": "https://medium.com/about (Our story; read 2026-10-30)"
          },
          {
            "id": "members",
            "text": "A growing community of over a million Medium members (about page, read 2026-10-30)",
            "prov": "published",
            "source": "https://medium.com/about (Our story; read 2026-10-30)"
          }
        ],
        "taglines": [
          {
            "text": "Human stories & ideas",
            "where": "medium.com homepage hero"
          },
          {
            "text": "A place to read, write, and deepen your understanding",
            "where": "medium.com homepage subline"
          },
          {
            "text": "Everyone has a story to tell",
            "where": "medium.com/about"
          },
          {
            "text": "Support human stories",
            "where": "medium.com/membership"
          }
        ],
        "boilerplate": {
          "text": "Medium is a home for human stories and ideas.",
          "prov": "published",
          "source": "https://medium.com/about (Our story; read 2026-10-30)"
        }
      }
    }
  }
}