/* Batch 6 — focused teachers, subjects and shared import surfaces. */

.r2-catalog-page {
    width: min(100%, 1240px);
}

.r2-catalog-summary {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.r2-catalog-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--r2-space-4);
    margin-bottom: var(--r2-space-3);
}

.r2-catalog-search {
    width: min(100%, 28rem);
}

.r2-catalog-count {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-sm);
    white-space: nowrap;
}

.r2-catalog-table {
    table-layout: fixed;
}

.r2-catalog-table th:first-child,
.r2-catalog-table td:first-child {
    width: 28%;
}

.r2-catalog-table th:last-child,
.r2-catalog-table td:last-child {
    width: 3.5rem;
}

.r2-catalog-table td {
    vertical-align: top;
}

.r2-catalog-table .r2-menu__panel form {
    margin: 0;
}

/* Additional activities keep the full catalog width; short value columns stay compact. */
.r2-additional-page .r2-table-wrap {
    max-width: none;
    overflow-x: hidden;
}

#additional-activities-catalog {
    width: 100%;
    min-width: 0;
    table-layout: fixed;
}

#additional-activities-catalog th:first-child,
#additional-activities-catalog td:first-child {
    width: 30%;
}

#additional-activities-catalog th:nth-child(2),
#additional-activities-catalog td:nth-child(2) {
    width: 7rem;
    padding-inline: var(--r2-space-2);
}

#additional-activities-catalog th:nth-child(3),
#additional-activities-catalog td:nth-child(3) {
    width: 6rem;
    padding-inline: var(--r2-space-2);
}

#additional-activities-catalog th:nth-child(4),
#additional-activities-catalog td:nth-child(4) {
    width: auto;
    min-width: 0;
}

#additional-activities-catalog th:last-child,
#additional-activities-catalog td:last-child {
    width: 3.25rem;
    padding-inline: var(--r2-space-2);
}

#additional-activities-catalog td:nth-child(1),
#additional-activities-catalog td:nth-child(4) {
    overflow-wrap: anywhere;
}

@media (max-width: 48rem) {
    .r2-additional-page .r2-table-wrap {
        overflow-x: auto;
    }
}

.r2-catalog-filter-empty {
    padding-inline: var(--r2-space-4);
}

.r2-clamp-2 {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.r2-catalog-dialog {
    width: min(54rem, calc(100vw - 2rem));
}

.r2-dialog__subtitle {
    margin: var(--r2-space-1) 0 0;
    color: var(--r2-text-secondary);
    font-size: var(--r2-font-size-sm);
}

.r2-catalog-editor {
    display: grid;
    gap: var(--r2-space-4);
}

.r2-editor-savebar {
    display: flex;
    min-height: 1.75rem;
    align-items: center;
    justify-content: flex-end;
    gap: var(--r2-space-2);
}

.r2-dialog__footer--inside {
    margin: var(--r2-space-5) calc(var(--r2-space-5) * -1) calc(var(--r2-space-4) * -1);
}

.r2-choice-list,
.r2-choice-grid {
    display: grid;
    border-block: 1px solid var(--r2-divider);
}

.r2-choice-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.r2-choice-row {
    display: flex;
    min-width: 0;
    min-height: 2.55rem;
    align-items: center;
    gap: var(--r2-space-2);
    padding: var(--r2-space-2) var(--r2-space-3);
    border-bottom: 1px solid var(--r2-divider);
    color: var(--r2-text);
    font-size: var(--r2-font-size-sm);
    cursor: pointer;
}

.r2-choice-grid .r2-choice-row {
    border-right: 1px solid var(--r2-divider);
}

.r2-choice-row:hover {
    background: var(--r2-surface-subtle);
}

.r2-choice-row input {
    flex: 0 0 auto;
}

.r2-radio-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--r2-space-4);
    min-height: 2.5rem;
    align-items: center;
    padding-block: var(--r2-space-2);
    border-block: 1px solid var(--r2-divider);
}

.r2-radio-row label {
    display: inline-flex;
    align-items: center;
    gap: var(--r2-space-2);
    color: var(--r2-text);
    font-size: var(--r2-font-size-sm);
}

.r2-availability-week {
    display: grid;
    margin-top: var(--r2-space-3);
    border-top: 1px solid var(--r2-divider);
}

