Index: src/services/AudioEmbedService.js
===================================================================
--- src/services/AudioEmbedService.js	(revision e46ebaa7d0ba257f3e7916d2a4ecfa52e68617da)
+++ src/services/AudioEmbedService.js	(revision 48481cd4312d157017474ea7e2b0d723b63ac73c)
@@ -248,12 +248,22 @@
     // gevangen wordt gaat rechtstreeks achter https://embed.music.apple.com/ aan.
     const match = url.match(
-      /music\.apple\.com\/([a-z]{2}\/(?:album|playlist|song)\/[^/?#]+\/(?:[0-9]+|pl\.[A-Za-z0-9_-]+))/i,
+      /music\.apple\.com\/([a-z]{2}\/(album|playlist|song)\/[^/?#]+\/(?:[0-9]+|pl\.[A-Za-z0-9_-]+))/i,
     );
     if (!match) return null;
     const src = `https://embed.music.apple.com/${match[1]}`;
+    // De hoogte hangt af van WAT je insluit, en dat stond hier op een vaste
+    // 175px -- de maat van een LOS NUMMER. Een album of afspeellijst is 450px,
+    // dus daarvan zag je ongeveer een derde, met `overflow:hidden` eroverheen
+    // zodat de rest ook niet te bereiken viel. Barts melding (20-8) over
+    // boiert.eu/the-mixtape.
+    //
+    // Nagemeten en niet overgenomen: de embed-pagina van die lijst
+    // (pl.u-LdbqzVvI3go5g) geeft zijn <main> EN zijn <body> allebei precies
+    // 450px. Dat is ook de hoogte in Apple's eigen insluitcode.
+    const hoogte = String(match[2]).toLowerCase() === 'song' ? 175 : 450;
     return `
       <figure class="folio-embed folio-embed--applemusic">
         <iframe src="${this.escape(src)}"
-                style="width:100%;height:175px;border:0;overflow:hidden;border-radius:8px;"
+                style="width:100%;height:${hoogte}px;border:0;overflow:hidden;border-radius:8px;"
                 loading="lazy"
                 allow="autoplay; clipboard-write; encrypted-media"
Index: test/apple-music-embed.test.js
===================================================================
--- test/apple-music-embed.test.js	(revision e46ebaa7d0ba257f3e7916d2a4ecfa52e68617da)
+++ test/apple-music-embed.test.js	(revision 48481cd4312d157017474ea7e2b0d723b63ac73c)
@@ -53,2 +53,38 @@
   }
 });
+
+// ── De hoogte hoort bij wat je insluit (Bart, 20-8) ─────────────────────────
+// Op boiert.eu/the-mixtape stond een afspeellijst in een venster van 175px: de
+// maat van een LOS NUMMER. Je zag ongeveer een derde, en `overflow:hidden`
+// maakte de rest ook nog onbereikbaar.
+//
+// 450 is niet uit de documentatie overgenomen maar nagemeten: de embed-pagina
+// van pl.u-LdbqzVvI3go5g geeft zijn <main> en <body> allebei precies 450px.
+test('een afspeellijst krijgt 450px, niet de hoogte van een los nummer', () => {
+  const html = AudioEmbedService.generateIframe('applemusic',
+    { url: 'https://music.apple.com/nl/playlist/romance/pl.u-LdbqzVvI3go5g' });
+  assert.match(html, /height:450px/, 'een lijst is 450 hoog');
+  assert.ok(!/height:175px/.test(html), 'en zeker niet 175');
+});
+
+test('een album ook: dat is dezelfde speler met een lijst erin', () => {
+  const html = AudioEmbedService.generateIframe('applemusic',
+    { url: 'https://music.apple.com/nl/album/blue/1440857781' });
+  assert.match(html, /height:450px/);
+});
+
+test('een los nummer blijft klein', () => {
+  const html = AudioEmbedService.generateIframe('applemusic',
+    { url: 'https://music.apple.com/nl/song/blue/1440857785' });
+  assert.match(html, /height:175px/, 'een enkel nummer heeft geen lijst te tonen');
+});
+
+test('en de soort wordt uit de URL gelezen, niet geraden', () => {
+  // Dezelfde id-vorm, ander soort: alleen het woord in het pad mag beslissen.
+  const lijst = AudioEmbedService.generateIframe('applemusic',
+    { url: 'https://music.apple.com/us/playlist/x/pl.abc123def456' });
+  const nummer = AudioEmbedService.generateIframe('applemusic',
+    { url: 'https://music.apple.com/us/song/x/123456789' });
+  assert.match(lijst, /height:450px/);
+  assert.match(nummer, /height:175px/);
+});
