
/* Danmi v35 — consolidated stable songbook layout
   Replaces v28, v29 and v31. */

/* Obsolete route kicker stays removed. */
#routePage .route-page-kicker {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
}

/* Keep the global top header available above route pages. */
.top-header {
  position: relative !important;
  z-index: 80 !important;
}

/* Shared songbook header structure. */
#routePage.route-songbook-mode .route-page-header {
  z-index: 60 !important;
}

#routePage.route-songbook-mode .route-title-area {
  min-width: 0 !important;
}

#routePage.route-songbook-mode .route-title-line {
  display: flex !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 7px !important;
  min-width: 0 !important;
}

#routePage.route-songbook-mode .route-page-header h2 {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  margin: 0 !important;
}

#routePage.route-songbook-mode .songbook-notice-chip:not([hidden]) {
  display: inline-flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  align-items: center !important;
  justify-content: center !important;
}

/* =========================
   PC SONGBOOK
   ========================= */
@media (min-width: 761px) {
  html:has(#routePage.route-songbook-mode:not([hidden])),
  body:has(#routePage.route-songbook-mode:not([hidden])) {
    overflow: hidden !important;
  }

  #routePage.route-songbook-mode:not([hidden]) {
    box-sizing: border-box !important;
    display: grid !important;
    grid-template-rows: auto minmax(0, 1fr) !important;
    width: 100% !important;
    height: var(--songbook-route-height, calc(100dvh - 108px)) !important;
    min-height: 520px !important;
    max-height: var(--songbook-route-height, calc(100dvh - 108px)) !important;
    overflow: hidden !important;
  }

  #routePage.route-songbook-mode .route-page-header {
    display: flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    min-height: unset !important;
    height: auto !important;
    margin: 0 0 12px !important;
    overflow: visible !important;
  }

  #routePage.route-songbook-mode .route-page-body {
    min-height: 0 !important;
    height: auto !important;
    display: grid !important;
    grid-template-rows: auto auto auto auto minmax(0, 1fr) !important;
    overflow: hidden !important;
    padding-bottom: 0 !important;
  }

  #routePage.route-songbook-mode .songbook-inline-notice,
  #routePage.route-songbook-mode .route-toolbar,
  #routePage.route-songbook-mode .route-genre-filter-list,
  #routePage.route-songbook-mode .route-song-count-summary {
    min-width: 0 !important;
  }

  #routePage.route-songbook-mode .songbook-inline-notice[hidden],
  #routePage.route-songbook-mode .route-song-count-summary[hidden] {
    display: none !important;
  }

  #routePage.route-songbook-mode .songbook-inline-notice {
    margin-bottom: 9px !important;
  }

  #routePage.route-songbook-mode .route-toolbar {
    margin: 0 0 9px !important;
  }

  #routePage.route-songbook-mode .route-genre-filter-list {
    margin: 0 0 8px !important;
  }

  #routePage.route-songbook-mode .route-song-count-summary {
    margin: 0 0 7px !important;
  }

  #routePage.route-songbook-mode .route-song-table {
    min-height: 0 !important;
    height: auto !important;
    display: grid !important;
    grid-template-rows: auto minmax(0, 1fr) !important;
    overflow: hidden !important;
    gap: 8px !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  #routePage.route-songbook-mode .route-song-header {
    position: relative !important;
    top: auto !important;
    min-height: 42px !important;
    height: auto !important;
    margin: 0 !important;
    z-index: 4 !important;
  }

  #routePage.route-songbook-mode .route-song-list {
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    display: grid !important;
    align-content: start !important;
    gap: 10px !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    overscroll-behavior-y: contain !important;
    scrollbar-gutter: stable !important;
    padding: 0 6px 12px 1px !important;
  }

  /* Compact mode: Favorite + Title + Artist + Difficulty only. */
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-header,
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-row {
    grid-template-columns:
      44px
      minmax(340px, 2fr)
      minmax(190px, 1fr)
      112px !important;
  }

  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-header > :nth-child(4),
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-header > :nth-child(6),
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-row > :nth-child(4),
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-row > :nth-child(6) {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    position: absolute !important;
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
    height: 0 !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    overflow: hidden !important;
    pointer-events: none !important;
  }

  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-header > :nth-child(5),
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-row > :nth-child(5) {
    grid-column: 4 !important;
    width: 100% !important;
    max-width: 100% !important;
    justify-self: stretch !important;
  }
}