.r2-availability-day {
    display: grid;
    grid-template-columns: minmax(7rem, 1fr) 7.25rem auto 7.25rem;
    align-items: center;
    gap: var(--r2-space-2);
    min-height: 3rem;
    border-bottom: 1px solid var(--r2-divider);
}

.r2-availability-day label {
    display: inline-flex;
    align-items: center;
    gap: var(--r2-space-2);
    font-size: var(--r2-font-size-sm);
}

.r2-availability-day input[type="time"] {
    min-width: 0;
    min-height: 2.25rem;
    padding: var(--r2-space-1) var(--r2-space-2);
    border: 1px solid var(--r2-border-strong);
    border-radius: var(--r2-radius-md);
    background: var(--r2-surface);
}

.r2-draft-recovery {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--r2-space-3);
    padding: var(--r2-space-3) var(--r2-space-4);
    border-left: 3px solid var(--r2-info);
    background: var(--r2-info-soft);
    font-size: var(--r2-font-size-sm);
}

.r2-draft-recovery > div {
    display: flex;
    gap: var(--r2-space-2);
}

.r2-catalog-attention {
    border-left: 3px solid var(--r2-warning);
    padding-inline: var(--r2-space-5);
}

.r2-import-dialog {
    width: min(76rem, calc(100vw - 2rem));
}

.r2-import-dialog__subtitle {
    margin: var(--r2-space-1) 0 0;
    color: var(--r2-text-secondary);
    font-size: var(--r2-font-size-sm);
}

.r2-import {
    display: grid;
    gap: var(--r2-space-5);
}

.r2-import__steps {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    margin: 0;
    padding: 0;
    border-bottom: 1px solid var(--r2-divider);
    list-style: none;
}

.r2-import__steps li {
    padding: var(--r2-space-2) var(--r2-space-3);
    border-bottom: 3px solid transparent;
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-sm);
}

.r2-import__steps li[aria-current="step"] {
    border-bottom-color: var(--r2-primary);
    color: var(--r2-primary);
    font-weight: var(--r2-weight-medium);
}

.r2-import__step {
    display: grid;
    gap: var(--r2-space-4);
}

.r2-import__format {
    padding: var(--r2-space-4);
    border-left: 3px solid var(--r2-primary);
    background: var(--r2-primary-soft);
}

.r2-import__format h3,
.r2-import__format p {
    margin: 0;
}

.r2-import__format p + p {
    margin-top: var(--r2-space-1);
}

.r2-import__file {
    display: grid;
    gap: var(--r2-space-2);
    width: min(100%, 32rem);
    font-size: var(--r2-font-size-sm);
    font-weight: var(--r2-weight-medium);
}

.r2-import__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--r2-space-2);
}

.r2-import__table-wrap {
    max-width: 100%;
    overflow-x: auto;
}

.r2-import__table {
    min-width: 64rem;
}

.r2-import__cell-control {
    min-width: 7rem;
}

.r2-import__issues p,
.r2-import__status p {
    margin: 0;
    color: var(--r2-danger);
    font-size: var(--r2-font-size-xs);
}

.r2-import__status {
    padding: var(--r2-space-3) 0;
}

.r2-import__status[data-tone="info"] p {
    color: var(--r2-info);
}

.r2-import__status[data-tone="danger"] p {
    color: var(--r2-danger);
}

@media (max-width: 70rem) {
    .r2-catalog-table th:nth-child(4),
    .r2-catalog-table td:nth-child(4) {
        display: none;
    }

    .r2-choice-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 52rem) {
    .r2-school-data-header,
    .r2-catalog-toolbar,
    .r2-draft-recovery {
        align-items: stretch;
        flex-direction: column;
    }

    .r2-catalog-summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .r2-catalog-summary > div:nth-child(3) {
        border-left: 0;
        border-top: 1px solid var(--r2-border);
    }

    .r2-catalog-summary > div:nth-child(4) {
        border-top: 1px solid var(--r2-border);
    }

    .r2-catalog-search {
        width: 100%;
    }

    .r2-catalog-table th:nth-child(3),
    .r2-catalog-table td:nth-child(3) {
        display: none;
    }

    .r2-catalog-table th:first-child,
    .r2-catalog-table td:first-child {
        width: auto;
    }

    .r2-choice-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 38rem) {
    .r2-choice-grid {
        grid-template-columns: 1fr;
    }

    .r2-availability-day {
        grid-template-columns: 1fr 1fr;
        padding-block: var(--r2-space-2);
    }

    .r2-availability-day label {
        grid-column: 1 / -1;
    }
}

