.r2-finalization-workspace {
    max-width: 1180px;
    margin: 0 auto;
}

.r2-finalization-heading {
    align-items: flex-start;
}

.r2-finalization-lifecycle {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0;
    margin: 0 0 var(--r2-space-6);
    padding: 0;
    list-style: none;
    border-block: 1px solid var(--r2-border);
}

.r2-finalization-step {
    display: grid;
    grid-template-columns: 2rem minmax(0, 1fr);
    gap: var(--r2-space-3);
    min-height: 7rem;
    padding: var(--r2-space-4);
    border-right: 1px solid var(--r2-border);
}

.r2-finalization-step:last-child {
    border-right: 0;
}

.r2-finalization-step__marker {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border: 1px solid var(--r2-border-strong);
    border-radius: 50%;
    font-weight: 800;
}

.r2-finalization-step__body {
    display: grid;
    align-content: start;
    gap: .25rem;
}

.r2-finalization-step__body small,
.r2-finalization-step__state {
    color: var(--r2-text-muted);
    line-height: 1.45;
}

.r2-finalization-step__state {
    grid-column: 2;
    font-size: var(--r2-font-size-xs);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.r2-finalization-step--complete .r2-finalization-step__marker {
    border-color: var(--r2-success);
    color: var(--r2-success);
}

.r2-finalization-step--current {
    background: var(--r2-primary-soft);
}

.r2-finalization-step--current .r2-finalization-step__marker {
    border-color: var(--r2-primary);
    background: var(--r2-primary);
    color: #fff;
}

.r2-finalization-step--blocked .r2-finalization-step__marker {
    border-color: var(--r2-danger);
    color: var(--r2-danger);
}

.r2-finalization-action {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--r2-space-6);
    margin-bottom: var(--r2-space-6);
    padding: var(--r2-space-6);
    border: 1px solid var(--r2-border-strong);
    border-left: 4px solid var(--r2-primary);
    background: var(--r2-surface);
}

.r2-finalization-action--error {
    border-left-color: var(--r2-danger);
}

.r2-finalization-action--warning {
    border-left-color: var(--r2-warning);
}

.r2-finalization-action__copy h2,
.r2-finalization-action__copy p {
    margin: .25rem 0;
}

.r2-finalization-action__copy p {
    color: var(--r2-text-muted);
}

.r2-finalization-action__kicker {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-xs);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .05em;
}

.r2-finalization-action__controls {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--r2-space-3);
    flex-wrap: wrap;
}

.r2-finalization-action__controls form {
    margin: 0;
}

.r2-finalization-read-only {
    display: inline-flex;
    align-items: center;
    min-height: 2.5rem;
    padding-inline: var(--r2-space-4);
    border: 1px solid var(--r2-border);
    color: var(--r2-text-muted);
    font-weight: 700;
}

.r2-finalization-secondary-action {
    position: relative;
}

.r2-finalization-secondary-action > summary {
    cursor: pointer;
    color: var(--r2-text-muted);
    font-weight: 700;
}

.r2-finalization-secondary-action form {
    display: grid;
    gap: var(--r2-space-3);
    min-width: 260px;
    margin-top: var(--r2-space-3);
    padding: var(--r2-space-4);
    border: 1px solid var(--r2-border);
    background: var(--r2-surface);
}

.r2-finalization-secondary-action label {
    display: grid;
    gap: var(--r2-space-2);
}

.r2-calculation-progress {
    margin-bottom: var(--r2-space-6);
    padding: var(--r2-space-5);
    border-block: 1px solid var(--r2-border);
    background: var(--r2-surface-muted);
}

.r2-calculation-progress__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--r2-space-4);
    margin-bottom: var(--r2-space-4);
}

.r2-calculation-progress__head span {
    color: var(--r2-text-muted);
}

.r2-calculation-progress ol {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--r2-space-3);
    margin: 0;
    padding: 0;
    list-style: none;
}

.r2-calculation-progress li {
    position: relative;
    padding: .75rem .75rem .75rem 2.2rem;
    border-bottom: 2px solid var(--r2-border);
    color: var(--r2-text-muted);
}

