/* Админка (web/admin/*.html). Подключается поверх base.css — правь свободно,
   на публичный дашборд эти правила не влияют. */

.admin-header {
    padding: 10px 38px;
}

.admin-header h1 {
    margin: 0;
    padding: 1px 3px;
    font-size: 1.5em;
}

.back-link {
    display: inline-block;
    font-size: 13px;
    color: var(--text-secondary);
}

@media (min-width: 900px) {
    main.admin-home {
        max-width: 960px;
    }
}

.admin-tools-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.admin-tools-list li {
    padding: 12px 16px;
    border: 1px solid var(--border);
    border-radius: 8px;
}

.admin-tools-list a {
    font-size: 16px;
    font-weight: 600;
}

.admin-tools-list .subtitle {
    margin: 4px 0 0;
}

button.primary {
    background: var(--series-1);
    border-color: var(--series-1);
    color: #ffffff;
}

button.danger {
    color: #b3261e;
    border-color: #b3261e;
}

.actions-cell {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.confidence-high {
    color: var(--text-primary);
}

.confidence-medium {
    color: var(--text-secondary);
}

.confidence-low {
    color: var(--text-muted);
}

/* Moderation / guest-catalog / shows-catalog panels */

.panel {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 8px 0;
}

.guest-search-results {
    display: flex;
    flex-direction: column;
    gap: 4px;
    max-height: 160px;
    overflow-y: auto;
}

.guest-search-results button {
    text-align: left;
}

.panel-form {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

/* Поля в столбец: слева подпись, справа само поле, кнопка справа от полей по верху первой строки. */
.panel-form-grid {
    display: inline-grid;
    grid-template-columns: 120px 350px auto;
    justify-content: start;
    align-items: center;
    gap: 8px 12px;
}

/* Явные колонки: иначе автоподстановка кладёт подпись третьей строки в
   колонку кнопки. Колонки фиксированные (подпись/поле/кнопка) — у всех форм
   одинаковые, чтобы правые края полей и кнопки стояли ровно. */
.panel-form-grid label {
    grid-column: 1;
}

.panel-form-grid input,
.panel-form-grid select {
    grid-column: 2;
    box-sizing: border-box;
    width: 100%;
}

/* Описание без подписи: textarea занимает колонки подписи и поля, так что
   справа заканчивается там же, где поля остальных форм. */
.panel-form-grid textarea.span-fields {
    grid-column: 1 / span 2;
    box-sizing: border-box;
    width: 100%;
    resize: vertical;
}

.panel-form-grid button {
    grid-column: 3;
    grid-row: 1;
    align-self: start;
}

.panel-error {
    color: #b3261e;
    font-size: 13px;
}

.panel-error[hidden] {
    display: none;
}

.panel-hint {
    color: #6b5f00;
    font-size: 13px;
}

.panel-hint[hidden] {
    display: none;
}

.batch-option {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: var(--text-secondary);
}

.panel h3 {
    margin: 8px 0 0;
    font-size: 15px;
    color: var(--text-secondary);
}

/* Визуально обособленный блок из нескольких секций панели. */
.panel-group {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 16px;
    padding: 12px;
    border: 1px solid var(--border, #d0d0d0);
    border-radius: 8px;
}

.panel-group-cols {
    display: flex;
    gap: 24px;
}

.merge-option {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.candidate-row {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.alias-list {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}

.alias-row {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 4px 3px 10px;
    border-radius: 999px;
    background: var(--surface-1);
    border: 1px solid var(--gridline);
    font-size: 13px;
}

.alias-remove {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: #b3261e;
    font-size: 11px;
    line-height: 1;
    cursor: pointer;
}

.alias-remove:hover {
    background: rgba(179, 38, 30, 0.12);
    filter: none;
}

.episode-list {
    margin: 0;
    padding-left: 20px;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

/* Справочник шоу (shows-catalog.html) */

.show-group {
    border-bottom: 1px solid var(--gridline);
    padding: 8px 0;
}

.show-group:last-child {
    border-bottom: none;
}

.show-group summary {
    cursor: pointer;
    font-weight: 400;
    padding: 8px 0;
}

.show-link {
    margin: 4px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.show-category {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 4px 0;
}

.show-toolbar {
    display: flex;
    justify-content: flex-start;
}

.show-top-grid {
    display: flex;
    gap: 24px;
    margin: 20px 0;
}

.show-top-col {
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex: 1 1 50%;
    min-width: 0;
}

/* Секции колонки (h3 + содержимое) — плоские соседи без обёртки, поэтому
   одинаковый gap между всеми элементами не отличал «заголовок → своя форма»
   от «конец секции → следующая секция». Внутри секции — малый gap, а
   расстояние между секциями задаёт верхний отступ заголовка (8 + 22 = 30px,
   как раньше между секциями). */
.show-top-col h3 {
    margin-top: 22px;
}

.show-top-col h3:first-child {
    margin-top: 0;
}

.show-group table {
    margin-top: 60px;
}

/* Постер шоу (shows-catalog.html:buildPosterSection) — превью уже
   сохранённого постера. Ширина ограничена (не на всю карточку) — это
   инструмент админки, а не финальный вид постера на web/shows/show.html
   (там своя вёрстка, см. .show-poster в dashboard.css). display: block
   в паре с [hidden] нужен явно — иначе атрибут hidden не победил бы этот
   же display: block по специфичности и постер оставался бы виден. */
.poster-preview {
    display: block;
    width: 100%;
    max-width: 320px;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    border: 1px solid var(--gridline);
    border-radius: 6px;
    margin: 4px 0;
    background: var(--surface-1);
}

.poster-preview[hidden] {
    display: none;
}

.poster-actions {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}


/* Кнопка-ссылка («Выйти» на главной странице админки при серверном входе) */
.link-button {
    background: none;
    border: 0;
    padding: 0;
    font: inherit;
    color: inherit;
    text-decoration: underline;
    cursor: pointer;
}
