// ============================================================
//  MISSION : INFECT — epideM:Ic  | data (artists + tracks)
//  Canonical roster and tracklist for the album.
// ============================================================

const ARTISTS = {
  lo_key: {
    id: "lo_key",
    name: "LO KEY",
    callsign: "L0-K3Y",
    initials: "LK",
    role: "FOUNDER · INFECTED",
    origin: "PHILADELPHIA, PA",
    verse: "—",
    tagline: "Founded LOKE Records in Philly in 2006. Mythmaker between hip-hop and the dream world. Mask on since '05.",
    image: "images/lokey.jpg",
    portrait:
      "radial-gradient(120% 90% at 30% 20%, oklch(0.75 0.22 140 / 0.7), transparent 60%), radial-gradient(80% 80% at 70% 80%, oklch(0.45 0.2 30 / 0.7), transparent 55%), linear-gradient(155deg, #0a1a0a, #031005 55%, #0a0503)",
    links: [
      { label: "SPOTIFY", url: "https://open.spotify.com/artist/1ehqyqdZUIBIQQP02i8Lmq", icon: "S" },
      { label: "APPLE", url: "https://music.apple.com/us/artist/lo-key/399683548", icon: "" },
      { label: "INSTAGRAM", url: "https://www.instagram.com/lokeylovesyou", icon: "◎" },
      { label: "TIKTOK", url: "https://tiktok.com/@lokeylovesyou", icon: "◆" },
      { label: "LINKTREE", url: "https://linktr.ee/lokeylovesyou", icon: "⌘" },
    ],
  },
  dubbs: {
    id: "dubbs",
    name: "DUBBS",
    callsign: "DBS-17",
    initials: "DB",
    role: "LYRICIST · MELODIC CARRIER",
    origin: "DETROIT, MI",
    verse: "—",
    tagline: "Detroit-born lyricist who blends razor-sharp hip-hop with melodic innovation. Joined MISSION:INFECT in 2017.",
    image: "images/dubbs.jpg",
    portrait:
      "radial-gradient(110% 90% at 50% 10%, oklch(0.8 0.2 140 / 0.55), transparent 60%), radial-gradient(60% 70% at 80% 90%, oklch(0.4 0.19 35 / 0.55), transparent 55%), linear-gradient(165deg, #031005, #0a0a03 50%, #0a0503)",
    links: [
      { label: "SPOTIFY", url: "https://open.spotify.com/artist/2UY094ZeL8sk7e2mGZ1fff", icon: "S" },
      { label: "APPLE", url: "https://music.apple.com/us/artist/dubbs/151617013", icon: "" },
      { label: "YOUTUBE", url: "https://www.youtube.com/dubbshq", icon: "▶" },
      { label: "BANDCAMP", url: "https://dubbs.bandcamp.com", icon: "B" },
    ],
  },
  malaria: {
    id: "malaria",
    name: "MALARIA",
    callsign: "MLR-03",
    initials: "ML",
    role: "STORYTELLER · HORRORCORE OG",
    origin: "PENNSAUKEN, NJ",
    verse: "—",
    tagline: "South Jersey innovator who started recording vocals on a VHS camcorder over instrumentals. Storytelling and high-energy performance.",
    image: "images/malaria.jpg",
    portrait:
      "radial-gradient(85% 100% at 30% 30%, oklch(0.72 0.21 138 / 0.55), transparent 58%), radial-gradient(70% 70% at 75% 85%, oklch(0.4 0.2 32 / 0.6), transparent 55%), linear-gradient(185deg, #0a0f04, #05140a 55%, #080503)",
    links: [
      { label: "YOUTUBE", url: "https://www.youtube.com/@MalariaMusicTv", icon: "▶" },
      { label: "SPOTIFY", url: "https://open.spotify.com/playlist/12cd2zeOmvZYAIs7mzVoxo", icon: "S" },
      { label: "FACEBOOK", url: "https://www.facebook.com/share/1HtC3m83Tv/", icon: "f" },
    ],
  },
  zero: {
    id: "zero",
    name: "ZERO",
    callsign: "ZR-10",
    initials: "Z0",
    role: "NU-METAL RAP · CYBERPUNK OPERATOR",
    origin: "MINNESOTA",
    verse: "—",
    tagline: "Steve Collins out of Minnesota. Experimental hip-hop laced with horrorcore, nu-metal, and 90s rap. SOLDIERS OF FORTUNE.",
    image: "images/zero.jpg",
    portrait:
      "radial-gradient(90% 100% at 75% 30%, oklch(0.7 0.22 140 / 0.55), transparent 60%), radial-gradient(70% 70% at 20% 80%, oklch(0.4 0.2 30 / 0.6), transparent 55%), linear-gradient(200deg, #02100a, #0a0f04 60%, #050305)",
    links: [
      { label: "SPOTIFY", url: "https://open.spotify.com/artist/20NckPQKo4miPnXQ5WSUxw", icon: "S" },
      { label: "INSTAGRAM", url: "https://www.instagram.com/killstevekill", icon: "◎" },
      { label: "BANDCAMP", url: "https://zerohiphop.bandcamp.com/", icon: "B" },
      { label: "TWITCH", url: "https://twitch.tv/killstevekill", icon: "▶" },
    ],
  },
  badluck: {
    id: "badluck",
    name: "BADLUCK",
    callsign: "B4D-L0K",
    initials: "BL",
    role: "CO-FOUNDER · HORRORCORE OG",
    origin: "NEW CASTLE, DE",
    verse: "—",
    tagline: "Horrorcore lifer. Cut his teeth in Medula before joining Lo Key in 2005 to form MISSION:INFECT. Runs The Zargorg Show.",
    image: "images/badluck.jpg",
    portrait:
      "radial-gradient(90% 100% at 70% 30%, oklch(0.72 0.22 135 / 0.55), transparent 60%), radial-gradient(70% 70% at 20% 80%, oklch(0.35 0.18 25 / 0.6), transparent 55%), linear-gradient(200deg, #061006, #0b0f06 60%, #060604)",
    links: [
      { label: "BANDCAMP", url: "https://badluckinfect.bandcamp.com", icon: "B" },
      { label: "YOUTUBE", url: "https://youtube.com/@thezargorgshow", icon: "▶" },
      { label: "FACEBOOK", url: "https://www.facebook.com/share/1BuB7KG6xz/", icon: "f" },
    ],
  },
  madd_maxxx: {
    id: "madd_maxxx",
    name: "MADD MAXXX",
    callsign: "MXX-03",
    initials: "MX",
    role: "VETERAN · SICK HOP OG",
    origin: "ORANGE, NJ",
    verse: "—",
    tagline: "Lo Key produced his first two albums, 'In The Absence of Sanity' and 'Sick Hop' (2003). Devils Rejects, MISSION:INFECT veteran.",
    image: "images/maddmaxxx.jpg",
    portrait:
      "radial-gradient(120% 90% at 30% 20%, oklch(0.7 0.22 138 / 0.55), transparent 60%), radial-gradient(80% 80% at 70% 80%, oklch(0.45 0.2 28 / 0.6), transparent 55%), linear-gradient(155deg, #0a1208, #03100a 55%, #0a0503)",
    links: [
      { label: "BANDCAMP", url: "https://maddmaxxx.bandcamp.com", icon: "B" },
      { label: "REVERBNATION", url: "http://www.reverbnation.com/maddmaxxx", icon: "♪" },
    ],
  },
  krux_1: {
    id: "krux_1",
    name: "KRUX 1",
    callsign: "KRX-01",
    initials: "KX",
    role: "NEW RECRUIT",
    origin: "SOUTH FLORIDA",
    verse: "—",
    tagline: "Biomechanical anomaly. High-speed delivery and alien vocal precision. Founding member of Neon Sermon.",
    image: "images/krux1.jpg",
    portrait:
      "radial-gradient(95% 95% at 25% 25%, oklch(0.78 0.2 145 / 0.5), transparent 60%), radial-gradient(80% 80% at 75% 85%, oklch(0.38 0.2 25 / 0.55), transparent 55%), linear-gradient(175deg, #061206, #030a05 55%, #0a0604)",
    links: [
      { label: "LINKTREE", url: "https://linktr.ee/krux.one", icon: "⌘" },
    ],
  },
  fia_fawn: {
    id: "fia_fawn",
    name: "FIA FAWN",
    callsign: "F14-FWN",
    initials: "FF",
    role: "NEW RECRUIT",
    origin: "OFF-GRID",
    verse: "—",
    tagline: "Australian hip-hop artist and visual illustrator (jadestongue). Makes her own beats. Featured on Bullets & Spraypaint.",
    image: "images/fiafawn.jpg",
    portrait:
      "radial-gradient(100% 90% at 80% 20%, oklch(0.74 0.22 140 / 0.55), transparent 60%), radial-gradient(70% 80% at 20% 80%, oklch(0.5 0.19 20 / 0.6), transparent 55%), linear-gradient(200deg, #020a04, #100804 60%, #050303)",
    links: [
      { label: "SPOTIFY", url: "https://open.spotify.com/artist/580VXT0VWdphWB9J1tFdcH", icon: "S" },
      { label: "INSTAGRAM", url: "https://www.instagram.com/fiafawn/", icon: "◎" },
      { label: "YOUTUBE", url: "https://www.youtube.com/@JadeTongue", icon: "▶" },
      { label: "ART", url: "https://www.instagram.com/jadestongue/", icon: "◇" },
    ],
  },
  saint_sinna: {
    id: "saint_sinna",
    name: "SAINT SINNA",
    callsign: "STS-07",
    initials: "SS",
    role: "BIO KILLAZ DIVISION · OG",
    origin: "HILLSDALE, MI",
    verse: "—",
    tagline: "Founding member of horrorcore outfit BIO KILLAZ. Recruited into MISSION:INFECT in 2007. Cuts straight to the core.",
    image: "images/saintsinna.jpg",
    portrait:
      "radial-gradient(100% 90% at 20% 30%, oklch(0.7 0.22 140 / 0.55), transparent 60%), radial-gradient(70% 80% at 80% 80%, oklch(0.4 0.2 30 / 0.6), transparent 55%), linear-gradient(170deg, #030e04, #0a0a08 55%, #080303)",
    links: [
      { label: "BANDCAMP", url: "https://saintsinnaproductions.bandcamp.com", icon: "B" },
      { label: "WEBSITE", url: "https://www.biokillaz.com", icon: "⌘" },
      { label: "BEATS", url: "https://saintsinnabeats.com", icon: "♪" },
      { label: "FACEBOOK", url: "https://www.facebook.com/share/1Kuu6dY9f7", icon: "f" },
    ],
  },
  // ----------------------------------------------------------
  //  HIDDEN — does not show up in the §04 roster, but the
  //  player swaps the artist card to him during his verse.
  //  Drop the press photo URL into `image` when ready.
  // ----------------------------------------------------------
  mr_grey: {
    id: "mr_grey",
    name: "MR. GREY",
    callsign: "GR3Y-//",
    initials: "MG",
    role: "TRANSMISSION · UNKNOWN ORIGIN",
    origin: "[REDACTED]",
    verse: "—",
    tagline: "Voice on the wire. Source unconfirmed.",
    image: "images/mrgrey.jpg",
    portrait:
      "radial-gradient(110% 90% at 30% 20%, oklch(0.55 0.02 240 / 0.55), transparent 60%), radial-gradient(70% 80% at 70% 80%, oklch(0.3 0.04 240 / 0.6), transparent 55%), linear-gradient(155deg, #1a1a1f, #0a0a10 55%, #050507)",
    links: [],
    hidden: true,
  },
};

