/* Unified catalog uses the same theme and modal layer as existing reader tools. */
.catalog-panel { width: min(100%, 960px); max-height: 100%; color: var(--text); background: var(--card); }
.modal .catalog-panel { display: flex; flex-direction: column; overflow: hidden; }
.catalog-panel .modal-body { overflow: auto; min-height: 0; flex: 1; }
.catalog-panel .modal-header { flex: none; background: var(--card); }
.catalog-panel button, .catalog-panel input, .catalog-panel select, .catalog-holding a {
  min-height: var(--control-target-size); border: 1px solid var(--border); border-radius: 8px;
  background: var(--control-bg); color: var(--text); padding: 8px 12px; font: inherit;
}
.catalog-panel button, .catalog-holding a { cursor: pointer; }
.catalog-panel button:disabled { opacity: .5; cursor: default; }
.catalog-panel :focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.catalog-panel p, .catalog-panel h4 { overflow-wrap: anywhere; margin: 8px 0; }
.catalog-tools { display: flex; flex-wrap: wrap; gap: 8px; }
.catalog-tools input { flex: 1 1 100%; min-width: 0; }
.catalog-tools label { display: flex; flex-direction: column; flex: 1 1 150px; min-width: 0; gap: 4px; }
.catalog-tools select { flex: none; width: 100%; min-width: 0; max-width: 100%; }
.catalog-book { border: 1px solid var(--border); border-radius: 12px; padding: 12px; margin: 12px 0; }
.catalog-holding { border-top: 1px solid var(--border); margin-top: 12px; padding-top: 8px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.catalog-holding p { flex-basis: 100%; }
.catalog-holding a { display: inline-flex; align-items: center; text-decoration: none; }
.catalog-form { padding: 12px; border: 1px solid var(--border); border-radius: 12px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.catalog-form label { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.catalog-form input, .catalog-form select { width: 100%; min-width: 0; }
.catalog-form input[type="checkbox"] { width: var(--control-target-size); }
.catalog-form p { grid-column: 1 / -1; }
.catalog-paging { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 12px 0; }
/* Touch-sized selection labels and bounded editor rows work in both phone orientations. */
.catalog-selection { display: inline-flex; align-items: center; gap: 8px; min-height: var(--control-target-size); cursor: pointer; }
.catalog-selection input[type="checkbox"] { width: var(--control-target-size); padding: 0; }
.catalog-bulk-editor { min-width: 0; border: 1px solid var(--border); border-radius: 12px; padding: 12px; margin: 12px 0; }
.catalog-bulk-editor label { display: flex; flex-direction: column; gap: 4px; min-width: 0; margin: 8px 0; }
.catalog-bulk-editor input, .catalog-bulk-editor select { width: 100%; min-width: 0; }
.catalog-bulk-row { border-top: 1px solid var(--border); padding-top: 8px; margin-top: 12px; }
/* Preview pages bound the DOM; only the table scrolls horizontally on small screens. */
.catalog-csv-preview { min-width: 0; border: 1px solid var(--border); border-radius: 12px; padding: 12px; margin: 12px 0; }
.catalog-csv-table { max-width: 100%; overflow-x: auto; }
.catalog-csv-table table { width: 100%; border-collapse: collapse; }
.catalog-csv-table th, .catalog-csv-table td { padding: 8px; text-align: left; border-bottom: 1px solid var(--border); overflow-wrap: anywhere; }
@media (max-width: 540px) { .catalog-form { grid-template-columns: minmax(0, 1fr); } }
