import { useState } from "react";

const platforms = [
  {
    id: "spotify",
    name: "Spotify for Artists",
    url: "artists.spotify.com",
    emoji: "🟢",
    tier: "Tier 1 — Essential",
    tierColor: "#1DB954",
    overview: "The largest streaming platform globally. 751M+ MAU as of Q4 2025. Your single most important DSP for discovery, algorithmic growth, and streaming revenue. Free to use.",
    payRate: "$0.003–$0.005",
    payNote: "per stream (varies by listener country + tier)",
    freeVsPaid: {
      free: ["Full analytics dashboard", "Artist profile management", "Editorial playlist pitching tool", "Canvas (short video loop behind tracks)", "Clips (short video posts)", "Marquee targeting preview", "Concert tour dates + ticketing links", "Real-time streaming data", "Fan demographics (age, gender, city)", "Playlist adds tracking", "Source of streams breakdown"],
      paid: ["Marquee (paid push notification campaigns — starts ~$250 min spend)", "Showcase (paid sponsored recommendations on Home tab)", "Discovery Mode (opt-in algorithmic boost in exchange for reduced royalty rate — free to opt in, but you earn less per stream)"]
    },
    profileAudit: [
      "Claim and verify your profile at artists.spotify.com",
      "Upload a high-quality artist photo (at minimum 1000x1000px, ideally 2000x2000px)",
      "Write a compelling bio — lead with genre/sound, not your origin story",
      "Add all social media links (Instagram, TikTok, YouTube, etc.)",
      "Pin your best or most recent release to the top of your profile",
      "Enable concert/tour dates via Songkick or Ticketmaster integration",
      "Check that your artist name matches across all platforms (capitalization, spacing)",
      "Verify that all your music is attributed to you, not orphaned on a Topic channel",
      "Make sure your genre tags are accurate in your distributor metadata — they feed Spotify's categorization"
    ],
    releasing: [
      "Submit a pitch at LEAST 7 days before release (preferably 3–4 weeks) via the Spotify for Artists pitch tool",
      "Pitch one song per release — pick the most representative track, not necessarily your personal favorite",
      "Fill out every field: genre, mood, instruments, story behind the song — these feed editorial decisions",
      "Ensure your distributor delivers music to Spotify at least 2–3 weeks ahead of release date",
      "Set up Canvas (3–8 second looping video) for every track — studies show higher save rates",
      "Build a pre-save campaign via your distributor or a tool like Feature.fm or ToneDen",
      "Release on Fridays (New Music Friday cycle) unless you have a strategic reason not to",
      "Tell your existing fans to follow your profile — follower count triggers Release Radar adds",
      "Ask fans to save and add to playlists — save rate and skip rate in first 30 seconds are key algorithm signals",
      "Monitor in Spotify for Artists: source of streams, listener saves, playlist adds in first 72 hours"
    ],
    maintenance: [
      "Log in weekly — check stream sources, listener drop-offs, playlist adds",
      "Watch your save rate: below 10% is weak, above 20% starts triggering algorithmic support",
      "Update your artist bio and photo seasonally or around major releases",
      "Keep your Canvas videos fresh — update them with new releases",
      "Track which cities/countries are growing — use this to plan touring and regional promotion",
      "Use the 'Audience' tab to monitor follower trends and demographic shifts",
      "Check your Release Radar performance — it tells you how your follower base is engaging",
      "Identify your top tracks and consider adding them to a self-curated playlist on your profile",
      "Monitor Marquee and Discovery Mode performance if you run paid campaigns"
    ],
    editorial: "Editorial pitching is done directly inside Spotify for Artists — no third party needed. Submit before release. You get ONE pitch per track. Spotify's editorial team reviews pitches for placement on curated playlists like New Music Friday, RADAR, genre-specific playlists, and mood playlists. Algorithmic playlists (Discover Weekly, Release Radar, Radio) are driven by listener behavior data, not pitching.",
    notes: "Discovery Mode reduces your per-stream rate in exchange for algorithmic boost — not recommended unless you have a significant catalog. Marquee and Showcase require a minimum spend and are more useful once you have an established fan base to retarget."
  },
  {
    id: "apple",
    name: "Apple Music for Artists",
    url: "artists.apple.com",
    emoji: "⚫",
    tier: "Tier 1 — Essential",
    tierColor: "#FA233B",
    overview: "Second most important DSP. 88M+ subscribers, all paying — no free tier means higher per-stream rates. Apple relaunched Apple Music Connect in February 2026 as a full marketing suite. iOS app required for pitching.",
    payRate: "$0.007–$0.01",
    payNote: "per stream — roughly 2x Spotify's rate",
    freeVsPaid: {
      free: ["Full analytics dashboard (plays, listeners, Shazams, purchases)", "Shazam data integration — shows where listeners discover you in the wild", "Apple Music Connect marketing suite (launched Feb 2026)", "Apple Music Pitch tool (editorial playlist submission)", "Milestones shareable social assets", "Year-over-year performance comparison (Replay metrics)", "Listener demographics and geographic data", "Pre-add campaign tracking", "Spatial Audio/Dolby Atmos indicator for eligible tracks"],
      paid: ["Dolby Atmos/Spatial Audio mix delivery (handled via distributor — may incur cost depending on service)", "Apple does not currently offer self-serve paid advertising inside the artist portal"]
    },
    profileAudit: [
      "Claim your profile at artists.apple.com using your Apple ID",
      "Verify through your distributor if not auto-verified",
      "Upload artist photos: Hero image (4320x1080px) and Profile image (1000x1000px minimum)",
      "Write a full bio — Apple displays more bio text than Spotify, so use the space",
      "Connect all social accounts",
      "Verify that your music appears in your full discography — flag any missing releases to your distributor",
      "Check your Shazam data to understand where organic discovery is happening",
      "Ensure your genre/subgenre metadata is accurate — Apple's editorial team uses it for placement consideration",
      "If you have Spatial Audio/Dolby Atmos mixes, verify they appear as Atmos tracks in your profile"
    ],
    releasing: [
      "Submit editorial pitch via Apple Music for Artists app (iOS only for pitching as of 2026 — analytics available on web)",
      "Pitch through the Apple Music Pitch tool inside the Connect suite at musicconnect.apple.com",
      "You get ONE pitch per song — no resubmits after release",
      "Include detailed context: genre, mood, story, and any pre-existing momentum (pre-adds, press)",
      "Set up pre-add campaign through your distributor — strong pre-adds strengthen editorial case",
      "Dolby Atmos/Spatial Audio mixes are prioritized for editorial consideration — submit if you have them",
      "Deliver music to Apple at least 3 weeks before release — Apple's editorial lead time is longer than Spotify's",
      "Coordinate social/press around release day to show Apple organic demand signal",
      "After release, monitor Shazam spikes — they feed algorithmic recommendation (New Music Mix, Discovery Station)"
    ],
    maintenance: [
      "Review Shazam data monthly — geographic Shazam hotspots indicate where to invest in promo",
      "Use Replay metrics for year-over-year comparisons to benchmark growth",
      "Update artist photos and bio around major releases",
      "Monitor Discovery Station and New Music Mix performance — algorithmic placements from Apple's 'algo-torial' system",
      "Track listener completion rates — Apple weights full listens heavily",
      "Note your top cities and countries and cross-reference with Spotify and tour routing",
      "Check that new releases are linking correctly to your profile vs. orphan pages",
      "Use Apple Music Connect to share social assets from milestones (100k plays, chart placements, etc.)"
    ],
    editorial: "Apple Music editorial pitching is done inside the Apple Music for Artists iOS app (or via Apple Music Connect at musicconnect.apple.com). Apple's team makes decisions based on sonic fit, momentum signals, and the pitch context you provide. There is no algorithmic pitching shortcut — human curators review pitches. Some distributors (RouteNote, DistroKid, etc.) offer Apple editorial outreach as an add-on, but direct pitching via the app is free and always available.",
    notes: "Apple pays significantly more per stream than Spotify. If your audience skews Apple users (often older, paying subscribers), prioritizing your Apple presence can meaningfully increase royalty income. Spatial Audio mixes get editorial preference — worth investing in if your budget allows."
  },
  {
    id: "soundcloud",
    name: "SoundCloud for Artists",
    url: "soundcloud.com",
    emoji: "🟠",
    tier: "Tier 1 — Essential for Discovery",
    tierColor: "#FF5500",
    overview: "The original indie platform. 320M+ tracks, 40M+ artists. Unique Fan-Powered Royalties (FPR) model means your actual fans' subscription fees flow directly to you — not into a global pool. Critical for community building, DJ/electronic scenes, and releasing music fast without full distributor infrastructure.",
    payRate: "$0.002–$0.004 (FPR)",
    payNote: "varies; only paid subscriber plays count toward FPR",
    freeVsPaid: {
      free: ["Upload up to 3 hours of music", "Basic play counts", "Public profile", "Waveform comments (unique to SoundCloud)", "Reposts"],
      paid: ["Artist plan ($3.25/mo): 3 hours upload, distribute/monetize 2 tracks/month, boost feature (100+ new listeners), 1 AI master/month, basic stats", "Artist Pro ($8.25/mo or $99/yr): Unlimited uploads, full distribution to 60+ DSPs, Fan-Powered Royalties, advanced analytics, SoundCloud Next fan subscriptions eligibility, all stats", "Note: SoundCloud eliminated its 20% distribution rev share in Nov 2025 — Artist Pro now keeps 100% of distribution royalties"]
    },
    profileAudit: [
      "Complete your profile: artist photo, header image, bio, links",
      "Set your genre and location accurately",
      "Connect Instagram, Twitter/X, and Facebook",
      "Organize your tracks — pin your best recent work to the top",
      "Add a 'Buy' link on tracks (linking to Bandcamp, your store, etc.)",
      "Use your real artist name consistently with all other platforms",
      "Create playlists to organize your catalog (EPs, vibes, collaborations)",
      "Enable comments on tracks — SoundCloud comments are a valuable community signal",
      "Verify that all tracks have proper metadata (title, genre, tags, description)"
    ],
    releasing: [
      "Upload directly or via Artist Pro distribution — direct uploads go live immediately for no extra wait",
      "Use rich tags (genre, mood, BPM if electronic) — these drive SoundCloud discovery",
      "Write a detailed track description with context, credits, and social links",
      "Enable downloads on free tracks to drive engagement",
      "Schedule release to coordinate with distributor deliveries to other DSPs",
      "Share to your SoundCloud followers immediately at upload — reposts from other artists amplify reach",
      "Use the Repost Network (available on Artist Pro) to push to SoundCloud partner channels",
      "Add a buy/support link to Bandcamp or your merch store",
      "If eligible (1,000+ followers), consider SoundCloud Next fan subscription — recurring income"
    ],
    maintenance: [
      "Post regularly — SoundCloud's algorithm favors active accounts",
      "Engage with waveform comments on your tracks and respond to fans",
      "Repost music from artists in your genre — builds community and reciprocal reposts",
      "Check your stats in Artist Pro: plays by country, source, device type",
      "Monitor Fan-Powered Royalties dashboard to see which fans are generating the most revenue",
      "Use the Spotlight feature to pin tracks and playlists",
      "Follow and interact with music blogs, playlist curators, and DJs active on the platform",
      "Update your profile for major releases"
    ],
    editorial: "SoundCloud does not have a formal editorial pitching tool for independent artists. Discovery happens via algorithmic recommendations (based on tags, engagement, and listening patterns), reposts from other users, community engagement, and SoundCloud's own editorial team discovering music organically. There is no submission form. Best practice: use accurate tags, engage authentically, build community, and get reposts from established accounts in your genre.",
    notes: "SoundCloud is uniquely valuable for fast feedback — you can upload a rough version and see real-time waveform comments. The Fan-Powered Royalty model genuinely rewards artists with engaged, dedicated listeners over those with passive discovery streams. As of Nov 2025, Artist Pro distribution is competitively priced vs. DistroKid."
  },
  {
    id: "amazon",
    name: "Amazon Music for Artists",
    url: "artists.amazonmusic.com",
    emoji: "🔵",
    tier: "Tier 1 — Essential",
    tierColor: "#00A8E1",
    overview: "100M subscribers as of 2026, third-largest DSP globally. Audience skews 35–54, higher-spending, often Prime bundlers. Alexa voice integration drives 47% of listening on Echo devices. The Amazon Music for Artists app (web + mobile) is free and includes real-time data.",
    payRate: "$0.004–$0.0096",
    payNote: "per stream (varies by tier — Unlimited subscribers pay more than Prime Included listeners)",
    freeVsPaid: {
      free: ["Amazon Music for Artists dashboard (web + mobile app)", "Real-time streaming analytics", "Listener demographics (age, country, device type) updated within 48 hours", "Follower growth tracking", "Playlist add tracking", "Artist Marketing Toolkit (AMT) — profile management, bio, pinning tracks", "Tour date linking", "Twitch integration (for artists active on Twitch)", "Amazon Store artist page integration"],
      paid: ["Amazon Ads / DSP advertising (separate Amazon Ads platform — external to artist dashboard, requires budget)", "No paid tools inside the free artist dashboard itself"]
    },
    profileAudit: [
      "Claim your profile via Amazon Music for Artists app or web dashboard",
      "Upload high-resolution artist photo and header image",
      "Write your bio — Amazon displays it prominently on the artist page",
      "Pin your best or most current release to your artist profile homepage",
      "Add tour dates if applicable",
      "Connect your Twitch channel if you stream",
      "Verify your Amazon Store artist page if you sell physical products or merch on Amazon",
      "Ensure all releases are linked to your artist profile, not split across multiple entries",
      "Confirm your genre tags are accurate via your distributor metadata"
    ],
    releasing: [
      "Distribute via your distributor (DistroKid, TuneCore, CD Baby, etc.) — no direct upload to Amazon",
      "Amazon does not have a self-serve editorial pitching tool like Spotify — outreach goes through your distributor's Amazon editorial relationships, or via a PR team",
      "Plan your release 2–3 weeks ahead — Amazon's editorial team works in advance",
      "Use the AMT to pin your new single/album on your profile before release day",
      "Alexa-optimized metadata matters: ensure your release title and artist name are spelled phonetically correctly (Amazon's voice search is a real discovery surface)",
      "Request Amazon Originals consideration through your distributor or manager if you have an established relationship",
      "Monitor 'New for Prime' and 'Breakthrough Artists' programs — ask your distributor about nomination processes",
      "Consider Spatial Audio/Immersive Audio delivery — Amazon Music HD and Ultra HD subscribers get better algorithmic surface"
    ],
    maintenance: [
      "Check your dashboard weekly for streaming trends, new followers, and playlist placements",
      "Amazon's audience skews older — if you see strong Amazon numbers, consider merchandise/vinyl as a revenue strategy",
      "Track which Echo/Alexa device types are driving plays — voice listeners often have longer session times",
      "Monitor country breakdowns — Amazon has strong US, UK, Germany, and Japan audiences",
      "Keep your bio and profile image current",
      "Use the AMT to update pinned content seasonally"
    ],
    editorial: "Amazon does not currently have a self-serve editorial pitching form for independent artists. Editorial placements happen through: (1) your distributor's editorial relationships, (2) organic discovery by Amazon's curation team, (3) the 'Amazon Music: Artists to Watch' annual program (nomination-based), and (4) Amazon Originals (invite-only recording sessions). If you work with a publicist or distributor with editorial connections, request Amazon editorial outreach specifically.",
    notes: "Amazon's per-stream rate is notably higher than Spotify's on the Unlimited tier. The platform is often deprioritized by indie artists — a mistake, especially for artists whose fanbase is older or who sell merchandise, as Amazon's ecosystem integration is unique."
  },
  {
    id: "youtube",
    name: "YouTube / YouTube Music",
    url: "studio.youtube.com",
    emoji: "🔴",
    tier: "Tier 1 — Essential",
    tierColor: "#FF0000",
    overview: "The world's second-largest search engine and the #1 music discovery platform globally. YouTube Studio is free. Every artist needs an Official Artist Channel (OAC). YouTube Music is separate from YouTube but both are managed via the same Studio backend.",
    payRate: "$0.001–$0.003 (Content ID) / $5.28 per 1,000 (Art Tracks avg)",
    payNote: "Content ID pays on UGC usage of your music; Art Tracks (auto-generated) vary widely by geography",
    freeVsPaid: {
      free: ["YouTube Studio (full analytics dashboard)", "Official Artist Channel (OAC) — free via distributor request", "YouTube Analytics for Artists (expanded dashboard for OAC holders)", "Song Rollup (cross-channel performance per track)", "Fandom tier breakdowns (Superfans vs casual)", "Content ID (managed via your distributor)", "Community Posts (fan engagement)", "YouTube Shorts integration", "Premieres (scheduled release events with countdown + live chat)", "Chapters, end screens, cards, info panels"],
      paid: ["YouTube Ads / Google Ads for music video promotion (external spend — no minimum but campaigns under ~$500 typically underperform)", "YouTube BrandConnect for creator partnerships (invite-based)"]
    },
    profileAudit: [
      "Request an Official Artist Channel (OAC) through your distributor — requires at least 3 official releases live on YouTube",
      "OAC merges your Topic channel, Vevo channel (if applicable), and your owned channel into one verified destination",
      "Set a compelling channel trailer (30–60 seconds of your best content — converts 15–20% of visitors to subscribers)",
      "Upload a channel banner (2560x1440px) and profile picture consistent with your other DSP branding",
      "Write a full channel description with links to all your other platforms",
      "Organize your content into playlists: 'Official Music Videos,' 'Lyric Videos,' 'Live,' 'Behind the Scenes'",
      "Add your website and social links in the 'About' section",
      "Verify your channel (adds phone-to-channel association, unlocks custom thumbnails and live streaming)",
      "Enable Content ID through your distributor to claim UGC using your music"
    ],
    releasing: [
      "Upload music videos as Unlisted, then make Public at your release time — or use Premiere for scheduled drops",
      "Use Premieres for new videos: creates a countdown page, fan chat, and drives notification to subscribers",
      "Create a custom thumbnail for every video — 1280x720px minimum, high contrast, faces convert well",
      "Write keyword-rich titles and descriptions — YouTube is a search engine",
      "Add chapters to longer videos (timestamps in the description)",
      "Include cards and end screens linking to your other videos or subscription prompt",
      "Cross-post as YouTube Shorts (vertical clips from your videos, reels, or behind-the-scenes) — Shorts drive subscribers",
      "Set up your Art Track via your distributor — this is an auto-generated YouTube Music track tied to your OAC",
      "Coordinate YouTube publish with Spotify/Apple release date for full album/single campaigns",
      "Tag your video with relevant keywords (genre, mood, similar artists)"
    ],
    maintenance: [
      "Check YouTube Studio analytics weekly: views, watch time, subscribers, revenue",
      "Monitor YouTube Analytics for Artists (inside Studio for OAC holders): Song Rollup, Fandom tiers, cross-channel Total Reach",
      "Track audience retention graphs — see exactly where viewers drop off and optimize future videos",
      "Review 'Traffic sources' tab: YouTube Search vs. Browse vs. Suggested is critical for SEO strategy",
      "Check Content ID claims — ensure your music is generating revenue on UGC rather than just blocking it",
      "Update thumbnails on underperforming videos (15–30% revival rate from thumbnail refreshes)",
      "Post Community updates between releases (text posts, polls, behind-the-scenes photos) to maintain algorithm activity",
      "Build themed playlists (e.g. 'Best of [Artist Name] 2022–2026') — gives YouTube reasons to resurface catalog"
    ],
    editorial: "YouTube does not have a traditional editorial playlist pitch tool for independent artists. Editorial/algorithmic placement on YouTube Music happens via: (1) OAC status boosts New Release Mix visibility, (2) strong Art Track performance via your distributor, (3) YouTube Shorts virality feeding long-form recommendations, (4) organic discovery by YouTube Music's curation team. There is no submission form. For YouTube Music-specific playlist consideration, your distributor may have editorial contacts — ask them specifically.",
    notes: "Geography matters enormously on YouTube: a US viewer can generate 10–15x the revenue of a viewer from certain other countries. OAC is non-negotiable — without it, your music is scattered across multiple Topic channels with no central profile. Content ID ensures you're earning on every use of your music, even by other creators."
  },
  {
    id: "pandora",
    name: "Pandora AMP",
    url: "amp.pandora.com",
    emoji: "🔷",
    tier: "Tier 2 — Important (US-focused)",
    tierColor: "#3668FF",
    overview: "US-only radio-style platform with 6M+ active listeners. Pandora's Music Genome Project analyzes up to 450 musicological attributes per track to place you in radio station rotation. AMP (Artist Marketing Platform) is free after profile claim and provides unique radio-format promotional tools unavailable anywhere else.",
    payRate: "$0.001–$0.002",
    payNote: "per stream (lower due to radio/non-interactive model)",
    freeVsPaid: {
      free: ["Full AMP analytics dashboard: spin counts, stations, market reach, demographics", "Artist Audio Messages (record personalized audio for your listeners between songs)", "Featured Tracks (spotlight a specific track on your station)", "Pandora Stories (curated audio narrative — songs + artist commentary)", "Fan Campaigns (streamlined tool combining all above)", "Independent Artist Submissions (submit music for Music Genome Project analysis)", "Playlist/station placement visibility", "Catalog management tab", "Promote Show (if you have tour dates)"],
      paid: ["Paid advertising on Pandora is available through Pandora's ad platform — not inside AMP", "All AMP tools listed above are free"]
    },
    profileAudit: [
      "Distribute your music to Pandora via your distributor first — AMP requires your music to already be on the platform",
      "Claim your AMP profile at amp.pandora.com",
      "Submit for Music Genome Project analysis (do this immediately after claiming) — without analysis, your music won't play on radio stations",
      "Upload a high-quality artist photo",
      "Write a bio",
      "Verify all your releases appear in your Catalog tab",
      "Check for any rights blocks in your catalog and resolve via MRI if needed (AMP will show a 'Resolve' button)",
      "Connect team members if you have a manager or label rep via Team Management in settings"
    ],
    releasing: [
      "AMP Fan Campaigns: launch a 'Featured Track' campaign — pins your new single to your artist station, playing it more frequently to your existing listeners",
      "Create an Artist Audio Message (record via iPhone voice memo): a personal audio message to fans that plays before your track on their station — very high engagement",
      "Build a Pandora Story: narrative playlist with audio commentary — great for album releases or telling the story behind an EP",
      "Use 'Promote Single' and 'Promote Show' tools in Fan Campaigns for tour dates and new releases",
      "New 'Recommended' feature in Featured Tracks uses Pandora's algorithm to suggest which of your tracks to feature — worth checking",
      "Make sure Music Genome Project analysis is complete before release day (submit during distributor delivery, not after)"
    ],
    maintenance: [
      "Check AMP analytics monthly: spins by market, demographics (age, gender, location), top stations",
      "Pandora's audience skews slightly older than Spotify — note this in your demographic data",
      "Run Artist Audio Messages around major milestones (tours, new albums, holidays)",
      "AMP campaigns only reach US listeners — factor this into your expectations",
      "Monitor which stations are playing your music — you can see exactly what playlists/stations you've been placed on",
      "Update your AMP profile photo and bio around major releases",
      "Check 'Resolve' flags in your catalog tab for any rights blocks"
    ],
    editorial: "Pandora's editorial/curation is handled by their in-house team and the Music Genome Project algorithm. After your music is analyzed by the Music Genome Project (happens automatically after you submit via AMP), it will start playing on relevant radio stations. There is no traditional editorial pitch form. The closest equivalent is submitting for Music Genome Project analysis (free, via AMP) and using the Featured Track tool to boost a specific track. AMP now also shows you which Pandora editorial playlists and stations have placed your music.",
    notes: "Pandora is US-only. If your fanbase or target market is international, it's less critical. But for US-focused artists, especially in country, rock, pop, and R&B, Pandora's radio model can deliver significant passive reach to listeners who wouldn't find you on Spotify."
  },
  {
    id: "deezer",
    name: "Deezer for Creators",
    url: "creators.deezer.com",
    emoji: "🟣",
    tier: "Tier 2 — Important (International)",
    tierColor: "#A238FF",
    overview: "Strong in Europe, Latin America, and Africa. 9.9M+ listeners. Noteworthy for its Artist-Centric Payment System (ACPS) — rewards active fan engagement rather than passive play counts. As of Feb 2026, is the only major DSP to sign a global statement on responsible AI training. Higher per-stream rates for tracks with genuine fan engagement.",
    payRate: "$0.005–$0.01+",
    payNote: "ACPS model rewards engaged listeners — higher than industry average for tracks with dedicated fanbases",
    freeVsPaid: {
      free: ["Deezer for Creators dashboard: stream counts, listener demographics, playlist placements", "Profile customization (bio, photos, links)", "Artist-Centric Payment System (ACPS) is automatic — no fee", "Playlist placement visibility", "Geographic listener data"],
      paid: ["No paid advertising tools inside Deezer for Creators currently", "Deezer does offer paid promotional programs through label/distributor partners — inquire with your distributor"]
    },
    profileAudit: [
      "Claim your profile at creators.deezer.com — verification takes 1–3 business days",
      "Upload artist photo and header image",
      "Write a full bio",
      "Add social links",
      "Verify all releases are attributed to your profile",
      "Confirm your genre and subgenre tags are accurate — Deezer's 'Flow' AI DJ personalizes by genre heavily",
      "Check your ACPS tier — Deezer rewards artists whose fans actively engage (repeat listens, saves, follows)"
    ],
    releasing: [
      "Distribute via your distributor — no direct upload to Deezer",
      "Pitch to Deezer editorial via your distributor's Deezer relationship or via a PR firm",
      "Deezer has a smaller editorial team than Spotify — relationships via distributor matter",
      "Focus on European and Latin American audiences specifically with any targeted social campaigns",
      "The ACPS system rewards genuine engagement — encourage fans to follow you on Deezer and listen repeatedly (not gaming, just authentic fan engagement)",
      "Deliver music at least 3 weeks ahead of release for editorial consideration"
    ],
    maintenance: [
      "Check Deezer for Creators analytics monthly",
      "Monitor geographic breakdown — if you see strong Deezer numbers in France, Brazil, or Africa, lean in",
      "Keep profile and bio up to date",
      "Verify that AI detection hasn't flagged any tracks (Deezer uses proprietary AI detection and blocks fully AI-generated tracks from editorial and algorithmic playlists)",
      "Track playlist placements — Deezer editorial placements in specific markets can be very impactful"
    ],
    editorial: "Deezer's editorial team curates playlists for specific markets (especially France, Belgium, Brazil, sub-Saharan Africa). Pitching is primarily through your distributor or a PR firm with Deezer relationships. There is no self-serve pitch tool like Spotify's. Independent artists can sometimes get placements through organic discovery by Deezer's team, especially for tracks gaining traction in European markets.",
    notes: "Deezer's Artist-Centric Payment System is the most artist-friendly royalty model among major DSPs — if you have a small but highly engaged fan base, your Deezer earnings may exceed what you'd expect from a platform this size. Worth monitoring. Deezer is also expanding in Africa, which is an underserved market for most indie artists."
  },
  {
    id: "tidal",
    name: "TIDAL for Artists",
    url: "tidal.com/artist",
    emoji: "⚪",
    tier: "Tier 2 — Important (Audiophile / Fan Depth)",
    tierColor: "#000000",
    overview: "3M subscribers, all paying, audiophile-focused. Highest per-stream rates of any major DSP. TIDAL launched 'Upload' in Nov 2025 — artists can now upload directly to TIDAL (up to 200 tracks) without a distributor. Note: Upload tracks do NOT earn royalties (they're for exposure only). Traditional distribution still needed for royalty-earning streams.",
    payRate: "$0.0128–$0.0133",
    payNote: "highest per-stream rate among major DSPs — all paid subscribers",
    freeVsPaid: {
      free: ["TIDAL Upload (direct upload, up to 200 tracks, metadata editing, public/private sharing)", "Play statistics and listener data for uploaded tracks", "TIDAL Spotlight editorial consideration (uploaded tracks eligible for $1,000 award through June 2026)", "Traditional artist profile via distributor delivery"],
      paid: ["TIDAL does not offer self-serve paid advertising for artists", "TIDAL Rising (editorial program) is invitation-based, not purchased"]
    },
    profileAudit: [
      "Claim your TIDAL artist profile via your distributor",
      "Upload artist photo and ensure bio is populated",
      "For Upload (direct feature): create a TIDAL account and enable Upload under settings",
      "Verify your full discography is connected to your artist profile",
      "Ensure HiFi/Master quality tracks are delivered — TIDAL's audience expects lossless audio quality",
      "Check that your artist name is consistent across TIDAL and all other platforms"
    ],
    releasing: [
      "Distribute royalty-earning releases via your distributor as normal",
      "Use TIDAL Upload for exclusive previews, demos, unreleased material, or content you want to share without distributor infrastructure",
      "Upload files up to 5GB each, max 200 tracks total per artist",
      "Uploaded tracks are eligible for TIDAL Spotlight editorial consideration (ongoing through June 2026 with $1,000 awards for selected tracks)",
      "For official releases, ensure Master/HiFi quality audio is delivered via your distributor",
      "TIDAL's audience is quality-focused — invest in proper mastering",
      "TIDAL Rising (editorial program): no submission form — TIDAL's editorial team discovers artists organically"
    ],
    maintenance: [
      "Monitor streaming stats for your distributed releases",
      "Check Upload stats separately for directly uploaded content",
      "TIDAL's audience is small but high-value — if you see strong TIDAL streams, that signals a particularly engaged, audiophile listener base",
      "Keep your profile photo and bio current",
      "Track any Spotlight editorial features — amplify them on social media"
    ],
    editorial: "TIDAL has two editorial tracks: (1) TIDAL Rising — an artist development program for breaking acts, invitation-based and not open to direct pitching. (2) TIDAL Spotlight — newly uploaded tracks via the Upload feature are considered by TIDAL's editorial team for spotlight features and cash awards ($1,000 per selected track, through June 2026). For traditional editorial playlist pitching, outreach happens via your distributor or publicist with TIDAL relationships.",
    notes: "Important distinction: TIDAL Upload ≠ royalty-earning distribution. Tracks uploaded directly do NOT generate streaming royalties. You still need a distributor for royalty-generating presence on TIDAL. Use Upload for demos, exclusives, and exposure. For royalty income, deliver through your normal distribution pipeline."
  },
  {
    id: "bandcamp",
    name: "Bandcamp",
    url: "bandcamp.com",
    emoji: "🟡",
    tier: "Tier 2 — Essential for Direct Revenue",
    tierColor: "#1DA0C3",
    overview: "The only major platform built entirely around direct artist-to-fan commerce. Artists keep 80–85% of every sale (Bandcamp takes 10–15% + payment processing). Not a streaming platform in the traditional sense — it's a storefront. Now owned by Beatport since late 2023. Bandcamp Daily editorial blog largely gone, but Bandcamp Friday (8 dates planned for 2026) is still active and hugely valuable.",
    payRate: "80–85% of sale price",
    payNote: "direct sales — set your own price. Bandcamp Friday: 100% to artists (Bandcamp waives its cut on 8 annual dates in 2026)",
    freeVsPaid: {
      free: ["Artist account and storefront (forever free)", "Upload music: albums, EPs, singles, compilations", "Set name-your-price or minimum price", "Sell digital downloads and physical merch", "Fan email addresses on purchase (critical data)", "Sales analytics", "Embed player for your website", "Pre-order setup", "Subscriber/follow feature"],
      paid: ["Bandcamp Pro ($10/month or $100/year): custom domain, subscriber messaging, Bandcamp app for selling at shows, advanced stats, batch download codes, physical fulfillment tools", "Standard plan is free and sufficient for most independent artists starting out"]
    },
    profileAudit: [
      "Create a Bandcamp artist account at bandcamp.com",
      "Choose your Bandcamp URL carefully — you can use a custom domain with Pro",
      "Customize your page with a banner, artist photo, and bio",
      "Upload your full discography — back catalog is valuable on Bandcamp",
      "Set pricing thoughtfully: name-your-price ($0 minimum) works well for building audience; minimum prices ($5–10 for albums) earn more per transaction",
      "Add high-quality download formats (FLAC, WAV options) — Bandcamp listeners are quality-conscious",
      "Set up a merch store if you have physical products (vinyl, CDs, shirts, prints)",
      "Connect your social accounts and website",
      "Write detailed descriptions for each album with credits, liner notes, and context — Bandcamp fans read them"
    ],
    releasing: [
      "Set up a pre-order (with or without instant download) — Bandcamp pre-orders generate email notifications to your followers",
      "Use the exclusive release window: release on Bandcamp first before other DSPs — some indie artists do 1–2 week Bandcamp exclusives",
      "Time major releases to align with Bandcamp Friday (8 dates in 2026) — Bandcamp waives its fee, maximizing your earnings",
      "Write thorough album descriptions including lyrics, credits, stories behind tracks",
      "Set up 'Pay what you want' pricing with a recommended amount for new audience building",
      "Bundle digital downloads with physical merch for higher average order values",
      "Use the embed player in your newsletter, blog, or website",
      "Bandcamp Daily editorial is largely dormant post-2023 acquisition — do not rely on it for discovery"
    ],
    maintenance: [
      "Export your fan email list regularly — you own this data, it's invaluable",
      "Send direct messages to paying fans (Pro plan) around new releases",
      "Update your merch inventory — out-of-stock items frustrate fans",
      "Monitor sales and download analytics in your dashboard",
      "Check which countries your buyers are from — Bandcamp buyers are often international and willing to pay",
      "Participate in Bandcamp Friday — announce it on social in advance",
      "Keep your back catalog priced and accessible — evergreen catalog sales are real income",
      "If you have physical releases, ensure shipping rates are accurate and up-to-date"
    ],
    editorial: "Bandcamp Daily (the editorial blog) is largely inactive following the 2023 acquisition and staff layoffs. It previously drove significant organic discovery. In 2026, editorial discovery on Bandcamp is limited — the platform is primarily a commerce and community tool, not a discovery engine. Focus on driving your existing fans to Bandcamp rather than expecting Bandcamp to deliver new listeners. The exception is genre-specific communities (electronic, metal, experimental) where Bandcamp's fan base is still actively engaged.",
    notes: "Bandcamp is your best tool for owning the direct fan relationship. Every sale gives you the fan's email address. No other streaming platform does this. For artists with dedicated fan bases, Bandcamp Friday can generate more revenue in 24 hours than a month of Spotify streams. This should be in every independent artist's toolkit regardless of genre."
  },
  {
    id: "beatport",
    name: "Beatport",
    url: "greenroom.beatport.com",
    emoji: "🔶",
    tier: "Tier 2 — Essential for Electronic Music Artists",
    tierColor: "#01FF95",
    override: "If you are NOT in electronic, dance, DJ, or club music — Beatport is largely irrelevant to your career. If you ARE — it is Tier 1.",
    overview: "The #1 platform for electronic music DJs and producers. 36M+ unique users, 465K+ DJ customers. Beatport is both a streaming service and a download store — DJs buy tracks here for mixing. Beatport now owns Bandcamp. Greenroom is Beatport's artist/label hub.",
    payRate: "Download sales: typically $1.29–$1.99 per track sold",
    payNote: "Beatport is a download store first — revenue from sales, not per-stream rates",
    freeVsPaid: {
      free: ["Greenroom (artist/label portal) — free account", "LabelRadar (demo submission platform to connect with labels)", "Remix competition entry (free to enter all contests)", "DJ Chart feature (curate and share a chart of releases you love)", "Artist profile management", "Release analytics via your distributor"],
      paid: ["Beatport Label Management Tool: monthly subscription (pricing varies) — manage, distribute, and promote releases with an all-in-one label tool", "Beatport Advertising: promotional placements in charts, featured sections (contact Beatport directly for rates)"]
    },
    profileAudit: [
      "Create a Greenroom account at greenroom.beatport.com",
      "Ensure your music is distributed to Beatport via a compatible distributor (DistroKid, TuneCore, etc.)",
      "Complete your artist profile: photo, bio, genre tags",
      "Verify all releases appear in your catalog",
      "Set up your DJ Chart — curate a public list of tracks you love (not just your own)",
      "Link your SoundCloud, Instagram, and other profiles",
      "Ensure BPM and key metadata is accurate in your releases — DJs filter by BPM and key when shopping"
    ],
    releasing: [
      "Distribute via a Beatport-compatible distributor — check Beatport's providers page for approved partners",
      "BPM and key metadata are critical — DJs search by these values; get them right",
      "Use LabelRadar to submit demos to labels for signing and distribution if you want label support",
      "Enter Beatport remix competitions — winning or placing drives real profile visibility",
      "Coordinate Beatport release with a DJ promo campaign (send to DJs for charting ahead of public release)",
      "Release timing: Beatport releases typically drop on Mondays (vs. Friday for mainstream DSPs) — align with the DJ release cycle",
      "Exclusive Beatport window (2–4 weeks before other DSPs) is common in electronic music — ask your distributor about this option",
      "Submit your track to Beatport Editorial Chart via your label or distributor contacts"
    ],
    maintenance: [
      "Track your Beatport chart positions — charting in genre charts (e.g. Tech House Top 100) is a major credibility signal",
      "Update your DJ Chart regularly with new releases from artists you support — reciprocal charting is a real community practice",
      "Monitor which DJs are buying and playing your tracks via your analytics",
      "LabelRadar: check for demo submissions and feedback from labels you've reached out to",
      "Keep your bio, photo, and genre tags current",
      "Engage with remix contest winners and community members"
    ],
    editorial: "Beatport's editorial team curates genre-specific charts (Beatport Top 100, genre sublists) and featured releases. Getting onto editorial charts requires: strong track sales, DJ support (charts from prominent DJs), and/or distributor/label relationships with Beatport's editorial team. There is no open submission form for editorial charts — it's driven by sales data and industry relationships. LabelRadar is the submission tool for getting signed, not for editorial playlist pitching per se.",
    notes: "If electronic music is your genre, BPM and key metadata are more important on Beatport than almost any other DSP. DJs literally filter by these values when building sets. Get them right in your distributor metadata or your tracks will be missed. Beatport's Exclusive window (releasing on Beatport 2–4 weeks before Spotify/Apple) is standard in electronic music and can drive chart positions that boost your overall career."
  },
  {
    id: "audius",
    name: "Audius",
    url: "audius.co",
    emoji: "🔮",
    tier: "Tier 3 — Emerging / Niche",
    tierColor: "#CC0FE0",
    overview: "Decentralized, blockchain-based music platform. Free to upload and stream. Artists own their content on-chain. Fan-to-artist direct payments via USDC (credit card compatible). Artist Coins for fan engagement. Best for: EDM, hip-hop, experimental, and Web3-native artists. Community-driven with remix contests. No major label presence.",
    payRate: "Variable",
    payNote: "Fan-powered direct payments — you set your own prices for premium content, downloads, and fan subscriptions",
    freeVsPaid: {
      free: ["Unlimited uploads (no storage cap)", "Free streaming for all listeners", "Transparent on-chain analytics", "Fan follows, reposts, comments", "Remix contest hosting and entry", "Explore page discovery (redesigned 2025)", "Feature.fm integration for smart links and pre-saves (added 2025)", "Dark mode UI (2026 update)"],
      paid: ["Artists set their own prices for premium tracks, downloads, exclusive content", "Fan-to-artist direct payments (USDC via credit card — 10% community treasury split)", "Artist Coins ($AUDIO tokens): create your own fan token for exclusive perks (unreleased music, behind-the-scenes)", "Note: Audius itself doesn't charge artists — you keep the majority of direct payments"]
    },
    profileAudit: [
      "Create a free Audius account at audius.co",
      "Upload a profile photo and header image",
      "Write a bio",
      "Tag your genres accurately — Audius discovery is tag-driven",
      "Upload your full catalog or a selection of your best tracks",
      "Set up premium track pricing if you have exclusive content to sell",
      "Connect your Audius profile to Feature.fm for smart link integration"
    ],
    releasing: [
      "Upload directly via Audius — no distributor needed, no gatekeeping",
      "Use premium track pricing for exclusive content (early access, demo versions, stems)",
      "Host a remix contest via Audius — built-in feature with prize distribution",
      "Enable direct fan payments — set a price for downloads or exclusive access",
      "Use the Explore page to engage with trending tracks in your genre",
      "Announce new uploads to your social channels — Audius discovery is community-driven, not algorithmically dominant yet",
      "Consider launching an Artist Coin if you have an engaged Web3-native fanbase"
    ],
    maintenance: [
      "Post regularly to maintain follower engagement",
      "Engage with comments, reposts, and fan interactions",
      "Monitor direct payment revenue from premium tracks",
      "Track your on-chain analytics for transparency into streaming patterns",
      "Participate in remix contests and community events",
      "Keep tags and descriptions current"
    ],
    editorial: "Audius has no formal editorial playlist pitching system. Discovery is community-driven via: follows, reposts, trending lists, the Explore page, and tag-based recommendations. Audius's internal team occasionally highlights artists in blog posts and social media, but there's no submission form. Engagement and community participation are the primary drivers of discovery.",
    notes: "Audius is not a royalty replacement for Spotify or Apple Music — streaming on Audius is free, so per-stream income doesn't apply the same way. Its value is: (1) direct-to-fan monetization without a middleman, (2) Web3 community and artist token ecosystem, (3) fast feedback loop and engaged niche community. Recommended as a supplemental platform, especially for electronic, hip-hop, and experimental artists willing to engage with crypto-native fans."
  },
  {
    id: "tiktok",
    name: "TikTok for Artists",
    url: "tiktok.com/artists",
    emoji: "🖤",
    tier: "Tier 1 — Essential for Discovery",
    tierColor: "#010101",
    overview: "Not a streaming service — a discovery engine. TikTok Music (the standalone streaming app) shut down in November 2024. TikTok for Artists launched globally in June 2025 as a free analytics + promotional platform. 1.59B monthly active users; 75% report discovering new music on TikTok. 84% of songs that entered the Global 200 in 2024 first went viral on TikTok. Treat it as your #1 discovery funnel feeding all other DSPs.",
    payRate: "~$0.00025–$0.0005",
    payNote: "via SoundOn distribution — very low per-stream rate; TikTok's value is discovery and DSP conversion, not streaming income",
    freeVsPaid: {
      free: ["TikTok for Artists dashboard (launched globally June 2025)", "Daily analytics: views, engagement, demographics (age, gender, language) for your music on TikTok", "Track which of your songs is generating the most UGC (user-created content using your track)", "Post completion rate analytics", "Follower demographic breakdown", "Pre-Release tool: self-service pre-save campaigns linking to Spotify/Apple Music", "Add to Music App feature: one-tap saves from TikTok directly to Spotify, Apple Music, YouTube Music, SoundCloud", "SoundOn (TikTok's distributor): free plan available for distribution to TikTok and other DSPs"],
      paid: ["TikTok Promote: paid boosting for your TikTok posts/videos (budget-based, no minimum)", "SoundOn paid tiers for additional distribution features", "TikTok Creator Marketplace for brand partnerships (separate from music tools)"]
    },
    profileAudit: [
      "Create or claim a TikTok Artist Account — required to access TikTok for Artists dashboard",
      "Get your account certified (apply via TikTok or through your distributor)",
      "Complete your profile: photo, bio, link to streaming platforms",
      "Add your music via SoundOn or an approved distributor — your tracks must be on TikTok's library",
      "Verify that your artist name matches your name on Spotify/Apple so 'Add to Music App' links correctly",
      "Set up your TikTok for Artists dashboard access and grant access to any team members",
      "Pin a video to your profile that best represents your current music/brand",
      "Add your bio link pointing to a smart link (Linktree, Feature.fm, etc.) aggregating all your DSP profiles"
    ],
    releasing: [
      "Use the Pre-Release tool in TikTok for Artists to set up a pre-save campaign — fans can save directly to Spotify or Apple Music",
      "Post TikTok content (your own or seed with a few strategically placed posts) in the days before release",
      "Make the first 3–5 seconds of your track hook-worthy — TikTok users decide in the opening bars",
      "Create a 'sound' rather than just a song: give fans a reason to use your audio (dance, trend, challenge, emotional moment)",
      "Upload the release via SoundOn or your distributor so it appears in TikTok's music library for UGC use",
      "Monitor which excerpt of your track is driving the most UGC in TikTok for Artists — this often reveals your hook",
      "Coordinate TikTok virality with DSP availability — use 'Add to Music App' to convert TikTok listeners to Spotify/Apple streamers",
      "Use the completion rate data to understand if your track is holding attention"
    ],
    maintenance: [
      "Check TikTok for Artists daily (or at least weekly) — the dashboard updates daily",
      "Track which tracks are generating UGC organically — these are your assets to amplify",
      "Monitor your follower demographics and compare with your Spotify/Apple audience data",
      "Engage with fan content using your music — stitch, duet, or comment to drive further reach",
      "Post consistently on your own account — TikTok's algorithm rewards regular creators",
      "Watch the Luminate/TikTok data: tracks trending on TikTok see 300–500% streaming increases in the first week on other DSPs",
      "Note: TikTok is currently banned in India and has bans or regulatory issues in 23+ countries — factor this into your global strategy"
    ],
    editorial: "TikTok does not have a traditional editorial playlist system. Discovery is entirely algorithmic and community-driven — the For You Page (FYP) determines reach based on engagement signals (completion rate, shares, saves, comments). There is no pitch form. Your best 'editorial' lever is organic virality: create content, engage with fans, seed the sound with other creators. TikTok's editorial team does curate featured sounds and trending music pages, but there is no direct submission pathway for independent artists.",
    notes: "TikTok Music as a standalone streaming service is dead (shut down Nov 2024). What remains is TikTok as a discovery platform — and it is the single most powerful music discovery tool on earth right now. The 'Add to Music App' feature (launched 2025) finally closes the loop between viral TikTok moments and streaming revenue. Make sure your music is in TikTok's library via your distributor. Important: TikTok's political/regulatory situation (US bans, global restrictions) is fluid — stay updated."
  },
  {
    id: "audiomack",
    name: "Audiomack",
    url: "audiomack.com",
    emoji: "🟤",
    tier: "Tier 2 — Essential for Hip-Hop / Afrobeats / Global South",
    tierColor: "#FFA500",
    override: "If your genre is hip-hop, Afrobeats, Amapiano, Latin, or R&B — especially with a global or diaspora audience — Audiomack is Tier 1 for you.",
    overview: "50M+ monthly active users (31% YoY growth as of 2025). The dominant discovery platform for hip-hop, Afrobeats, and Amapiano globally. Free uploads for all artists. Human-curated editorial. Strong in Nigeria, Ghana, South Africa, and diaspora markets. Audiomack Pro launched in 2026 as a premium tier. The Audiomack Monetization Program (AMP) enables earnings from streams.",
    payRate: "$0.10–$3.00",
    payNote: "per 1,000 monetized streams (wide range based on listener country and ad fill rates — not a published flat rate)",
    freeVsPaid: {
      free: ["Free artist account with unlimited uploads", "Basic analytics dashboard: plays, downloads, reposts", "Audiomack Monetization Program (AMP) — free to join, requires approval", "Supporters feature: direct fan-to-artist tips/subscriptions", "Human-curated editorial playlists and featured sections (organic)", "Regional charts (top 100 per country)", "Trending lists by genre"],
      paid: ["Audiomack Pro (launching 2026 — pricing TBC): orange verified badge, animated GIF avatar, advanced analytics, instant AMP monetization access (no waitlist), monthly Boost Credit (~10,000 guaranteed plays per credit)", "Sponsored Songs: paid promotion to boost specific tracks in the feed (contact Audiomack for rates)"]
    },
    profileAudit: [
      "Create a free Audiomack artist account",
      "Apply for Audiomack Pro if/when available for the verified badge and advanced features",
      "Upload a high-quality profile photo and header",
      "Write a bio with genre tags and location",
      "Apply for the Audiomack Monetization Program (AMP) to start earning from streams",
      "Set up Supporters to allow direct fan contributions",
      "Organize your catalog into playlists or albums",
      "Add social links (Instagram, Twitter/X, Spotify, etc.)",
      "Verify that genre and mood tags are accurate — Audiomack's editorial team and algorithm use them for placement"
    ],
    releasing: [
      "Upload directly to Audiomack — no distributor needed for the platform itself",
      "Use rich tags: genre, mood, BPM, featured artists — these drive discovery on Audiomack's charts and editorial",
      "Enable free downloads on select tracks to drive engagement and reach",
      "Submit to Audiomack's editorial team via their in-app submission tools or by tagging @audiomack on social",
      "Time releases to regional audiences — Audiomack has outsized reach in West Africa and diaspora markets; consider time zones",
      "Post snippets and teasers on your Audiomack profile before release",
      "Audiomack's algorithm rewards momentum: rapid early plays, reposts, and engagement signal quality to the editorial team",
      "Consider a Sponsored Songs campaign for major releases to guarantee reach"
    ],
    maintenance: [
      "Check analytics weekly: plays by country are especially revealing on Audiomack — you may have audiences in markets you didn't expect",
      "Monitor which tracks are being downloaded vs. just played — high download rates signal genuine fan engagement",
      "Engage with the community: Audiomack has an active comments culture, especially in hip-hop",
      "Use Boost Credits (Audiomack Pro) to periodically revive catalog tracks",
      "Track your AMP earnings by country and optimize for markets with higher ad rates",
      "Watch Audiomack's trending charts in your genre — being near the top drives organic discovery",
      "Update your profile and featured tracks around new releases"
    ],
    editorial: "Audiomack has an active human curation team that selects tracks for featured playlists, genre charts, and the homepage. Unlike Spotify, there is no formal self-service pitch tool — editorial placements happen via: (1) organic discovery by the editorial team (strong early engagement helps), (2) tagging Audiomack on social media with new releases, (3) direct outreach to the editorial team if you have a relationship. The Audiomack Pro 'Boost Credit' provides guaranteed plays but is distinct from editorial placement. Audiomack is notable for being one of the few DSPs that still has a human editorial team actively scouting for new music.",
    notes: "Audiomack broke Afrobeats, Amapiano, and many Afro-fusion artists globally before they hit Spotify or Apple Music. If any part of your music or fanbase connects to African, Caribbean, or diaspora audiences, Audiomack is non-negotiable. The free unlimited upload model means zero risk to being on the platform. Join AMP immediately after claiming your profile — the monetization waitlist can be long without Pro."
  },
  {
    id: "iheart",
    name: "iHeartRadio",
    url: "iheart.com",
    emoji: "❤️",
    tier: "Tier 3 — Important (US Radio / Country / Rock / Pop)",
    tierColor: "#C6002B",
    override: "If your genre is country, classic rock, pop, or Christian music — iHeartRadio's US radio reach makes it more like Tier 2 for you.",
    overview: "The largest US radio network with 860+ owned stations in 160 US markets, plus a digital streaming/radio app. iHeartRadio is primarily a radio company, not a pure streaming DSP. Its value for indie artists is the radio-adjacent reach: if your track gets added to an iHeart station or playlist, you're reaching a massive, passive US audience. No artist-facing analytics dashboard like Spotify for Artists — it's primarily a distribution and radio play target.",
    payRate: "SoundExchange royalties",
    payNote: "for digital/satellite radio plays — collected via SoundExchange, not a per-stream DSP model. Register with SoundExchange to collect.",
    freeVsPaid: {
      free: ["Music submission via your distributor (most major distributors deliver to iHeartRadio)", "SoundExchange registration (free) to collect digital radio royalties", "iHeartRadio artist page (auto-generated when your music is on the platform)", "Radio station play tracking via SoundExchange reporting"],
      paid: ["iHeartMedia advertising and promotional partnerships (significant budget required — not DIY territory for most indie artists)", "iHeartRadio does not offer a self-serve paid promotion tool for artists at the indie level"]
    },
    profileAudit: [
      "Distribute your music to iHeartRadio via your distributor — most major distributors (DistroKid, TuneCore, CD Baby) deliver here",
      "Register with SoundExchange (soundexchange.com) to collect digital performance royalties from iHeart and all internet/satellite radio plays",
      "Verify your artist profile appears on iHeartRadio after distribution",
      "Ensure your artist name, bio, and photo are delivered correctly via your distributor's metadata",
      "Confirm your PRO registration (ASCAP, BMI, or SESAC) is current — iHeart plays generate performance royalties"
    ],
    releasing: [
      "Deliver music to iHeartRadio via your distributor at least 2–3 weeks before release",
      "For radio consideration: a traditional radio promotion campaign (radio plugger) is required to get spins on iHeart's major stations — this is separate from digital distribution and typically costs $2,000–$10,000+ for a proper campaign",
      "iHeartRadio's digital playlists (within the app) are more accessible — pitch via your distributor's iHeart editorial relationships",
      "Ensure your track is cleared for radio (no uncleared samples) before any radio campaign",
      "iHeart's 'On The Verge' program for emerging artists requires label or management support — not a direct indie application"
    ],
    maintenance: [
      "Monitor SoundExchange quarterly statements to track digital radio royalties from iHeart and other internet radio services",
      "Check your iHeartRadio artist page periodically to ensure it's accurate",
      "iHeart analytics for artists are minimal — rely on SoundExchange data for radio play tracking",
      "If you work with a radio promoter, track station adds and market penetration through their reporting",
      "Consider iHeartRadio's podcast platform if you have a music-adjacent podcast — strong distribution network"
    ],
    editorial: "iHeartRadio's music programming is handled by program directors at each of its 860+ local stations plus centralized editorial teams for genre formats. Traditional radio programming (add campaigns) requires a radio promoter or label relationships. The digital side (iHeartRadio app playlists) is more accessible — ask your distributor if they have iHeart editorial relationships. There is no self-serve pitch portal for independent artists.",
    notes: "Be honest about your goals here: iHeartRadio is primarily a radio company, not a streaming-first DSP with indie-friendly tools. Its value is reach (860+ US stations, massive passive audience) rather than data or community. For most truly independent artists, the main action items are: (1) make sure your music is delivered there via your distributor, (2) register with SoundExchange to collect any royalties generated. Traditional radio promotion is a significant investment — be realistic about ROI at your career stage."
  },
  {
    id: "qobuz",
    name: "Qobuz",
    url: "qobuz.com",
    emoji: "🔵",
    tier: "Tier 3 — High Value for Audiophile / Jazz / Classical Audiences",
    tierColor: "#0B5FFF",
    override: "If your audience skews audiophile, classical, jazz, folk, or acoustic genres — Qobuz's per-stream rate and listener quality make it worth prioritizing above its Tier 3 placement.",
    overview: "French-origin audiophile streaming platform, now available in 24+ countries. All-paid subscriber base. Highest or second-highest per-stream rate of any major DSP — reported at $0.0136–$0.022. Focus on hi-res lossless audio (up to 24-bit/192kHz FLAC). Editorial curation by human music journalists. Actively anti-AI (AI-generated tracks tagged and excluded from editorial/algorithmic surfaces as of Feb 2026). No free tier.",
    payRate: "$0.0136–$0.022",
    payNote: "among the highest per-stream rates of any DSP — all paid subscribers, no free tier dilution",
    freeVsPaid: {
      free: ["Artist profile (auto-generated via distributor delivery)", "No dedicated artist backend dashboard like Spotify for Artists", "Analytics available via your distributor's reporting"],
      paid: ["No artist-facing paid tools currently", "Qobuz does offer editorial/promotional features through distributor relationships (enquire with your distributor)", "Subscription is €14.99/month for listeners — the revenue pool is premium"]
    },
    profileAudit: [
      "Distribute your music to Qobuz via your distributor — check that your distributor supports Qobuz delivery (most major ones do)",
      "Deliver hi-res masters (24-bit/96kHz or 24-bit/192kHz WAV/FLAC) if available — Qobuz serves these natively and they can trigger editorial consideration",
      "Ensure your artist bio, photo, and metadata are delivered correctly via your distributor",
      "Verify your artist profile appears on Qobuz after distribution",
      "Check that genre tags are accurate — Qobuz's editorial team is genre-specific and expert"
    ],
    releasing: [
      "Deliver hi-res audio files via your distributor — standard 16-bit/44.1kHz is accepted, but 24-bit files qualify for Qobuz's hi-res badge and editorial preference",
      "Submit for Qobuz editorial consideration via your distributor — Qobuz has relationships with key distributors for editorial outreach",
      "Qobuz has in-house music journalists (especially strong in classical, jazz, and alternative) — a bio/press release with genuine artistic depth is read and valued here",
      "Release on Friday to align with Qobuz's New Releases section",
      "Encourage fans who care about audio quality to subscribe to Qobuz specifically for your releases — the per-stream economics reward this"
    ],
    maintenance: [
      "Monitor Qobuz analytics via your distributor's reporting — Qobuz does not have a standalone artist dashboard",
      "Check your distributor's per-store breakdown to see Qobuz-specific earnings",
      "If you see strong Qobuz numbers, that signals an audiophile listener base — consider hi-res release bundles, vinyl, or premium download packages to monetize this audience further",
      "Qobuz publishes editorial features, interviews, and album reviews — if you receive coverage, amplify it on social",
      "Ensure any future releases continue to be delivered to Qobuz — it's easy to accidentally omit smaller platforms in distributor settings",
      "Stay current on Qobuz's AI detection policy — tracks identified as fully AI-generated are excluded from editorial and algorithmic surfaces"
    ],
    editorial: "Qobuz has a team of human music editors and journalists who write album reviews, artist features, and curate themed playlists. This is one of the few DSPs with real editorial depth. Pitching for editorial consideration goes through your distributor's Qobuz relationship. There is no open self-serve pitch form. To maximize your chances: deliver hi-res audio, write a compelling artist bio with depth, and have your distributor make an editorial submission on your behalf. Qobuz's editorial is especially strong in classical, jazz, folk, blues, and indie rock.",
    notes: "Qobuz is a sleeper for independent artists with audiophile-leaning fanbases. The per-stream rate can be 5–6x Spotify's, and the entire subscriber base is paying. Total listener count is much smaller than Spotify — but if your 500 most devoted fans are audiophiles who subscribe to Qobuz, those 500 people might generate more revenue than 50,000 casual Spotify listeners. Always deliver the best audio quality you can — it matters here more than any other platform."
  },
  {
    id: "vocana",
    name: "Vocana",
    url: "vocana.co",
    emoji: "💜",
    tier: "Tier 3 — Emerging / Values-Aligned",
    tierColor: "#7B2FBE",
    overview: "Independent-only streaming platform built around user-centric payouts and community-driven discovery. Founded specifically to fix what Vocana sees as broken about mainstream streaming: pro-rata royalty pools that benefit major label artists at the expense of indie artists, and algorithmic feeds that obscure discovery. All-indie catalog — no major labels. Discover music through people and communities ('Hubs'), not machines. Available on iOS and Android. Still an emerging platform — audience size is small but mission-aligned.",
    payRate: "User-centric model",
    payNote: "each subscriber's fee flows directly to the artists they actually listen to — not pooled with Drake's streams. Exact rates not yet publicly published.",
    freeVsPaid: {
      free: ["Artist portal at artistportal.vocana.co — free to claim your profile", "Basic listener and play data", "Community features: Hubs (genre/vibe communities), follows, fan connections", "Artist profile page"],
      paid: ["Listener subscriptions support the platform — artist earnings depend on subscriber growth", "No artist-facing paid tools currently listed", "Platform is still growing its distribution partner network and feature set"]
    },
    profileAudit: [
      "Check if your music is already on Vocana — if you're distributed via CD Baby, Vydia, Symphonic, Revelator, Fuga, or Downtown, your music may already be live",
      "If not distributed via a Vocana partner, you can still register at artists.vocana.co to get ready for future access",
      "Create or claim your artist portal account at artistportal.vocana.co",
      "Search for your artist name and verify ownership to claim your profile",
      "Complete your profile: photo, bio, links",
      "Join relevant Hubs (community spaces) to connect with listeners who share your genre/vibe",
      "Note: DistroKid is not currently listed as a Vocana distribution partner — check their current partner list before assuming your music is there"
    ],
    releasing: [
      "Ensure your distributor is a Vocana partner before your release if you want day-one presence on the platform",
      "If your distributor is not yet a Vocana partner, submit a request via artists.vocana.co",
      "Announce new releases in relevant Hubs — community discovery is the core mechanic here",
      "Engage with your Vocana followers directly around release day — the platform is designed for artist-fan connection",
      "Lean into the 'no algorithms' story when promoting to fans: 'Come find me on Vocana, where your listens actually pay me'"
    ],
    maintenance: [
      "Monitor your artist portal for listener data and any platform updates",
      "Stay active in Hubs — community participation drives discovery on Vocana more than any algorithm",
      "Keep profile photo and bio current",
      "Follow Vocana's social channels (LinkedIn listed on site) for platform development updates",
      "Vocana is an early-stage platform — expect feature evolution. Check artists.vocana.co regularly for new tools",
      "Encourage fans who care about fair pay for artists to subscribe to Vocana specifically"
    ],
    editorial: "Vocana's discovery model is community and human-driven, not algorithmic. Music spreads through Hubs (community spaces organized by genre, vibe, or interest), tastemaker recommendations, and direct follows. There is no editorial playlist pitch tool currently listed. The best way to get discovered is to be active in the community and invite fans who align with the platform's values.",
    notes: "Be transparent with students/clients about Vocana's current size: it is an early-stage platform with a compelling mission but a small audience. Its user-centric payment model is one of the fairest in streaming — if its subscriber base grows, artists with engaged listeners could earn meaningfully more per stream than on Spotify. Worth being on from day one. Think of it as a long-term bet on a platform building the streaming model independent artists actually deserve. Important: DistroKid is not currently a listed Vocana distribution partner — verify current partners at artists.vocana.co before assuming your music is live there."
  }
];

