/* OPAC catalog detail loading placeholder, shaped like the page layout. */
.midnight-app .midnight-content { position: relative; }

#opac-content-skeleton.catalog-page-skeleton {
    --catalog-skeleton-accent: #b8c1c9;
    --catalog-skeleton-soft: #e7ebee;
    position: absolute;
    inset: 0;
    z-index: 999;
    display: block;
    padding: 24px 20px;
    overflow: hidden;
    background: var(--body-bg, #f4f7fa);
    transition: opacity .35s ease, visibility .35s ease;
}

body[data-theme="rain"] #opac-content-skeleton.catalog-page-skeleton,
body[data-theme="finexy"] #opac-content-skeleton.catalog-page-skeleton {
    --catalog-skeleton-accent: #b8c1c9;
    --catalog-skeleton-soft: #e7ebee;
}

body[data-theme="zavier"] #opac-content-skeleton.catalog-page-skeleton {
    --catalog-skeleton-accent: #b8c1c9;
    --catalog-skeleton-soft: #e7ebee;
    background: #f4f6f7;
}

body[data-theme="zavier"] .midnight-content > #opac-content-skeleton.catalog-page-skeleton {
    box-sizing: border-box;
    padding: 2rem;
}

body[data-theme="zavier"] #opac-content-skeleton.catalog-page-skeleton .catalog-skeleton-shell {
    max-width: 1380px;
}