.r2-calculation-progress li::before {
    content: '';
    position: absolute;
    left: .5rem;
    top: 50%;
    width: .75rem;
    height: .75rem;
    margin-top: -.375rem;
    border: 2px solid var(--r2-border-strong);
    border-radius: 50%;
}

.r2-calculation-progress li.is-current {
    border-bottom-color: var(--r2-primary);
    color: var(--r2-text);
    font-weight: 700;
}

.r2-calculation-progress li.is-current::before {
    border-color: var(--r2-primary);
    border-top-color: transparent;
    animation: r2-calculation-spin .8s linear infinite;
}

.r2-calculation-progress li.is-complete {
    border-bottom-color: var(--r2-success);
    color: var(--r2-text);
}

.r2-calculation-progress li.is-complete::before {
    border-color: var(--r2-success);
    background: var(--r2-success);
}

@keyframes r2-calculation-spin {
    to { transform: rotate(360deg); }
}

.r2-finalization-totals {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0;
    margin-bottom: var(--r2-space-6);
    border-block: 1px solid var(--r2-border);
}

.r2-finalization-totals__label {
    margin: 0 0 var(--r2-space-2);
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-sm);
    font-weight: 700;
}

.r2-finalization-total {
    display: grid;
    gap: .25rem;
    padding: var(--r2-space-5);
    border-right: 1px solid var(--r2-border);
}

.r2-finalization-total:last-child {
    border-right: 0;
}

.r2-finalization-total span,
.r2-finalization-total small {
    color: var(--r2-text-muted);
}

.r2-finalization-total strong {
    font-size: clamp(1.25rem, 1.8vw, 1.75rem);
    line-height: 1.15;
}

.r2-finalization-total--primary {
    background: var(--r2-primary-soft);
}

.r2-finalization-review,
.r2-finalization-results,
.r2-finalization-history,
.r2-validation-group,
.r2-export-reports,
.r2-export-details,
.r2-export-history {
    margin-bottom: var(--r2-space-6);
    padding-block: var(--r2-space-5);
    border-block: 1px solid var(--r2-border);
}

.r2-finalization-review > header,
.r2-finalization-results__head,
.r2-validation-group__head,
.r2-export-reports > header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--r2-space-5);
    margin-bottom: var(--r2-space-4);
}

.r2-finalization-review h2,
.r2-finalization-review p,
.r2-finalization-results h2,
.r2-finalization-results p,
.r2-validation-group h2,
.r2-validation-group p,
.r2-export-reports h2,
.r2-export-reports p {
    margin: .2rem 0;
}

.r2-finalization-review p,
.r2-finalization-results p,
.r2-validation-group p,
.r2-export-reports p {
    color: var(--r2-text-muted);
}

.r2-finalization-checks {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 var(--r2-space-6);
}

.r2-finalization-check {
    display: grid;
    grid-template-columns: 1.75rem minmax(0, 1fr);
    gap: var(--r2-space-3);
    padding: var(--r2-space-3) 0;
    border-bottom: 1px solid var(--r2-border);
}

.r2-finalization-check > span {
    display: grid;
    place-items: center;
    width: 1.5rem;
    height: 1.5rem;
    border: 1px solid var(--r2-border-strong);
    border-radius: 50%;
    font-weight: 800;
}

.r2-finalization-check.is-ok > span {
    border-color: var(--r2-success);
    color: var(--r2-success);
}

.r2-finalization-check.is-warning > span {
    border-color: var(--r2-warning);
    color: var(--r2-warning);
}

.r2-finalization-check.is-error > span {
    border-color: var(--r2-danger);
    color: var(--r2-danger);
}

.r2-finalization-check div {
    display: grid;
    gap: .15rem;
}

.r2-finalization-check small {
    color: var(--r2-text-muted);
}

.r2-finalization-filters {
    display: flex;
    gap: var(--r2-space-2);
    margin-bottom: var(--r2-space-4);
    overflow-x: auto;
    padding-bottom: .25rem;
}

.r2-finalization-filters .btn {
    white-space: nowrap;
}

.r2-finalization-filters .btn.is-active {
    border-color: var(--r2-primary);
    background: var(--r2-primary-soft);
    color: var(--r2-primary-strong);
}

