/* ===== Colours & fonts (change these to restyle the whole site) ===== */
:root {
  --bg: #000;
  --text: #fafafa;
  --muted: #d9d9d9;
  --line: #3a3a3a;
  --serif: "Cormorant Garamond", "Caudex", Georgia, serif;
  --nav-font: "Caudex", Georgia, serif;
  --sans: "Helvetica Neue", Helvetica, Arial, sans-serif;
  --width: 1100px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--sans);
  font-weight: 300;
  line-height: 1.45;
  font-variant-numeric: lining-nums;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; }

/* ===== Header ===== */
.site-header {
  text-align: center;
  padding: 44px 16px 36px;
}
.logo { text-decoration: none; display: inline-block; }
.logo-name {
  display: block;
  font-family: var(--serif);
  font-weight: 500;
  font-size: clamp(26px, 4.4vw, 40px);
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.logo-sub {
  display: block;
  margin-top: 8px;
  font-size: clamp(13px, 1.6vw, 17px);
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.main-nav {
  max-width: 900px;
  margin: 46px auto 0;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px 28px;
}
.main-nav a {
  font-family: var(--nav-font);
  font-size: 18px;
  text-decoration: none;
  padding: 4px 2px;
  border-bottom: 1px solid transparent;
  transition: border-color .2s;
}
.main-nav a:hover { border-color: var(--text); }

/* ===== Hero photo ===== */
.hero img {
  width: 100%;
  height: clamp(260px, 42vw, 640px);
  object-fit: cover;
  object-position: center 35%;
}

/* ===== Sections ===== */
.section {
  max-width: var(--width);
  margin: 0 auto;
  padding: 24px 24px 70px;
}
.section-title {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(40px, 5.5vw, 58px);
  line-height: 1.1;
  margin: 18px 0 40px 20px;
}

/* the little "^" back-to-top arrow above each section */
.up {
  display: block;
  width: 22px;
  height: 22px;
  margin: 0 auto;
  position: relative;
}
.up::before {
  content: "";
  position: absolute;
  left: 5px; top: 8px;
  width: 10px; height: 10px;
  border-left: 1.5px solid var(--text);
  border-top: 1.5px solid var(--text);
  transform: rotate(45deg);
}

/* ===== Music ===== */
.players {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 50px;
  max-width: 1000px;
  margin: 0 auto;
}
.player h3 {
  text-align: center;
  font-family: var(--serif);
  font-weight: 400;
  font-size: 22px;
  margin: 0 0 4px;
}
.controls { display: flex; justify-content: center; align-items: center; gap: 14px; margin: 14px 0 28px; }
.ctl {
  background: none; border: 0; padding: 0; cursor: pointer; color: var(--text);
  display: flex; align-items: center; justify-content: center;
}
.ctl svg { width: 22px; height: 22px; fill: currentColor; }
.ctl.play-btn { width: 40px; height: 40px; border-radius: 50%; background: var(--text); color: var(--bg); }
.ctl.play-btn svg { width: 22px; height: 22px; }
.ctl:hover { opacity: .8; }
.i-pause, .playing .i-play { display: none; }
.playing .i-pause { display: block; }

.wave-row { display: flex; align-items: center; gap: 14px; margin-bottom: 30px; }
.wave { flex: 1; height: 44px; cursor: pointer; display: block; min-width: 0; }
.wave:focus-visible { outline: 1px solid #888; outline-offset: 4px; }
.vol { background: none; border: 0; padding: 0; color: var(--text); cursor: pointer; }
.vol svg { width: 20px; height: 20px; fill: currentColor; display: block; }
.vol .i-mute, .muted .vol .i-vol { display: none; }
.muted .vol .i-mute { display: block; }

.tracklist { list-style: none; margin: 0; padding: 0; }
.tracklist li { border-bottom: 1px solid var(--line); }
.tracklist button {
  width: 100%; display: flex; justify-content: space-between; gap: 16px; align-items: baseline;
  background: none; border: 0; color: var(--muted); cursor: pointer; text-align: left;
  padding: 9px 0; font: 300 14px var(--sans);
}
.tracklist button:hover, .tracklist button.active { color: var(--text); }
.tracklist button.active .t-name { font-weight: 500; }
.t-time { flex-shrink: 0; font-variant-numeric: tabular-nums; }

.streaming-label {
  text-align: center;
  font-family: var(--serif);
  font-size: 18px;
  margin: 50px 0 10px;
}
.streaming {
  display: grid;
  grid-template-columns: repeat(2, 160px);
  justify-content: center;
  gap: 8px 40px;
}
.streaming a { display: flex; align-items: center; justify-content: center; height: 48px; }
.streaming img { max-height: 44px; width: auto; transition: opacity .2s; }
.streaming a:hover img { opacity: .75; }

/* ===== Credits ===== */
.credits {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0 50px;
  padding: 0 20px;
}
.credit { margin-bottom: 44px; }
.credit h3 {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 21px;
  line-height: 1.2;
  margin: 0 0 6px;
}
.credit h3 em { font-style: italic; }
.credit p { font-size: 14px; margin: 0; color: var(--muted); }

/* ===== About ===== */
.about {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: start;
}
.about-text p { font-size: 16px; margin: 0 0 1.3em; }
.about-photo { width: 100%; height: auto; max-height: 620px; object-fit: cover; }

/* ===== Video ===== */
.section-wide { max-width: none; padding-left: 0; padding-right: 0; }
.section-wide .section-title { max-width: var(--width); margin-left: auto; margin-right: auto; padding-left: 44px; }
.video-row {
  display: flex;
  gap: 56px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: 0 24px 16px;
  scrollbar-color: #555 transparent;
}
.video {
  flex: 0 0 min(640px, 82vw);
  scroll-snap-align: start;
}
.video-thumb, .video iframe {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  padding: 0;
  border: 0;
  background: #111;
  cursor: pointer;
}
.video-thumb img { width: 100%; height: 100%; object-fit: cover; filter: brightness(.85); transition: filter .2s; }
.video-thumb:hover img { filter: brightness(1); }
.play {
  position: absolute; left: 50%; top: 50%;
  width: 50px; height: 50px;
  margin: -25px 0 0 -25px;
  border: 2px solid #fff; border-radius: 50%;
}
.play::after {
  content: ""; position: absolute; left: 19px; top: 14px;
  border-left: 15px solid #fff; border-top: 10px solid transparent; border-bottom: 10px solid transparent;
}
.duration { position: absolute; right: 10px; bottom: 8px; color: #fff; font: 12px var(--sans); }
.video h3 {
  font-family: var(--serif);
  font-weight: 500;
  font-size: 25px;
  line-height: 1.15;
  margin: 18px 20px 10px;
}
.video p {
  font-size: 13px;
  margin: 0 20px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ===== Contact ===== */
.contact {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 40px;
  align-items: start;
}
.contact-info .section-title { margin-bottom: 24px; }
.contact-info p { margin: 0 0 0 22px; font-size: 16px; }
.contact-info p a { text-decoration: none; }
.contact-info p a:hover { text-decoration: underline; }

.social { display: flex; gap: 18px; align-items: center; margin: 40px 0 40px 22px; }
.social a { color: var(--text); display: block; transition: opacity .2s; }
.social a:hover { opacity: .7; }
.social svg { width: 28px; height: 28px; display: block; }
.social .soundcloud svg { width: 44px; }

.btn {
  display: inline-flex; align-items: center; gap: 12px;
  background: transparent; color: var(--text);
  border: 2px solid var(--text);
  padding: 6px 12px;
  font-size: 14px;
  text-decoration: none;
  cursor: pointer;
  transition: background .2s, color .2s;
}
.btn:hover { background: var(--text); color: var(--bg); }
.resume { margin-left: 22px; }
.resume svg { width: 15px; height: 15px; }

.contact-form {
  border: 1px solid var(--text);
  padding: 36px;
  font-family: var(--serif);
}
.contact-form h2 { font-weight: 400; font-size: 38px; margin: 0 0 30px; }
.contact-form label { display: block; font-size: 18px; margin-bottom: 22px; }
.contact-form input, .contact-form textarea {
  display: block; width: 100%; margin-top: 6px;
  background: var(--bg); color: var(--text);
  border: 1px solid var(--text);
  padding: 8px 10px;
  font: 16px var(--sans);
  border-radius: 0;
}
.contact-form input:focus, .contact-form textarea:focus { outline: 2px solid #888; outline-offset: 1px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.submit { font-family: var(--serif); font-style: italic; font-weight: 700; font-size: 18px; padding: 6px 16px; border-width: 1px; }
.hidden-field { position: absolute; left: -9999px; }

/* ===== Footer ===== */
.site-footer { text-align: center; padding: 10px 16px 20px; }
.site-footer p { font-family: var(--serif); font-size: 15px; margin: 14px 0 0; }

/* ===== Thank-you page ===== */
.thanks { min-height: 60vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 40px 16px; }
.thanks h1 { font-family: var(--serif); font-weight: 400; font-size: 48px; margin: 0 0 16px; }
.thanks .btn { margin-top: 28px; }

/* ===== Tablet ===== */
@media (max-width: 900px) {
  .credits { grid-template-columns: 1fr 1fr; }
  .contact { grid-template-columns: 1fr; }
}

/* ===== Phone ===== */
@media (max-width: 640px) {
  .site-header { padding: 32px 12px 24px; }
  .logo-name { font-size: 21px; letter-spacing: 0.09em; }
  .main-nav { margin-top: 26px; justify-content: center; gap: 8px 20px; }
  .main-nav a { font-size: 17px; }
  .section { padding: 16px 16px 50px; }
  .section-title { margin-left: 0; margin-bottom: 28px; }
  .section-wide .section-title { padding-left: 16px; }
  .players { grid-template-columns: 1fr; gap: 30px; }
  .credits { grid-template-columns: 1fr; padding: 0; }
  .credit { margin-bottom: 32px; }
  .about { grid-template-columns: 1fr; }
  .video-row { gap: 20px; padding: 0 16px 12px; }
  .video h3 { font-size: 21px; margin: 14px 0 8px; }
  .video p { margin: 0; }
  .contact-info p, .social, .resume { margin-left: 0; }
  .contact-form { padding: 24px 18px; }
  .contact-form h2 { font-size: 32px; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
  .streaming { grid-template-columns: repeat(2, 140px); gap: 8px 20px; }
}

/* Players: no text selection/drag on the controls, and a "loading" pulse while a track fetches */
[data-player] { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
[data-player].loading .play-btn { animation: pulse 1s ease-in-out infinite; }
@keyframes pulse { 50% { opacity: .45; } }

/* Photos and logos: no dragging them off the page or long-press "Save image" on phones */
img { -webkit-user-drag: none; user-drag: none; -webkit-touch-callout: none; }

/* Credits on wide screens: line the three columns up in rows, with the same gap between every row */
@media (min-width: 901px) {
  .credits { row-gap: 40px; grid-auto-flow: row dense; }
  .credits-col { display: contents; }
  .credits-col:nth-child(1) > .credit { grid-column: 1; }
  .credits-col:nth-child(2) > .credit { grid-column: 2; }
  .credits-col:nth-child(3) > .credit { grid-column: 3; }
  .credits .credit { margin-bottom: 0; }
}
