/* Daniel Garth
   Warm near black, bone type, weathered turquoise accent.
   Type: Manrope for headings, Inter for everything else. */

:root{
  --bg:#12100E;
  --bg-2:#191512;
  --surface:#1E1A16;
  --line:rgba(237,228,214,.11);
  --line-strong:rgba(237,228,214,.22);
  --ink:#EDE4D6;
  --ink-dim:#A4978A;
  --ink-faint:#6F665D;
  --accent:#79B0A1;
  --accent-soft:rgba(121,176,161,.16);

  --display:"DM Serif Display",Georgia,"Times New Roman",serif;
  --body:"Quicksand",system-ui,-apple-system,"Segoe UI",sans-serif;
  --ui:"Quicksand",system-ui,-apple-system,"Segoe UI",sans-serif;

  --wrap:1120px;
  --player-h:76px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}
html.ready{scroll-behavior:smooth}

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--body);
  font-size:16.5px;
  line-height:1.7;
  font-weight:400;
  letter-spacing:-.006em;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

body.player-open{padding-bottom:calc(var(--player-h) + env(safe-area-inset-bottom))}

img,video{display:block;max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}

.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 24px}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

.skip{position:absolute;left:-9999px;top:0;z-index:99;background:var(--accent);color:#0F1614;padding:10px 16px;font-size:13px;font-weight:600}
.skip:focus{left:12px;top:12px}

:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}

/* ---------- shared type ---------- */

.eyebrow{
  font-size:11.5px;
  font-weight:600;
  letter-spacing:.19em;
  text-transform:uppercase;
  color:var(--accent);
  margin:0 0 14px;
}

.section-title{
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(1.9rem,4.8vw,2.8rem);
  line-height:1.1;
  letter-spacing:-.03em;
  margin:0;
}

.section-note{font-size:14.5px;color:var(--ink-faint);margin:14px 0 0;max-width:56ch}

/* ---------- top bar ---------- */

.topbar{
  position:fixed;
  inset:0 0 auto 0;
  z-index:40;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding:18px 24px;
  transition:background .4s var(--ease),backdrop-filter .4s var(--ease),border-color .4s var(--ease);
  border-bottom:1px solid transparent;
}
.topbar.stuck{
  background:rgba(18,16,14,.84);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom-color:var(--line);
}
.topbar.solid{
  position:sticky;
  top:0;
  background:rgba(18,16,14,.92);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom-color:var(--line);
}

.wordmark{
  font-family:var(--display);
  font-size:19px;
  font-weight:700;
  letter-spacing:.01em;
  text-decoration:none;
}

.topnav{display:flex;gap:26px}
.topnav a{
  font-family:var(--ui);
  font-size:12.5px;
  font-weight:600;
  letter-spacing:.13em;
  text-transform:uppercase;
  color:var(--ink-dim);
  text-decoration:none;
  transition:color .25s var(--ease);
}
.topnav a:hover,.topnav a[aria-current="page"]{color:var(--ink)}

@media (max-width:640px){
  .topbar{padding:14px 18px}
  .topnav{gap:18px}
  .topnav a{font-size:10.5px;letter-spacing:.1em}
}

/* ---------- hero ---------- */

.hero{
  position:relative;
  min-height:100svh;
  display:grid;
  place-items:center;
  text-align:center;
  padding:96px 24px clamp(56px,10vh,96px);
  overflow:hidden;
}

.hero-media{position:absolute;inset:0;z-index:0;overflow:hidden}

.hero-photo{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center center;
  filter:brightness(1.04) contrast(1.04) saturate(1.04);
}

/* Light scrim only. Enough to keep the headline legible and to blend the
   photograph into the page below it, without dimming the studio itself. */
.hero-scrim{
  position:absolute;inset:0;
  background:
    radial-gradient(120% 95% at 50% 45%,rgba(18,16,14,.14) 0%,rgba(18,16,14,.38) 62%,rgba(18,16,14,.60) 100%),
    linear-gradient(to top,var(--bg) 0%,rgba(18,16,14,.66) 16%,rgba(18,16,14,.28) 44%,rgba(18,16,14,.34) 100%);
}

.hero-body{position:relative;z-index:1;width:100%;max-width:900px}

.hero-name{
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(2.9rem,11.5vw,7.2rem);
  line-height:1;
  letter-spacing:-.045em;
  margin:0 0 18px;
  text-shadow:0 2px 10px rgba(0,0,0,.55), 0 8px 46px rgba(0,0,0,.6);
}

.hero-artist{
  text-shadow:0 2px 10px rgba(0,0,0,.6);
  font-family:var(--display);
  font-weight:600;
  font-size:clamp(1.15rem,3.4vw,1.7rem);
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--accent);
  margin:0 0 16px;
}

.hero-sub{
  font-family:var(--ui);
  font-weight:600;
  font-size:clamp(1.04rem,2.1vw,1.28rem);
  line-height:1.5;
  letter-spacing:-.01em;
  color:var(--ink);
  max-width:30ch;
  margin:0 auto 36px;
  text-shadow:0 2px 12px rgba(0,0,0,.75), 0 6px 30px rgba(0,0,0,.55);
}