.r2-finalization-search input {
    min-width: 240px;
}

.r2-finalization-table td small {
    display: block;
    margin-top: .2rem;
    color: var(--r2-text-muted);
}

.r2-finalization-history-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--r2-space-6);
}

.r2-finalization-history {
    min-width: 0;
}

.r2-finalization-history summary,
.r2-export-details summary,
.r2-export-history summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--r2-space-4);
    cursor: pointer;
}

.r2-finalization-history summary span,
.r2-export-details summary span,
.r2-export-history summary span {
    color: var(--r2-text-muted);
}

.r2-finalization-history details > div,
.r2-export-details details > div,
.r2-export-history details > div {
    margin-top: var(--r2-space-4);
}

.r2-finalization-activity article {
    padding: var(--r2-space-3) 0;
    border-bottom: 1px solid var(--r2-border);
}

.r2-finalization-activity article:last-child {
    border-bottom: 0;
}

.r2-finalization-activity article > div {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--r2-space-4);
}

.r2-finalization-activity small,
.r2-finalization-activity p {
    color: var(--r2-text-muted);
}

.r2-finalization-activity p {
    margin: .3rem 0 0;
}

.r2-finalization-empty {
    padding: var(--r2-space-7) 0;
    text-align: center;
}

.r2-finalization-empty p {
    color: var(--r2-text-muted);
}

.r2-validation-overview {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--r2-space-6);
    margin-bottom: var(--r2-space-6);
    padding: var(--r2-space-6);
    border: 1px solid var(--r2-border-strong);
    border-left: 4px solid var(--r2-success);
}

.r2-validation-overview--warning {
    border-left-color: var(--r2-warning);
}

.r2-validation-overview--error {
    border-left-color: var(--r2-danger);
}

.r2-validation-overview h2,
.r2-validation-overview p {
    margin: .25rem 0;
}

.r2-validation-overview p {
    color: var(--r2-text-muted);
}

.r2-validation-overview__kicker {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-xs);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .05em;
}

.r2-validation-counts {
    display: grid;
    grid-template-columns: repeat(3, minmax(92px, 1fr));
    gap: var(--r2-space-4);
    margin: 0;
}

.r2-validation-counts div {
    display: grid;
    gap: .25rem;
}

.r2-validation-counts dt {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-xs);
}

.r2-validation-counts dd {
    margin: 0;
    font-size: 1.35rem;
    font-weight: 800;
}

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

.r2-validation-count {
    padding: .3rem .6rem;
    border: 1px solid var(--r2-border);
    font-size: var(--r2-font-size-xs);
    font-weight: 800;
}

.r2-validation-count--error {
    border-color: var(--r2-danger);
    color: var(--r2-danger);
}

.r2-validation-count--warning {
    border-color: var(--r2-warning);
    color: var(--r2-warning);
}

.r2-validation-issue {
    display: grid;
    grid-template-columns: .75rem minmax(0, 1fr) auto;
    gap: var(--r2-space-4);
    align-items: center;
    padding: var(--r2-space-4) 0;
    border-bottom: 1px solid var(--r2-border);
}

.r2-validation-issue:last-child {
    border-bottom: 0;
}

.r2-validation-issue__marker {
    width: .65rem;
    height: .65rem;
    border-radius: 50%;
    background: var(--r2-text-muted);
}

.r2-validation-issue--error .r2-validation-issue__marker {
    background: var(--r2-danger);
}

.r2-validation-issue--warning .r2-validation-issue__marker {
    background: var(--r2-warning);
}

.r2-validation-issue--info .r2-validation-issue__marker {
    background: var(--r2-success);
}

.r2-validation-issue__body {
    min-width: 0;
}

.r2-validation-issue__title {
    display: flex;
    align-items: baseline;
    gap: var(--r2-space-3);
    flex-wrap: wrap;
}

.r2-validation-issue__title > span {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-xs);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.r2-validation-issue__body p {
    margin: .25rem 0 0;
}

.r2-finalization-footer-action {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--r2-space-5);
    padding: var(--r2-space-5) 0;
    border-top: 1px solid var(--r2-border);
}

.r2-finalization-footer-action > div {
    display: grid;
    gap: .2rem;
}

