/* ── Catalog Table View ──────────────────────────────────────────────────
   Styles for the table-based catalog layout (journals, conferences, etc.)
   used with the shared _list_page.html.twig component.

   Uses the admin contained-scroll model:
   - .content.container fills the viewport below the header (no page scroll)
   - .scrollable-table-body is the only scrolling element
   - Toolbar and footer are always visible
   ──────────────────────────────────────────────────────────────────────── */

/* Catalog list pages participate in the shared contained-scroll shell:
   the page area below the sticky top navigation is viewport-bounded,
   the toolbar + thead + pagination stay visible, and only rows scroll. */
.content.container:has(> .catalog-table-page) {
    position: relative !important;
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: calc(100dvh - var(--ds-header-height, 48px));
    height: calc(100dvh - var(--ds-header-height, 48px));
    width: 100%;
    max-width: 100%;
    background-color: var(--ds-color-white, #fff);
    box-sizing: border-box;
    padding: 0 var(--ds-space-4, 16px) !important;
    overflow: hidden;
    z-index: auto;
}

.content.container:has(> .catalog-table-page) > .catalog-table-page {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.catalog-table-page .scrollable-table-container {
    flex: 1 1 auto;
    min-height: 0;
    border-left: 1px solid var(--ed-border, var(--ds-color-border, #e5e7eb));
    border-right: 1px solid var(--ed-border, var(--ds-color-border, #e5e7eb));
    box-sizing: border-box;
}

/* Catalog pages use the shared sticky toolbar contract. Keep the selector
   more specific than the generic shell rule so public catalogs remain
   aligned with the contained-scroll behavior after future refactors. */
.catalog-table-page .scrollable-table-container:not(.scrollable-table-container--inline) > .scrollable-table-toolbar {
    position: sticky !important;
    top: 0 !important;
}

@media (max-width: 1180px) {
    .content.container:has(> .catalog-table-page) {
        display: block !important;
        flex: none !important;
        height: auto !important;
        max-height: none !important;
        min-height: 0 !important;
        overflow: visible !important;
    }

    .content.container:has(> .catalog-table-page) > .catalog-table-page,
    .catalog-table-page .scrollable-table-container {
        display: block !important;
        flex: none !important;
        height: auto !important;
        max-height: none !important;
        min-height: 0 !important;
        overflow: visible !important;
    }

    .catalog-table-page .scrollable-table-container:not(.scrollable-table-container--inline) > .scrollable-table-toolbar {
        position: static !important;
        top: auto !important;
    }

    .catalog-table-page .scrollable-table-body {
        display: block !important;
        flex: none !important;
        height: auto !important;
        max-height: none !important;
        overflow-x: auto !important;
        overflow-y: visible !important;
    }

    .catalog-table-page .scrollable-table-thead,
    .catalog-table-page .scrollable-table-body .scrollable-table-thead,
    .catalog-table-page .scrollable-table-body .scrollable-table-thead th,
    .catalog-table-page .table-scroll-wrapper .table > tbody > tr:not(.collapse) > th:first-child,
    .catalog-table-page .table-scroll-wrapper .table > tbody > tr:not(.collapse) > td:first-child,
    .catalog-table-page .table-scroll-wrapper .table > thead > tr > th:first-child,
    .catalog-table-page .table-scroll-wrapper .table > tbody > tr:not(.collapse) > th:last-child,
    .catalog-table-page .table-scroll-wrapper .table > tbody > tr:not(.collapse) > td:last-child,
    .catalog-table-page .table-scroll-wrapper .table > thead > tr > th:last-child {
        bottom: auto !important;
        left: auto !important;
        position: static !important;
        right: auto !important;
        top: auto !important;
        z-index: auto !important;
    }
}

/* Search feedback row: inline with search instead of separate row */
.catalog-table-page .admin-list-toolbar-feedback {
    display: inline;
    margin-left: var(--ds-space-3, 12px);
    vertical-align: middle;
}
.catalog-table-page .admin-list-toolbar-feedback .search-alert {
    display: inline;
    font-size: var(--ds-font-size-sm, 12px);
}

/* ── Search clear button ────────────────────────────────────────────────── */

.catalog-table-page .admin-list-search {
    position: relative;
}

.catalog-search-clear {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    padding: 0;
    border: none;
    background: none;
    color: var(--ds-color-muted, #6b7280);
    cursor: pointer;
}
.catalog-search-clear:hover {
    color: var(--ds-color-heading, #111827);
}

/* ── Cover thumbnail column ────────────────────────────────────────────── */

.catalog-table-cover-col {
    width: 80px;
    min-width: 80px;
}

.catalog-table-cover-cell {
    width: 80px;
    padding: var(--ds-space-2) var(--ds-space-2) var(--ds-space-2) var(--ds-space-3) !important;
    vertical-align: middle;
}

.catalog-table-cover {
    display: block;
    width: 56px;
    height: 78px;
    object-fit: cover;
    border-radius: var(--ds-radius-sm, 4px);
    border: 1px solid var(--ds-color-border-lt, #f3f4f6);
    background: var(--ds-color-bg, #f9fafb);
}

/* ── Title & Publisher columns: equal width ────────────────────────────── */

.catalog-table-col-title,
.catalog-table-col-publisher {
    width: 30%;
}

/* ── Status & Dates columns: fixed narrow widths ───────────────────────── */

.catalog-table-col-authors {
    width: 22%;
}

.catalog-table-col-isbn {
    white-space: nowrap;
}

.catalog-table-col-status {
    width: 100px;
}

.catalog-table-col-dates {
    width: 200px;
    white-space: nowrap;
}

.catalog-table-title {
    font-weight: 500;
    font-size: var(--ds-font-size-body-sm, 13px);
    line-height: 1.4;
}
.catalog-table-title a {
    color: var(--ds-color-link, #1a56db);
    text-decoration: none;
}
.catalog-table-title a:hover {
    text-decoration: underline;
}

.catalog-table-page .table > thead > tr > th {
    font-size: 11px;
    font-weight: 600;
}

.catalog-table-col-badges {
    width: 64px;
    min-width: 64px;
}

.catalog-table-badges-cell {
    width: 64px;
    min-width: 64px;
    vertical-align: middle;
    padding-left: 8px !important;
    padding-right: 8px !important;
}

.catalog-table-badge {
    align-items: center;
    display: inline-flex;
    justify-content: center;
    margin-bottom: var(--ds-space-0-5, 2px);
    padding: 4px;
}
.catalog-table-badge img {
    height: 16px;
    width: auto;
    max-width: 100%;
    vertical-align: middle;
    opacity: 0.7;
    transition: opacity var(--ds-transition-fast, 0.15s ease);
}
.catalog-table-badge img:hover {
    opacity: 1;
}

.catalog-table-oa-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 104px;
    padding: 6px 8px;
    border-radius: 10px;
    border: 1px solid var(--ds-badge-success-border, #BBF7D0);
    background: var(--ds-badge-success-bg, #F0FDF4);
    color: var(--ds-badge-success-color, #15803D);
    text-decoration: none !important;
}

.catalog-table-oa-badge:hover {
    border-color: #86EFAC;
    background: #DCFCE7;
    color: var(--ds-badge-success-color, #15803D);
    text-decoration: none !important;
}

.catalog-table-oa-badge:visited {
    color: var(--ds-badge-success-color, #15803D);
}

.catalog-table-oa-badge__icon {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
}

.catalog-table-oa-badge__text {
    display: flex;
    flex-direction: column;
    line-height: 1.05;
    font-size: 11px;
    font-weight: 700;
    text-transform: lowercase;
}

/* ── Publisher column ──────────────────────────────────────────────────── */

.catalog-table-publisher {
    font-size: var(--ds-font-size-sm, 12px);
    line-height: 1.4;
    color: var(--ds-color-muted, #6b7280);
}

/* ── ISSN / DOI columns — single line ──────────────────────────────────── */

.catalog-table-issn {
    font-size: var(--ds-font-size-sm, 12px);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.catalog-table-doi {
    font-size: var(--ds-font-size-sm, 12px);
    color: var(--ds-color-link, #1a56db);
    white-space: nowrap;
}

.catalog-table-site {
    font-size: var(--ds-font-size-sm, 12px);
    color: var(--ds-color-link, #1a56db);
    white-space: nowrap;
}

/* ── Row hover ──────────────────────────────────────────────────────────── */

.catalog-table-page tbody tr:hover td {
    background-color: var(--ds-color-bg, #f9fafb);
}

/* ── Archived label ────────────────────────────────────────────────────── */

.catalog-table-title .label {
    font-size: var(--ds-font-size-xs, 10px);
    font-weight: 500;
    vertical-align: middle;
    margin-left: var(--ds-space-1-5, 6px);
    padding: 2px 6px;
    border-radius: var(--ds-radius-badge, 3px);
    background: var(--ds-badge-default-bg, #f3f4f6);
    color: var(--ds-badge-default-color, #4b5563);
}