.hero-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:50px;
  padding:0 28px;
  border-radius:999px;
  font-size:12.5px;
  font-weight:600;
  letter-spacing:.11em;
  text-transform:uppercase;
  text-decoration:none;
  transition:transform .25s var(--ease),background .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease);
}
.btn:hover{transform:translateY(-2px)}
.btn-solid{background:var(--accent);color:#0E1513;font-weight:700}
.btn-solid:hover{background:#8CC0B2}
.btn-ghost{border:1px solid var(--line-strong);color:var(--ink);background:rgba(18,16,14,.28)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}

@media (max-width:520px){
  .hero{padding-left:18px;padding-right:18px}
  .hero-actions{flex-direction:column;align-items:stretch}
}

/* ---------- page header (inner pages) ---------- */

.pagehead{padding:clamp(56px,9vw,96px) 0 clamp(28px,4vw,44px);border-bottom:1px solid var(--line)}
.pagehead-by{
  font-family:var(--ui);
  font-size:14px;
  font-weight:500;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ink-faint);
  margin:16px 0 0;
}
.pagehead h1{
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(2.2rem,6vw,3.4rem);
  line-height:1.04;
  letter-spacing:-.04em;
  margin:0;
}

/* ---------- sections ---------- */

.section{padding:clamp(64px,10vw,116px) 0}
.section-head{margin-bottom:38px}
.section-listen{padding-bottom:clamp(80px,12vw,132px)}

/* ---------- filters ---------- */

.filters{display:flex;flex-direction:column;gap:16px;margin-bottom:34px}

.searchbox{
  display:flex;align-items:center;gap:12px;
  border:1px solid var(--line);
  border-radius:999px;
  padding:0 20px;height:52px;max-width:420px;
  background:var(--surface);
  transition:border-color .25s var(--ease);
}
.searchbox:focus-within{border-color:var(--accent)}
.searchbox svg{width:17px;height:17px;flex:0 0 auto;fill:none;stroke:var(--ink-faint);stroke-width:1.7;stroke-linecap:round}
.searchbox input{flex:1;min-width:0;background:none;border:0;outline:none;color:var(--ink);font-family:var(--body);font-size:15px}
.searchbox input::placeholder{color:var(--ink-faint)}
.searchbox input::-webkit-search-cancel-button{filter:invert(.6)}

.tagrow{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none;-ms-overflow-style:none}
.tagrow::-webkit-scrollbar{display:none}

.tag{
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  padding:8px 16px;
  font-size:11.5px;
  font-weight:600;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ink-dim);
  white-space:nowrap;
  transition:all .22s var(--ease);
}
.tag:hover{border-color:var(--line-strong);color:var(--ink)}
.tag[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}

/* ---------- track list ---------- */

.tracklist{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}

.track{
  display:grid;
  grid-template-columns:44px 1fr auto;
  align-items:center;
  gap:18px;
  padding:18px 12px;
  border-bottom:1px solid var(--line);
  cursor:pointer;
  transition:background .22s var(--ease);
}
.track:hover{background:rgba(237,228,214,.035)}
.track.is-active{background:var(--accent-soft)}

.track-play{
  width:44px;height:44px;
  display:grid;place-items:center;
  border:1px solid var(--line-strong);
  border-radius:50%;
  transition:all .22s var(--ease);
}
.track:hover .track-play{border-color:var(--accent);color:var(--accent)}
.track.is-active .track-play{background:var(--accent);border-color:var(--accent);color:#0E1513}
.track-play svg{width:14px;height:14px;fill:currentColor}

.track-main{min-width:0}
.track-title{
  font-family:var(--display);
  font-size:1.12rem;
  font-weight:700;
  letter-spacing:-.02em;
  margin:0 0 5px;
  line-height:1.3;
}
.track-tags{display:flex;flex-wrap:wrap;gap:6px}
.track-tag{font-size:11px;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint)}
.track-tag::after{content:"\00a0/";margin-left:6px;color:var(--line-strong)}
.track-tag:last-child::after{content:""}

.track-side{display:flex;align-items:center;gap:16px;font-size:12.5px;color:var(--ink-faint);font-variant-numeric:tabular-nums}

.eq{display:none;align-items:flex-end;gap:2px;height:14px}
.track.is-playing .eq{display:flex}
.eq span{width:2px;background:var(--accent);animation:eq .9s ease-in-out infinite}
.eq span:nth-child(1){height:60%;animation-delay:-.2s}
.eq span:nth-child(2){height:100%;animation-delay:-.5s}
.eq span:nth-child(3){height:40%;animation-delay:-.8s}
@keyframes eq{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1)}}

.empty{color:var(--ink-faint);font-size:15px;padding:32px 12px 0}

@media (max-width:600px){
  .track{grid-template-columns:40px 1fr auto;gap:14px;padding:16px 4px}
  .track-play{width:40px;height:40px}
  .track-title{font-size:1.02rem}
  .track-side{font-size:11.5px;gap:10px}
}

/* ---------- pitch strip ---------- */

.section-pitch{background:var(--bg-2);border-block:1px solid var(--line)}
.pitch-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(28px,5vw,56px)}
.pitch-num{
  font-size:12px;font-weight:600;letter-spacing:.18em;color:var(--accent);margin:0 0 14px;
}
.pitch-item h3{
  font-family:var(--display);font-weight:400;font-size:1.24rem;letter-spacing:-.025em;margin:0 0 10px;
}
.pitch-item p{margin:0;color:var(--ink-dim);font-size:15.5px}
@media (max-width:760px){.pitch-grid{grid-template-columns:1fr;gap:34px}}

/* ---------- contact ---------- */

.contact-in{text-align:center;max-width:640px}
.contact-copy{color:var(--ink-dim);margin:18px auto 30px;max-width:46ch}
.contact-mail{
  display:inline-block;
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(1.3rem,4.2vw,2.1rem);
  letter-spacing:-.03em;
  color:var(--accent);
  text-decoration:none;
  border-bottom:2px solid rgba(121,176,161,.35);
  padding-bottom:4px;
  transition:border-color .25s var(--ease),color .25s var(--ease);
  word-break:break-word;
}
.contact-mail:hover{border-color:var(--accent);color:#8CC0B2}
.contact-note{margin:22px 0 0;color:var(--ink-faint);font-size:14px}

/* ---------- about page ---------- */

.about-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.55fr);gap:clamp(30px,6vw,76px);align-items:start}