.r2-finalization-footer-action span {
    color: var(--r2-text-muted);
}

.r2-export-gate {
    display: grid;
    gap: var(--r2-space-3);
    margin-bottom: var(--r2-space-6);
    padding: var(--r2-space-5);
    border: 1px solid var(--r2-border-strong);
    border-left: 4px solid var(--r2-warning);
}

.r2-export-gate--error {
    border-left-color: var(--r2-danger);
}

.r2-export-gate p,
.r2-export-gate ul {
    margin: .25rem 0;
    color: var(--r2-text-muted);
}

.r2-export-reports {
    display: grid;
    gap: 0;
}

.r2-export-reports > header {
    margin-bottom: var(--r2-space-2);
}

.r2-export-report {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--r2-space-6);
    padding: var(--r2-space-5) 0;
    border-bottom: 1px solid var(--r2-border);
}

.r2-export-report:last-of-type {
    border-bottom: 0;
}

.r2-export-report h3,
.r2-export-report p {
    margin: .2rem 0;
}

.r2-export-report p,
.r2-export-note {
    color: var(--r2-text-muted);
}

.r2-export-report__kicker {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-xs);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.r2-export-report--primary h3 {
    color: var(--r2-primary-strong);
}

.r2-export-content-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--r2-space-3) var(--r2-space-6);
}

.r2-export-content-list span {
    padding-bottom: var(--r2-space-2);
    border-bottom: 1px solid var(--r2-border);
}

@media (max-width: 980px) {
    .r2-finalization-lifecycle,
    .r2-finalization-totals {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .r2-finalization-step:nth-child(2),
    .r2-finalization-total:nth-child(2) {
        border-right: 0;
    }

    .r2-finalization-step:nth-child(-n + 2),
    .r2-finalization-total:nth-child(-n + 2) {
        border-bottom: 1px solid var(--r2-border);
    }

    .r2-validation-overview,
    .r2-finalization-history-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 760px) {
    .r2-finalization-action,
    .r2-finalization-review > header,
    .r2-finalization-results__head,
    .r2-validation-group__head,
    .r2-finalization-footer-action,
    .r2-export-report,
    .r2-calculation-progress__head {
        align-items: stretch;
        flex-direction: column;
    }

    .r2-finalization-action__controls,
    .r2-finalization-action__controls form,
    .r2-finalization-action__controls .btn,
    .r2-finalization-footer-action .btn,
    .r2-export-report form,
    .r2-export-report .btn,
    .r2-finalization-search,
    .r2-finalization-search input {
        width: 100%;
    }

    .r2-finalization-checks,
    .r2-calculation-progress ol,
    .r2-validation-counts,
    .r2-export-content-list {
        grid-template-columns: 1fr;
    }

    .r2-validation-issue {
        grid-template-columns: .75rem minmax(0, 1fr);
    }

    .r2-validation-issue__action {
        grid-column: 2;
    }
}

@media (max-width: 520px) {
    .r2-finalization-lifecycle,
    .r2-finalization-totals {
        grid-template-columns: 1fr;
    }

    .r2-finalization-step,
    .r2-finalization-total {
        border-right: 0;
        border-bottom: 1px solid var(--r2-border);
    }

    .r2-finalization-step:last-child,
    .r2-finalization-total:last-child {
        border-bottom: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .r2-calculation-progress li.is-current::before {
        animation: none;
    }
}

/* Batch 22: teacher-scoped tarification workspace. */
.r2-salary-individual .salary-content-panel {
    max-width: 1180px;
    margin-inline: auto;
}

.r2-individual-heading,
.r2-finalization-heading__actions,
.r2-individual-section__heading,
.r2-individual-result__heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--r2-space-4);
}

.r2-finalization-heading__actions {
    flex-wrap: wrap;
}

.r2-individual-selector {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--r2-space-4);
    align-items: end;
    padding-block: var(--r2-space-4);
    margin-bottom: var(--r2-space-5);
    border-block: 1px solid var(--r2-border);
}

.r2-individual-selector__form {
    display: grid;
    grid-template-columns: repeat(2, minmax(15rem, 1fr));
    gap: var(--r2-space-4);
}

