{
  "$description": "Meridian design tokens, read from the app's source at commit a22854f (2 Nov 2026). The brand colour is Meridian Gold (color.brand.gold), used only for the logo's star and \"Out now\".",
  "meta": {
    "commit": "a22854f",
    "repo": "ChimeXXD/meridian",
    "generated": "2026-11-02",
    "format": "W3C Design Tokens (draft) style: $value, $type, $description"
  },
  "color": {
    "night": {
      "neutral": {
        "$value": "#1C1C1C",
        "$type": "color",
        "$description": "ArtworkPalette.neutral.night: page base before art loads; Search and Welcome",
        "source": "Shared/Design/ArtworkPalette.swift:12; Meridian/Features/Common/NightStyle.swift:9-13"
      },
      "formula": {
        "$type": "string",
        "$value": "warm hue (<75° or >320°): HSB(h, min(s,0.08), 0.11); cool: HSB(h, min(s,0.32), 0.14)",
        "source": "Meridian/Features/Common/NightStyle.swift:9-13"
      },
      "samples": {
        "red": {
          "$value": "#1C1A1A",
          "$type": "color",
          "$description": "night base for red art (computed sample)",
          "source": "Meridian/Features/Common/NightStyle.swift:9-13"
        },
        "orange": {
          "$value": "#1C1B1A",
          "$type": "color",
          "$description": "night base for orange art (computed sample)",
          "source": "Meridian/Features/Common/NightStyle.swift:9-13"
        },
        "yellow": {
          "$value": "#1C1C1A",
          "$type": "color",
          "$description": "night base for yellow art (computed sample)",
          "source": "Meridian/Features/Common/NightStyle.swift:9-13"
        },
        "green": {
          "$value": "#182418",
          "$type": "color",
          "$description": "night base for green art (computed sample)",
          "source": "Meridian/Features/Common/NightStyle.swift:9-13"
        },
        "teal": {
          "$value": "#182420",
          "$type": "color",
          "$description": "night base for teal art (computed sample)",
          "source": "Meridian/Features/Common/NightStyle.swift:9-13"
        },
        "blue": {
          "$value": "#181E24",
          "$type": "color",
          "$description": "night base for blue art (computed sample)",
          "source": "Meridian/Features/Common/NightStyle.swift:9-13"
        },
        "indigo": {
          "$value": "#181824",
          "$type": "color",
          "$description": "night base for indigo art (computed sample)",
          "source": "Meridian/Features/Common/NightStyle.swift:9-13"
        },
        "purple": {
          "$value": "#201824",
          "$type": "color",
          "$description": "night base for purple art (computed sample)",
          "source": "Meridian/Features/Common/NightStyle.swift:9-13"
        },
        "wednesday": {
          "$value": "#181924",
          "$type": "color",
          "$description": "night base computed from Wednesday's key art (computed sample, used in the design system's mockups)",
          "source": "design-system/assets/site.js (SHOWS.wednesday.night); formula Meridian/Features/Common/NightStyle.swift:9-13"
        },
        "severance": {
          "$value": "#1B241A",
          "$type": "color",
          "$description": "night base computed from Severance's key art (computed sample, used in the design system's mockups)",
          "source": "design-system/index.html (Spotlight, date only); formula Meridian/Features/Common/NightStyle.swift:9-13"
        }
      },
      "artBaseNeutral": {
        "$value": "#525252",
        "$type": "color",
        "$description": "ArtworkPalette.neutral.base: row-art placeholder",
        "source": "Shared/Design/ArtworkPalette.swift:18-28"
      }
    },
    "nightInk": {
      "primary": {
        "$value": "#FFFFFF",
        "$type": "color",
        "$description": "Out line on the hero, Show detail, show page",
        "source": "Meridian/Features/Common/NightStyle.swift:18"
      },
      "secondary": {
        "$value": "#FFFFFFBF",
        "$type": "color",
        "$description": "Row out line, source sentence, Welcome zone, Not now",
        "source": "Meridian/Features/Common/NightStyle.swift:19"
      },
      "muted": {
        "$value": "#EBEBF599",
        "$type": "color",
        "$description": "Color.secondary (system secondaryLabel, dark): meta, headers, labels",
        "source": "Meridian/Features/Common/NightStyle.swift:20",
        "system": true
      }
    },
    "widgetInk": {
      "base": {
        "$value": "#1C1C1C",
        "$type": "color",
        "$description": "WidgetBackdrop base",
        "source": "Shared/Widgets/WidgetInk.swift:7"
      },
      "primary": {
        "$value": "#FFFFFF",
        "$type": "color",
        "$description": "titles, countdowns, tags",
        "source": "Shared/Widgets/WidgetInk.swift:8"
      },
      "secondary": {
        "$value": "#FFFFFFBF",
        "$type": "color",
        "$description": "out lines, empty detail",
        "source": "Shared/Widgets/WidgetInk.swift:9"
      },
      "muted": {
        "$value": "#FFFFFF8C",
        "$type": "color",
        "$description": "row 'when', quiet reason, 'Nothing scheduled'",
        "source": "Shared/Widgets/WidgetInk.swift:10"
      },
      "tile": {
        "$value": "#FFFFFF14",
        "$type": "color",
        "$description": "where a thumbnail would be when a show has no art yet (PosterImage's empty surface is the same white at 0.08)",
        "source": "Shared/Widgets/WidgetInk.swift:12; Meridian/Features/Artwork/PosterImage.swift:10"
      },
      "alwaysOnFactor": {
        "$type": "number",
        "$value": 0.7,
        "$description": "Always-On multiplies every ink except the countdown",
        "source": "Shared/Widgets/WidgetInk.swift:15-17"
      }
    },
    "liveActivityInk": {
      "base": {
        "$value": "#0D0D0E",
        "$type": "color",
        "$description": "activityBackgroundTint, art edge",
        "source": "Shared/LiveActivity/LiveActivityInk.swift:8"
      },
      "primary": {
        "$value": "#FFFFFF",
        "$type": "color",
        "$description": "= WidgetInk.primary",
        "source": "Shared/LiveActivity/LiveActivityInk.swift:9"
      },
      "out": {
        "$value": "#E9C46A",
        "$type": "color",
        "$description": "Meridian Gold (Tokens.gold) on \"Out now\", from the drop",
        "source": "Shared/LiveActivity/LiveActivityInk.swift:11",
        "swift": "LiveActivityInk.out"
      },
      "secondary": {
        "$value": "#FFFFFFBF",
        "$type": "color",
        "$description": "= WidgetInk.secondary",
        "source": "Shared/LiveActivity/LiveActivityInk.swift:12"
      },
      "muted": {
        "$value": "#FFFFFF8C",
        "$type": "color",
        "$description": "= WidgetInk.muted",
        "source": "Shared/LiveActivity/LiveActivityInk.swift:13"
      },
      "fill": {
        "$value": "#FFFFFF",
        "$type": "color",
        "$description": "ring and bar fill",
        "source": "Shared/LiveActivity/LiveActivityInk.swift:15"
      },
      "track": {
        "$value": "#FFFFFF2E",
        "$type": "color",
        "$description": "ring and bar track",
        "source": "Shared/LiveActivity/LiveActivityInk.swift:16"
      },
      "disc": {
        "$value": "#FFFFFF29",
        "$type": "color",
        "$description": "monogram disc",
        "source": "Shared/LiveActivity/LiveActivityInk.swift:18"
      },
      "keyline": {
        "$value": "#FFFFFF59",
        "$type": "color",
        "$description": "Dynamic Island outline",
        "source": "Shared/LiveActivity/LiveActivityInk.swift:20"
      },
      "monogramGhost": {
        "$value": "#FFFFFF12",
        "$type": "color",
        "$description": "faint initial when there is no art (raw)",
        "source": "Shared/LiveActivity/LiveActivityArtEdge.swift:40"
      }
    },
    "control": {
      "fill": {
        "$value": "#0000008C",
        "$type": "color",
        "$description": "unpicked chip, follow (+) (raw)",
        "source": "Meridian/Features/Search/SearchFilterRow.swift:86; Meridian/Features/Search/SearchView.swift:237"
      },
      "hairline": {
        "$value": "#FFFFFF59",
        "$type": "color",
        "$description": "unpicked chip, (+), Following stroke (raw)",
        "source": "Meridian/Features/Search/SearchFilterRow.swift:87; Meridian/Features/Search/SearchView.swift:238; Meridian/Features/Search/ShowPreviewView.swift:105"
      },
      "picked": {
        "$value": "#FFFFFF",
        "$type": "color",
        "$description": "picked chip, Following (+), primary buttons; text #000000",
        "source": "Meridian/Features/Search/SearchFilterRow.swift:83-86"
      },
      "followingFill": {
        "$value": "#FFFFFF1F",
        "$type": "color",
        "$description": "Following capsule; episode divider (raw)",
        "source": "Meridian/Features/Search/ShowPreviewView.swift:104; Meridian/Features/ShowDetail/ShowDetailView.swift:130"
      },
      "episodeInk": {
        "$value": "#FFFFFF99",
        "$type": "color",
        "$description": "episode label/date; LA toggle tint (raw)",
        "source": "Meridian/Features/ShowDetail/ShowDetailView.swift:97,122,126"
      },
      "widgetTagFill": {
        "$value": "#00000073",
        "$type": "color",
        "$description": "WidgetTag capsule (raw)",
        "source": "Shared/Widgets/WidgetTag.swift:18"
      },
      "artScrim": {
        "$value": "#00000066",
        "$type": "color",
        "$description": "top of NightArtHeader to 25% (raw)",
        "source": "Meridian/Features/Common/NightStyle.swift:61"
      },
      "welcomeTile": {
        "$value": "#FFFFFF0D",
        "$type": "color",
        "$description": "a Welcome wall tile until its picture loads, or if it can't (raw)",
        "source": "Meridian/Features/Welcome/WelcomeWallView.swift:141"
      }
    },
    "legacyStatus": {
      "exact": {
        "$value": "#5BE38A",
        "$type": "color",
        "$description": "legacy, replaced by certainty words: light #17692A",
        "source": "Shared/Design/Tokens.swift:27",
        "legacy": true,
        "light": "#17692A"
      },
      "estimated": {
        "$value": "#8AB0FF",
        "$type": "color",
        "$description": "legacy, replaced by certainty words: light #1F5FCC",
        "source": "Shared/Design/Tokens.swift:28",
        "legacy": true,
        "light": "#1F5FCC"
      },
      "adjusted": {
        "$value": "#C9A6FF",
        "$type": "color",
        "$description": "legacy, replaced by certainty words: light #7B3FC4",
        "source": "Shared/Design/Tokens.swift:29",
        "legacy": true,
        "light": "#7B3FC4"
      },
      "dateOnly": {
        "$value": "#A8A8B0",
        "$type": "color",
        "$description": "legacy, replaced by certainty words: light #5E5E66",
        "source": "Shared/Design/Tokens.swift:30",
        "legacy": true,
        "light": "#5E5E66"
      },
      "delayed": {
        "$value": "#FDBA74",
        "$type": "color",
        "$description": "legacy, replaced by certainty words: light #96440A",
        "source": "Shared/Design/Tokens.swift:31",
        "legacy": true,
        "light": "#96440A"
      },
      "noStream": {
        "$value": "#FF8A80",
        "$type": "color",
        "$description": "legacy, replaced by certainty words: light #B01F1F",
        "source": "Shared/Design/Tokens.swift:32",
        "legacy": true,
        "light": "#B01F1F"
      }
    },
    "brand": {
      "gold": {
        "$value": "#E9C46A",
        "$type": "color",
        "$description": "Meridian Gold: only the logo's star and the 'Out now' moment, on the night bases. Never a status colour.",
        "source": "Shared/Design/Tokens.swift:37",
        "swift": "Tokens.gold"
      },
      "starlight": {
        "$value": "#F4EFE4",
        "$type": "color",
        "$description": "brand white: the logo's lines and the wordmark",
        "source": "Shared/Design/Tokens.swift:40",
        "swift": "Tokens.starlight"
      }
    }
  },
  "font": {
    "serif": {
      "$type": "fontFamily",
      "$value": [
        "New York",
        "ui-serif",
        "Iowan Old Style",
        "Georgia",
        "serif"
      ],
      "$description": "titles, headers, every countdown (NumeralStudy.night: Light, tabular)"
    },
    "sans": {
      "$type": "fontFamily",
      "$value": [
        "-apple-system",
        "BlinkMacSystemFont",
        "SF Pro Text",
        "system-ui",
        "sans-serif"
      ],
      "$description": "everything else"
    }
  },
  "typography": {
    "hero-countdown-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "64px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Hero countdown · App · Upcoming hero and Show detail; 48 on the show page. Grows like .largeTitle",
      "source": "Meridian/Features/Upcoming/UpcomingHero.swift:35"
    },
    "widget-large-countdown-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "46px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Widget large countdown · Widget · systemLarge hero",
      "source": "Shared/Widgets/LargeWidgetView.swift:81"
    },
    "la-countdown-default-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "44px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "LA countdown (default) · Live Activity · LiveActivityCountdown default size",
      "source": "Shared/LiveActivity/LiveActivityCountdown.swift:10"
    },
    "small-widget-countdown-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "36px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Small widget countdown · Widget · systemSmall",
      "source": "Shared/Widgets/SmallWidgetView.swift:38"
    },
    "lock-banner-countdown-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "36px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Lock banner countdown · Live Activity · Lock Screen banner",
      "source": "Shared/LiveActivity/LiveActivityLockScreenView.swift:57"
    },
    "lock-banner-out-now-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "25.2px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Lock banner Out now · Live Activity · gold, in the countdown's place at the drop, 0.7 times its size",
      "source": "Shared/LiveActivity/LiveActivityLockScreenView.swift:52"
    },
    "welcome-headline-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "34px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Welcome headline · App · Welcome",
      "source": "Meridian/Features/Welcome/WelcomeView.swift:29"
    },
    "welcome-wordmark-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "22px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Welcome wordmark · App · .title2 serif \"Meridian\" in Starlight, beside the 36 pt mark; both scale with Dynamic Type",
      "source": "Meridian/Features/Welcome/WelcomeView.swift:19,82"
    },
    "expanded-countdown-out-now-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "24px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Expanded countdown / Out now · Live Activity · Expanded island bottom, right, the size of Upcoming's row countdown (D-57)",
      "source": "Shared/LiveActivity/LiveActivityExpandedView.swift:99,103"
    },
    "hero-title-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "32px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Hero title · App · ReleaseHeadline title, spotlight, show page",
      "source": "Meridian/Features/Upcoming/UpcomingHero.swift:32,44"
    },
    "medium-widget-countdown-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "32px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Medium widget countdown · Widget · systemMedium hero",
      "source": "Shared/Widgets/MediumWidgetView.swift:83"
    },
    "empty-headline-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "28px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Empty headline · App · \"Follow a show…\", \"Nothing scheduled…\"",
      "source": "Meridian/Features/Upcoming/UpcomingView.swift:73,123"
    },
    "rectangular-countdown-lock-screen": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "26px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Rectangular countdown · Lock Screen · accessoryRectangular",
      "source": "Shared/Widgets/RectangularWidgetView.swift:38"
    },
    "row-countdown-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "24px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Row countdown · App · Upcoming row",
      "source": "Meridian/Features/Upcoming/UpcomingView.swift:205"
    },
    "large-widget-title-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "24px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Large widget title · Widget · systemLarge hero",
      "source": "Shared/Widgets/LargeWidgetView.swift:77"
    },
    "small-la-countdown-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "24px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Small LA countdown · Live Activity · .small family",
      "source": "Shared/LiveActivity/LiveActivitySmallView.swift:31"
    },
    "grid-section-header-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "22px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Grid section header · App · \"Airing in the next few days\", \"Results\"",
      "source": "Meridian/Features/Search/SearchView.swift:183"
    },
    "widget-empty-headline-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "22px",
        "fontWeight": 300,
        "fontVariantNumeric": "normal"
      },
      "$description": "Widget empty headline · Widget · \"Follow a show\", \"Nothing scheduled\"",
      "source": "Shared/Widgets/WidgetEmptyState.swift:17"
    },
    "large-row-countdown-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "22px",
        "fontWeight": 300,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Large row countdown · Widget · MediumWidgetRow",
      "source": "Shared/Widgets/MediumWidgetRow.swift:34"
    },
    "circular-date-only-day-lock-screen": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "22px",
        "fontWeight": 400,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Circular date-only day · Lock Screen · accessoryCircular",
      "source": "Shared/Widgets/CircularWidgetView.swift:85"
    },
    "row-title-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "20px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Row title · App · Upcoming row",
      "source": "Meridian/Features/Upcoming/UpcomingView.swift:199"
    },
    "medium-widget-title-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "19px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Medium widget title · Widget · systemMedium hero",
      "source": "Shared/Widgets/MediumWidgetView.swift:72"
    },
    "lock-banner-title-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "19px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Lock banner title · Live Activity · Lock Screen banner",
      "source": "Shared/LiveActivity/LiveActivityLockScreenView.swift:81"
    },
    "expanded-title-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "18px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Expanded title · Live Activity · Expanded leading",
      "source": "Shared/LiveActivity/LiveActivityExpandedView.swift:45"
    },
    "out-line-hero-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "17px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Out line (hero) · App · .body medium: \"Expected Wed at 23:00 Lagos time\"",
      "source": "Meridian/Features/Upcoming/UpcomingHero.swift:48"
    },
    "follow-button-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "17px",
        "fontWeight": 600,
        "fontVariantNumeric": "normal"
      },
      "$description": "Follow button · App · .headline",
      "source": "Meridian/Features/Search/ShowPreviewView.swift:101"
    },
    "episode-title-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "17px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Episode title · App · .body medium",
      "source": "Meridian/Features/ShowDetail/ShowDetailView.swift:124"
    },
    "small-widget-title-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "16px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Small widget title · Widget · systemSmall",
      "source": "Shared/Widgets/SmallWidgetView.swift:33"
    },
    "out-line-row-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "15px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Out line (row) · App · .subheadline, secondary",
      "source": "Meridian/Features/Upcoming/UpcomingView.swift:211"
    },
    "list-section-header-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "15px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "List section header · App · .subheadline medium, muted",
      "source": "Meridian/Features/Upcoming/UpcomingView.swift:144"
    },
    "filter-chip-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "15px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Filter chip · App · .subheadline medium",
      "source": "Meridian/Features/Search/SearchFilterRow.swift:46"
    },
    "rectangular-title-lock-screen": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "15px",
        "fontWeight": 600,
        "fontVariantNumeric": "normal"
      },
      "$description": "Rectangular title · Lock Screen · accessoryRectangular",
      "source": "Shared/Widgets/RectangularWidgetView.swift:32"
    },
    "compact-island-timer-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "15px",
        "fontWeight": 500,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Compact island timer · Live Activity · Compact trailing",
      "source": "Shared/LiveActivity/LiveActivityCompactView.swift:44"
    },
    "large-quiet-row-title-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "15px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Large / quiet row title · Widget · MediumWidgetRow, WidgetQuietRow",
      "source": "Shared/Widgets/MediumWidgetRow.swift:24"
    },
    "compact-row-title-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "14px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Compact row title · Widget · WidgetCompactRow",
      "source": "Shared/Widgets/WidgetCompactRow.swift:24"
    },
    "circular-value-number-lock-screen": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "14px",
        "fontWeight": 400,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Circular value number · Lock Screen · \"2\" in \"2d\"",
      "source": "Shared/Widgets/CircularWidgetView.swift:72"
    },
    "expanded-label-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "15px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Expanded time · Live Activity · \"Expected Mon 21:00\"; \"Delayed from 21:00\" under it at 13 medium, muted (D-57)",
      "source": "Shared/LiveActivity/LiveActivityExpandedView.swift:81,88"
    },
    "meta-footnote-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "13px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Meta / footnote · App · .footnote muted: \"S4E1 · Apple TV\"",
      "source": "Meridian/Features/Upcoming/UpcomingHero.swift:63"
    },
    "grid-cell-title-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "13px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Grid cell title · App · .footnote medium",
      "source": "Meridian/Features/Search/SearchView.swift:208"
    },
    "episode-label-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "13px",
        "fontWeight": 600,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Episode label · App · .footnote monospacedDigit semibold",
      "source": "Meridian/Features/ShowDetail/ShowDetailView.swift:121"
    },
    "lock-label-details-time-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "13px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Lock details / time · Live Activity · medium",
      "source": "Shared/LiveActivity/LiveActivityLockScreenView.swift:35,108"
    },
    "large-widget-out-line-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "13px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Large widget out line · Widget · systemLarge",
      "source": "Shared/Widgets/LargeWidgetView.swift:84"
    },
    "widget-out-line-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "12px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Widget out line · Widget · Small, medium; empty detail",
      "source": "Shared/Widgets/SmallWidgetView.swift:42"
    },
    "grid-cell-meta-app": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "12px",
        "fontWeight": 400,
        "fontVariantNumeric": "normal"
      },
      "$description": "Grid cell meta · App · .caption muted",
      "source": "Meridian/Features/Search/SearchView.swift:216"
    },
    "rectangular-meta-provider-lock-screen": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "12px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Rectangular meta / provider · Lock Screen · \"Expected Wed 23:00\"",
      "source": "Shared/Widgets/RectangularWidgetView.swift:27,44"
    },
    "widget-row-when-reason-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "11px",
        "fontWeight": 500,
        "fontVariantNumeric": "normal"
      },
      "$description": "Widget row \"when\" / reason · Widget · WidgetCompactRow, WidgetQuietRow",
      "source": "Shared/Widgets/WidgetCompactRow.swift:29"
    },
    "widget-tag-widget": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "11px",
        "fontWeight": 600,
        "fontVariantNumeric": "normal"
      },
      "$description": "Widget tag · Widget · \"HBO · US\", \"+3 more this week\"",
      "source": "Shared/Widgets/WidgetTag.swift:13"
    },
    "small-la-label-time-live-activity": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.sans}",
        "fontSize": "11px",
        "fontWeight": 600,
        "fontVariantNumeric": "normal"
      },
      "$description": "Small LA label / time · Live Activity · .small family",
      "source": "Shared/LiveActivity/LiveActivitySmallView.swift:28,34"
    },
    "circular-unit-lock-screen": {
      "$type": "typography",
      "$value": {
        "fontFamily": "{font.serif}",
        "fontSize": "10px",
        "fontWeight": 400,
        "fontVariantNumeric": "tabular-nums"
      },
      "$description": "Circular unit · Lock Screen · \"d\" in \"2d\" (secondary)",
      "source": "Shared/Widgets/CircularWidgetView.swift:72"
    }
  },
  "countdownScale": {
    "$description": "CountdownText's sizes as a share of the countdown's size (D-56)",
    "unit": {
      "$type": "number",
      "$value": 0.5,
      "$description": "the still count's unit letters, \"d\" and \"h\", in the secondary ink",
      "source": "Shared/Design/CountdownText.swift:82"
    },
    "outNow": {
      "$type": "number",
      "$value": 0.7,
      "$description": "\"Out now\", Meridian Gold in full colour",
      "source": "Shared/Design/CountdownText.swift:44"
    },
    "released": {
      "$type": "number",
      "$value": 0.6,
      "$description": "\"Released\", secondary",
      "source": "Shared/Design/CountdownText.swift:47"
    },
    "date": {
      "$type": "number",
      "$value": 0.6,
      "$description": "a date-only drop's day, or \"Date not set\"",
      "source": "Shared/Design/CountdownText.swift:42"
    },
    "minimumScaleFactor": {
      "$type": "number",
      "$value": 0.5,
      "$description": "one line, shrinking no further than half",
      "source": "Shared/Design/CountdownText.swift:33"
    }
  },
  "space": {
    "xxs": {
      "$type": "dimension",
      "$value": "4px",
      "source": "Shared/Design/Tokens.swift:7-14"
    },
    "xs": {
      "$type": "dimension",
      "$value": "8px",
      "source": "Shared/Design/Tokens.swift:7-14"
    },
    "s": {
      "$type": "dimension",
      "$value": "12px",
      "source": "Shared/Design/Tokens.swift:7-14"
    },
    "m": {
      "$type": "dimension",
      "$value": "16px",
      "source": "Shared/Design/Tokens.swift:7-14"
    },
    "l": {
      "$type": "dimension",
      "$value": "24px",
      "source": "Shared/Design/Tokens.swift:7-14"
    },
    "xl": {
      "$type": "dimension",
      "$value": "32px",
      "source": "Shared/Design/Tokens.swift:7-14"
    }
  },
  "radius": {
    "poster": {
      "$type": "dimension",
      "$value": "8px"
    },
    "rowArt": {
      "$type": "dimension",
      "$value": "10px",
      "$description": "Upcoming row art and Welcome wall tiles",
      "source": "Meridian/Features/Upcoming/UpcomingView.swift:193; Meridian/Features/Welcome/WelcomeWallView.swift:140,148"
    },
    "islandArt": {
      "$type": "dimension",
      "$value": "12px"
    },
    "logoTile": {
      "$type": "dimension",
      "$value": "5px"
    },
    "widgetThumb": {
      "$type": "string",
      "$value": "height / 6"
    },
    "posterMark": {
      "$type": "string",
      "$value": "size / 4"
    },
    "capsule": {
      "$type": "string",
      "$value": "capsule"
    },
    "legacyCard": {
      "$type": "dimension",
      "$value": "14px",
      "legacy": true
    },
    "sheetUnused": {
      "$type": "dimension",
      "$value": "20px",
      "unused": true
    },
    "widgetUnused": {
      "$type": "dimension",
      "$value": "22px",
      "unused": true
    }
  },
  "opacity": {
    "$description": "opacities in use, each with where it is written",
    "$value": [
      0.05,
      0.07,
      0.08,
      0.12,
      0.15,
      0.16,
      0.18,
      0.25,
      0.32,
      0.35,
      0.4,
      0.45,
      0.55,
      0.6,
      0.7,
      0.75,
      0.8
    ],
    "sources": {
      "0.05": "Meridian/Features/Welcome/WelcomeWallView.swift:141",
      "0.07": "Shared/LiveActivity/LiveActivityArtEdge.swift:40",
      "0.08": "Shared/Widgets/WidgetInk.swift:12; Meridian/Features/Artwork/PosterImage.swift:10; Meridian/Features/Common/NightStyle.swift (nightRow); Meridian/Features/Common/PressStyle.swift (CardRowPressStyle)",
      "0.12": "Meridian/Features/Search/ShowPreviewView.swift:104; Meridian/Features/ShowDetail/ShowDetailView.swift:130",
      "0.15": "Shared/LiveActivity/LiveActivityArtEdge.swift:33; Shared/Widgets/CircularWidgetView.swift:44",
      "0.16": "Shared/LiveActivity/LiveActivityInk.swift:18",
      "0.18": "Shared/LiveActivity/LiveActivityInk.swift:16; Meridian/Features/Welcome/WelcomeWallView.swift:25",
      "0.25": "Shared/Widgets/CircularWidgetView.swift:44",
      "0.32": "Shared/Design/MeridianMark.swift:32; scripts/make-app-icon.swift:55",
      "0.35": "Meridian/Features/Search/SearchFilterRow.swift:87; Meridian/Features/Search/SearchView.swift:238; Meridian/Features/Search/ShowPreviewView.swift:105; Shared/LiveActivity/LiveActivityInk.swift:20; Meridian/Features/Welcome/WelcomeWallView.swift:29",
      "0.4": "Meridian/Features/Common/NightStyle.swift:61",
      "0.45": "Shared/Widgets/WidgetTag.swift:18",
      "0.55": "Meridian/Features/Search/SearchFilterRow.swift:86; Meridian/Features/Search/SearchView.swift:237; Shared/Widgets/WidgetInk.swift:10",
      "0.6": "Meridian/Features/ShowDetail/ShowDetailView.swift:97,122,126",
      "0.7": "Shared/Widgets/WidgetBackdrop.swift:26; Shared/Widgets/WidgetInk.swift:16; Meridian/Features/Welcome/WelcomeWallView.swift:36",
      "0.75": "Meridian/Features/Common/NightStyle.swift:19; Shared/Widgets/WidgetInk.swift:9; Shared/LiveActivity/LiveActivityArtEdge.swift:32",
      "0.8": "Meridian/Features/Common/PressStyle.swift (heroPress); Meridian/Features/Common/PrimaryButtonStyle.swift"
    }
  },
  "motion": {
    "artworkArrival": {
      "$type": "transition",
      "$value": {
        "duration": "350ms",
        "timingFunction": [
          0,
          0,
          0.58,
          1
        ]
      },
      "$description": "easeOut; kept under Reduce Motion (a fade moves nothing)",
      "source": "Meridian/Features/Artwork/ArtworkLoaderView.swift"
    },
    "countdownPace": {
      "$type": "duration",
      "$value": "1000ms",
      "source": "Meridian/Features/Common/CountdownSchedule.swift:8-11"
    },
    "searchDebounce": {
      "$type": "duration",
      "$value": "400ms",
      "source": "Meridian/Features/Search/SearchView.swift:84"
    },
    "welcomeFade": {
      "$type": "transition",
      "$value": {
        "duration": "350ms",
        "timingFunction": [
          0,
          0,
          0.58,
          1
        ]
      },
      "$description": "Welcome's wall fading in, and each picture on it; kept under Reduce Motion",
      "source": "Meridian/Features/Welcome/WelcomeView.swift; Meridian/Features/Welcome/WelcomeWallView.swift"
    },
    "welcomeDrift": {
      "$type": "number",
      "$value": 9,
      "$description": "Welcome wall rows, points a second, linear, alternate rows the other way, starting 0, 0.42 and 0.18 of a run in; still with Reduce Motion",
      "source": "Meridian/Features/Welcome/WelcomeWallView.swift:14,111,114"
    },
    "pressRelease": {
      "$type": "transition",
      "$value": {
        "duration": "160ms",
        "timingFunction": [
          0,
          0,
          0.58,
          1
        ]
      },
      "$description": "PressStyle: instant on press, ease out on release. Hero opacity 0.8; rows and the quiet grid scale 0.98; posters, chips, Follow, the (+) and Find a show scale 0.97",
      "source": "Meridian/Features/Common/PressStyle.swift"
    },
    "outNowArrival": {
      "$type": "transition",
      "$value": {
        "duration": "400ms",
        "timingFunction": [
          0.23,
          1,
          0.32,
          1
        ]
      },
      "$description": "CountdownSlot at the drop: opacity + scale 0.97 from the reading edge; opacity only under Reduce Motion; app screens only",
      "source": "Meridian/Features/Common/CountdownSlot.swift"
    },
    "countdownStep": {
      "$type": "duration",
      "$value": "350ms",
      "$description": ".smooth: the still count rolls (.numericText(countsDown: true)), keyed on the countdown state, never per second",
      "source": "Meridian/Features/Common/CountdownSlot.swift"
    },
    "followSymbol": {
      "$type": "duration",
      "$value": "250ms",
      "$description": ".snappy: Follow + to ✓ with .symbolEffect(.replace); also the stream delay and Live Activity switch bindings",
      "source": "Meridian/Features/Search/SearchPosterCell.swift; Meridian/Features/Search/ShowPreviewView.swift; Meridian/Features/ShowDetail/ShowDetailView.swift"
    },
    "filterChange": {
      "$type": "duration",
      "$value": "200ms",
      "$description": ".snappy: a filter chip changes and the airing grid crossfades",
      "source": "Meridian/Features/Search/SearchFilterRow.swift; Meridian/Features/Search/SearchView.swift"
    },
    "welcomeHandOff": {
      "$type": "duration",
      "$value": "400ms",
      "$description": ".smooth: Welcome crossfades to the tabs",
      "source": "Meridian/App/RootView.swift"
    },
    "statusBarShade": {
      "$type": "dimension",
      "$value": "40px",
      "$description": "StatusBarShade: solid through the top safe area, then this fade; fades in over 60 pt of scroll as the text under the art reaches the bar",
      "source": "Meridian/Features/Common/StatusBarShade.swift"
    }
  },
  "size": {
    "hitTarget": {
      "$type": "dimension",
      "$value": "44px"
    },
    "glassButton": {
      "$type": "dimension",
      "$value": "44px"
    },
    "followPlus": {
      "$type": "dimension",
      "$value": "32px"
    },
    "chipHeight": {
      "$type": "dimension",
      "$value": "34px"
    },
    "followButtonHeight": {
      "$type": "dimension",
      "$value": "50px"
    },
    "welcomeButtonHeight": {
      "$type": "dimension",
      "$value": "48px"
    },
    "rowArt": {
      "$type": "dimension",
      "$value": "64px"
    },
    "artHeader": {
      "$type": "dimension",
      "$value": "472px"
    },
    "artHeaderDetail": {
      "$type": "dimension",
      "$value": "500px"
    },
    "laLockMaxHeight": {
      "$type": "dimension",
      "$value": "160px"
    },
    "laMinimalLimit": {
      "$type": "dimension",
      "$value": "28px"
    },
    "welcomeMark": {
      "$type": "dimension",
      "$value": "36px",
      "$description": "the Longitudes mark beside the Welcome wordmark, scaling with .title2",
      "source": "Meridian/Features/Welcome/WelcomeView.swift:19"
    },
    "welcomeWallRows": {
      "$type": "string",
      "$value": "128px, 172px, 128px, 8px apart, over the top 60% of the screen",
      "source": "Meridian/Features/Welcome/WelcomeWallView.swift:11-12; Meridian/Features/Welcome/WelcomeView.swift:60"
    }
  }
}