.pullquote{
  font-family:var(--display);
  font-size:clamp(1.35rem,3.1vw,1.85rem);
  line-height:1.3;
  letter-spacing:-.03em;
  font-weight:600;
  margin:0 0 26px;
  border-left:2px solid var(--accent);
  padding-left:22px;
}

.about-photo.photo{filter:sepia(.55) saturate(1.35) contrast(1.06) brightness(.92)}
.about-photo{
  width:100%;
  border-radius:12px;
  border:1px solid var(--line);
  aspect-ratio:4/3;
  object-fit:cover;
}

.about-copy p{margin:0 0 20px;color:var(--ink-dim);max-width:64ch}
.about-copy p:first-child{color:var(--ink);font-size:1.06rem}
.about-copy p:last-child{margin-bottom:0}
.about-h2{font-family:var(--display);font-weight:400;font-size:1.3rem;letter-spacing:-.025em;margin:36px 0 14px}
.about-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}

.prose h2{
  font-family:var(--display);font-weight:400;font-size:1.22rem;letter-spacing:-.02em;
  margin:34px 0 10px;
}
.prose p,.prose li{color:var(--ink-dim);max-width:68ch}
.prose ul{padding-left:20px}
.prose li{margin-bottom:8px}
.prose a{color:var(--accent)}

@media (max-width:800px){.about-grid{grid-template-columns:1fr}}

/* ---------- platforms ---------- */

.platforms{border-top:1px solid var(--line)}

.platform{
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:20px 12px;
  border-bottom:1px solid var(--line);
  text-decoration:none;
  transition:background .22s var(--ease),padding-left .28s var(--ease);
}
.platform:hover{background:rgba(237,228,214,.035);padding-left:22px}

.platform-left{display:flex;align-items:center;gap:16px}
.platform-left svg{width:24px;height:24px;fill:var(--ink-dim);flex:0 0 auto;transition:fill .22s var(--ease)}
.platform:hover .platform-left svg{fill:var(--accent)}

.platform-name{font-family:var(--display);font-size:1.16rem;font-weight:700;letter-spacing:-.02em}
.platform-go{color:var(--ink-faint);font-size:17px;transition:color .22s var(--ease)}
.platform:hover .platform-go{color:var(--accent)}

/* ---------- footer ---------- */

.footer{border-top:1px solid var(--line);padding:52px 0 40px;background:var(--bg-2)}
.footer-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:24px;align-items:center}
.footer-name{font-family:var(--display);font-size:19px;font-weight:800;letter-spacing:-.03em;margin:0}

.social{display:flex;gap:10px;flex-wrap:wrap}
.social a{
  width:44px;height:44px;
  display:grid;place-items:center;
  border:1px solid var(--line);
  border-radius:50%;
  transition:all .22s var(--ease);
}
.social a:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-2px)}
.social svg{width:19px;height:19px;fill:var(--ink-dim);transition:fill .22s var(--ease)}
.social a:hover svg{fill:var(--accent)}

.footer-bottom{
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:14px;align-items:center;
  margin-top:36px;padding-top:22px;border-top:1px solid var(--line);
}
.footer-links{display:flex;flex-wrap:wrap;gap:20px}
.footer-links a{
  font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-faint);text-decoration:none;transition:color .2s var(--ease);
}
.footer-links a:hover{color:var(--accent)}
.footer-credit{margin:0;font-size:12px;color:var(--ink-faint)}
.footer-credit a{color:var(--ink-dim);text-decoration:none;border-bottom:1px solid var(--line-strong)}
.footer-credit a:hover{color:var(--accent);border-color:var(--accent)}

/* ---------- player: mini bar and full stage ---------- */

.player{
  position:fixed;left:0;right:0;bottom:0;z-index:50;
  background:rgba(25,21,18,.93);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  border-top:1px solid var(--line-strong);
  padding-bottom:env(safe-area-inset-bottom);
  transform:translateY(100%);
  transition:transform .45s var(--ease),height .45s var(--ease),background .45s var(--ease);
}
.player.up{transform:translateY(0)}

.player-in{
  max-width:1240px;margin:0 auto;height:var(--player-h);
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) auto auto;
  align-items:center;gap:20px;padding:0 20px;
}

.player-now{
  display:flex;align-items:center;gap:13px;min-width:0;
  text-align:left;padding:0;border-radius:8px;
  transition:opacity .2s var(--ease);
}
.player-now:hover{opacity:.75}