.r2-individual-selector label,
.r2-individual-new-teacher label,
.r2-individual-grid label,
.r2-individual-workload label {
    display: grid;
    gap: .4rem;
}

.r2-individual-selector label > span,
.r2-individual-new-teacher label > span,
.r2-individual-grid label > span,
.r2-individual-workload label > span {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-sm);
    font-weight: 700;
}

.r2-individual-new-teacher {
    min-width: 15rem;
}

.r2-individual-new-teacher summary {
    cursor: pointer;
    color: var(--r2-primary);
    font-weight: 800;
}

.r2-individual-new-teacher[open] {
    grid-column: 1 / -1;
    padding-top: var(--r2-space-3);
}

.r2-individual-new-teacher form {
    display: grid;
    grid-template-columns: minmax(14rem, 1fr) minmax(14rem, 1fr) auto;
    gap: var(--r2-space-3);
    align-items: end;
    margin-top: var(--r2-space-3);
}

.r2-individual-status {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-block: 1px solid var(--r2-border);
    margin-bottom: var(--r2-space-5);
}

.r2-individual-status > div {
    display: grid;
    gap: .25rem;
    padding: var(--r2-space-4);
    border-right: 1px solid var(--r2-border);
}

.r2-individual-status > div:last-child {
    border-right: 0;
}

.r2-individual-status span,
.r2-individual-status small {
    color: var(--r2-text-muted);
}

.r2-individual-status .is-success { color: var(--r2-success); }
.r2-individual-status .is-warning { color: var(--r2-warning-strong, #8a4b08); }
.r2-individual-status .is-danger { color: var(--r2-danger); }

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

.r2-individual-section {
    padding: var(--r2-space-5) 0;
    border-top: 1px solid var(--r2-border);
}

.r2-individual-section:first-child {
    border-top: 0;
    padding-top: 0;
}

.r2-individual-section__heading {
    margin-bottom: var(--r2-space-4);
}

.r2-individual-section__heading h2,
.r2-individual-result__heading h2,
.r2-individual-history h2,
.r2-individual-ready-run h2 {
    margin: .25rem 0 0;
}

.r2-individual-save-state {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-sm);
}

.r2-individual-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--r2-space-4);
}

.r2-individual-flags {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--r2-space-2) var(--r2-space-4);
    margin-top: var(--r2-space-4);
    padding-top: var(--r2-space-4);
    border-top: 1px solid var(--r2-border);
}

.r2-check-row {
    display: flex;
    align-items: center;
    gap: .65rem;
    min-height: 2.2rem;
}

.r2-check-row input {
    width: 1.1rem;
    height: 1.1rem;
}

.r2-individual-workload {
    display: grid;
    grid-template-columns: minmax(10rem, .7fr) minmax(14rem, 1fr) minmax(16rem, 1.3fr);
    gap: var(--r2-space-4);
    align-items: end;
}

.r2-individual-workload__source {
    display: grid;
    gap: .25rem;
    min-height: 4.5rem;
    align-content: center;
    padding-right: var(--r2-space-4);
    border-right: 1px solid var(--r2-border);
}

.r2-individual-workload__source span,
.r2-individual-workload__source small {
    color: var(--r2-text-muted);
}

.r2-individual-related-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-block: 1px solid var(--r2-border);
}

.r2-individual-related-grid a {
    display: grid;
    gap: .25rem;
    padding: var(--r2-space-4);
    color: inherit;
    text-decoration: none;
    border-right: 1px solid var(--r2-border);
}

.r2-individual-related-grid a:last-child { border-right: 0; }
.r2-individual-related-grid a:hover { background: var(--r2-primary-soft); }
.r2-individual-related-grid span,
.r2-individual-related-grid small { color: var(--r2-text-muted); }
.r2-individual-related-grid strong { font-size: var(--r2-font-size-xl); }

.r2-individual-actions {
    position: sticky;
    bottom: 0;
    z-index: 4;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--r2-space-4);
    padding: var(--r2-space-4);
    background: var(--r2-surface);
    border-block: 1px solid var(--r2-border-strong);
    box-shadow: 0 -8px 20px rgb(15 23 42 / .08);
}

.r2-individual-actions > div:first-child {
    display: grid;
    gap: .2rem;
}

