/* Absence Sound — quiet type, generous space, analog grain.
   Existing content.js / script.js hooks are unchanged. */
@font-face {
  font-family: "IBM Plex Mono";
  src: url("assets/fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
:root {
  --bg: #090909;
  --ink: #e1e1e1;
  --muted: #a3a3a3;
  --accent: #b6b3c7;
  --page: clamp(28px, 8vw, 150px);
  --body: "IBM Plex Mono", "Courier New", monospace;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 65px; }
body { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--body); font-size: 16px; line-height: 1.9; position: relative; isolation: isolate; }
/* Continuous grain has no container edges and never moves behind reading text. */
::selection { background: var(--accent); color: var(--bg); }
a { color: inherit; text-decoration: none; text-underline-offset: 8px; }
a:hover { color: var(--accent); text-decoration: underline; }
a, button { -webkit-tap-highlight-color: transparent; }
a:focus-visible, button:focus-visible { outline: 1px solid var(--accent); outline-offset: 8px; }
button { font: inherit; }
img { display: block; max-width: 100%; }
[hidden] { display: none !important; }
.skip-link { position: fixed; top: -100px; left: 24px; z-index: 20; padding: 12px; background: var(--ink); color: var(--bg); }
.skip-link:focus { top: 16px; }
.site-header { position: absolute; inset: 0 0 auto; display: flex; justify-content: space-between; align-items: baseline; gap: 30px; padding: 42px var(--page); z-index: 5; }
.brand { font-size: 16px; color: var(--accent); }
nav { display: flex; gap: clamp(30px, 5vw, 90px); }
nav a { font-size: 13px; padding: 8px 0; }
.eyebrow { font-size: 12px; color: var(--muted); line-height: 1.8; }

/* Landing: a small, ordinary wordmark against a broad field of physical noise. */
.hero { min-height: 100svh; position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; justify-content: center; padding: 180px var(--page); }
@keyframes drift { from { transform: scale(1.01) translateY(-3px); } to { transform: scale(1.035) translateY(3px); } }
.hero h1 { font-family: var(--body); font-size: clamp(24px, 2.5vw, 40px); font-weight: 400; line-height: 1.8; letter-spacing: .12em; margin: 0; }
.hero-bottom { position: absolute; bottom: 60px; left: var(--page); }
.text-link { display: inline-flex; gap: 46px; align-items: center; padding: 12px 0; font-size: 14px; text-decoration: underline; text-decoration-thickness: 1px; }
.hero-bottom .text-link { font-size: 12px; color: var(--muted); text-decoration: none; }

/* Each item sits independently in space; headings stay quiet. */
.section { padding: clamp(200px, 21vw, 360px) var(--page); }
.section-heading { margin-bottom: clamp(100px, 12vw, 210px); }
h2 { font-family: var(--body); font-size: 22px; font-weight: 400; line-height: 1.8; letter-spacing: .07em; margin: 0; }
#music .section-heading { margin-left: 14%; }
.release { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 17%; align-items: end; margin-left: 14%; }
.release + .release { margin-top: 240px; }
.release:nth-child(even) { margin-left: 0; margin-right: 14%; }
.cover { aspect-ratio: 1; position: relative; isolation: isolate; overflow: hidden; padding: 8%; display: flex; flex-direction: column; justify-content: end; background: #111; }
.cover img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cover-title, .cover-rule, .cover-foot .eyebrow { display: none; }
.cover-foot { display: flex; justify-content: end; }
.cover-placeholder { font-size: 12px; color: #ddd; text-align: right; max-width: 140px; }
.release-meta { padding-bottom: 12px; }
.release-meta .eyebrow { color: var(--accent); }
.release-meta h3 { font-size: 23px; font-weight: 400; letter-spacing: .03em; line-height: 1.6; margin: 45px 0; overflow-wrap: anywhere; }
.release-meta p { font-size: 14px; color: var(--muted); max-width: 440px; margin-block: 36px; }
.release-meta .text-link, .pending { margin-top: 65px; }
.pending { font-size: 12px; line-height: 1.9; color: var(--muted); display: block; }

.video-section .section-heading { margin-left: 0; }
.videos { width: 77%; margin-left: auto; }
.video-frame { aspect-ratio: 16 / 9; position: relative; isolation: isolate; background: #0b0b0b; display: grid; place-items: center; overflow: hidden; }
.video-frame img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.video-empty { font-size: 13px; letter-spacing: .12em; text-align: center; max-width: 85%; }
.video-play { position: relative; z-index: 1; width: 76px; height: 76px; border: 0; border-radius: 0; background: #090909d9; color: var(--ink); cursor: pointer; font-size: 22px; }
.video-play:hover { color: var(--accent); }
.video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: var(--bg); z-index: 2; }
.video-caption { display: flex; justify-content: space-between; align-items: baseline; gap: 48px; margin-top: 54px; }
.video-caption h3 { font-size: 14px; font-weight: 400; margin: 0; }
.video-caption p { font-size: 12px; color: var(--muted); margin: 0; }
.video-caption a { font-size: 14px; text-decoration: underline; }
.video-card + .video-card { margin-top: 210px; }

.contact-section { padding-bottom: 260px; }
.contact-row { margin: 0 0 90px 28%; }
.contact-row h2 { color: var(--accent); }
#contact-details { margin-top: 100px; overflow-wrap: anywhere; }
#contact-details .text-link { display: inline-block; max-width: 100%; }
#contact-details p { color: var(--muted); font-size: 14px; }
.external-links { margin-left: 28%; display: flex; flex-wrap: wrap; gap: 40px 70px; }
.external-links a { font-size: 14px; text-decoration: underline; }
.external-links .unavailable { font-size: 12px; color: var(--muted); }
footer { display: flex; justify-content: space-between; gap: 40px; padding: 55px var(--page) 70px; color: var(--muted); font-size: 12px; }

@media (min-width: 1800px) {
  .section, .site-header, footer { max-width: 1920px; margin-inline: auto; }
}
@media (max-width: 1000px) {
  .release { gap: 12%; margin-left: 7%; }
  .video-caption { flex-wrap: wrap; gap: 25px; }
}
@media (max-width: 640px) {
  .site-header { padding-top: 32px; gap: 24px; }
  nav { gap: 25px; }
  nav a { font-size: 12px; }
  .hero { padding-block: 170px; }
  .hero h1 { font-size: clamp(20px, 5.6vw, 30px); letter-spacing: .07em; }
  .hero-bottom { bottom: 52px; }
  .section { padding-block: 170px; }
  .section-heading { margin-bottom: 100px; }
  h2 { font-size: 20px; }
  #music .section-heading { margin-left: 0; }
  .release, .release:nth-child(even) { grid-template-columns: minmax(0, 1fr); gap: 85px; margin: 0; }
  .release + .release { margin-top: 190px; }
  .cover { width: 93%; }
  .release-meta { margin-left: 18%; }
  .release-meta h3 { font-size: 21px; margin-block: 35px; }
  .release-meta .text-link, .pending { margin-top: 50px; }
  .videos { width: 100%; }
  .video-frame { aspect-ratio: 16 / 10; }
  .video-caption { margin-top: 45px; }
  .video-card + .video-card { margin-top: 150px; }
  .contact-section { padding-bottom: 180px; }
  .contact-row { margin: 0 0 75px 10%; }
  #contact-details { margin-top: 85px; }
  .external-links { margin-left: 10%; gap: 38px; }
  footer { flex-wrap: wrap; gap: 30px; padding-block: 40px 60px; }
  footer > a:first-child { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
@media (forced-colors: active) {
  #grain, .signal-field { display: none; }
  .video-play { border: 2px solid ButtonText; }
}

/* Procedural grain replaces the former photographic background everywhere. */
#grain { position: fixed; inset: 0; width: 100%; height: 100%; z-index: -1; opacity: .62; pointer-events: none; }
.signal-field { position: absolute; inset: 15% 8% 18% 43%; z-index: -1; pointer-events: none; }
.signal-field i { position: absolute; height: 1px; width: 24%; background: #7fa6a7; opacity: .28; animation: signal-drift 24s ease-in-out infinite alternate; }
.signal-field i:nth-child(1) { top: 27%; right: 4%; }
.signal-field i:nth-child(2) { top: 74%; left: 10%; width: 13%; background: #ad8f9c; animation-delay: -9s; }
.signal-field i:nth-child(3) { top: 53%; right: 18%; width: 2px; height: 16%; background: #ad8f9c; animation-delay: -17s; }
@keyframes signal-drift { from { transform: translate(0, 0); opacity: .16; } to { transform: translate(7px, -4px); opacity: .34; } }
.streaming-links { margin-left: 14%; display: flex; flex-direction: column; align-items: start; gap: 62px; }
.streaming-link { font-size: clamp(16px, 1.6vw, 22px); padding: 12px 0; letter-spacing: .02em; }
.streaming-link::after { content: "↗"; display: inline-block; margin-left: 44px; font-size: 13px; color: var(--muted); transition: transform .7s ease; }
a { transition: color .5s ease; }
@media (hover: hover) {
  .streaming-link:hover::after { transform: translate(3px, -3px); }
  .video-play:hover { transform: scale(1.06); }
}
.video-play { transition: transform .7s ease, color .5s ease; }
.video-frame { background: #0d0e0e; }
.video-frame::before { content: ""; position: absolute; inset: 0; pointer-events: none; border-block: 1px solid #1b1c1c; }
.video-details { display: grid; gap: 20px; }
.video-caption { min-width: 0; }
.video-caption a { margin-left: auto; }
.video-details p { max-width: 48ch; overflow-wrap: anywhere; }
.release-text-only { display: block; }
#releases:empty { display: none; }
#releases:not(:empty) { margin-top: 180px; }
.contact-row { margin-bottom: 100px; }
#contact-details[hidden] { margin: 0; }
nav a { min-height: 44px; }
@keyframes settle { from { transform: translateY(10px); } to { transform: translateY(0); } }
.in-view { animation: settle 1.5s ease both; }
@media (max-width: 640px) {
  nav { gap: 20px; flex-wrap: wrap; justify-content: end; }
  nav a { font-size: 12px; }
  .streaming-links { margin-left: 10%; gap: 48px; }
  .streaming-link { font-size: 16px; }
  .signal-field { left: 28%; }
  .video-caption a { margin-left: 0; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