.player-art{
  width:44px;height:44px;flex:0 0 auto;border-radius:4px;
  background:linear-gradient(145deg,#2A2420,#151210);
  border:1px solid var(--line);
  display:grid;place-items:center;
  font-family:var(--display);font-weight:400;font-size:14px;color:var(--accent);
  background-size:cover;background-position:center;
  transition:width .45s var(--ease),height .45s var(--ease),font-size .45s var(--ease);
}

.player-meta{display:flex;flex-direction:column;min-width:0}
.player-title{font-family:var(--display);font-weight:400;font-size:14.5px;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.player-tags{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.player-controls{display:flex;align-items:center;gap:6px}

.ctrl{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;color:var(--ink-dim);transition:color .2s var(--ease),background .2s var(--ease),width .35s var(--ease),height .35s var(--ease)}
.ctrl:hover{color:var(--ink);background:rgba(237,228,214,.07)}
.ctrl svg{width:16px;height:16px;fill:currentColor}

.ctrl-play{width:44px;height:44px;background:var(--accent);color:#0E1513}
.ctrl-play:hover{background:#8CC0B2;color:#0E1513}
.ctrl-play svg{width:17px;height:17px}

.player-seek{display:flex;align-items:center;gap:12px;min-width:0}
.t{font-size:11.5px;color:var(--ink-faint);flex:0 0 auto;font-variant-numeric:tabular-nums}

.wave{position:relative;flex:1;min-width:0;height:34px;cursor:pointer;touch-action:none}
.wave-bars{position:absolute;inset:0;display:flex;align-items:center;gap:2px;pointer-events:none}
.wave-bars i{flex:1;border-radius:1px;min-width:1px}
.wave-base i{background:rgba(237,228,214,.2)}
.wave-fill{clip-path:inset(0 calc(100% - var(--p,0%)) 0 0)}
.wave-fill i{background:var(--accent)}

.player-right{display:flex;align-items:center;gap:14px}
.player-link,.player-mail{
  font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-dim);text-decoration:none;white-space:nowrap;
  border-bottom:1px solid var(--line-strong);
}
.player-mail{color:var(--accent);border-color:rgba(121,176,161,.4)}
.player-link:hover{color:var(--accent);border-color:var(--accent)}
.player-mail:hover{color:#8CC0B2;border-color:var(--accent)}
.ctrl-close{font-size:20px;line-height:1}

/* stage only pieces, hidden while the bar is small */
.stage-bg,.stage-collapse,.stage-label{display:none}

@media (max-width:900px){
  .player:not(.full) .player-in{
    grid-template-columns:minmax(0,1fr) auto auto;
    grid-template-rows:auto auto;
    gap:0 10px;height:auto;padding:10px 12px 12px 16px;
  }
  .player:not(.full) .player-now{grid-column:1;grid-row:1}
  .player:not(.full) .player-controls{grid-column:2;grid-row:1}

  /* keep only the close button from this group, the links do not fit */
  .player:not(.full) .player-right{
    display:flex;grid-column:3;grid-row:1;align-items:center;gap:0;
  }
  .player:not(.full) .player-right .player-link,
  .player:not(.full) .player-right .player-mail{display:none}
  .player:not(.full) .ctrl-close{
    width:40px;height:40px;font-size:22px;
    color:var(--ink-dim);
  }
  .player:not(.full) .ctrl-close:hover{color:var(--ink)}

  .player:not(.full) .player-seek{grid-column:1 / -1;grid-row:2;margin-top:4px}
  .player:not(.full) .wave{height:26px}
  .player:not(.full) .player-art{width:40px;height:40px}
  .player:not(.full) .player-controls{gap:2px}
  .player:not(.full) .ctrl{width:36px;height:36px}
  .player:not(.full) .ctrl-play{width:42px;height:42px}
  body.player-open{padding-bottom:calc(132px + env(safe-area-inset-bottom))}
}

/* ---------- the full screen stage ---------- */

body.stage-open{overflow:hidden}

.player.full{
  top:0;height:100dvh;
  border-top:0;
  background:var(--bg);
  padding-bottom:0;
}

.player.full .stage-bg{
  display:block;
  pointer-events:none;
  position:absolute;inset:0;
  background-size:cover;background-position:center;
  filter:blur(60px) saturate(120%);
  opacity:.32;
  transform:scale(1.25);
}
.player.full::after{
  content:"";position:absolute;inset:0;
  pointer-events:none;
  background:radial-gradient(90% 70% at 50% 40%,rgba(18,16,14,.4),var(--bg) 78%);
}

.player.full .stage-collapse{
  display:grid;place-items:center;
  position:absolute;
  top:calc(22px + env(safe-area-inset-top));
  left:20px;
  z-index:40;
  width:64px;height:64px;
  border-radius:50%;
  border:1px solid var(--line-strong);
  background:rgba(18,16,14,.55);
  color:var(--ink-dim);
  cursor:pointer;
  transition:color .2s var(--ease),background .2s var(--ease),border-color .2s var(--ease);
}
.player.full .stage-collapse:hover{
  color:#0E1513;
  background:var(--accent);
  border-color:var(--accent);
}
/* an invisible cushion around the button so a near miss still lands */
.player.full .stage-collapse::before{
  content:"";
  position:absolute;
  inset:-16px;
  border-radius:16px;
}
.stage-collapse svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

.player.full .stage-label{
  display:block;
  position:absolute;top:calc(38px + env(safe-area-inset-top));left:0;right:0;z-index:1;
  pointer-events:none;
  text-align:center;margin:0;
  font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-faint);
}

.player.full .player-in{
  position:relative;z-index:2;
  display:flex;flex-direction:column;
  align-items:center;
  width:100%;max-width:560px;gap:0;
  padding:calc(96px + env(safe-area-inset-top)) 24px calc(56px + env(safe-area-inset-bottom));
  text-align:center;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  height:100%;
}

.player.full .player-now{
  order:1;flex-direction:column;gap:30px;cursor:default;width:100%;
  align-items:center;text-align:center;
}
.player.full .player-now:hover{opacity:1}

.player.full .player-art{
  width:min(70vw,300px);height:min(70vw,300px);
  border-radius:10px;font-size:clamp(38px,12vw,64px);
  box-shadow:0 30px 70px rgba(0,0,0,.55);
}
.player.full .player-meta{align-items:center;width:100%}
.player.full .player-title{font-size:clamp(1.5rem,6vw,2rem);white-space:normal;line-height:1.15}
.player.full .player-tags{font-size:12px;letter-spacing:.14em;white-space:normal;margin-top:8px}

.player.full .player-seek{order:2;width:100%;margin:34px 0 6px}
.player.full .wave{height:56px}
.player.full .t{font-size:12px}

.player.full .player-controls{order:3;gap:24px;margin-top:22px}
.player.full .ctrl{width:56px;height:56px}
.player.full .ctrl svg{width:22px;height:22px}
.player.full .ctrl-play{width:78px;height:78px}
.player.full .ctrl-play svg{width:30px;height:30px}

.player.full .player-right{order:4;margin-top:36px;flex-wrap:wrap;justify-content:center;gap:18px}
.player.full .player-link,.player.full .player-mail{font-size:12px}
.player.full .ctrl-close{display:none}

@media (min-height:900px){
  .player.full .player-art{width:min(60vw,340px);height:min(60vw,340px)}
}

/* short laptop screens: shrink the art so the lyrics button is visible
   without scrolling, rather than hiding below the fold */
@media (min-width:820px) and (max-height:860px){
  .player.full .player-in{padding-top:calc(76px + env(safe-area-inset-top))}
  .player.full .player-art{width:min(38vh,220px);height:min(38vh,220px)}
  .player.full .player-now{gap:20px}
  .player.full .player-title{font-size:1.5rem}
  .player.full .player-seek{margin:22px 0 4px}
  .player.full .wave{height:44px}
  .player.full .player-controls{margin-top:14px}
  .player.full .ctrl{width:50px;height:50px}
  .player.full .ctrl-play{width:66px;height:66px}
  .player.full .stage-lyrics{margin-top:22px;padding-top:20px}
}

/* ---------- feedback ---------- */

.feedback{position:fixed;left:0;right:0;bottom:calc(var(--player-h) + env(safe-area-inset-bottom));z-index:60;padding:0 16px 14px;pointer-events:none}
body.stage-open .feedback{bottom:calc(28px + env(safe-area-inset-bottom))}
.feedback-in{
  position:relative;max-width:520px;margin:0 auto;
  background:var(--surface);border:1px solid var(--line-strong);border-radius:14px;
  padding:20px 22px;box-shadow:0 18px 50px rgba(0,0,0,.5);
  pointer-events:auto;transform:translateY(14px);opacity:0;
  transition:transform .4s var(--ease),opacity .4s var(--ease);
}
.feedback.show .feedback-in{transform:translateY(0);opacity:1}

.feedback-close{position:absolute;top:8px;right:10px;width:32px;height:32px;color:var(--ink-faint);font-size:20px;line-height:1;border-radius:50%}
.feedback-close:hover{color:var(--ink)}

.feedback-q{font-family:var(--display);font-weight:400;font-size:1.1rem;letter-spacing:-.02em;margin:0 0 16px;padding-right:28px}
.feedback-q span{color:var(--accent)}

.feedback-choices{display:flex;flex-wrap:wrap;gap:8px}
.feedback-choices button{
  flex:1 1 auto;border:1px solid var(--line-strong);border-radius:999px;padding:11px 16px;
  font-size:11.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-dim);
  transition:all .2s var(--ease);white-space:nowrap;
}
.feedback-choices button:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}

.feedback-more{display:flex;gap:8px;margin-top:12px}
.feedback-more input{
  flex:1;min-width:0;background:var(--bg);border:1px solid var(--line);border-radius:999px;
  padding:11px 16px;color:var(--ink);font-family:var(--body);font-size:14px;outline:none;
}
.feedback-more input:focus{border-color:var(--accent)}
.feedback-more button{background:var(--accent);color:#0E1513;border-radius:999px;padding:0 20px;font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}
.feedback-thanks{margin:6px 0 0;color:var(--ink-dim);font-size:14px}

@media (max-width:900px){
  .feedback{bottom:calc(132px + env(safe-area-inset-bottom))}
  body.stage-open .feedback{bottom:calc(20px + env(safe-area-inset-bottom))}
}

/* ---------- motion ---------- */

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}

/* ================= vault ================= */

.vault-gate{
  position:fixed;
  top:0;left:0;right:0;bottom:0;
  width:100%;height:100%;
  z-index:200;
  background:#000;
  overflow:hidden;
  transition:opacity .8s var(--ease);
}
.vault-gate.gone{opacity:0;pointer-events:none}

/* absolutely positioned rather than a centred grid item, so the frame always
   fills the viewport and crops instead of letterboxing */
.vault-gate video{
  position:absolute;
  top:50%;left:50%;
  transform:translate(-50%,-50%);
  display:block;
  width:100%;
  height:100%;
  min-width:100%;
  min-height:100%;
  object-fit:cover;
  object-position:center center;
}
.vault-skip{
  position:absolute;bottom:calc(28px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);
  font-family:var(--ui);font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(237,228,214,.75);border:1px solid rgba(237,228,214,.28);border-radius:999px;padding:11px 24px;
  background:rgba(0,0,0,.35);backdrop-filter:blur(6px);
}
.vault-skip:hover{color:var(--ink);border-color:var(--accent)}

.vault-count{font-family:var(--ui);font-size:13px;color:var(--ink-faint);margin:0 0 26px}

/* song rows in the vault carry more detail than the featured list */
.vault-row{
  border-bottom:1px solid var(--line);
  padding:20px 12px;
  cursor:pointer;
  transition:background .22s var(--ease);
}
.vault-row:hover{background:rgba(237,228,214,.035)}
.vault-row.is-active{background:var(--accent-soft)}

.vault-head{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:16px}
.vault-title{font-family:var(--display);font-weight:400;font-size:1.32rem;letter-spacing:-.01em;margin:0;line-height:1.2}
.vault-sub{margin:6px 0 0;font-size:14.5px;color:var(--ink-dim);max-width:70ch}
.vault-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.chip{
  font-family:var(--ui);font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:999px;padding:4px 11px;color:var(--ink-faint);
}
.chip.genre{border-color:rgba(121,176,161,.35);color:var(--accent)}

.vault-lyrics{
  margin:14px 0 0 60px;padding:0;
  max-height:0;overflow:hidden;
  transition:max-height .4s var(--ease),opacity .3s var(--ease);
  opacity:0;
}
.vault-row.open .vault-lyrics{max-height:1200px;opacity:1;padding:6px 0 4px}
.vault-lyrics pre{
  font-family:var(--body);font-size:15px;line-height:1.75;color:var(--ink-dim);
  white-space:pre-wrap;margin:0;max-width:62ch;
}
.lyric-toggle{
  font-family:var(--ui);font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-faint);margin-top:12px;margin-left:60px;border-bottom:1px solid var(--line-strong);padding-bottom:2px;
}
.lyric-toggle:hover{color:var(--accent);border-color:var(--accent)}

@media (max-width:600px){
  .vault-head{grid-template-columns:40px 1fr;gap:12px}
  .vault-head .track-side{grid-column:2;justify-self:start}
  .vault-lyrics,.lyric-toggle{margin-left:0}
}

/* filter groups */
.filter-group{margin-bottom:16px}
.filter-label{
  font-family:var(--ui);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-faint);margin:0 0 10px;
}
.filter-clear{
  font-family:var(--ui);font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-faint);border-bottom:1px solid var(--line-strong);padding-bottom:2px;
}
.filter-clear:hover{color:var(--accent);border-color:var(--accent)}