/* Batch 20 manual review: explicit, structured catalogue editors. */
.r2-catalog-dialog--teacher {
    width: min(68rem, calc(100vw - 2rem));
}

.r2-catalog-editor--teacher {
    padding-top: 0;
}

.r2-catalog-editor--teacher .r2-editor-savebar {
    position: sticky;
    z-index: 2;
    top: 0;
    margin-inline: calc(var(--r2-space-5) * -1);
    padding: var(--r2-space-2) var(--r2-space-5);
    border-bottom: 1px solid var(--r2-divider);
    background: rgba(255, 255, 255, 0.97);
    backdrop-filter: blur(8px);
}

.r2-catalog-editor-section {
    display: grid;
    gap: var(--r2-space-4);
    padding-block: var(--r2-space-2) var(--r2-space-5);
    border-bottom: 1px solid var(--r2-divider);
}

.r2-catalog-editor-section:last-child {
    border-bottom: 0;
}

.r2-catalog-editor-section__head h3,
.r2-catalog-editor-section__head p {
    margin: 0;
}

.r2-catalog-editor-section__head h3 {
    font-size: var(--r2-font-size-lg);
}

.r2-catalog-editor-section__head p {
    margin-top: var(--r2-space-1);
    color: var(--r2-text-secondary);
    font-size: var(--r2-font-size-sm);
}

.r2-choice-list--scroll {
    max-height: 15rem;
    overflow-y: auto;
}

.r2-dialog__footer-note {
    margin-right: auto;
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-sm);
}

.r2-menu__item[aria-busy="true"] {
    color: var(--r2-text-muted);
    pointer-events: none;
}

@media (max-width: 70rem) {
    .r2-catalog-dialog--teacher {
        width: min(58rem, calc(100vw - 1rem));
        max-height: calc(100vh - 1rem);
    }
}

@media (max-width: 52rem) {
    .r2-dialog__footer-note {
        margin-right: 0;
        text-align: center;
    }
}

/* Urgent editor reliability patch — opaque surfaces and explicit autosave states. */
.r2-catalog-dialog[open] {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    overflow: hidden;
    background: var(--r2-surface);
    isolation: isolate;
}

.r2-catalog-dialog > .r2-dialog__header,
.r2-catalog-dialog > .r2-dialog__body,
.r2-catalog-dialog > .r2-catalog-dialog__scroll,
.r2-catalog-dialog > .r2-dialog__footer {
    background: var(--r2-surface);
}

.r2-catalog-dialog > .r2-dialog__body {
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

/* Some catalogue editors contain independent forms in one modal (teacher
   autosave + working-schedule rules). Keep them inside one grid row so the
   dialog, not the page behind it, owns vertical scrolling. */
.r2-catalog-dialog > .r2-catalog-dialog__scroll {
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}

.r2-catalog-dialog > .r2-catalog-dialog__scroll > .r2-dialog__body {
    min-height: auto;
    overflow: visible;
}

.r2-catalog-dialog > .r2-dialog__footer {
    position: relative;
    z-index: 4;
}

.r2-catalog-editor--teacher .r2-editor-savebar,
.r2-catalog-editor .r2-editor-savebar {
    flex-wrap: wrap;
    background: var(--r2-surface);
    backdrop-filter: none;
}

.r2-autosave-recovery {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--r2-space-4);
    padding: var(--r2-space-3) var(--r2-space-4);
    border: 1px solid var(--r2-warning-border, #d9a441);
    background: var(--r2-warning-surface, #fff8e8);
    color: var(--r2-text);
}

.r2-autosave-recovery strong,
.r2-autosave-recovery p {
    margin: 0;
}

.r2-autosave-recovery p {
    margin-top: var(--r2-space-1);
    color: var(--r2-text-secondary);
    font-size: var(--r2-font-size-sm);
}

.r2-autosave-recovery__actions {
    display: flex;
    flex: 0 0 auto;
    flex-wrap: wrap;
    gap: var(--r2-space-2);
}

.r2-catalog-dialog[data-r2-close-pending="1"] .r2-dialog__body {
    pointer-events: none;
}

@media (max-width: 44rem) {
    .r2-autosave-recovery {
        align-items: stretch;
        flex-direction: column;
    }

    .r2-autosave-recovery__actions {
        flex-direction: column;
    }
}

.r2-catalog-toolbar__actions,
.r2-catalog-toolbar__actions form,
.r2-catalog-archive-notice {
    display: flex;
    align-items: center;
    gap: var(--r2-space-3);
}

.r2-catalog-toolbar__actions {
    justify-content: flex-end;
    flex-wrap: wrap;
}

.r2-catalog-bulk-count {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-sm);
    white-space: nowrap;
}

.r2-catalog-archive-notice {
    justify-content: space-between;
    margin-bottom: var(--r2-space-4);
}

#subjects-catalog th.r2-catalog-select,
#subjects-catalog td.r2-catalog-select {
    width: 3rem;
    padding-inline: var(--r2-space-2);
    text-align: center;
    vertical-align: middle;
}