// ============================================================
//  TRACKS
//  The whole album drops Friday, April 24, 2026.
// ============================================================

const TRACKS = [
  {
    id: "t01",
    title: "INCOMING TRANSMISSION",
    payload: "INTRO",
    duration: 102, // 1:42
    audio: "audio/01. Incoming Transmission.mp3",
    explicit: false,
    artistIds: ["lo_key"],
    verses: [
      { id: "v1", label: "HOST · LO KEY", start: 0, end: 102, artistId: "lo_key" },
    ],
  },
  {
    id: "t02",
    title: "THROW EM UP (PT. 2)",
    payload: "LEAD SINGLE",
    duration: 149, // 2:29
    audio: "audio/02. Throw Em Up Pt. 2.mp3",
    explicit: true,
    artistIds: ["lo_key", "badluck"],
    verses: [
      { id: "v1", label: "INTRO · BADLUCK", start: 0,   end: 22,  artistId: "badluck" },
      { id: "v2", label: "LO KEY",          start: 22,  end: 32,  artistId: "lo_key" },
      { id: "v3", label: "BADLUCK",         start: 32,  end: 43,  artistId: "badluck" },
      { id: "v4", label: "LO KEY",          start: 43,  end: 86,  artistId: "lo_key" },
      { id: "v5", label: "BADLUCK",         start: 86,  end: 96,  artistId: "badluck" },
      { id: "v6", label: "LO KEY",          start: 96,  end: 107, artistId: "lo_key" },
      { id: "v7", label: "BADLUCK",         start: 107, end: 117, artistId: "badluck" },
      { id: "v8", label: "LO KEY",          start: 117, end: 149, artistId: "lo_key" },
    ],
  },
  {
    id: "t03",
    title: "BODY DROP",
    payload: "POSSE CUT",
    duration: 182, // 3:02
    audio: "audio/03. Body Drop.mp3",
    explicit: true,
    artistIds: ["lo_key", "zero", "madd_maxxx", "malaria"],
    verses: [
      { id: "v1", label: "LO KEY",     start: 0,   end: 64,  artistId: "lo_key" },
      { id: "v2", label: "ZERO",       start: 64,  end: 100, artistId: "zero" },
      { id: "v3", label: "LO KEY",     start: 100, end: 118, artistId: "lo_key" },
      { id: "v4", label: "MADD MAXXX", start: 118, end: 137, artistId: "madd_maxxx" },
      { id: "v5", label: "MALARIA",    start: 137, end: 155, artistId: "malaria" },
      { id: "v6", label: "LO KEY",     start: 155, end: 182, artistId: "lo_key" },
    ],
  },
  {
    id: "t04",
    title: "BRING THE NOISE",
    payload: "POSSE CUT",
    duration: 183, // 3:03
    audio: "audio/04. Bring The Noise.mp3",
    explicit: true,
    artistIds: ["krux_1", "lo_key", "dubbs"],
    verses: [
      { id: "v1", label: "INTRO · KRUX 1", start: 0,   end: 18,  artistId: "krux_1" },
      { id: "v2", label: "LO KEY",         start: 18,  end: 73,  artistId: "lo_key" },
      { id: "v3", label: "DUBBS",          start: 73,  end: 110, artistId: "dubbs" },
      { id: "v4", label: "LO KEY",         start: 110, end: 128, artistId: "lo_key" },
      { id: "v5", label: "KRUX 1",         start: 128, end: 164, artistId: "krux_1" },
      { id: "v6", label: "LO KEY",         start: 164, end: 183, artistId: "lo_key" },
    ],
  },
  {
    id: "t05",
    title: "CALL 2 ARMS",
    payload: "BOOM BAP SHIT",
    duration: 172, // 2:52
    audio: "audio/05. Call 2 Arms.mp3",
    explicit: true,
    artistIds: ["dubbs", "lo_key"],
    verses: [
      { id: "v1", label: "INTRO · DUBBS", start: 0,   end: 36,  artistId: "dubbs" },
      { id: "v2", label: "LO KEY",        start: 36,  end: 54,  artistId: "lo_key" },
      { id: "v3", label: "DUBBS",         start: 54,  end: 72,  artistId: "dubbs" },
      { id: "v4", label: "LO KEY",        start: 72,  end: 117, artistId: "lo_key" },
      { id: "v5", label: "DUBBS",         start: 117, end: 136, artistId: "dubbs" },
      { id: "v6", label: "LO KEY",        start: 136, end: 154, artistId: "lo_key" },
      { id: "v7", label: "DUBBS",         start: 154, end: 172, artistId: "dubbs" },
    ],
  },
  {
    id: "t06",
    title: "BULLETS & SPRAYPAINT",
    payload: "NO HATE",
    duration: 117, // 1:57
    audio: "audio/06. Bullets & Spraypaint.mp3",
    explicit: true,
    artistIds: ["lo_key", "fia_fawn"],
    verses: [
      { id: "v1", label: "LO KEY",   start: 0,  end: 61,  artistId: "lo_key" },
      { id: "v2", label: "FIA FAWN", start: 61, end: 97,  artistId: "fia_fawn" },
      { id: "v3", label: "LO KEY",   start: 97, end: 117, artistId: "lo_key" },
    ],
  },
  {
    id: "t07",
    title: "SOLDIERS OF DEATH",
    payload: "POSSE CUT",
    duration: 256, // 4:16
    audio: "audio/07. Soldiers of Death.mp3",
    explicit: true,
    artistIds: ["malaria", "lo_key", "dubbs", "madd_maxxx", "saint_sinna"],
    verses: [
      { id: "v1", label: "INTRO · MALARIA", start: 0,   end: 64,  artistId: "malaria" },
      { id: "v2", label: "LO KEY",          start: 64,  end: 106, artistId: "lo_key" },
      { id: "v3", label: "DUBBS",           start: 106, end: 128, artistId: "dubbs" },
      { id: "v4", label: "MADD MAXXX",      start: 128, end: 171, artistId: "madd_maxxx" },
      { id: "v5", label: "SAINT SINNA",     start: 171, end: 213, artistId: "saint_sinna" },
      { id: "v6", label: "DUBBS",           start: 213, end: 256, artistId: "dubbs" },
    ],
  },
  {
    id: "t08",
    title: "MESSAGE FROM GREY",
    payload: "TRANSMISSION",
    duration: 44, // 0:44
    audio: "audio/08. Message From Grey.mp3",
    explicit: false,
    artistIds: ["mr_grey"],
    verses: [
      { id: "v1", label: "TRANSMISSION · MR. GREY", start: 0, end: 44, artistId: "mr_grey" },
    ],
  },
  {
    id: "t09",
    title: "CONTAGION",
    payload: "AUDIO ADVENTURE",
    duration: 187, // 3:07
    audio: "audio/09. Contagion.mp3",
    explicit: true,
    artistIds: ["mr_grey", "lo_key", "zero", "madd_maxxx"],
    verses: [
      { id: "v1", label: "INTRO · MR. GREY", start: 0,   end: 15,  artistId: "mr_grey" },
      { id: "v2", label: "LO KEY",           start: 15,  end: 62,  artistId: "lo_key" },
      { id: "v3", label: "ZERO",             start: 62,  end: 93,  artistId: "zero" },
      { id: "v4", label: "LO KEY",           start: 93,  end: 108, artistId: "lo_key" },
      { id: "v5", label: "MADD MAXXX",       start: 108, end: 139, artistId: "madd_maxxx" },
      { id: "v6", label: "LO KEY",           start: 139, end: 171, artistId: "lo_key" },
      { id: "v7", label: "OUTRO · MR. GREY", start: 171, end: 187, artistId: "mr_grey" },
    ],
  },
  {
    id: "t10",
    title: "BLACKOUT",
    payload: "GRID KILLER",
    duration: 235, // 3:55
    audio: "audio/10. BLACKOUT.mp3",
    explicit: true,
    artistIds: ["zero", "lo_key", "dubbs", "badluck"],
    verses: [
      { id: "v1", label: "INTRO · ZERO", start: 0,   end: 23,  artistId: "zero" },
      { id: "v2", label: "LO KEY",       start: 23,  end: 58,  artistId: "lo_key" },
      { id: "v3", label: "DUBBS",        start: 58,  end: 82,  artistId: "dubbs" },
      { id: "v4", label: "LO KEY",       start: 82,  end: 118, artistId: "lo_key" },
      { id: "v5", label: "BADLUCK",      start: 118, end: 142, artistId: "badluck" },
      { id: "v6", label: "LO KEY",       start: 142, end: 176, artistId: "lo_key" },
      { id: "v7", label: "ZERO",         start: 176, end: 199, artistId: "zero" },
      { id: "v8", label: "LO KEY",       start: 199, end: 235, artistId: "lo_key" },
    ],
  },
  {
    id: "t11",
    title: "STARTING OVER",
    payload: "GOING DARK",
    duration: 275, // 4:35
    audio: "audio/11. Starting Over.mp3",
    explicit: true,
    artistIds: ["lo_key", "malaria", "dubbs"],
    verses: [
      { id: "v1", label: "LO KEY",  start: 0,   end: 108, artistId: "lo_key" },
      { id: "v2", label: "MALARIA", start: 108, end: 173, artistId: "malaria" },
      { id: "v3", label: "LO KEY",  start: 173, end: 195, artistId: "lo_key" },
      { id: "v4", label: "DUBBS",   start: 195, end: 237, artistId: "dubbs" },
      { id: "v5", label: "LO KEY",  start: 237, end: 275, artistId: "lo_key" },
    ],
  },
];

Object.assign(window, { ARTISTS, TRACKS });
