/* Music-first sections. Uses the existing dark palette and native player. */
.music-section{padding:0 36px 90px;scroll-margin-top:20px}
.music-heading{padding:80px 0 46px;border-bottom:1px solid var(--hairline)}
.music-kicker{display:block;color:var(--accent);font-size:11px;letter-spacing:.16em;margin-bottom:22px}
.music-title{font-size:clamp(54px,9.7vw,145px);line-height:.94;overflow-wrap:anywhere}
.music-title span,.music-arrow{color:var(--accent)}
.music-heading>p{margin-top:24px;color:var(--fg-dim)}
.music-release{display:grid;grid-template-columns:minmax(210px,.78fr) minmax(0,1.7fr);gap:clamp(28px,4vw,70px);padding:62px 0 78px;border-bottom:1px solid var(--hairline)}
.music-release-copy{min-width:0}
.music-song{font-size:clamp(51px,5.5vw,98px);line-height:.96;overflow-wrap:anywhere}
.music-links{position:relative;display:inline-block;max-width:100%;z-index:4}
.music-links[open]{z-index:20}
.music-links summary{list-style:none;cursor:pointer;transition:color .2s}
.music-links summary::-webkit-details-marker{display:none}
.music-links summary:hover,.music-links summary:focus-visible{color:var(--accent)}
.music-arrow{font:400 .43em 'Host Grotesk',sans-serif;vertical-align:top}
.music-links-menu{position:absolute;top:calc(100% + 12px);left:0;min-width:200px;width:max-content;max-width:min(350px,85vw);display:flex;flex-direction:column;padding:8px;background:#171013;border:1px solid rgba(242,237,232,.2);box-shadow:0 16px 42px rgba(0,0,0,.5);font:400 14px/1.4 'Host Grotesk',sans-serif;text-transform:none;letter-spacing:0}
.music-links-menu>a,.music-links-menu>span{padding:10px 12px}
.music-links-menu>a:hover{background:rgba(255,255,255,.08)}
.music-links-menu>span{color:var(--fg-dim);font-size:12px}
.music-artist{font-size:12px;letter-spacing:.14em;color:var(--fg-dim);margin-top:28px}
.music-artist-links{color:var(--fg);font-size:18px;font-weight:600;letter-spacing:.02em;vertical-align:middle}
.music-artist-links .music-arrow{font-size:.75em}
.music-hint{font-size:12px;line-height:1.6;color:var(--fg-dim);margin-top:19px;max-width:33ch}
.music-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start;min-width:0}
.music-card{min-width:0}
.music-card.landscape{grid-column:span 2}
.music-media{position:relative;aspect-ratio:9/16;background:#100c10;overflow:hidden;width:100%}
.music-card.landscape .music-media,.music-media.landscape{aspect-ratio:16/9}
.music-media>.yt-player,.music-media>.vid-player,.music-media>.external-video-link,.music-media>.music-tiktok{display:block;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;margin:0!important;aspect-ratio:inherit!important}
.music-media iframe,.music-media video{display:block;width:100%;height:100%}
.music-caption{padding-top:14px;display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:13px;letter-spacing:.05em;text-transform:uppercase}
.music-caption>span:last-child{color:var(--fg-dim);font:11px 'JetBrains Mono',monospace}
.music-pending{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:radial-gradient(ellipse at 45% 35%,rgba(224,56,44,.22),transparent 55%),linear-gradient(145deg,#210910,#09080a 65%);font:12px 'JetBrains Mono',monospace;letter-spacing:.16em}
.music-pending:after{content:'';position:absolute;inset:12px;border:1px solid rgba(242,237,232,.1);pointer-events:none}
.music-pending .music-star{font:clamp(65px,9vw,130px)/1 'Host Grotesk',sans-serif;color:var(--accent);margin-bottom:20px}
.music-pending small{color:var(--fg-dim);font-size:10px}
.music-archive{padding-top:64px}
.music-archive-head{display:flex;justify-content:space-between;align-items:center;gap:18px;padding-bottom:22px;margin-bottom:30px;border-bottom:1px solid var(--hairline)}
.music-archive-head h3{font:400 clamp(30px,4vw,56px)/1 'Anton',sans-serif}
.music-archive-head>span{color:var(--fg-dim);font-size:11px}
.music-archive-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}
.music-archive-card{min-width:0}
.music-archive-card .music-media.portrait{max-width:330px}
.music-tiktok{position:relative;aspect-ratio:9/16;background:#000}
.music-tiktok iframe{display:block;width:100%;height:100%;border:0}
.music-tiktok-loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--fg-dim)}
.music-3d-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;padding-top:45px}
.music-3d-grid>article{min-width:0}
.music-3d-grid .yt-player,.music-3d-grid .vid-player,.music-3d-grid img{display:block;width:100%;max-width:none;aspect-ratio:16/9;object-fit:cover}
.music-3d-grid h3{margin-top:18px;font-size:clamp(28px,4vw,54px)}
.music-3d-grid p{color:var(--fg-dim);margin-top:10px}
.music-3d-empty{margin-top:42px;min-height:240px;padding:30px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;border:1px solid var(--hairline);background:radial-gradient(ellipse,rgba(224,56,44,.09),transparent 65%)}
.music-3d-empty small{color:var(--accent);font-size:10px;letter-spacing:.2em}
.music-3d-empty p{font-size:clamp(42px,8vw,96px)}
.music-3d-empty span{color:var(--fg-dim);font-size:13px}
#portfolio .portfolio-hero .ph-title{font-size:clamp(72px,16vw,245px)}
@media(max-width:900px){.music-release{grid-template-columns:1fr;gap:34px}.music-song{font-size:clamp(50px,10vw,92px)}}
@media(max-width:650px){.music-section{padding:0 16px 65px}.music-heading{padding:64px 0 34px}.music-title{font-size:clamp(52px,13vw,86px)}.music-release{padding:38px 0 46px}.music-grid{gap:10px}.music-caption{font-size:11px;padding-top:10px}.music-archive{padding-top:46px}.music-archive-head>span{display:none}.music-archive-grid,.music-3d-grid{grid-template-columns:1fr;gap:25px}.music-archive-card .music-media.portrait{max-width:min(100%,380px);margin:auto}#portfolio .portfolio-hero .ph-title{font-size:clamp(58px,17vw,115px)}}
@media(max-width:380px){.music-grid{grid-template-columns:1fr}.music-card.landscape{grid-column:span 1}}

/* Keep the official player clickable, including the central play button
   and every native playback control. No transparent scroll interception. */
.music-tiktok iframe{pointer-events:auto!important}
.music-platform-link{
 display:inline-block;
 margin-top:8px;
 color:var(--fg-dim);
 font:500 12px/1.4 'Host Grotesk',sans-serif;
 text-decoration:underline;
 text-underline-offset:3px;
}
.music-platform-link:hover{color:var(--fg)}
.tiktok-load-error{
 position:absolute;inset:0;z-index:5;
 display:flex;flex-direction:column;
 align-items:center;justify-content:center;gap:12px;
 padding:20px;text-align:center;
 color:#f2ede8;background:#100e12;
 font:500 13px/1.5 'Host Grotesk',sans-serif;
}
.tiktok-load-error button,
.tiktok-load-error a{
 border:1px solid rgba(242,237,232,.35);
 border-radius:999px;padding:9px 16px;
 background:rgba(242,237,232,.06);
 color:#f2ede8;font-size:12px;
}
.tiktok-load-error button:hover,
.tiktok-load-error a:hover{background:#620110}