.r2-individual-actions > div:first-child span {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-sm);
}

.r2-individual-actions__buttons {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: var(--r2-space-2);
}

.r2-individual-result {
    margin-top: var(--r2-space-6);
    padding: var(--r2-space-5);
    border: 1px solid var(--r2-border-strong);
    border-left: .3rem solid var(--r2-primary);
}

.r2-individual-result.is-preliminary {
    border-left-color: var(--r2-warning);
}

.r2-individual-result__totals {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin: var(--r2-space-4) 0;
    border-block: 1px solid var(--r2-border);
}

.r2-individual-result__totals > div {
    display: grid;
    gap: .3rem;
    padding: var(--r2-space-4);
    border-right: 1px solid var(--r2-border);
}

.r2-individual-result__totals > div:last-child { border-right: 0; }
.r2-individual-result__totals dt { color: var(--r2-text-muted); }
.r2-individual-result__totals dd { margin: 0; font-size: var(--r2-font-size-xl); font-weight: 800; }

.r2-individual-result__warnings {
    display: grid;
    gap: var(--r2-space-2);
    margin-bottom: var(--r2-space-4);
}

.r2-individual-result__warnings p {
    margin: 0;
    padding: var(--r2-space-3);
    border-left: .2rem solid var(--r2-warning);
    background: var(--r2-warning-soft);
}

.r2-individual-result__warnings p.is-error {
    border-left-color: var(--r2-danger);
    background: var(--r2-danger-soft);
}

.r2-individual-bottom-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(17rem, .7fr);
    gap: var(--r2-space-5);
    margin-top: var(--r2-space-6);
}

.r2-individual-history,
.r2-individual-ready-run {
    padding-top: var(--r2-space-4);
    border-top: 1px solid var(--r2-border);
}

.r2-individual-history__list {
    display: grid;
}

.r2-individual-history__list article {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: var(--r2-space-4);
    padding: var(--r2-space-3) 0;
    border-bottom: 1px solid var(--r2-border);
}

.r2-individual-history__list article > div {
    display: grid;
    gap: .2rem;
}

.r2-individual-history__list small,
.r2-individual-history__list span,
.r2-individual-ready-run p {
    color: var(--r2-text-muted);
}

.r2-individual-ready-run form { margin-top: var(--r2-space-4); }