#subjects-catalog.is-selectable th:nth-child(2),
#subjects-catalog.is-selectable td:nth-child(2) {
    width: 28%;
}

#subjects-catalog.is-selectable th:first-child,
#subjects-catalog.is-selectable td:first-child {
    width: 3rem;
}

@media (max-width: 760px) {
    .r2-catalog-toolbar,
    .r2-catalog-archive-notice {
        align-items: stretch;
        flex-direction: column;
    }

    .r2-catalog-toolbar__actions {
        justify-content: flex-start;
    }
}

/* Additional-activity teacher choices must win over legacy app-shell label/input rules. */
body.has-app-shell .r2-additional-editor-dialog label.r2-additional-teacher-choice {
    display: flex;
    width: 100%;
    min-height: 2.55rem;
    align-items: center;
    gap: var(--r2-space-2);
    margin: 0;
    padding: var(--r2-space-2) var(--r2-space-3);
    color: var(--r2-text) !important;
    font-size: var(--r2-font-size-sm);
    font-weight: var(--r2-weight-medium);
    line-height: 1.35;
    cursor: pointer;
}

body.has-app-shell .r2-additional-editor-dialog label.r2-additional-teacher-choice > input[type="checkbox"] {
    display: block;
    width: 1rem;
    min-width: 1rem;
    max-width: 1rem;
    height: 1rem;
    flex: 0 0 1rem;
    margin: 0;
    padding: 0;
    accent-color: var(--r2-primary);
}

body.has-app-shell .r2-additional-editor-dialog label.r2-additional-teacher-choice > span {
    display: block;
    min-width: 0;
    color: var(--r2-text) !important;
    opacity: 1 !important;
    visibility: visible !important;
}

body.has-app-shell .r2-additional-editor-dialog label.r2-additional-teacher-choice:hover,
body.has-app-shell .r2-additional-editor-dialog label.r2-additional-teacher-choice:focus-within {
    background: var(--r2-surface-subtle);
    color: var(--r2-text) !important;
}

body.has-app-shell .r2-additional-editor-dialog label.r2-additional-teacher-choice:hover > span,
body.has-app-shell .r2-additional-editor-dialog label.r2-additional-teacher-choice:focus-within > span {
    color: var(--r2-text) !important;
    opacity: 1 !important;
    visibility: visible !important;
}

/* Subject editor reliability. The edit form uses the same dedicated scroll
   row as the teacher editor, which is already proven in production. Header
   and footer stay fixed while only the editor content scrolls. */
#subject-edit-dialog > .r2-catalog-dialog__scroll {
    min-height: 0;
    max-height: calc(100vh - 10rem);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}

/* The create/override dialog still owns scrolling on its form body. */
#subject-create-dialog > .r2-dialog__body {
    min-height: 0;
    max-height: calc(100vh - 10rem);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}

@supports (height: 100dvh) {
    #subject-edit-dialog > .r2-catalog-dialog__scroll,
    #subject-create-dialog > .r2-dialog__body {
        max-height: calc(100dvh - 10rem);
    }
}