/* =========================
   MOBILE SONGBOOK
   ========================= */
@media (max-width: 760px) {
  html,
  body {
    min-height: 100%;
  }

  body.songbook-list-scroll-lock {
    position: fixed !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100dvh !important;
    overflow: hidden !important;
  }

  #routePage.route-songbook-mode:not([hidden]) {
    position: fixed !important;
    top: var(--songbook-top-offset, 64px) !important;
    right: 0 !important;
    bottom: var(--songbook-bottom-offset, 72px) !important;
    left: 0 !important;
    z-index: 50 !important;
    box-sizing: border-box !important;
    width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    display: grid !important;
    grid-template-rows: auto minmax(0, 1fr) !important;
    overflow: hidden !important;
    padding: 0 !important;
  }

  #routePage.route-songbook-mode .route-page-header {
    position: relative !important;
    inset: auto !important;
    z-index: 30 !important;
    box-sizing: border-box !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    width: 100% !important;
    min-height: 58px !important;
    height: auto !important;
    margin: 0 !important;
    padding: 8px 10px !important;
    overflow: visible !important;
    flex: none !important;
  }

  #routePage.route-songbook-mode .route-title-area {
    display: block !important;
    min-width: 0 !important;
  }

  #routePage.route-songbook-mode .route-page-header h2 {
    font-size: 1.08rem !important;
    line-height: 1.1 !important;
    white-space: nowrap !important;
  }

  #routePage.route-songbook-mode .songbook-notice-chip:not([hidden]) {
    min-height: 31px !important;
    height: 31px !important;
    max-width: min(47vw, 170px) !important;
    padding: 0 8px !important;
    border-radius: 999px !important;
    font-size: .74rem !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  #routePage.route-songbook-mode .route-header-actions {
    flex: 0 0 auto !important;
    display: flex !important;
    align-items: center !important;
  }

  #routePage.route-songbook-mode .route-home-button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 37px !important;
    height: 37px !important;
    padding: 0 10px !important;
    white-space: nowrap !important;
    font-size: .8rem !important;
  }

  #routePage.route-songbook-mode .route-page-body {
    min-height: 0 !important;
    height: auto !important;
    display: grid !important;
    grid-template-rows: auto auto auto auto minmax(0, 1fr) !important;
    align-content: stretch !important;
    overflow: hidden !important;
    padding: 7px 9px calc(7px + env(safe-area-inset-bottom)) !important;
  }

  #routePage.route-songbook-mode .songbook-inline-notice {
    grid-row: 1 !important;
    box-sizing: border-box !important;
    width: 100% !important;
    min-height: 0 !important;
    max-height: 70px !important;
    margin: 0 0 6px !important;
    padding: 8px 10px !important;
    overflow-y: auto !important;
    border-radius: 13px !important;
  }

  #routePage.route-songbook-mode .songbook-inline-notice[hidden] {
    display: none !important;
  }

  #routePage.route-songbook-mode .songbook-inline-notice:not([hidden]) {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
  }

  #routePage.route-songbook-mode .route-toolbar {
    grid-row: 2 !important;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) clamp(140px, 43vw, 160px) !important;
    gap: 6px !important;
    margin: 0 0 6px !important;
  }

  #routePage.route-songbook-mode #routeSongSearch {
    grid-column: 1 / -1 !important;
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 40px !important;
    height: 40px !important;
  }

  #routePage.route-songbook-mode #routeFavoriteOnly {
    grid-column: 1 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 37px !important;
    height: 37px !important;
    white-space: nowrap !important;
  }

  #routePage.route-songbook-mode .route-toolbar > .route-view-toggle {
    grid-column: 2 !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    width: 100% !important;
    min-width: 0 !important;
    height: 37px !important;
    min-height: 37px !important;
    margin: 0 !important;
    padding: 3px !important;
    gap: 3px !important;
  }

  #routePage.route-songbook-mode .route-toolbar > .route-view-toggle > button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    width: 100% !important;
    min-width: 0 !important;
    height: 31px !important;
    min-height: 31px !important;
    padding: 0 3px !important;
    font-size: clamp(.76rem, 3.05vw, .84rem) !important;
    line-height: 1 !important;
    white-space: nowrap !important;
    overflow: visible !important;
  }

  #routePage.route-songbook-mode .route-genre-filter-list {
    grid-row: 3 !important;
    display: flex !important;
    align-items: center !important;
    width: 100% !important;
    min-height: 34px !important;
    height: 34px !important;
    max-height: 34px !important;
    margin: 0 0 6px !important;
    padding: 0 !important;
    gap: 5px !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    flex-wrap: nowrap !important;
    border: 0 !important;
    box-shadow: none !important;
  }

  #routePage.route-songbook-mode .route-genre-filter-list > button {
    flex: 0 0 auto !important;
    min-height: 32px !important;
    height: 32px !important;
  }

  #routePage.route-songbook-mode .route-song-count-summary {
    grid-row: 4 !important;
    margin: 0 0 5px !important;
  }

  #routePage.route-songbook-mode .route-song-count-summary[hidden] {
    display: none !important;
  }

  #routePage.route-songbook-mode .route-song-table {
    grid-row: 5 !important;
    min-height: 0 !important;
    height: auto !important;
    display: grid !important;
    grid-template-rows: 39px minmax(0, 1fr) !important;
    overflow: hidden !important;
    gap: 5px !important;
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
  }

  #routePage.route-songbook-mode .route-song-header {
    position: relative !important;
    top: auto !important;
    display: grid !important;
    min-height: 39px !important;
    height: 39px !important;
    margin: 0 !important;
    padding: 5px 6px !important;
    overflow: visible !important;
  }

  #routePage.route-songbook-mode .route-song-header::before,
  #routePage.route-songbook-mode .route-song-header::after,
  #routePage.route-songbook-mode .route-song-table::before,
  #routePage.route-songbook-mode .route-song-table::after,
  #routePage.route-songbook-mode .route-genre-filter-list::before,
  #routePage.route-songbook-mode .route-genre-filter-list::after {
    content: none !important;
    display: none !important;
  }

  #routePage.route-songbook-mode .route-song-list {
    min-height: 0 !important;
    height: auto !important;
    display: grid !important;
    align-content: start !important;
    gap: 8px !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    overscroll-behavior-y: contain !important;
    -webkit-overflow-scrolling: touch !important;
    padding: 0 1px 6px !important;
  }

  /* Compact mode: same four visible columns, no ghost cells. */
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-header,
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-row {
    grid-template-columns:
      30px
      minmax(132px, 1.8fr)
      minmax(76px, 1fr)
      64px !important;
    gap: 6px !important;
  }

  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-header > :nth-child(4),
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-header > :nth-child(6),
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-row > :nth-child(4),
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-row > :nth-child(6) {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    position: absolute !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    overflow: hidden !important;
    pointer-events: none !important;
  }

  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-header > :nth-child(5),
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-row > :nth-child(5) {
    grid-column: 4 !important;
    width: 100% !important;
    justify-self: stretch !important;
  }
}

@media (max-width: 390px) {
  #routePage.route-songbook-mode .route-page-header h2 {
    font-size: 1rem !important;
  }

  #routePage.route-songbook-mode .songbook-notice-chip:not([hidden]) {
    font-size: .7rem !important;
    max-width: 43vw !important;
    padding-inline: 6px !important;
  }

  #routePage.route-songbook-mode .route-toolbar {
    grid-template-columns: minmax(0, 1fr) 136px !important;
  }

  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-header,
  #routePage.route-songbook-mode .route-song-table.compact-mode .route-song-row {
    grid-template-columns:
      28px
      minmax(118px, 1.75fr)
      minmax(68px, 1fr)
      58px !important;
    gap: 5px !important;
  }
}

/* Fallback for browsers without :has(). */
@supports not selector(body:has(*)) {
  @media (min-width: 761px) {
    #routePage.route-songbook-mode:not([hidden]) {
      overflow: hidden !important;
    }
  }
}
