/* Personal collections: use the site's existing paper, type, and hairlines. */
.photo-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}
.personal-photo { margin: 0; min-width: 0; }
.photo-link { display: block; border: 0; }
.personal-photo img { width: 100%; height: auto; }
.photo-grid-cropped .photo-link { aspect-ratio: 4 / 3; overflow: hidden; }
.photo-grid-cropped .personal-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.personal-photo figcaption { text-align: left; margin-top: 8px; }
.listening-profile { display: flex; align-items: flex-start; gap: 16px; }
.listening-profile > img { flex: 0 0 32px; margin-top: 7px; }
.listening-profile p { margin: 0 0 6px; }
@media (max-width: 600px) {
  .photo-grid { grid-template-columns: 1fr; gap: 20px; }
}

/* Last.fm listening library, in the same monochrome type and hairlines. */
.listening-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.listening-heading h2 { margin-bottom: 12px; }
.listening-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; border-bottom: 1px solid var(--hairline); }
.listening-tabs { display: flex; gap: 18px; flex-wrap: wrap; }
.listening-tabs button, .listening-retry {
  padding: 8px 0;
  font: inherit;
  font-size: 0.9rem;
  color: var(--muted);
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  cursor: pointer;
}
.listening-tabs button[aria-selected="true"] { color: var(--ink); border-bottom-color: var(--ink); }
.listening-tabs button:focus-visible, .listening-retry:focus-visible, .listening-period select:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
.listening-period select { max-width: 100%; padding: 5px 8px; font: inherit; font-size: 0.8rem; color: var(--ink); background: var(--paper); border: 1px solid var(--hairline); }
.listening-description { margin: 12px 0; }
.listening-items { display: grid; }
.listening-items[data-view="artists"], .listening-items[data-view="albums"] { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
.listening-item { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--hairline); color: var(--ink); }
.listening-item:hover { background: var(--wash); }
.listening-art { position: relative; display: grid; place-items: center; width: 48px; height: 48px; background: var(--wash); border: 1px solid var(--hairline); color: var(--muted); font-family: 'IBM Plex Mono', monospace; font-size: 0.8rem; }
.listening-art img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.listening-copy { display: grid; min-width: 0; line-height: 1.4; overflow-wrap: anywhere; }
.listening-title { font-weight: 500; }
.listening-detail { text-align: right; white-space: nowrap; }
.listening-detail.is-playing { color: var(--ink); }
.listening-detail.is-playing::before { content: '●'; margin-right: 6px; font-size: 0.6em; }
.listening-source { margin-top: 16px; }
.listening-retry { border-bottom-color: var(--ink); color: var(--ink); }
.listening [hidden] { display: none; }
@media (max-width: 600px) {
  .listening-items[data-view="artists"], .listening-items[data-view="albums"] { grid-template-columns: 1fr; }
  .listening-item { grid-template-columns: 40px minmax(0, 1fr); grid-template-rows: auto; gap: 0 12px; align-items: center; }
  .listening-art { width: 40px; height: 40px; grid-row: 1; grid-column: 1; align-self: center; }
  .listening-copy { grid-row: 1; grid-column: 2; align-self: center; }
  .listening-detail { grid-column: 2; text-align: left; margin-top: 4px; line-height: 1.4; }
  .listening-tabs { gap: 14px; }
  .listening-tabs button { font-size: 0.8rem; }
}