/* more prompt at the end of the featured list */
.more-prompt{text-align:center;padding:52px 0 0}
.more-prompt p{color:var(--ink-dim);margin:0 0 20px}

/* ================= player lyrics ================= */

.stage-lyrics{display:none}
.player.full .stage-lyrics{
  display:block;order:5;
  width:100%;margin-top:30px;
  border-top:1px solid var(--line);
  padding-top:26px;
}

.lyrics-toggle{
  display:inline-flex;align-items:center;gap:10px;
  margin:0 auto;
  padding:13px 28px;
  border:1px solid var(--accent);
  border-radius:999px;
  background:var(--accent-soft);
  font-family:var(--ui);font-size:12.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;
  color:var(--accent);
  transition:all .2s var(--ease);
}
.lyrics-toggle:hover{background:var(--accent);color:#0E1513;border-color:var(--accent)}
.lyrics-toggle svg{
  width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round;
  transition:transform .3s var(--ease);
}
.lyrics-toggle.open{color:var(--accent);border-color:var(--accent)}
.lyrics-toggle.open svg{transform:rotate(180deg)}

.lyrics-panel{
  max-height:0;
  overflow:hidden;
  opacity:0;
  transition:max-height .42s var(--ease),opacity .3s var(--ease),margin .3s var(--ease);
}
.lyrics-panel.open{
  max-height:none;
  overflow-y:visible;
  opacity:1;
  margin-top:18px;
  -webkit-overflow-scrolling:touch;
}
.lyrics-panel pre{
  font-family:var(--body);font-size:16px;line-height:1.9;color:var(--ink);
  white-space:pre-wrap;margin:0;text-align:center;
}




@media (max-width:700px){
  .player.full .stage-lyrics{margin-top:18px}
  .lyrics-panel.open{max-height:none}
  .lyrics-panel pre{font-size:15px;line-height:1.85}
  
  .player.full .stage-collapse{width:58px;height:58px;top:calc(16px + env(safe-area-inset-top));left:14px}
}

/* ================= about ================= */

/* the copy runs the full width of the page rather than hugging the left edge */
.about-single{max-width:none}
.about-single p{max-width:none}
.about-single p:first-child{font-size:1.14rem;color:var(--ink)}
.about-single .about-h2{max-width:none}

/* the whole photograph, uncropped, sized to sit comfortably at the end */
.dan-figure{margin:42px auto 0;display:flex;justify-content:center}
.dan-figure-top{margin:0 auto 38px}
.dan-photo{
  display:block;
  margin:0 auto;
  width:100%;
  max-width:620px;
  height:auto;
  aspect-ratio:4/3;
  object-fit:contain;
  border-radius:12px;
  border:1px solid var(--line);
  background:#0d0b09;
}

@media (max-width:700px){
  .dan-figure{margin-top:34px}
  .dan-photo{max-width:100%}
}
.about-sign{
  margin-top:34px;padding-top:22px;border-top:1px solid var(--line);
  font-family:var(--ui);font-size:14px;color:var(--ink-dim);
}
.about-sign a{color:var(--accent);text-decoration:none}

/* ================= collaborate ================= */

.collab-section{padding-top:clamp(48px,7vw,80px)}

.collab-grid{
  display:grid;
  grid-template-columns:minmax(0,1.55fr) minmax(300px,.95fr);
  gap:clamp(36px,6vw,84px);
  align-items:start;
}

.collab-copy p{color:var(--ink-dim);margin:0 0 22px;max-width:62ch}
.collab-lead{
  font-size:clamp(1.1rem,2.2vw,1.28rem);
  line-height:1.65;
  color:var(--ink) !important;
}

.collab-ways{
  margin-top:44px;
  padding-top:38px;
  border-top:1px solid var(--line);
  display:grid;
  gap:30px;
}
.collab-way h3{
  font-family:var(--display);
  font-weight:400;
  font-size:1.22rem;
  letter-spacing:-.02em;
  margin:0 0 8px;
}
.collab-way p{margin:0;font-size:15.5px}
.collab-way .pitch-num{margin:0 0 10px}

/* the card */
.contact-card{
  position:sticky;
  top:96px;
  background:var(--bg-2);
  border:1px solid var(--line);
  border-radius:16px;
  padding:30px 30px 32px;
}
.contact-name{
  font-family:var(--display);
  font-size:1.5rem;
  letter-spacing:-.02em;
  margin:0 0 22px;
}

.contact-list{margin:0 0 26px;padding:0}
.contact-list dt{
  font-family:var(--ui);
  font-size:10.5px;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--ink-faint);
  margin-top:16px;
}
.contact-list dt:first-child{margin-top:0}
.contact-list dd{
  margin:5px 0 0;
  font-size:16px;
  color:var(--ink);
  word-break:break-word;
}
.contact-list dd a{
  color:var(--accent);
  text-decoration:none;
  border-bottom:1px solid rgba(121,176,161,.3);
  padding-bottom:1px;
}
.contact-list dd a:hover{border-color:var(--accent)}