const allChecklist = platforms.flatMap(p => [
  ...p.profileAudit.map(t => ({ platform: p.name, category: "Profile Audit", task: t })),
  ...p.releasing.map(t => ({ platform: p.name, category: "Release Checklist", task: t })),
  ...p.maintenance.map(t => ({ platform: p.name, category: "Maintenance", task: t }))
]);

export default function DSPGuide() {
  const [activeTab, setActiveTab] = useState("overview");
  const [activePlatform, setActivePlatform] = useState("spotify");
  const [checkedItems, setCheckedItems] = useState({});
  const [filterCat, setFilterCat] = useState("All");
  const [filterPlatform, setFilterPlatform] = useState("All");

  const platform = platforms.find(p => p.id === activePlatform);

  const toggleCheck = (key) => {
    setCheckedItems(prev => ({ ...prev, [key]: !prev[key] }));
  };

  const filteredChecklist = allChecklist.filter(item => {
    const catMatch = filterCat === "All" || item.category === filterCat;
    const plMatch = filterPlatform === "All" || item.platform === filterPlatform;
    return catMatch && plMatch;
  });

  const totalChecked = Object.values(checkedItems).filter(Boolean).length;
  const totalItems = allChecklist.length;

  const tabStyle = (tab) => ({
    padding: "8px 20px",
    borderRadius: "var(--border-radius-md)",
    border: "0.5px solid",
    borderColor: activeTab === tab ? "var(--color-border-primary)" : "var(--color-border-tertiary)",
    background: activeTab === tab ? "var(--color-background-secondary)" : "transparent",
    color: activeTab === tab ? "var(--color-text-primary)" : "var(--color-text-secondary)",
    cursor: "pointer",
    fontSize: "14px",
    fontWeight: activeTab === tab ? "500" : "400"
  });

  const platformBtnStyle = (id) => ({
    padding: "6px 14px",
    borderRadius: "var(--border-radius-md)",
    border: "0.5px solid",
    borderColor: activePlatform === id ? "var(--color-border-primary)" : "var(--color-border-tertiary)",
    background: activePlatform === id ? "var(--color-background-secondary)" : "transparent",
    color: activePlatform === id ? "var(--color-text-primary)" : "var(--color-text-secondary)",
    cursor: "pointer",
    fontSize: "13px",
    fontWeight: activePlatform === id ? "500" : "400",
    whiteSpace: "nowrap"
  });

  const tiers = {
    "Tier 1 — Essential": platforms.filter(p => p.tier.startsWith("Tier 1")),
    "Tier 2 — Important": platforms.filter(p => p.tier.startsWith("Tier 2")),
    "Tier 3 — Emerging / Niche": platforms.filter(p => p.tier.startsWith("Tier 3"))
  };

  return (
    <div style={{ padding: "1.5rem 0", fontFamily: "var(--font-sans)" }}>
      <h2 style={{ fontSize: "22px", fontWeight: "500", color: "var(--color-text-primary)", margin: "0 0 6px" }}>
        Independent Artist DSP Guide 2026
      </h2>
      <p style={{ fontSize: "14px", color: "var(--color-text-secondary)", margin: "0 0 1.5rem", lineHeight: "1.6" }}>
        Best practices for {platforms.length} platforms — profile audits, release checklists, maintenance, analytics, and editorial pitching. All free tools noted separately from paid.
      </p>

      <div style={{ display: "flex", gap: "8px", flexWrap: "wrap", marginBottom: "1.5rem" }}>
        <button style={tabStyle("overview")} onClick={() => setActiveTab("overview")}>Platform Overview</button>
        <button style={tabStyle("deep")} onClick={() => setActiveTab("deep")}>Deep Dive</button>
        <button style={tabStyle("checklist")} onClick={() => setActiveTab("checklist")}>
          Master Checklist {totalChecked > 0 ? `(${totalChecked}/${totalItems})` : ""}
        </button>
      </div>

      {activeTab === "overview" && (
        <div>
          {Object.entries(tiers).map(([tierName, tierPlatforms]) => (
            <div key={tierName} style={{ marginBottom: "2rem" }}>
              <p style={{ fontSize: "12px", fontWeight: "500", color: "var(--color-text-secondary)", textTransform: "uppercase", letterSpacing: "0.08em", margin: "0 0 0.75rem" }}>
                {tierName}
              </p>
              <div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(280px, 1fr))", gap: "12px" }}>
                {tierPlatforms.map(p => (
                  <div key={p.id} style={{ background: "var(--color-background-primary)", border: "0.5px solid var(--color-border-tertiary)", borderRadius: "var(--border-radius-lg)", padding: "1rem 1.25rem" }}>
                    <div style={{ display: "flex", justifyContent: "space-between", alignItems: "flex-start", marginBottom: "8px" }}>
                      <div>
                        <p style={{ fontSize: "15px", fontWeight: "500", margin: "0 0 2px", color: "var(--color-text-primary)" }}>{p.emoji} {p.name}</p>
                        <p style={{ fontSize: "12px", color: "var(--color-text-secondary)", margin: "0" }}>{p.url}</p>
                      </div>
                      <span style={{ fontSize: "11px", background: "var(--color-background-secondary)", padding: "3px 8px", borderRadius: "var(--border-radius-md)", color: "var(--color-text-secondary)", whiteSpace: "nowrap" }}>
                        {p.payRate}
                      </span>
                    </div>
                    <p style={{ fontSize: "13px", color: "var(--color-text-secondary)", margin: "0 0 0.75rem", lineHeight: "1.6" }}>
                      {p.overview.substring(0, 160)}...
                    </p>
                    {p.override && (
                      <p style={{ fontSize: "12px", background: "var(--color-background-warning)", color: "var(--color-text-warning)", padding: "6px 10px", borderRadius: "var(--border-radius-md)", margin: "0 0 0.75rem", lineHeight: "1.5" }}>
                        ⚠️ {p.override}
                      </p>
                    )}
                    <button
                      style={{ fontSize: "13px", color: "var(--color-text-info)", background: "none", border: "none", cursor: "pointer", padding: "0" }}
                      onClick={() => { setActivePlatform(p.id); setActiveTab("deep"); }}
                    >
                      Full guide →
                    </button>
                  </div>
                ))}
              </div>
            </div>
          ))}
        </div>
      )}

      {activeTab === "deep" && platform && (
        <div>
          <div style={{ display: "flex", gap: "8px", flexWrap: "wrap", marginBottom: "1.5rem" }}>
            {platforms.map(p => (
              <button key={p.id} style={platformBtnStyle(p.id)} onClick={() => setActivePlatform(p.id)}>
                {p.emoji} {p.name.replace(" for Artists", "").replace(" for Creators", "").replace(" AMP", "")}
              </button>
            ))}
          </div>

          <div style={{ background: "var(--color-background-primary)", border: "0.5px solid var(--color-border-tertiary)", borderRadius: "var(--border-radius-lg)", padding: "1.5rem", marginBottom: "1rem" }}>
            <div style={{ display: "flex", justifyContent: "space-between", alignItems: "flex-start", marginBottom: "1rem", flexWrap: "wrap", gap: "12px" }}>
              <div>
                <h3 style={{ fontSize: "20px", fontWeight: "500", margin: "0 0 4px", color: "var(--color-text-primary)" }}>{platform.emoji} {platform.name}</h3>
                <p style={{ fontSize: "13px", color: "var(--color-text-secondary)", margin: "0" }}>{platform.tier}</p>
              </div>
              <div style={{ textAlign: "right" }}>
                <p style={{ fontSize: "18px", fontWeight: "500", margin: "0", color: "var(--color-text-primary)" }}>{platform.payRate}</p>
                <p style={{ fontSize: "12px", color: "var(--color-text-secondary)", margin: "0" }}>{platform.payNote}</p>
              </div>
            </div>
            <p style={{ fontSize: "14px", color: "var(--color-text-secondary)", lineHeight: "1.7", margin: "0 0 1rem" }}>{platform.overview}</p>
            {platform.override && (
              <p style={{ fontSize: "13px", background: "var(--color-background-warning)", color: "var(--color-text-warning)", padding: "8px 12px", borderRadius: "var(--border-radius-md)", margin: "0" }}>
                ⚠️ {platform.override}
              </p>
            )}
          </div>

          <div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(300px, 1fr))", gap: "12px", marginBottom: "1rem" }}>
            <div style={{ background: "var(--color-background-primary)", border: "0.5px solid var(--color-border-success)", borderRadius: "var(--border-radius-lg)", padding: "1.25rem" }}>
              <p style={{ fontSize: "13px", fontWeight: "500", color: "var(--color-text-success)", margin: "0 0 0.75rem" }}>✓ Free tools</p>
              {platform.freeVsPaid.free.map((item, i) => (
                <p key={i} style={{ fontSize: "13px", color: "var(--color-text-secondary)", margin: "0 0 4px", lineHeight: "1.5" }}>• {item}</p>
              ))}
            </div>
            <div style={{ background: "var(--color-background-primary)", border: "0.5px solid var(--color-border-warning)", borderRadius: "var(--border-radius-lg)", padding: "1.25rem" }}>
              <p style={{ fontSize: "13px", fontWeight: "500", color: "var(--color-text-warning)", margin: "0 0 0.75rem" }}>💳 Paid / costs money</p>
              {platform.freeVsPaid.paid.map((item, i) => (
                <p key={i} style={{ fontSize: "13px", color: "var(--color-text-secondary)", margin: "0 0 4px", lineHeight: "1.5" }}>• {item}</p>
              ))}
            </div>
          </div>

          {[
            { title: "Profile Audit Checklist", items: platform.profileAudit, icon: "ti-user-check" },
            { title: "Release Checklist", items: platform.releasing, icon: "ti-upload" },
            { title: "Ongoing Maintenance", items: platform.maintenance, icon: "ti-refresh" }
          ].map(section => (
            <div key={section.title} style={{ background: "var(--color-background-primary)", border: "0.5px solid var(--color-border-tertiary)", borderRadius: "var(--border-radius-lg)", padding: "1.25rem", marginBottom: "1rem" }}>
              <p style={{ fontSize: "15px", fontWeight: "500", margin: "0 0 1rem", color: "var(--color-text-primary)" }}>
                <i className={`ti ${section.icon}`} style={{ fontSize: "16px", marginRight: "8px", verticalAlign: "-2px" }} aria-hidden="true"></i>
                {section.title}
              </p>
              {section.items.map((item, i) => {
                const key = `${platform.id}-${section.title}-${i}`;
                return (
                  <div key={i} onClick={() => toggleCheck(key)} style={{ display: "flex", gap: "10px", marginBottom: "8px", cursor: "pointer", alignItems: "flex-start" }}>
                    <div style={{
                      width: "16px", height: "16px", borderRadius: "4px", border: "0.5px solid",
                      borderColor: checkedItems[key] ? "var(--color-border-success)" : "var(--color-border-secondary)",
                      background: checkedItems[key] ? "var(--color-background-success)" : "transparent",
                      flexShrink: 0, marginTop: "2px", display: "flex", alignItems: "center", justifyContent: "center"
                    }}>
                      {checkedItems[key] && <i className="ti ti-check" style={{ fontSize: "11px", color: "var(--color-text-success)" }} aria-hidden="true"></i>}
                    </div>
                    <p style={{ fontSize: "13px", color: checkedItems[key] ? "var(--color-text-tertiary)" : "var(--color-text-secondary)", margin: "0", lineHeight: "1.6", textDecoration: checkedItems[key] ? "line-through" : "none" }}>
                      {item}
                    </p>
                  </div>
                );
              })}
            </div>
          ))}

          <div style={{ background: "var(--color-background-primary)", border: "0.5px solid var(--color-border-tertiary)", borderRadius: "var(--border-radius-lg)", padding: "1.25rem", marginBottom: "1rem" }}>
            <p style={{ fontSize: "15px", fontWeight: "500", margin: "0 0 0.75rem", color: "var(--color-text-primary)" }}>
              <i className="ti ti-playlist" style={{ fontSize: "16px", marginRight: "8px", verticalAlign: "-2px" }} aria-hidden="true"></i>
              Editorial & Playlist Pitching
            </p>
            <p style={{ fontSize: "13px", color: "var(--color-text-secondary)", margin: "0", lineHeight: "1.7" }}>{platform.editorial}</p>
          </div>

          {platform.notes && (
            <div style={{ background: "var(--color-background-info)", border: "0.5px solid var(--color-border-info)", borderRadius: "var(--border-radius-lg)", padding: "1.25rem" }}>
              <p style={{ fontSize: "15px", fontWeight: "500", margin: "0 0 0.75rem", color: "var(--color-text-info)" }}>
                <i className="ti ti-info-circle" style={{ fontSize: "16px", marginRight: "8px", verticalAlign: "-2px" }} aria-hidden="true"></i>
                Key notes
              </p>
              <p style={{ fontSize: "13px", color: "var(--color-text-info)", margin: "0", lineHeight: "1.7" }}>{platform.notes}</p>
            </div>
          )}
        </div>
      )}

      {activeTab === "checklist" && (
        <div>
          <div style={{ display: "flex", gap: "12px", marginBottom: "1rem", flexWrap: "wrap", alignItems: "center" }}>
            <div style={{ background: "var(--color-background-secondary)", borderRadius: "var(--border-radius-md)", padding: "8px 16px" }}>
              <span style={{ fontSize: "24px", fontWeight: "500", color: "var(--color-text-primary)" }}>{totalChecked}</span>
              <span style={{ fontSize: "13px", color: "var(--color-text-secondary)", marginLeft: "6px" }}>/ {totalItems} complete</span>
            </div>
            <div style={{ flex: 1, background: "var(--color-background-secondary)", borderRadius: "var(--border-radius-md)", height: "8px", minWidth: "100px" }}>
              <div style={{ height: "8px", borderRadius: "var(--border-radius-md)", background: "var(--color-text-success)", width: `${Math.round((totalChecked / totalItems) * 100)}%`, transition: "width 0.3s" }} />
            </div>
          </div>

          <div style={{ display: "flex", gap: "8px", marginBottom: "1.5rem", flexWrap: "wrap" }}>
            <select
              value={filterCat}
              onChange={e => setFilterCat(e.target.value)}
              style={{ fontSize: "13px", padding: "6px 10px", borderRadius: "var(--border-radius-md)", border: "0.5px solid var(--color-border-secondary)" }}
            >
              <option>All</option>
              <option>Profile Audit</option>
              <option>Release Checklist</option>
              <option>Maintenance</option>
            </select>
            <select
              value={filterPlatform}
              onChange={e => setFilterPlatform(e.target.value)}
              style={{ fontSize: "13px", padding: "6px 10px", borderRadius: "var(--border-radius-md)", border: "0.5px solid var(--color-border-secondary)" }}
            >
              <option>All</option>
              {platforms.map(p => <option key={p.id}>{p.name}</option>)}
            </select>
          </div>

          {["Profile Audit", "Release Checklist", "Maintenance"].filter(cat => filterCat === "All" || filterCat === cat).map(cat => {
            const items = filteredChecklist.filter(i => i.category === cat);
            if (items.length === 0) return null;
            return (
              <div key={cat} style={{ marginBottom: "2rem" }}>
                <p style={{ fontSize: "12px", fontWeight: "500", color: "var(--color-text-secondary)", textTransform: "uppercase", letterSpacing: "0.08em", margin: "0 0 0.75rem" }}>{cat}</p>
                {items.map((item, i) => {
                  const key = `checklist-${cat}-${item.platform}-${i}`;
                  return (
                    <div key={key} onClick={() => toggleCheck(key)} style={{
                      display: "flex", gap: "12px", padding: "10px 12px",
                      borderRadius: "var(--border-radius-md)", marginBottom: "4px",
                      background: checkedItems[key] ? "var(--color-background-secondary)" : "var(--color-background-primary)",
                      border: "0.5px solid var(--color-border-tertiary)", cursor: "pointer", alignItems: "flex-start"
                    }}>
                      <div style={{
                        width: "16px", height: "16px", borderRadius: "4px", border: "0.5px solid",
                        borderColor: checkedItems[key] ? "var(--color-border-success)" : "var(--color-border-secondary)",
                        background: checkedItems[key] ? "var(--color-background-success)" : "transparent",
                        flexShrink: 0, marginTop: "2px", display: "flex", alignItems: "center", justifyContent: "center"
                      }}>
                        {checkedItems[key] && <i className="ti ti-check" style={{ fontSize: "11px", color: "var(--color-text-success)" }} aria-hidden="true"></i>}
                      </div>
                      <div style={{ flex: 1 }}>
                        <span style={{ fontSize: "11px", background: "var(--color-background-secondary)", padding: "2px 8px", borderRadius: "var(--border-radius-md)", color: "var(--color-text-secondary)", marginRight: "8px" }}>
                          {item.platform.replace(" for Artists", "").replace(" for Creators", "").replace(" AMP", "")}
                        </span>
                        <span style={{ fontSize: "13px", color: checkedItems[key] ? "var(--color-text-tertiary)" : "var(--color-text-secondary)", lineHeight: "1.6", textDecoration: checkedItems[key] ? "line-through" : "none" }}>
                          {item.task}
                        </span>
                      </div>
                    </div>
                  );
                })}
              </div>
            );
          })}

          <button
            onClick={() => sendPrompt("Can you export this DSP checklist as a Google Sheet I can use?")}
            style={{ marginTop: "1rem", padding: "10px 20px", borderRadius: "var(--border-radius-md)", border: "0.5px solid var(--color-border-secondary)", background: "var(--color-background-secondary)", cursor: "pointer", fontSize: "14px", color: "var(--color-text-primary)" }}
          >
            Convert to Google Sheet ↗
          </button>
        </div>
      )}
    </div>
  );
}