@media (max-width: 1050px) {
    .r2-individual-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .r2-individual-workload { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .r2-individual-workload__reason { grid-column: 1 / -1; }
    .r2-individual-flags { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .r2-individual-actions { position: static; align-items: flex-start; flex-direction: column; }
    .r2-individual-actions__buttons { justify-content: flex-start; }
}

@media (max-width: 760px) {
    .r2-individual-heading,
    .r2-individual-section__heading,
    .r2-individual-result__heading,
    .r2-individual-actions {
        align-items: stretch;
        flex-direction: column;
    }
    .r2-individual-selector,
    .r2-individual-selector__form,
    .r2-individual-new-teacher form,
    .r2-individual-status,
    .r2-individual-grid,
    .r2-individual-workload,
    .r2-individual-flags,
    .r2-individual-related-grid,
    .r2-individual-result__totals,
    .r2-individual-bottom-grid {
        grid-template-columns: 1fr;
    }
    .r2-individual-status > div,
    .r2-individual-related-grid a,
    .r2-individual-result__totals > div {
        border-right: 0;
        border-bottom: 1px solid var(--r2-border);
    }
    .r2-individual-status > div:last-child,
    .r2-individual-related-grid a:last-child,
    .r2-individual-result__totals > div:last-child { border-bottom: 0; }
    .r2-individual-workload__source { border-right: 0; border-bottom: 1px solid var(--r2-border); padding-bottom: var(--r2-space-3); }
    .r2-individual-actions__buttons,
    .r2-individual-actions__buttons .btn { width: 100%; }
}

.r2-individual-result__links {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 20px;
    align-items: center;
}

.r2-individual-history__list article > div:last-child {
    display: grid;
    justify-items: end;
    gap: 4px;
}

/* Batch 27: calculate completed teacher records without blocking on the rest. */
.r2-partial-calculation {
    display: grid;
    grid-template-columns: auto minmax(260px, 1fr) minmax(260px, .8fr);
    gap: 18px;
    align-items: start;
    margin: 18px 0;
    padding: 20px;
    border: 1px solid var(--r2-border, #d9e1ea);
    border-radius: 16px;
    background: var(--r2-surface, #fff);
}

.r2-partial-calculation__summary {
    display: grid;
    grid-template-columns: repeat(2, minmax(110px, 1fr));
    gap: 8px;
}

.r2-partial-calculation__summary > div {
    display: grid;
    gap: 5px;
    padding: 12px;
    border-radius: 12px;
    background: var(--r2-surface-muted, #f4f7fa);
}

.r2-partial-calculation__summary span,
.r2-partial-calculation__blocked small {
    color: var(--r2-text-muted, #667085);
    font-size: 12px;
}

.r2-partial-calculation__summary strong {
    font-size: 24px;
}

.r2-partial-calculation__copy h2 {
    margin: 0 0 6px;
    font-size: 18px;
}

.r2-partial-calculation__copy p {
    margin: 0 0 14px;
}

.r2-partial-calculation__blocked summary {
    cursor: pointer;
    font-weight: 700;
}

.r2-partial-calculation__blocked > div {
    display: grid;
    gap: 6px;
    margin-top: 10px;
}

.r2-partial-calculation__blocked a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 9px 10px;
    border-radius: 10px;
    color: inherit;
    text-decoration: none;
    background: var(--r2-surface-muted, #f4f7fa);
}

.r2-partial-calculation__blocked a > span:first-child {
    display: grid;
    gap: 2px;
}

@media (max-width: 980px) {
    .r2-partial-calculation {
        grid-template-columns: 1fr;
    }
}

/* Batch 28: keep the next useful salary action visible above long validation lists. */
.r2-readiness-next-action {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--r2-space-6);
    align-items: center;
    margin-bottom: var(--r2-space-6);
    padding: var(--r2-space-5);
    border: 1px solid var(--r2-border-strong);
    border-left: 4px solid var(--r2-success);
    background: var(--r2-surface);
}

.r2-readiness-next-action--blocked {
    border-left-color: var(--r2-warning);
}

.r2-readiness-next-action__copy > span {
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-xs);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .05em;
}

.r2-readiness-next-action__copy h2 {
    margin: .3rem 0;
}

.r2-readiness-next-action__copy p {
    max-width: 760px;
    margin: 0;
    color: var(--r2-text-muted);
}

.r2-readiness-next-action__controls {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: var(--r2-space-3);
}

.r2-validation-toolbar {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: var(--r2-space-4);
    margin-bottom: var(--r2-space-5);
    padding: var(--r2-space-4) 0;
    border-bottom: 1px solid var(--r2-border);
}

.r2-validation-search {
    display: grid;
    gap: .35rem;
    min-width: min(100%, 360px);
    color: var(--r2-text-muted);
    font-size: var(--r2-font-size-xs);
    font-weight: 700;
}

.r2-validation-search input {
    width: 100%;
}

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

.r2-validation-filters .is-active {
    border-color: var(--r2-text);
    color: var(--r2-text);
}

.r2-validation-more {
    border-top: 1px solid var(--r2-border);
}

.r2-validation-more > summary {
    cursor: pointer;
    padding: var(--r2-space-4) 0;
    font-weight: 800;
}

.r2-validation-more[open] > summary {
    border-bottom: 1px solid var(--r2-border);
}

.r2-validation-anchor {
    position: relative;
    top: -110px;
    visibility: hidden;
}

.r2-validation-empty-filter {
    padding: var(--r2-space-6) 0;
    color: var(--r2-text-muted);
    text-align: center;
}

@media (max-width: 860px) {
    .r2-readiness-next-action,
    .r2-validation-toolbar {
        grid-template-columns: 1fr;
        flex-direction: column;
        align-items: stretch;
    }

    .r2-readiness-next-action__controls,
    .r2-readiness-next-action__controls form,
    .r2-readiness-next-action__controls .btn {
        width: 100%;
    }

    .r2-validation-filters .btn {
        flex: 1 1 auto;
    }
}
