/* ordered, searchable lyrics and chords catalog */

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

.chords-layout {
  grid-template-columns: minmax(0, 1fr) !important;
}

.chords-browser {
  min-width: 0;
  padding: 18px 20px 16px;
  color: var(--sob-paper);
  background: var(--sob-panel);
  border-bottom: 1px solid rgba(232, 224, 211, .22);
}

.chords-browser-head {
  display: grid;
  grid-template-columns: minmax(150px, 1fr) minmax(260px, 420px) auto;
  align-items: end;
  gap: 18px;
}

.chords-browser-title span {
  display: block;
  margin-bottom: 4px;
  color: var(--sob-red);
  font: 800 10px/1 "SOB Inter", sans-serif;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.chords-browser-title strong {
  display: block;
  color: var(--sob-paper);
  font: 700 25px/.95 "SOB Oswald", sans-serif;
  text-transform: uppercase;
}

.chords-search {
  position: relative;
  display: block;
}

.chords-search::after {
  content: "⌕";
  position: absolute;
  top: 50%;
  right: 14px;
  color: var(--sob-lime);
  font: 700 24px/1 "SOB Oswald", sans-serif;
  transform: translateY(-52%);
  pointer-events: none;
}

.chords-search input {
  width: 100%;
  height: 44px;
  padding: 0 44px 0 14px;
  color: var(--sob-paper);
  background: var(--sob-black);
  border: 1px solid rgba(232, 224, 211, .32);
  border-radius: 0;
  outline: none;
  font: 650 13px/1 "SOB Inter", sans-serif;
}

.chords-search input::placeholder {
  color: var(--sob-muted);
  opacity: .82;
}

.chords-search input:focus {
  border-color: var(--sob-lime);
  box-shadow: inset 4px 0 0 var(--sob-lime);
}

.chords-browser-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 88px;
  height: 44px;
  padding: 0 12px;
  color: var(--sob-black);
  background: var(--sob-lime);
  font: 800 10px/1 "SOB Inter", sans-serif;
  text-transform: uppercase;
}

.chords-sidebar {
  display: grid !important;
  grid-template-rows: repeat(3, 48px);
  grid-auto-flow: column;
  grid-auto-columns: 190px;
  gap: 8px;
  width: 100%;
  max-height: none !important;
  margin-top: 14px;
  padding: 0 0 7px !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  background: transparent !important;
  border: 0 !important;
  scroll-snap-type: x proximity;
  scrollbar-color: var(--sob-lime) rgba(232, 224, 211, .12);
  scrollbar-width: thin;
}

.chord-song {
  width: 190px !important;
  min-width: 190px !important;
  max-width: 190px !important;
  min-height: 48px !important;
  padding: 8px 12px !important;
  color: var(--sob-paper) !important;
  background: var(--sob-black) !important;
  border: 1px solid rgba(232, 224, 211, .24) !important;
  scroll-snap-align: start;
}

.chord-song::before {
  content: none;
}

.chord-song strong {
  display: -webkit-box;
  overflow: hidden;
  font-size: 15px !important;
  line-height: 1.05 !important;
  white-space: normal !important;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.chord-song:hover {
  color: var(--sob-black) !important;
  background: var(--sob-paper) !important;
  border-color: var(--sob-paper) !important;
}

.chord-song.is-active {
  color: var(--sob-black) !important;
  background: var(--sob-lime) !important;
  border-color: var(--sob-lime) !important;
  box-shadow: inset 0 -5px 0 var(--sob-red);
}

.chord-song.is-active::before {
  color: var(--sob-black);
}

.chord-song[hidden] {
  display: none !important;
}

.chords-empty {
  margin: 14px 0 2px;
  padding: 18px;
  color: var(--sob-muted);
  background: var(--sob-black);
  border: 1px dashed rgba(232, 224, 211, .25);
  font: 700 13px/1.2 "SOB Inter", sans-serif;
  text-align: center;
}

.chords-viewer {
  width: 100%;
}

.chords-toolbar {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: stretch !important;
  justify-content: stretch !important;
  gap: 0 !important;
}

.chords-actions {
  display: flex !important;
  flex: 1 1 auto;
  width: 100%;
  flex-wrap: nowrap !important;
  justify-content: stretch;
  gap: 8px !important;
}

.chords-actions button {
  flex: 1 1 0;
  width: auto !important;
  min-width: 0 !important;
  height: 56px !important;
  padding: 0 12px !important;
  font-size: 14px !important;
}

.chords-actions button:disabled {
  cursor: not-allowed;
  opacity: .34;
}

.chords-missing-note {
  margin: 0;
  padding: 12px 16px;
  color: var(--sob-black);
  background: var(--sob-lime);
  border-top: 1px solid var(--sob-black);
  font: 800 11px/1.25 "SOB Inter", sans-serif;
  letter-spacing: .02em;
  text-transform: uppercase;
}

.chords-sheet {
  min-height: 620px;
  max-height: 720px;
  overflow-y: auto;
}

.chords-sheet code {
  display: block;
}

.chords-sheet code::after {
  content: "";
  display: block;
  height: clamp(420px, 80vh, 680px);
  pointer-events: none;
}

@media (max-width: 820px) {
  .chords-browser {
    padding: 14px 12px 11px;
  }

  .chords-browser-head {
    grid-template-columns: 1fr auto;
    gap: 10px;
  }

  .chords-browser-title {
    grid-column: 1 / -1;
  }

  .chords-browser-title strong {
    font-size: 22px;
  }

  .chords-search {
    min-width: 0;
  }

  .chords-search input {
    height: 42px;
  }

  .chords-browser-count {
    min-width: 76px;
    height: 42px;
    padding-inline: 9px;
    font-size: 9px;
  }

  .chords-sidebar {
    grid-template-rows: repeat(3, 44px);
    grid-auto-columns: 165px;
    margin-top: 11px;
    padding-bottom: 5px !important;
  }

  .chord-song {
    width: 165px !important;
    min-width: 165px !important;
    max-width: 165px !important;
    min-height: 44px !important;
    padding: 8px 10px !important;
  }

  .chord-song strong {
    font-size: 13px !important;
  }

  .chords-toolbar {
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    gap: 0 !important;
    padding: 12px 10px !important;
  }

  .chords-actions {
    gap: 4px !important;
  }

  .chords-actions button {
    width: auto !important;
    min-width: 0 !important;
    height: 52px !important;
    padding: 0 6px !important;
    font-size: 12px !important;
  }

  .chords-sheet {
    max-height: none;
  }
}