.contact-btn{width:100%}
.contact-fine{margin:14px 0 0;font-size:13px;color:var(--ink-faint);text-align:center}

.contact-links{margin-top:28px;padding-top:22px;border-top:1px solid var(--line)}
.contact-links .filter-label{margin-bottom:12px}
.contact-links a{
  display:inline-block;
  margin:0 14px 8px 0;
  font-family:var(--ui);
  font-size:13.5px;
  color:var(--ink-dim);
  text-decoration:none;
  border-bottom:1px solid var(--line-strong);
  padding-bottom:2px;
}
.contact-links a:hover{color:var(--accent);border-color:var(--accent)}

.collab-foot{
  border-top:1px solid var(--line);
  padding-top:clamp(52px,7vw,76px);
  padding-bottom:clamp(64px,9vw,104px);
}

@media (min-width:900px){
  .collab-ways{grid-template-columns:1fr 1fr;gap:34px 40px}
}

@media (max-width:840px){
  .collab-grid{grid-template-columns:1fr;gap:40px}
  .contact-card{position:static}
}

/* ---------- search feedback ----------
   A typed word lights up the chips and buttons it matched, so the connection
   between what you typed and why a song is listed is visible. */

.chip.hit{
  background:var(--accent-soft);
  border-color:var(--accent);
  color:var(--accent);
}