#opac-content-skeleton.catalog-page-skeleton.hidden { opacity: 0; visibility: hidden; }
.catalog-skeleton-shell { width: 100%; max-width: 1180px; margin: 0 auto; }
.catalog-skeleton-block { display: block; background: linear-gradient(100deg, #e7edf2 25%, #f4f7f9 45%, #e7edf2 65%); background-size: 220% 100%; animation: catalog-skeleton-shimmer 1.25s ease-in-out infinite; border-radius: 8px; }
.catalog-skeleton-heading { display: flex; align-items: center; gap: 14px; min-height: 78px; margin-bottom: 16px; padding: 16px 20px; background: #fff; border: 1px solid #e0e8ef; border-top: 3px solid var(--catalog-skeleton-accent); border-radius: 16px; }
.catalog-skeleton-back { width: 42px; height: 42px; border-radius: 12px; }
.catalog-skeleton-heading-icon { width: 46px; height: 46px; border-radius: 13px; background: var(--catalog-skeleton-soft); }
.catalog-skeleton-heading-lines { display: flex; flex: 1; flex-direction: column; gap: 9px; }
.catalog-skeleton-heading-lines i:first-child { width: min(340px, 55%); height: 22px; }
.catalog-skeleton-heading-lines i:last-child { width: min(230px, 40%); height: 12px; }
.catalog-skeleton-id { width: 90px; height: 26px; border-radius: 8px; }
.catalog-skeleton-layout { display: grid; grid-template-columns: minmax(0, 2fr) minmax(270px, 1fr); align-items: start; gap: 16px; }
.catalog-skeleton-main, .catalog-skeleton-side { display: grid; gap: 16px; min-width: 0; }
.catalog-skeleton-panel { display: flex; gap: 22px; min-width: 0; padding: 20px; background: #fff; border: 1px solid #e0e8ef; border-radius: 16px; }
.catalog-skeleton-cover { flex: 0 0 190px; width: 190px; height: 285px; border-radius: 14px; background: var(--catalog-skeleton-soft); }
.catalog-skeleton-info { display: grid; flex: 1; grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: start; gap: 15px; padding-top: 4px; }
.catalog-skeleton-info i { height: 30px; }
.catalog-skeleton-info i:first-child { grid-column: 1 / -1; width: 72%; height: 24px; }
.catalog-skeleton-lower { min-height: 170px; flex-direction: column; }
.catalog-skeleton-lower i { height: 16px; }
.catalog-skeleton-lower i:first-child { width: 40%; height: 20px; margin-bottom: 6px; }
.catalog-skeleton-side { position: sticky; top: 90px; }
.catalog-skeleton-side .catalog-skeleton-panel { min-height: 132px; flex-direction: column; justify-content: center; gap: 13px; }
.catalog-skeleton-side i { height: 14px; }
.catalog-skeleton-side i:first-child { width: 60%; height: 19px; margin-bottom: 3px; }

/* OPAC search and results page skeleton. */
.opac-skeleton-search { display: block; margin-bottom: 14px; }
.opac-skeleton-label { width: 220px; height: 21px; margin-bottom: 15px; }
.opac-skeleton-search-row { display: grid; grid-template-columns: 180px minmax(0, 1fr) 100px; gap: 9px; }
.opac-skeleton-search-row i { height: 46px; border-radius: 11px; }
.opac-skeleton-filter { width: 140px; height: 28px; margin-top: 12px; }
.opac-skeleton-shortcuts { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.opac-skeleton-shortcuts > section { min-height: 88px; align-items: center; gap: 12px; padding: 14px; }
.opac-skeleton-shortcuts > section > i { flex: 0 0 40px; width: 40px; height: 40px; border-radius: 12px; background: var(--catalog-skeleton-soft); }
.opac-skeleton-shortcuts > section > span { display: grid; flex: 1; gap: 8px; }
.opac-skeleton-shortcuts > section > span i:first-child { width: 72%; height: 14px; }
.opac-skeleton-shortcuts > section > span i:last-child { width: 90%; height: 11px; }
.opac-skeleton-results-layout { display: grid; grid-template-columns: minmax(220px, .75fr) minmax(0, 2.25fr); gap: 16px; align-items: start; }
.opac-skeleton-filters { min-height: 390px; flex-direction: column; gap: 14px; }
.opac-skeleton-filters i { height: 15px; }
.opac-skeleton-filters i:first-child { width: 60%; height: 20px; margin-bottom: 5px; }
.opac-skeleton-results { display: block; min-height: 430px; }
.opac-skeleton-results-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 18px; }
.opac-skeleton-results-heading i:first-child { width: min(260px, 55%); height: 22px; }
.opac-skeleton-results-heading i:last-child { width: 120px; height: 14px; }
.opac-skeleton-books { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; }
.opac-skeleton-books article { display: flex; min-width: 0; min-height: 146px; gap: 11px; padding: 11px; background: #fbfcfd; border: 1px solid #e7edf2; border-radius: 12px; }
.opac-skeleton-books article > i { flex: 0 0 72px; width: 72px; height: 108px; border-radius: 8px; background: var(--catalog-skeleton-soft); }
.opac-skeleton-books article > span { display: flex; flex: 1; flex-direction: column; gap: 9px; padding-top: 4px; }
.opac-skeleton-books article > span i { height: 12px; }
.opac-skeleton-books article > span i:first-child { width: 88%; height: 15px; }
.opac-skeleton-books article > span i:last-child { width: 58%; }

@media (min-width: 992px) {
    .opac-page-skeleton .catalog-skeleton-shell { max-width: 1180px; }
    body[data-theme="rain"] .opac-page-skeleton .catalog-skeleton-shell,
    body[data-theme="finexy"] .opac-page-skeleton .catalog-skeleton-shell {
        max-width: none;
        padding-right: 30px;
        padding-left: 30px;
    }
    .opac-skeleton-results-layout { grid-template-columns: 250px minmax(0, 1fr); }
    .opac-skeleton-books { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 991.98px) {
    .opac-skeleton-results-layout { grid-template-columns: 1fr; }
    .opac-skeleton-filters { display: none; }
}

@keyframes catalog-skeleton-shimmer { to { background-position-x: -220%; } }

@media (max-width: 767.98px) {
    #opac-content-skeleton.catalog-page-skeleton { padding: 14px 12px; }
    body[data-theme="zavier"] .midnight-content > #opac-content-skeleton.catalog-page-skeleton {
        padding: 1.1rem 0 calc(6.5rem + env(safe-area-inset-bottom));
    }
    .catalog-skeleton-heading { min-height: 68px; gap: 9px; padding: 12px; border-radius: 14px; }
    .catalog-skeleton-back { width: 36px; height: 36px; }
    .catalog-skeleton-heading-icon { width: 40px; height: 40px; }
    .catalog-skeleton-id { display: none; }
    .catalog-skeleton-layout { grid-template-columns: 1fr; gap: 12px; }
    .catalog-skeleton-main, .catalog-skeleton-side { gap: 12px; }
    .catalog-skeleton-panel { gap: 14px; padding: 14px; border-radius: 14px; }
    .catalog-skeleton-cover { flex-basis: 104px; width: 104px; height: 156px; }
    .catalog-skeleton-info { grid-template-columns: 1fr; gap: 11px; }
    .catalog-skeleton-info i { height: 19px; }
    .catalog-skeleton-info i:nth-child(n+5) { display: none; }
    .catalog-skeleton-lower { min-height: 128px; }
    .catalog-skeleton-side { display: none; }
    .opac-skeleton-search { padding: 13px; margin-bottom: 12px; }
    .opac-skeleton-label { width: 180px; height: 18px; margin-bottom: 12px; }
    .opac-skeleton-search-row { grid-template-columns: minmax(0, 1fr) 42px; gap: 8px; }
    .opac-skeleton-search-row i:first-child { grid-column: 1 / -1; height: 38px; }
    .opac-skeleton-search-row i:nth-child(2) { height: 42px; }
    .opac-skeleton-search-row i:last-child { width: 42px; height: 42px; }
    .opac-skeleton-filter { width: 120px; height: 24px; }
    .opac-skeleton-shortcuts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0 12px 12px; }
    .opac-skeleton-shortcuts > section { min-height: 70px; gap: 9px; padding: 10px; }
    .opac-skeleton-shortcuts > section:last-child { display: none; }
    .opac-skeleton-shortcuts > section > i { flex-basis: 34px; width: 34px; height: 34px; }
    .opac-skeleton-results-layout { display: block; }
    .opac-skeleton-filters { display: none; }
    .opac-skeleton-results { min-height: 360px; padding: 13px; }
    .opac-skeleton-results-heading { margin-bottom: 13px; }
    .opac-skeleton-results-heading i:last-child { width: 75px; }
    .opac-skeleton-books { grid-template-columns: 1fr; gap: 9px; }
    .opac-skeleton-books article { min-height: 112px; gap: 10px; padding: 9px; }
    .opac-skeleton-books article > i { flex-basis: 64px; width: 64px; height: 92px; }
}

@media (prefers-reduced-motion: reduce) { .catalog-skeleton-block { animation: none; } }