.tag.hit{
  border-color:rgba(121,176,161,.55);
  color:var(--accent);
}
.tag.hit[aria-pressed="true"]{background:var(--accent-soft)}

.vault-title mark,
.vault-sub mark{
  background:rgba(121,176,161,.22);
  color:var(--ink);
  border-radius:3px;
  padding:0 3px;
}

/* The full stop at the end of the footer credit is the way into the song
   manager. It reads as punctuation until you hover it. */
.manager-dot{
  color:var(--ink-faint);
  text-decoration:none;
  padding:0 6px 4px 1px;
  border:0;
  transition:color .2s var(--ease);
}
.manager-dot:hover{color:var(--accent)}

/* ================= consent notice ================= */

.consent{
  position:fixed;
  left:0;right:0;bottom:0;
  z-index:70;
  padding:0 16px calc(16px + env(safe-area-inset-bottom));
  pointer-events:none;
}
.consent-in{
  max-width:760px;
  margin:0 auto;
  background:var(--surface);
  border:1px solid var(--line-strong);
  border-radius:14px;
  padding:20px 22px;
  box-shadow:0 18px 50px rgba(0,0,0,.55);
  display:flex;
  align-items:center;
  gap:22px;
  pointer-events:auto;
  transform:translateY(18px);
  opacity:0;
  transition:transform .45s var(--ease),opacity .45s var(--ease);
}
.consent.show .consent-in{transform:translateY(0);opacity:1}

.consent-text{
  margin:0;
  font-size:14px;
  line-height:1.6;
  color:var(--ink-dim);
}
.consent-text a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(121,176,161,.35)}
.consent-text a:hover{border-color:var(--accent)}

.consent-actions{display:flex;gap:10px;flex:0 0 auto}
.consent-btn{
  border-radius:999px;
  padding:11px 22px;
  font-family:var(--ui);
  font-size:11.5px;
  font-weight:600;
  letter-spacing:.12em;
  text-transform:uppercase;
  white-space:nowrap;
  transition:all .2s var(--ease);
}
.consent-yes{background:var(--accent);color:#0E1513}
.consent-yes:hover{background:#8CC0B2}
.consent-no{border:1px solid var(--line-strong);color:var(--ink-dim)}
.consent-no:hover{color:var(--ink);border-color:var(--ink-faint)}

/* keep it clear of the player bar when something is playing */
body.player-open .consent{bottom:calc(var(--player-h) + env(safe-area-inset-bottom))}

@media (max-width:700px){
  .consent-in{flex-direction:column;align-items:stretch;gap:16px;padding:18px}
  .consent-actions{justify-content:stretch}
  .consent-btn{flex:1}
  body.player-open .consent{bottom:calc(132px + env(safe-area-inset-bottom))}
}

.consent-reset{
  margin-top:6px;
  font-family:var(--ui);
  font-size:13px;
  color:var(--accent);
  border-bottom:1px solid rgba(121,176,161,.35);
  padding-bottom:1px;
}
.consent-reset:hover{border-color:var(--accent)}

/* on narrow phones the full word gets clipped by the edge */
@media (max-width:420px){
  .topnav a[href*="collaborate"]::after{content:""}
  .topnav a[href*="collaborate"]{font-size:0}
  .topnav a[href*="collaborate"]::before{content:"COLLAB";font-size:10.5px}
}



/* the way onward after a song finishes */
.feedback-next{
  display:flex;
  gap:10px;
  margin-top:18px;
  padding-top:16px;
  border-top:1px solid var(--line);
}
.feedback-next button{
  flex:1;
  border-radius:999px;
  padding:12px 18px;
  font-family:var(--ui);
  font-size:11.5px;
  font-weight:600;
  letter-spacing:.1em;
  text-transform:uppercase;
  white-space:nowrap;
  transition:all .2s var(--ease);
}
.fb-next{background:var(--accent);color:#0E1513}
.fb-next:hover{background:#8CC0B2}
.fb-next:disabled{
  background:none;
  border:1px solid var(--line);
  color:var(--ink-faint);
  cursor:default;
}
.fb-notnow{border:1px solid var(--line-strong);color:var(--ink-dim)}
.fb-notnow:hover{color:var(--ink);border-color:var(--ink-faint)}

/* one icon at a time on the play button */
.ctrl-play .i-play{display:block}
.ctrl-play .i-pause{display:none}
.ctrl-play.playing .i-play{display:none}
.ctrl-play.playing .i-pause{display:block}

/* iOS zooms the page whenever a focused field is under 16px. Every input on
   the site sits at 16 on small screens so tapping one never zooms. */
@media (max-width:820px){
  .feedback-more input,
  .searchbox input,
  .field input,
  .field textarea,
  input[type="text"],
  input[type="search"],
  input[type="email"],
  input[type="url"],
  input[type="password"],
  input[type="date"],
  textarea,
  select{
    font-size:16px !important;
  }
}

/* the rating they picked stays lit so the choice is never in doubt */
.feedback-choices button.chosen{
  background:var(--accent);
  border-color:var(--accent);
  color:#0E1513;
}
.feedback-choices button.chosen:hover{
  background:var(--accent);
  border-color:var(--accent);
  color:#0E1513;
}
/* the ones they passed over step back */
.feedback-choices:has(.chosen) button:not(.chosen){opacity:.45}
.feedback-choices:has(.chosen) button:not(.chosen):hover{opacity:.7}

.feedback-next[hidden]{display:none}

/* the player names the song, not its tags. The list is where those belong. */
.player-tags{display:none !important}

/* ---------- play all ---------- */

.vault-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  flex-wrap:wrap;
  margin-bottom:26px;
}
.vault-bar .vault-count{margin:0}

.play-all{
  display:inline-flex;
  align-items:center;
  gap:10px;
  padding:12px 24px;
  border-radius:999px;
  background:var(--accent);
  color:#0E1513;
  font-family:var(--ui);
  font-size:12px;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
  white-space:nowrap;
  transition:all .2s var(--ease);
}
.play-all:hover{background:#8CC0B2;transform:translateY(-1px)}
.play-all svg{width:15px;height:15px;fill:currentColor}
.play-all .pa-stop{display:none}
.play-all.playing{background:none;border:1px solid var(--accent);color:var(--accent)}
.play-all.playing:hover{background:var(--accent-soft)}
.play-all.playing .pa-play{display:none}
.play-all.playing .pa-stop{display:block}

@media (max-width:560px){
  .vault-bar{gap:14px}
  .play-all{width:100%;justify-content:center}
}

/* ---------- full player on a phone ----------
   Everything scaled down so the lyrics button sits in view instead of
   hiding below the fold under Safari's toolbar. */

@media (max-width:700px){
  /* the column is centred in the screen rather than pinned to the top, so the
     spare room at the bottom gets shared out instead of pooling under the
     lyrics button */
  .player.full .player-in{
    justify-content:center;
    padding:calc(64px + env(safe-area-inset-top)) 20px calc(72px + env(safe-area-inset-bottom));
  }

  .player.full .player-now{gap:24px}
  .player.full .player-art{
    width:min(64vw,270px);
    height:min(64vw,270px);
    border-radius:10px;
  }
  .player.full .player-title{font-size:clamp(1.35rem,5.6vw,1.7rem);line-height:1.2}

  .player.full .player-seek{margin:30px 0 4px}
  .player.full .wave{height:44px}
  .player.full .t{font-size:11.5px}

  .player.full .player-controls{gap:22px;margin-top:22px}
  .player.full .ctrl{width:50px;height:50px}
  .player.full .ctrl svg{width:20px;height:20px}
  .player.full .ctrl-play{width:70px;height:70px}
  .player.full .ctrl-play svg{width:26px;height:26px}

  .player.full .stage-lyrics{margin-top:32px;padding-top:26px}
  .lyrics-toggle{padding:14px 28px;font-size:12.5px}

  .player.full .player-right{margin-top:28px}

  .player.full .stage-collapse{
    width:52px;height:52px;
    top:calc(12px + env(safe-area-inset-top));
    left:12px;
  }
  .player.full .stage-label{top:calc(28px + env(safe-area-inset-top))}
}

/* very short phones: trim further so nothing needs scrolling to be found */
/* shorter phones: pull it back so nothing needs hunting for */
@media (max-width:700px) and (max-height:740px){
  .player.full .player-art{width:min(46vw,190px);height:min(46vw,190px)}
  .player.full .player-in{padding-top:calc(58px + env(safe-area-inset-top))}
  .player.full .player-now{gap:18px}
  .player.full .player-seek{margin:20px 0 2px}
  .player.full .wave{height:38px}
  .player.full .player-controls{margin-top:14px;gap:18px}
  .player.full .ctrl-play{width:62px;height:62px}
  .player.full .stage-lyrics{margin-top:22px;padding-top:20px}
  .player.full .player-right{margin-top:20px}
}

/* the art square fades in once the file has decoded rather than popping */
.player-art{transition:background-image .25s var(--ease),width .45s var(--ease),height .45s var(--ease),font-size .45s var(--ease)}
