* {
    box-sizing: border-box;
}

body {
    margin: 0;
    font-family: Tahoma, Arial, sans-serif;
    background: #eef2f7;
    color: #1f2937;
    direction: rtl;
}

/* Auth */
.auth-body {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
}

.auth-container {
    width: 100%;
    max-width: 420px;
}

.auth-card {
    background: #ffffff;
    border-radius: 24px;
    padding: 24px;
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.08);
}

    .auth-card h1 {
        margin: 0 0 8px;
        font-size: 24px;
    }

    .auth-card p {
        margin: 0 0 24px;
        color: #6b7280;
    }

/* Layout */
.app-shell {
    max-width: 520px;
    margin: 0 auto;
    min-height: 100vh;
    background: #f8fafc;
    padding-bottom: 76px;
}

.main-content {
    padding: 18px;
}

.topbar {
    height: 58px;
    background: #ffffff;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 18px;
    box-shadow: 0 4px 18px rgba(0,0,0,0.05);
    position: sticky;
    top: 0;
    z-index: 10;
}

.topbar-actions {
    display: flex;
    align-items: center;
    gap: 12px;
}

.bottom-nav {
    position: fixed;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    max-width: 520px;
    height: 66px;
    background: #ffffff;
    display: flex;
    justify-content: space-around;
    align-items: center;
    box-shadow: 0 -8px 24px rgba(0,0,0,0.08);
    z-index: 30;
}

    .bottom-nav a {
        text-decoration: none;
        color: #374151;
        font-size: 13px;
    }

/* Common */
.content {
    width: 100%;
}

.page-header {
    margin-bottom: 18px;
}

    .page-header h1 {
        margin: 0 0 6px;
        font-size: 24px;
    }

    .page-header p {
        margin: 0;
        color: #6b7280;
    }

.page-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 18px;
    flex-wrap: wrap;
}

.breadcrumb {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    font-size: 13px;
    color: #6b7280;
}

    .breadcrumb a {
        color: #2563eb;
        text-decoration: none;
    }

.breadcrumb-separator {
    color: #9ca3af;
}

.page-top-actions {
    display: flex;
    align-items: center;
    gap: 10px;
}

.empty-state {
    background: #f9fafb;
    border: 1px dashed #d1d5db;
    border-radius: 16px;
    padding: 18px;
    text-align: center;
    color: #6b7280;
}

/* Forms */
.form-card,
.table-card {
    background: #ffffff;
    border-radius: 22px;
    padding: 16px;
    box-shadow: 0 10px 28px rgba(0,0,0,0.06);
    overflow-x: auto;
}

.form-group {
    margin-bottom: 16px;
}

    .form-group label {
        display: block;
        margin-bottom: 8px;
        font-size: 14px;
    }

    .form-group small {
        display: block;
        margin-top: 6px;
        color: #6b7280;
        font-size: 12px;
    }

.form-control {
    width: 100%;
    min-height: 46px;
    border: 1px solid #d1d5db;
    border-radius: 14px;
    padding: 10px 14px;
    font-size: 15px;
    outline: none;
    font-family: Tahoma, Arial, sans-serif;
}

    .form-control:focus {
        border-color: #2563eb;
    }

textarea.form-control,
.textarea-control {
    min-height: 120px;
    padding-top: 12px;
    resize: vertical;
    line-height: 1.9;
}

.checkbox-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 8px 0 18px;
    font-size: 14px;
}

.form-actions {
    display: flex;
    gap: 12px;
    align-items: center;
    flex-wrap: wrap;
    margin-top: 20px;
}

.field-error,
.validation-summary,
.text-danger {
    color: #dc2626;
    font-size: 13px;
    margin-top: 6px;
}

.required-mark,
.qb-required,
.exam-required {
    color: #dc2626;
    font-weight: 950;
    margin-inline-start: 3px;
}

.form-required-label::after {
    content: " *";
    color: #dc2626;
    font-weight: 950;
}

/* Buttons */
.btn-primary {
    width: 100%;
    min-height: 48px;
    border: none;
    border-radius: 16px;
    background: #2563eb;
    color: #ffffff;
    font-size: 16px;
    cursor: pointer;
    padding: 10px 16px;
}

    .btn-primary:hover {
        background: #1d4ed8;
    }

.btn-secondary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0 16px;
    border-radius: 14px;
    background: #e0ecff;
    color: #1d4ed8;
    text-decoration: none;
    font-size: 14px;
    border: none;
    cursor: pointer;
}

.save-btn,
.cancel-btn,
.delete-btn,
.back-btn,
.small-link-btn {
    min-height: 42px;
    padding: 10px 18px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    cursor: pointer;
}

.save-btn {
    background: #2563eb;
    color: #ffffff;
}

    .save-btn:hover {
        background: #1d4ed8;
    }

.cancel-btn,
.back-btn {
    background: #f3f4f6;
    color: #374151;
}

    .cancel-btn:hover,
    .back-btn:hover {
        background: #e5e7eb;
    }

.delete-btn {
    background: #dc2626;
    color: #ffffff;
}

    .delete-btn:hover {
        background: #b91c1c;
    }

.logout-btn {
    border: none;
    background: #fee2e2;
    color: #b91c1c;
    padding: 8px 14px;
    border-radius: 12px;
    cursor: pointer;
}

.small-btn,
.small-link-btn {
    border: none;
    border-radius: 10px;
    padding: 7px 10px;
    background: #f3f4f6;
    color: #374151;
    cursor: pointer;
    font-size: 12px;
    text-decoration: none;
}

.small-link-btn {
    background: #e0ecff;
    color: #1d4ed8;
}

button.small-link-btn {
    border: none;
    cursor: pointer;
}

.danger-btn {
    background: #fee2e2;
    color: #991b1b;
}

.link-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}

.wide-btn {
    min-width: 180px;
}

/* Alerts */
.alert {
    border-radius: 16px;
    padding: 12px 14px;
    margin-bottom: 14px;
    font-size: 14px;
}

    .alert.success {
        background: #dcfce7;
        color: #166534;
        border: 1px solid #86efac;
    }

    .alert.danger {
        background: #fee2e2;
        color: #991b1b;
        border: 1px solid #fecaca;
    }

    .alert.warning {
        background: #fef3c7;
        color: #92400e;
        border: 1px solid #fde68a;
    }

/* Tables */
.app-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 760px;
}

    .app-table th,
    .app-table td {
        padding: 12px 10px;
        border-bottom: 1px solid #e5e7eb;
        text-align: right;
        font-size: 14px;
        white-space: nowrap;
    }

    .app-table th {
        color: #6b7280;
        font-weight: normal;
    }

.table-actions {
    display: flex;
    gap: 8px;
}

.compact-table {
    min-width: 420px;
}

    .compact-table th,
    .compact-table td {
        padding: 8px;
        font-size: 13px;
    }

/* Badges */
.badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    padding: 3px 8px;
    font-size: 11px;
    background: #f3f4f6;
    color: #374151;
}

    .badge.success {
        background: #dcfce7;
        color: #166534;
    }

    .badge.danger {
        background: #fee2e2;
        color: #991b1b;
    }

    .badge.warning {
        background: #fef3c7;
        color: #92400e;
    }

    .badge.info {
        background: #dbeafe;
        color: #1d4ed8;
    }

/* Dashboard */
.dashboard-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
}

.dash-card {
    background: #ffffff;
    border-radius: 22px;
    padding: 18px;
    box-shadow: 0 10px 28px rgba(0,0,0,0.06);
}

.dash-link {
    text-decoration: none;
    color: inherit;
    display: block;
}

.dash-card h3 {
    margin: 0 0 8px;
    font-size: 14px;
    color: #6b7280;
}

.dash-card p {
    margin: 0;
    color: #6b7280;
    line-height: 1.8;
}

.action-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 16px;
}

/* Charts */
.chart-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
    align-items: start;
}

.chart-card {
    background: #ffffff;
    border-radius: 18px;
    padding: 20px;
    box-shadow: 0 2px 10px rgba(0,0,0,.06);
    min-height: 320px;
}

    .chart-card canvas {
        max-height: 260px !important;
    }

.small-chart-card {
    max-width: 420px;
    min-height: 320px;
}

.chart-box {
    height: 230px;
    position: relative;
}

/* Tabs / Filters */
.tab-bar {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    margin-bottom: 16px;
    padding-bottom: 6px;
}

.tab-btn {
    border: none;
    border-radius: 999px;
    padding: 10px 14px;
    background: #f3f4f6;
    color: #374151;
    white-space: nowrap;
    cursor: pointer;
    font-size: 13px;
}

    .tab-btn.active {
        background: #2563eb;
        color: #ffffff;
    }

.tab-content {
    display: none;
}

    .tab-content.active {
        display: block;
    }

.filter-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
}

.selection-panel {
    background: #f8fafc;
    border-radius: 18px;
    padding: 14px;
    border: 1px solid #e5e7eb;
}

    .selection-panel h3 {
        margin-top: 0;
        margin-bottom: 12px;
        font-size: 16px;
    }

.mini-grid {
    max-height: 280px;
    overflow: auto;
    margin-top: 12px;
    border-radius: 14px;
}

/* Select2 / Datepicker */
.multi-select {
    min-height: 120px;
    padding: 8px;
}

.select2-container {
    width: 100% !important;
}

.select2-container--default .select2-selection--multiple {
    border-radius: 14px;
    border: 1px solid #d1d5db;
    min-height: 48px;
    padding: 6px;
}

.select2-dropdown {
    border-radius: 14px;
}

.select2-results__option {
    padding: 10px;
}

.datepicker-plot-area {
    z-index: 99999 !important;
    direction: rtl;
    font-family: Tahoma, Arial, sans-serif;
}

/* Notifications */
.notification-link {
    position: relative;
    color: #111827;
    text-decoration: none;
    background: #f3f4f6;
    border-radius: 12px;
    padding: 8px 12px;
    font-size: 13px;
}

.notification-badge {
    position: absolute;
    top: -8px;
    left: -8px;
    background: #dc2626;
    color: #ffffff;
    border-radius: 999px;
    min-width: 20px;
    height: 20px;
    font-size: 11px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 6px;
}

.unread-row {
    background: #fff7ed;
}

/* Assignments */
.assignment-preview {
    text-align: center;
}

.assignment-image-preview {
    width: 90px;
    height: 90px;
    object-fit: cover;
    border-radius: 12px;
    border: 1px solid #d1d5db;
    margin-bottom: 8px;
}

/* Student Exam */
.exam-question-card {
    background: #f9fafb;
    border-radius: 16px;
    padding: 16px;
    margin-bottom: 18px;
    border: 1px solid #e5e7eb;
}

.exam-summary-card {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 12px;
    background: #ffffff;
    border: 1px solid #e5e7eb;
    border-radius: 16px;
    padding: 14px;
    margin-bottom: 16px;
}

    .exam-summary-card div {
        background: #f9fafb;
        border-radius: 12px;
        padding: 10px;
    }

.exam-navigation-card {
    background: #ffffff;
    border: 1px solid #e5e7eb;
    border-radius: 16px;
    padding: 14px;
    margin-bottom: 16px;
}

.exam-navigation-title {
    font-weight: 700;
    margin-bottom: 10px;
}

.exam-question-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.question-nav-item {
    width: 38px;
    height: 38px;
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    font-weight: 700;
    border: 1px solid #d1d5db;
}

.nav-answered {
    background: #dcfce7;
    color: #166534;
    border-color: #16a34a;
}

.nav-marked {
    background: #fef3c7;
    color: #92400e;
    border-color: #f59e0b;
}

.nav-not-answered {
    background: #f3f4f6;
    color: #374151;
    border-color: #d1d5db;
}

.exam-status-help {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    margin-top: 12px;
    font-size: 13px;
}

.status-dot {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    display: inline-block;
    vertical-align: middle;
    margin-left: 4px;
}

.exam-options {
    display: grid;
    gap: 10px;
}

.option-label {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    text-align: right;
    padding: 12px;
    border-radius: 12px;
    border: 1px solid #d1d5db;
    background: #ffffff;
    cursor: pointer;
    transition: 0.2s;
}

    .option-label:hover {
        background: #f3f4f6;
    }

    .option-label input {
        width: 18px;
        height: 18px;
    }

.option-btn {
    width: 100%;
    text-align: right;
    padding: 12px;
    margin: 6px 0;
    border-radius: 12px;
    border: 1px solid #d1d5db;
    background: #ffffff;
    cursor: pointer;
}

.selected-option {
    border-color: #16a34a !important;
    background: #dcfce7 !important;
    color: #166534;
    font-weight: 600;
}

.question-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.question-actions {
    display: flex;
    gap: 10px;
    margin-top: 14px;
    flex-wrap: wrap;
}

.question-badges {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.descriptive-answer-box {
    margin-top: 14px;
}

    .descriptive-answer-box label {
        display: block;
        margin-bottom: 8px;
        font-weight: 700;
    }

.descriptive-answer-input {
    width: 100%;
    min-height: 160px;
    resize: vertical;
    line-height: 1.9;
}

.ajax-message {
    position: sticky;
    top: 8px;
    z-index: 20;
    padding: 12px 14px;
    border-radius: 12px;
    margin-bottom: 14px;
    font-weight: 600;
}

.ajax-success {
    background: #dcfce7;
    color: #166534;
    border: 1px solid #86efac;
}

.ajax-error {
    background: #fee2e2;
    color: #991b1b;
    border: 1px solid #fecaca;
}

/* Teacher Questions Compact */
.compact-question-list {
    padding: 12px;
}

.compact-question-item {
    background: #ffffff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 10px 12px;
    margin-bottom: 10px;
}

.compact-question-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
}

.question-main {
    flex: 1;
}

.question-title {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: nowrap;
    font-size: 13px;
    margin-bottom: 6px;
}

.question-text {
    font-size: 13px;
    line-height: 1.7;
    color: #374151;
}

.compact-options {
    margin-top: 8px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 6px;
}

.compact-option-item {
    background: #f8fafc;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 4px 6px;
    font-size: 12px;
    min-height: 28px;
    display: flex;
    align-items: center;
    gap: 4px;
}

.correct-option-item {
    background: #dcfce7;
    border-color: #86efac;
    color: #166534;
    font-weight: 700;
}

.correct-option {
    color: #16a34a;
    font-weight: 900;
    margin-left: 4px;
}

.option-number {
    background: #e5e7eb;
    color: #374151;
    min-width: 20px;
    height: 20px;
    border-radius: 999px;
    font-size: 11px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.option-text {
    flex: 1;
}

.question-actions-mini {
    display: flex;
    align-items: center;
}

.mini-delete-btn {
    min-height: 30px;
    padding: 5px 10px;
    font-size: 12px;
    border-radius: 8px;
}

.compact-descriptive-preview {
    margin-top: 8px;
    background: #f9fafb;
    border: 1px dashed #d1d5db;
    border-radius: 9px;
    padding: 8px;
    font-size: 12.5px;
    line-height: 1.7;
}

/* Responsive */
@media (min-width: 768px) {
    .app-shell {
        max-width: 1100px;
    }

    .bottom-nav {
        max-width: 1100px;
    }

    .dashboard-grid {
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    }

    .chart-grid {
        grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    }

    .filter-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .dash-card p {
        font-size: 30px;
        font-weight: bold;
    }
}

@media (max-width: 768px) {
    .compact-options {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 640px) {
    .compact-options {
        grid-template-columns: 1fr;
    }

    .compact-question-header {
        flex-direction: column;
    }

    .question-actions-mini {
        width: 100%;
        justify-content: flex-end;
    }

    .page-header h1 {
        font-size: 20px;
    }

    .btn-primary {
        width: 100%;
    }

    .question-actions-mini {
        gap: 6px;
    }

    .mini-edit-btn {
        min-height: 30px;
        padding: 5px 10px;
        font-size: 12px;
        border-radius: 8px;
    }
}

    /* Emergency UI Fix */

    .page-header-actions {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        flex-wrap: wrap;
    }

    .page-top-actions,
    .question-actions-mini,
    .form-actions {
        display: flex;
        align-items: center;
        gap: 10px;
        flex-wrap: wrap;
    }

    .options-grid {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 12px;
    }

    .mini-edit-btn {
        min-height: 30px;
        padding: 5px 10px;
        font-size: 12px;
        border-radius: 8px;
    }

    /* Responsive */
    @media (min-width: 768px) {
        .app-shell {
            max-width: 1100px;
        }

        .bottom-nav {
            max-width: 1100px;
        }

        .dashboard-grid {
            grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        }

        .chart-grid {
            grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
        }

        .filter-grid {
            grid-template-columns: repeat(2, 1fr);
        }

        .dash-card p {
            font-size: 30px;
            font-weight: bold;
        }
    }

    @media (max-width: 768px) {
        .options-grid,
        .compact-options {
            grid-template-columns: repeat(2, 1fr);
        }
    }

    @media (max-width: 640px) {
        .compact-question-header {
            flex-direction: column;
        }

        .question-actions-mini {
            width: 100%;
            justify-content: flex-end;
        }

        .page-header h1 {
            font-size: 20px;
        }

        .btn-primary {
            width: 100%;
        }
    }

    @media (max-width: 520px) {
        .options-grid,
        .compact-options {
            grid-template-columns: 1fr;
        }

        .page-header-actions {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            flex-wrap: wrap;
        }

        .inline-form {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            flex-wrap: nowrap;
        }

        .mini-select {
            min-width: 95px;
            height: 34px;
            font-size: 12px;
            padding: 4px 6px;
        }

        .extend-time-form {
            display: flex;
            align-items: center;
            gap: 8px;
            background: #f8fafc;
            border: 1px solid #e5e7eb;
            padding: 6px;
            border-radius: 10px;
        }

        .extend-time-select {
            width: 120px !important;
            min-width: 120px !important;
            height: 36px !important;
            font-size: 13px !important;
            padding: 4px 8px !important;
        }

        .extend-time-btn {
            height: 36px;
            padding: 6px 12px;
            white-space: nowrap;
        }

        .teacher-dashboard {
            padding-bottom: 30px;
        }

        .teacher-dashboard-header {
            margin-bottom: 18px;
        }

        .teacher-stat-grid {
            display: grid;
            grid-template-columns: repeat(4, minmax(0, 1fr));
            gap: 14px;
            margin-bottom: 18px;
        }

        .teacher-stat-card {
            background: #ffffff;
            border-radius: 18px;
            padding: 16px;
            min-height: 105px;
            text-decoration: none;
            color: #1f2937;
            box-shadow: 0 8px 22px rgba(0,0,0,0.05);
            border: 1px solid #eef2f7;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            transition: 0.2s ease;
        }

            .teacher-stat-card:hover {
                transform: translateY(-2px);
                box-shadow: 0 12px 28px rgba(0,0,0,0.08);
            }

            .teacher-stat-card span {
                font-size: 14px;
                color: #64748b;
                font-weight: 700;
            }

            .teacher-stat-card strong {
                font-size: 26px;
                color: #2563eb;
                font-weight: 900;
            }

        .teacher-dashboard-layout {
            display: grid;
            grid-template-columns: 360px 1fr;
            gap: 16px;
            align-items: start;
        }

        .teacher-panel-card {
            background: #ffffff;
            border-radius: 18px;
            padding: 16px;
            box-shadow: 0 8px 22px rgba(0,0,0,0.05);
            border: 1px solid #eef2f7;
        }

            .teacher-panel-card h3 {
                margin: 0 0 14px;
                font-size: 17px;
                color: #1f2937;
            }

        .teacher-chart-box {
            height: 260px;
        }

        .compact-table th,
        .compact-table td {
            padding: 10px 12px;
            font-size: 13px;
        }

        @media (max-width: 1100px) {
            .teacher-stat-grid {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }

            .teacher-dashboard-layout {
                grid-template-columns: 1fr;
            }
        }

        @media (max-width: 600px) {
            .teacher-stat-grid {
                grid-template-columns: 1fr;
            }

            .question-image-box {
                margin-top: 15px;
                margin-bottom: 15px;
            }

            .question-image-preview {
                max-width: 100%;
                max-height: 500px;
                border-radius: 12px;
                border: 1px solid #e5e7eb;
                padding: 4px;
                background: #fff;
            }
        }
    }
    /* Modern Top Navigation */
    .modern-topbar {
        height: auto;
        min-height: 68px;
        gap: 16px;
        flex-wrap: wrap;
    }

    .brand-box {
        display: flex;
        flex-direction: column;
        gap: 2px;
        min-width: 140px;
    }

        .brand-box strong {
            font-size: 17px;
            color: #111827;
        }

        .brand-box span {
            font-size: 11px;
            color: #6b7280;
            font-weight: 700;
        }

    .top-menu {
        display: flex;
        align-items: center;
        gap: 8px;
        flex: 1;
        overflow-x: auto;
        padding: 8px 0;
    }

        .top-menu a {
            text-decoration: none;
            color: #334155;
            background: #f8fafc;
            border: 1px solid #e5e7eb;
            border-radius: 999px;
            padding: 9px 14px;
            font-size: 13px;
            font-weight: 800;
            white-space: nowrap;
            transition: 0.2s;
        }

            .top-menu a:hover {
                background: #2563eb;
                color: #ffffff;
                border-color: #2563eb;
            }

    @media (max-width: 768px) {
        .modern-topbar {
            align-items: flex-start;
        }

        .top-menu {
            width: 100%;
            order: 3;
            padding-bottom: 4px;
        }

            .top-menu a {
                font-size: 12px;
                padding: 8px 12px;
            }

        .brand-box {
            min-width: auto;
        }
    }
    /* Topbar Final Fix */
    .modern-topbar {
        min-height: 72px;
        height: auto;
        padding: 10px 18px;
        gap: 14px;
        align-items: center;
    }

    .brand-box {
        min-width: 190px;
        flex-shrink: 0;
        text-align: right;
    }

    .top-menu {
        flex: 1;
        justify-content: flex-start;
        overflow-x: auto;
        padding: 6px 0;
    }

        .top-menu a {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-height: 38px;
            text-decoration: none;
            color: #334155;
            background: #f8fafc;
            border: 1px solid #e5e7eb;
            border-radius: 999px;
            padding: 8px 14px;
            font-size: 13px;
            font-weight: 800;
            white-space: nowrap;
        }

    .topbar-actions {
        flex-shrink: 0;
    }

    @media (max-width: 768px) {
        .modern-topbar {
            align-items: flex-start;
        }

        .brand-box {
            min-width: auto;
        }

        .top-menu {
            width: 100%;
            order: 3;
            justify-content: flex-start;
        }
    }

/* ================================
   VirtualSchool UI 2026 Foundation
   ================================ */
:root {
    --vs-font-family: Vazirmatn, IRANSans, "Segoe UI", Tahoma, Arial, sans-serif;
    --vs-page-bg: #f5f7fb;
    --vs-card-bg: #ffffff;
    --vs-sidebar-bg: #ffffff;
    --vs-soft-bg: #f8fafc;
    --vs-text: #111827;
    --vs-muted-text: #334155;
    --vs-subtle-text: #64748b;
    --vs-border: #e6eaf0;
    --vs-primary: #2563eb;
    --vs-primary-2: #4f46e5;
    --vs-primary-soft: #eff6ff;
    --vs-success: #16a34a;
    --vs-warning: #d97706;
    --vs-danger: #dc2626;
    --vs-radius-sm: 10px;
    --vs-radius-md: 14px;
    --vs-radius-lg: 20px;
    --vs-shadow-xs: 0 6px 18px rgba(15, 23, 42, .045);
    --vs-shadow-sm: -8px 0 28px rgba(15, 23, 42, .045);
    --vs-shadow-card: 0 10px 28px rgba(15, 23, 42, .055);
    --vs-shadow-role: 0 14px 30px rgba(37, 99, 235, .18);
}

body.role-superadmin {
    --vs-primary: #6d28d9;
    --vs-primary-2: #9333ea;
    --vs-primary-soft: #f5f3ff;
    --vs-shadow-role: 0 14px 30px rgba(109, 40, 217, .20);
}

body.role-admin {
    --vs-primary: #2563eb;
    --vs-primary-2: #4f46e5;
    --vs-primary-soft: #eff6ff;
    --vs-shadow-role: 0 14px 30px rgba(37, 99, 235, .18);
}

body.role-teacher {
    --vs-primary: #0f766e;
    --vs-primary-2: #14b8a6;
    --vs-primary-soft: #ecfdf5;
    --vs-shadow-role: 0 14px 30px rgba(15, 118, 110, .18);
}

body.role-student {
    --vs-primary: #7c3aed;
    --vs-primary-2: #a855f7;
    --vs-primary-soft: #f5f3ff;
    --vs-shadow-role: 0 14px 30px rgba(124, 58, 237, .18);
}

body.role-parent {
    --vs-primary: #ea580c;
    --vs-primary-2: #f97316;
    --vs-primary-soft: #fff7ed;
    --vs-shadow-role: 0 14px 30px rgba(234, 88, 12, .18);
}

body.role-staff {
    --vs-primary: #0f172a;
    --vs-primary-2: #475569;
    --vs-primary-soft: #f1f5f9;
    --vs-shadow-role: 0 14px 30px rgba(15, 23, 42, .16);
}

html,
body,
button,
input,
select,
textarea {
    font-family: var(--vs-font-family) !important;
}

body {
    font-size: 13px;
    line-height: 1.75;
}

h1 {
    font-size: 22px !important;
}

h2 {
    font-size: 18px !important;
}

h3 {
    font-size: 16px !important;
}

p,
label,
td,
th,
input,
select,
textarea,
button,
a {
    letter-spacing: 0;
}

.form-card,
.table-card,
.dashboard-card,
.exam-card,
.results-panel,
.analysis-card,
.question-analysis-panel,
.auth-card {
    border: 1px solid var(--vs-border) !important;
    border-radius: var(--vs-radius-lg) !important;
    box-shadow: var(--vs-shadow-card) !important;
}

.page-header h1,
.exam-list-hero h1,
.results-hero h1 {
    font-size: 22px !important;
    font-weight: 900;
}

.page-header p,
.exam-list-hero p,
.results-hero p {
    font-size: 12px !important;
}

.form-control,
.select2-container .select2-selection--single,
.select2-container .select2-selection--multiple {
    min-height: 38px !important;
    border-radius: 12px !important;
    border-color: var(--vs-border) !important;
    font-size: 13px !important;
    background: #fff !important;
}

.form-control:focus {
    border-color: var(--vs-primary) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--vs-primary) 13%, transparent) !important;
}

.form-group {
    margin-bottom: 12px !important;
}

.form-group label {
    font-size: 12px !important;
    font-weight: 800;
    color: var(--vs-muted-text);
}

.btn-primary,
.btn-secondary,
.btn-danger,
.btn-warning,
.btn-success,
.action-blue,
.action-green,
.action-red,
.action-gray,
.results-btn,
.exam-new-btn {
    width: auto !important;
    min-height: 38px !important;
    border-radius: 12px !important;
    padding: 8px 13px !important;
    font-size: 12px !important;
    font-weight: 850 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 7px !important;
    text-decoration: none !important;
}

.btn-primary,
.results-btn.primary,
.exam-new-btn {
    background: linear-gradient(135deg, var(--vs-primary), var(--vs-primary-2)) !important;
    color: #fff !important;
    border: 0 !important;
    box-shadow: var(--vs-shadow-role) !important;
}

.auth-card .btn-primary {
    width: 100% !important;
}

table {
    font-size: 12px !important;
}

table th {
    font-weight: 900 !important;
    color: var(--vs-muted-text) !important;
    background: var(--vs-soft-bg) !important;
}

table th,
table td {
    padding: 9px 10px !important;
    vertical-align: middle !important;
}

.badge,
.status,
.exam-badge {
    border-radius: 999px !important;
    padding: 4px 9px !important;
    font-size: 11px !important;
    font-weight: 850 !important;
}

.kpi,
.exam-kpi {
    border-radius: var(--vs-radius-md) !important;
    padding: 13px !important;
}

.kpi strong,
.exam-kpi strong {
    font-size: 22px !important;
}

.exam-list-hero,
.results-hero {
    background: linear-gradient(135deg, var(--vs-primary), var(--vs-primary-2)) !important;
    border-radius: var(--vs-radius-lg) !important;
    box-shadow: var(--vs-shadow-role) !important;
}

.exam-card-grid {
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important;
}

.exam-kpi-grid {
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)) !important;
}

.main-content {
    background:
        radial-gradient(circle at top right, color-mix(in srgb, var(--vs-primary) 10%, transparent), transparent 34%),
        var(--vs-page-bg);
}

/* UI 2026 Visual Boost */
body {
    background:
        radial-gradient(circle at 82% 8%, color-mix(in srgb, var(--vs-primary) 18%, transparent), transparent 28%),
        radial-gradient(circle at 10% 78%, color-mix(in srgb, var(--vs-primary-2) 12%, transparent), transparent 34%),
        linear-gradient(180deg, #f8fafc 0%, #eef3fb 100%) !important;
}

.vs-main {
    background:
        radial-gradient(circle at 95% 5%, color-mix(in srgb, var(--vs-primary) 14%, transparent), transparent 24%),
        radial-gradient(circle at 2% 86%, color-mix(in srgb, var(--vs-primary-2) 10%, transparent), transparent 30%),
        var(--vs-page-bg) !important;
}

.vs-sidebar {
    background:
        linear-gradient(180deg, rgba(255,255,255,.96), rgba(248,250,252,.94)),
        radial-gradient(circle at top, color-mix(in srgb, var(--vs-primary) 18%, transparent), transparent 32%) !important;
}

.vs-sidebar::before {
    content: "";
    display: block;
    height: 4px;
    width: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--vs-primary), var(--vs-primary-2));
    margin-bottom: 14px;
    box-shadow: var(--vs-shadow-role);
}

.vs-topbar {
    background:
        linear-gradient(90deg, rgba(255,255,255,.92), rgba(255,255,255,.78)),
        radial-gradient(circle at 15% 0%, color-mix(in srgb, var(--vs-primary) 14%, transparent), transparent 34%) !important;
}

.vs-brand-card {
    position: relative;
    overflow: hidden;
}

.vs-brand-card::after {
    content: "";
    position: absolute;
    inset: auto -25% -55% auto;
    width: 150px;
    height: 150px;
    border-radius: 999px;
    background: rgba(255,255,255,.16);
}

.vs-side-link {
    min-height: 42px;
}

.vs-side-link:hover,
.vs-side-link.active {
    transform: translateX(-2px);
}

.main-content {
    min-height: calc(100vh - 68px);
    background:
        radial-gradient(circle at 92% 3%, color-mix(in srgb, var(--vs-primary) 13%, transparent), transparent 28%),
        radial-gradient(circle at 8% 92%, color-mix(in srgb, var(--vs-primary-2) 10%, transparent), transparent 28%),
        transparent !important;
}

.main-content > .content,
.main-content > div,
.main-content > section {
    max-width: 1500px;
}

.main-content > section:first-of-type:not(.results-hero):not(.exam-list-hero),
.main-content .dashboard-hero,
.main-content .admin-hero,
.main-content .teacher-hero,
.main-content .student-hero,
.main-content .parent-hero,
.main-content .users-hero,
.main-content .vs-hero,
.main-content [class*="hero"] {
    background:
        linear-gradient(135deg, var(--vs-primary), var(--vs-primary-2)) !important;
    border-radius: 24px !important;
    color: #fff !important;
    box-shadow: var(--vs-shadow-role) !important;
    position: relative;
    overflow: hidden;
}

.main-content [class*="hero"]::after,
.main-content > section:first-of-type:not(.results-hero):not(.exam-list-hero)::after {
    content: "";
    position: absolute;
    left: -80px;
    top: -80px;
    width: 260px;
    height: 260px;
    border-radius: 50%;
    background: rgba(255,255,255,.12);
    pointer-events: none;
}

.main-content [class*="hero"] h1,
.main-content [class*="hero"] h2,
.main-content [class*="hero"] p,
.main-content > section:first-of-type:not(.results-hero):not(.exam-list-hero) h1,
.main-content > section:first-of-type:not(.results-hero):not(.exam-list-hero) p {
    color: #fff !important;
}

.dashboard-card,
.stat-card,
.summary-card,
.metric-card,
.kpi-card,
.info-card,
.card,
.table-card,
.form-card,
.vs-panel,
.parent-child-card,
.exam-card {
    background:
        linear-gradient(180deg, rgba(255,255,255,.98), rgba(255,255,255,.92)) !important;
    border: 1px solid rgba(226,232,240,.86) !important;
    border-radius: 20px !important;
    box-shadow: 0 16px 45px rgba(15,23,42,.075) !important;
}

.dashboard-card,
.stat-card,
.summary-card,
.metric-card,
.kpi-card {
    position: relative;
    overflow: hidden;
}

.dashboard-card::before,
.stat-card::before,
.summary-card::before,
.metric-card::before,
.kpi-card::before {
    content: "";
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 4px;
    background: linear-gradient(180deg, var(--vs-primary), var(--vs-primary-2));
}

.dashboard-card strong,
.stat-card strong,
.summary-card strong,
.metric-card strong,
.kpi-card strong,
.dashboard-card .number,
.stat-card .number,
.summary-card .number {
    color: var(--vs-primary) !important;
}

.dashboard-card a,
.stat-card a,
.summary-card a,
.metric-card a,
.kpi-card a {
    color: var(--vs-primary) !important;
    font-weight: 850 !important;
}

.table-card table,
.results-table,
.compact-table,
.users-table,
.gradebook-table {
    border-collapse: separate !important;
    border-spacing: 0 !important;
}

.table-card thead th,
.results-table thead th,
.compact-table thead th,
.users-table thead th,
.gradebook-table thead th {
    background: linear-gradient(180deg, #f8fafc, #eef2ff) !important;
}

.table-card tbody tr:hover,
.results-table tbody tr:hover,
.compact-table tbody tr:hover,
.users-table tbody tr:hover,
.gradebook-table tbody tr:hover {
    background: color-mix(in srgb, var(--vs-primary) 5%, #fff) !important;
}

.vs-icon-btn {
    color: var(--vs-primary) !important;
    background: var(--vs-primary-soft) !important;
}

.vs-logout-btn {
    min-height: 34px;
}

.vs-mobile-bottom {
    background: rgba(255,255,255,.92) !important;
    backdrop-filter: blur(16px);
}

.vs-mobile-bottom a {
    color: var(--vs-muted-text) !important;
}

/* UI 2026 v4: compact command layout */
.vs-shell {
    grid-template-columns: 236px 1fr !important;
}

.vs-sidebar {
    padding: 12px !important;
}

.vs-brand-card {
    min-height: 76px !important;
    padding: 14px !important;
    border-radius: 18px !important;
    margin-bottom: 12px !important;
}

.vs-brand-icon {
    width: 40px !important;
    height: 40px !important;
    border-radius: 14px !important;
}

.vs-brand-card strong {
    font-size: 14px !important;
}

.vs-brand-card span {
    font-size: 10px !important;
}

.vs-side-menu {
    gap: 4px !important;
}

.vs-side-link {
    min-height: 38px !important;
    padding: 8px 10px !important;
    border-radius: 12px !important;
    font-size: 12px !important;
}

.vs-side-link i {
    font-size: 15px !important;
}

.vs-side-submenu {
    border-radius: 14px !important;
    padding: 6px !important;
    gap: 2px !important;
}

.vs-side-submenu a {
    min-height: 34px !important;
    padding: 7px 9px !important;
    border-radius: 10px !important;
    font-size: 11px !important;
}

.vs-academic-year-card {
    padding: 10px !important;
    border-radius: 14px !important;
    margin-bottom: 12px !important;
}

.vs-academic-year-label {
    font-size: 10px !important;
}

.vs-academic-year-value {
    font-size: 13px !important;
}

.vs-topbar {
    direction: ltr !important;
    height: 62px !important;
    padding: 0 16px !important;
}

.vs-topbar > * {
    direction: rtl !important;
}

.vs-top-actions {
    order: 1 !important;
    margin: 0 !important;
    margin-right: 0 !important;
    margin-left: 0 !important;
}

.vs-search {
    order: 2 !important;
    max-width: 440px !important;
    margin: 0 auto !important;
}

.vs-top-user {
    order: 3 !important;
    margin: 0 !important;
}

.vs-icon-btn {
    width: 34px !important;
    height: 34px !important;
    font-size: 14px !important;
}

.vs-logout-btn {
    min-height: 34px !important;
    border-radius: 999px !important;
    padding: 7px 12px !important;
    font-size: 11px !important;
}

.vs-user-avatar {
    width: 32px !important;
    height: 32px !important;
}

.vs-user-name {
    font-size: 11px !important;
}

.vs-user-role {
    font-size: 10px !important;
}

.main-content {
    padding: 14px !important;
}

@media (max-width: 1100px) {
    .vs-shell {
        grid-template-columns: 1fr !important;
    }
}

/* UI 2026 v6: stronger admin console polish */
body {
    background: #f6f8fc !important;
}

.vs-shell {
    grid-template-columns: 218px minmax(0, 1fr) !important;
}

.vs-topbar {
    height: 50px !important;
    min-height: 50px !important;
    display: grid !important;
    grid-template-columns: auto 1fr auto !important;
    align-items: center !important;
    padding: 0 14px !important;
    background: #ffffff !important;
    border-bottom: 1px solid #e5edf7 !important;
    box-shadow: none !important;
    direction: ltr !important;
}

.vs-topbar > * {
    direction: rtl !important;
}

.vs-search {
    display: none !important;
}

.vs-top-actions {
    grid-column: 1 !important;
    justify-self: start !important;
    gap: 7px !important;
    margin: 0 !important;
    order: initial !important;
}

.vs-top-user {
    grid-column: 3 !important;
    justify-self: end !important;
    margin: 0 !important;
    order: initial !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

.vs-icon-btn {
    width: 32px !important;
    height: 32px !important;
    border-radius: 11px !important;
    background: #ffffff !important;
    border: 1px solid #dce6f3 !important;
    color: #172033 !important;
}

.vs-icon-btn:hover {
    background: #eff6ff !important;
    border-color: #bfdbfe !important;
    color: #1d4ed8 !important;
}

.vs-logout-btn {
    min-height: 32px !important;
    border-radius: 11px !important;
    padding: 6px 12px !important;
    background: #fff7f7 !important;
    border-color: #fecaca !important;
    color: #dc2626 !important;
}

.vs-sidebar {
    background: #ffffff !important;
    border-left: 1px solid #e4ebf5 !important;
    box-shadow: -8px 0 24px rgba(15, 23, 42, .045) !important;
    padding: 10px !important;
}

.vs-brand-card {
    min-height: 68px !important;
    padding: 12px !important;
    border-radius: 16px !important;
    background: linear-gradient(135deg, #2563eb, #1d4ed8) !important;
    box-shadow: 0 12px 24px rgba(37, 99, 235, .22) !important;
}

.vs-brand-icon {
    width: 38px !important;
    height: 38px !important;
    border-radius: 13px !important;
}

.vs-academic-year-card {
    padding: 10px !important;
    border-radius: 14px !important;
    background: #f8fafc !important;
    border-color: #e7eef8 !important;
}

.vs-side-menu {
    gap: 3px !important;
}

.vs-side-link {
    min-height: 38px !important;
    padding: 8px 10px !important;
    border-radius: 12px !important;
    background: transparent !important;
    color: #1f2937 !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
    font-size: 12px !important;
    font-weight: 850 !important;
}

.vs-side-link span,
.vs-side-link span i,
.vs-side-link > b,
.vs-side-link > b i {
    color: inherit !important;
}

.vs-side-link:hover {
    background: #eff6ff !important;
    color: #1d4ed8 !important;
    border-color: #bfdbfe !important;
    box-shadow: none !important;
    font-weight: 950 !important;
}

.vs-side-link.active {
    background: #2563eb !important;
    color: #ffffff !important;
    border-color: #2563eb !important;
    box-shadow: 0 10px 22px rgba(37,99,235,.22) !important;
}

.vs-side-link.active:hover {
    background: #1d4ed8 !important;
    color: #ffffff !important;
}

.vs-side-submenu {
    background: #f8fafc !important;
    border-color: #e7eef8 !important;
    padding: 5px !important;
    gap: 2px !important;
}

.vs-side-submenu a {
    min-height: 32px !important;
    color: #475569 !important;
    background: transparent !important;
    font-size: 11px !important;
}

.vs-side-submenu a:hover {
    color: #1d4ed8 !important;
    background: #ffffff !important;
    box-shadow: 0 6px 16px rgba(37,99,235,.08) !important;
    font-weight: 900 !important;
}

.main-content {
    padding: 12px 18px 18px !important;
}

/* Hide old admin dashboard hero if a cached/old view still exists. */
.command-hero,
.admin-overview-strip {
    min-height: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

.command-health,
.overview-status {
    display: none !important;
}

@media (max-width: 1100px) {
    .vs-shell {
        grid-template-columns: 1fr !important;
    }
}

/* UI 2026 v5: admin layout cleanup based on the old clean users screen */
html {
    font-size: 14px;
}

body {
    background:
        radial-gradient(circle at 18% 8%, rgba(37, 99, 235, .07), transparent 28%),
        linear-gradient(180deg, #f8fbff 0%, #f5f7fb 100%) !important;
}

.goog-te-banner-frame,
.goog-te-gadget,
.goog-te-combo,
.skiptranslate {
    display: none !important;
}

body {
    top: 0 !important;
}

.vs-shell {
    grid-template-columns: 224px minmax(0, 1fr) !important;
}

.vs-sidebar {
    background: rgba(255, 255, 255, .96) !important;
    border-left: 1px solid #e4ebf5 !important;
    box-shadow: -8px 0 28px rgba(15, 23, 42, .045) !important;
    padding: 10px 12px !important;
}

.vs-brand-card {
    min-height: 70px !important;
    border-radius: 17px !important;
    background: linear-gradient(135deg, #2563eb, #1d4ed8) !important;
    box-shadow: 0 14px 28px rgba(37, 99, 235, .22) !important;
}

.vs-brand-icon {
    background: rgba(255, 255, 255, .17) !important;
}

.vs-academic-year-card {
    background: #f8fafc !important;
    border-color: #e7eef8 !important;
    box-shadow: none !important;
}

.vs-side-link {
    color: #172033 !important;
    background: transparent !important;
    box-shadow: none !important;
    font-size: 12px !important;
    font-weight: 850 !important;
}

.vs-side-link:hover,
.vs-side-link.active {
    color: #ffffff !important;
    background: linear-gradient(135deg, #2563eb, #1d4ed8) !important;
    box-shadow: 0 10px 22px rgba(37, 99, 235, .20) !important;
}

.vs-side-submenu {
    background: #f8fafc !important;
    border-color: #e7eef8 !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .8) !important;
}

.vs-side-submenu a {
    color: #475569 !important;
}

.vs-side-submenu a:hover {
    color: #1d4ed8 !important;
    background: #ffffff !important;
}

.vs-topbar {
    display: grid !important;
    grid-template-columns: auto 1fr auto !important;
    height: 56px !important;
    min-height: 56px !important;
    padding: 0 14px !important;
    background: rgba(255,255,255,.94) !important;
    border-bottom: 1px solid #e5edf7 !important;
    direction: ltr !important;
}

.vs-topbar > * {
    direction: rtl !important;
}

.vs-top-actions {
    grid-column: 1 !important;
    justify-self: start !important;
    order: initial !important;
    margin: 0 !important;
}

.vs-search {
    display: none !important;
}

.vs-top-user {
    grid-column: 3 !important;
    justify-self: end !important;
    order: initial !important;
    border: none !important;
    background: transparent !important;
    box-shadow: none !important;
}

.vs-icon-btn {
    width: 34px !important;
    height: 34px !important;
    border-radius: 12px !important;
    color: #172033 !important;
    background: #ffffff !important;
    border-color: #dbe5f2 !important;
}

.vs-icon-btn:hover {
    color: #2563eb !important;
    background: #eff6ff !important;
}

.vs-logout-btn {
    border-radius: 12px !important;
    background: #fff7f7 !important;
    color: #dc2626 !important;
    border-color: #fecaca !important;
}

.main-content {
    padding: 14px 18px 18px !important;
}

.card,
.table-card,
.admin-panel,
.admin-kpi,
.admin-overview-strip {
    border-color: #e6edf6 !important;
}

@media (max-width: 1100px) {
    .vs-shell {
        grid-template-columns: 1fr !important;
    }

    .vs-topbar {
        grid-template-columns: auto 1fr auto !important;
    }
}

/* ================================
   UI Foundation v1 - restrained admin system
   ================================ */
:root {
    --vs-bg: #f6f8fb;
    --vs-surface: #ffffff;
    --vs-surface-soft: #f8fafc;
    --vs-surface-tint: #eef4ff;
    --vs-line: #e2e8f0;
    --vs-line-strong: #cbd5e1;
    --vs-ink: #0f172a;
    --vs-ink-soft: #334155;
    --vs-ink-muted: #64748b;
    --vs-focus: 0 0 0 3px rgba(37, 99, 235, .14);
    --vs-card-shadow: 0 10px 28px rgba(15, 23, 42, .06);
    --vs-card-shadow-hover: 0 14px 34px rgba(15, 23, 42, .09);
}

body.theme-light {
    color: var(--vs-ink);
    background: var(--vs-bg) !important;
}

body.theme-light .vs-main,
body.theme-light .main-content {
    background: var(--vs-bg) !important;
}

body.theme-light .vs-sidebar {
    background: #ffffff !important;
}

.vs-shell {
    min-height: 100vh;
    display: grid !important;
    grid-template-columns: 224px minmax(0, 1fr) !important;
    background: var(--vs-bg) !important;
}

.vs-main {
    min-width: 0;
    background: var(--vs-bg) !important;
}

.vs-sidebar {
    position: sticky !important;
    top: 0;
    z-index: 90;
    width: 224px !important;
    height: 100vh;
    padding: 10px 12px !important;
    overflow-x: hidden;
    overflow-y: auto;
    direction: ltr;
    border-left: 1px solid var(--vs-line) !important;
    box-shadow: -8px 0 28px rgba(15, 23, 42, .045) !important;
}

.vs-sidebar > * {
    direction: rtl;
}

.vs-brand-card {
    min-height: 70px !important;
    display: flex !important;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px !important;
    padding: 12px !important;
    border-radius: 16px !important;
    color: #fff !important;
    background: var(--vs-primary) !important;
    text-decoration: none !important;
    box-shadow: 0 12px 24px rgba(37, 99, 235, .18) !important;
}

.vs-brand-mark {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    border-radius: 13px;
    background: rgba(255, 255, 255, .18);
    font-size: 13px;
    font-weight: 950;
}

.vs-brand-copy {
    display: grid;
    gap: 1px;
}

.vs-brand-copy strong {
    color: #fff !important;
    font-size: 14px;
    font-weight: 950;
}

.vs-brand-copy small {
    color: rgba(255, 255, 255, .74) !important;
    font-size: 10px;
    font-weight: 800;
}

.vs-pinned-shortcuts,
.vs-menu-group {
    margin-bottom: 8px;
    border: 1px solid var(--vs-line);
    border-radius: 14px;
    background: var(--vs-surface-soft);
}

.vs-pinned-shortcuts {
    padding: 8px;
}

.vs-pinned-title,
.vs-menu-summary {
    min-height: 34px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    color: var(--vs-ink-soft);
    font-size: 11px;
    font-weight: 950;
}

.vs-pinned-title {
    margin-bottom: 5px;
}

.vs-menu-summary {
    padding: 7px 9px;
    cursor: pointer;
    list-style: none;
}

.vs-menu-summary::-webkit-details-marker {
    display: none;
}

.vs-menu-summary span {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

.vs-menu-chevron {
    color: var(--vs-ink-muted);
    font-size: 11px;
    transition: transform .16s ease;
}

.vs-menu-group[open] > .vs-menu-summary .vs-menu-chevron {
    transform: rotate(180deg);
}

.vs-menu-panel {
    display: grid;
    gap: 3px;
    padding: 0 6px 7px;
}

.vs-side-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 30px;
    gap: 5px;
    align-items: center;
}

.vs-side-link,
.vs-pin-link {
    min-height: 32px !important;
    display: flex !important;
    align-items: center;
    gap: 7px;
    border-radius: 10px !important;
    padding: 7px 9px !important;
    color: var(--vs-ink-soft) !important;
    background: transparent !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
    font-size: 11px !important;
    font-weight: 850 !important;
    text-decoration: none !important;
}

.vs-side-link:hover,
.vs-side-link.active,
.vs-pin-link:hover {
    color: var(--vs-primary) !important;
    background: var(--vs-primary-soft) !important;
    border-color: color-mix(in srgb, var(--vs-primary) 26%, var(--vs-line)) !important;
}

.vs-side-link.active {
    color: #fff !important;
    background: var(--vs-primary) !important;
    border-color: var(--vs-primary) !important;
}

.vs-pin-toggle {
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    border: 1px solid var(--vs-line);
    border-radius: 10px;
    color: var(--vs-ink-muted);
    background: #fff;
    cursor: pointer;
}

.vs-pin-toggle.active,
.vs-pin-toggle:hover {
    color: var(--vs-primary);
    background: var(--vs-primary-soft);
}

.vs-pin-empty {
    padding: 7px;
    color: var(--vs-ink-muted);
    font-size: 10px;
    font-weight: 800;
}

.vs-topbar {
    position: sticky !important;
    top: 0;
    z-index: 70;
    height: 54px !important;
    min-height: 54px !important;
    display: grid !important;
    grid-template-columns: auto 1fr auto auto !important;
    align-items: center;
    gap: 10px;
    padding: 0 14px !important;
    direction: ltr !important;
    background: rgba(255, 255, 255, .96) !important;
    border-bottom: 1px solid var(--vs-line) !important;
}

.vs-topbar > * {
    direction: rtl !important;
}

.vs-sidebar-toggle,
.vs-icon-btn,
.vs-logout-btn {
    min-width: 34px;
    min-height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    border: 1px solid var(--vs-line) !important;
    border-radius: 11px !important;
    color: var(--vs-ink-soft) !important;
    background: #ffffff !important;
    font-family: var(--vs-font-family);
    font-size: 12px;
    font-weight: 900;
    cursor: pointer;
}

.vs-icon-btn:hover,
.vs-sidebar-toggle:hover {
    color: var(--vs-primary) !important;
    background: var(--vs-primary-soft) !important;
}

.vs-logout-btn {
    color: #dc2626 !important;
    background: #fff7f7 !important;
    border-color: #fecaca !important;
}

.vs-top-page {
    display: grid;
    gap: 1px;
}

.vs-top-page span {
    color: var(--vs-ink-muted);
    font-size: 10px;
    font-weight: 850;
}

.vs-top-page strong {
    color: var(--vs-ink);
    font-size: 14px;
    font-weight: 950;
}

.vs-top-actions {
    display: flex !important;
    align-items: center;
    justify-content: flex-end;
    gap: 7px;
}

.vs-user-chip {
    min-height: 36px;
    display: flex !important;
    align-items: center;
    gap: 8px;
    padding: 4px 6px 4px 10px;
    border: 1px solid var(--vs-line);
    border-radius: 13px;
    background: #ffffff;
}

.vs-user-avatar {
    width: 28px !important;
    height: 28px !important;
    display: grid;
    place-items: center;
    border-radius: 10px;
    color: #fff;
    background: var(--vs-primary);
    font-size: 12px;
    font-weight: 950;
}

.vs-user-meta {
    display: grid;
    gap: 0;
}

.vs-user-meta strong {
    color: var(--vs-ink);
    font-size: 11px;
    font-weight: 950;
}

.vs-user-meta small {
    color: var(--vs-ink-muted);
    font-size: 10px;
    font-weight: 800;
}

.vs-mobile-bottom {
    display: none;
}

body.theme-light.vs-sidebar-collapsed .vs-shell {
    grid-template-columns: 76px minmax(0, 1fr) !important;
}

body.theme-light.vs-sidebar-collapsed .vs-sidebar {
    width: 76px !important;
}

body.theme-light.vs-sidebar-collapsed .vs-brand-copy,
body.theme-light.vs-sidebar-collapsed .vs-academic-year-label,
body.theme-light.vs-sidebar-collapsed .vs-academic-year-value,
body.theme-light.vs-sidebar-collapsed .vs-pinned-title span,
body.theme-light.vs-sidebar-collapsed .vs-pin-link span,
body.theme-light.vs-sidebar-collapsed .vs-pin-empty,
body.theme-light.vs-sidebar-collapsed .vs-menu-chevron,
body.theme-light.vs-sidebar-collapsed .vs-side-link span {
    display: none !important;
}

body.theme-light.vs-sidebar-collapsed .vs-brand-card,
body.theme-light.vs-sidebar-collapsed .vs-menu-summary,
body.theme-light.vs-sidebar-collapsed .vs-side-link,
body.theme-light.vs-sidebar-collapsed .vs-pin-link {
    justify-content: center !important;
}

.vs-ui-page {
    direction: rtl;
    display: grid;
    gap: 12px;
    color: var(--vs-ink);
}

.vs-ui-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
}

.vs-ui-title {
    display: grid;
    gap: 2px;
}

.vs-ui-title h1,
.vs-ui-title h2 {
    margin: 0;
    color: var(--vs-ink);
    font-size: 18px !important;
    font-weight: 950;
    line-height: 1.55;
}

.vs-ui-title p {
    margin: 0;
    color: var(--vs-ink-muted);
    font-size: 12px;
    font-weight: 650;
}

.vs-ui-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 7px;
    flex-wrap: wrap;
}

.vs-ui-card,
.vs-ui-table-card,
.vs-ui-section {
    background: var(--vs-surface);
    border: 1px solid var(--vs-line);
    border-radius: 14px;
    box-shadow: var(--vs-card-shadow);
}

.vs-ui-card,
.vs-ui-section {
    padding: 12px;
}

.vs-ui-section {
    display: grid;
    gap: 10px;
}

.vs-ui-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 10px;
}

.vs-ui-grid.is-dense {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 8px;
}

.vs-ui-field {
    display: grid;
    gap: 5px;
    min-width: 0;
}

.vs-ui-field > label,
.vs-ui-label {
    margin: 0;
    color: var(--vs-ink-soft);
    font-size: 12px;
    font-weight: 850;
}

.vs-ui-control,
.vs-ui-field input,
.vs-ui-field select,
.vs-ui-field textarea {
    width: 100%;
    min-height: 34px;
    border: 1px solid var(--vs-line);
    border-radius: 10px;
    padding: 7px 10px;
    color: var(--vs-ink);
    background: #fff;
    font-family: var(--vs-font-family);
    font-size: 12px;
    font-weight: 650;
    outline: none;
    transition: border-color .16s ease, box-shadow .16s ease, background .16s ease;
}

.vs-ui-field textarea,
textarea.vs-ui-control {
    min-height: 72px;
    resize: vertical;
}

.vs-ui-control:focus,
.vs-ui-field input:focus,
.vs-ui-field select:focus,
.vs-ui-field textarea:focus {
    border-color: var(--vs-primary);
    box-shadow: var(--vs-focus);
}

.vs-ui-btn {
    min-height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    border: 1px solid var(--vs-line);
    border-radius: 10px;
    padding: 6px 11px;
    color: var(--vs-ink-soft);
    background: #fff;
    font-family: var(--vs-font-family);
    font-size: 12px;
    font-weight: 900;
    line-height: 1.4;
    text-decoration: none;
    cursor: pointer;
    transition: transform .14s ease, border-color .14s ease, background .14s ease, color .14s ease;
}

.vs-ui-btn:hover {
    color: var(--vs-primary);
    background: var(--vs-primary-soft);
    border-color: color-mix(in srgb, var(--vs-primary) 28%, var(--vs-line));
    transform: translateY(-1px);
}

.vs-ui-btn.primary {
    color: #fff;
    background: var(--vs-primary);
    border-color: var(--vs-primary);
}

.vs-ui-btn.secondary {
    color: #1e40af;
    background: #eff6ff;
    border-color: #bfdbfe;
}

.vs-ui-btn.danger {
    color: #b91c1c;
    background: #fef2f2;
    border-color: #fecaca;
}

.vs-ui-btn.warning {
    color: #a16207;
    background: #fffbeb;
    border-color: #fde68a;
}

.vs-ui-btn.ghost {
    background: transparent;
}

.vs-ui-table-card {
    overflow: hidden;
}

.vs-ui-table-wrap {
    overflow-x: auto;
}

.vs-ui-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 12px;
}

.vs-ui-table th,
.vs-ui-table td {
    padding: 8px 10px;
    border-bottom: 1px solid var(--vs-line);
    vertical-align: middle;
}

.vs-ui-table th {
    color: var(--vs-ink-muted);
    background: var(--vs-surface-soft);
    font-weight: 950;
    white-space: nowrap;
}

.vs-ui-table tr:last-child td {
    border-bottom: 0;
}

.vs-ui-table tbody tr:hover {
    background: color-mix(in srgb, var(--vs-primary) 4%, #fff);
}

.vs-ui-chip {
    min-height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    border-radius: 999px;
    padding: 3px 8px;
    color: var(--vs-ink-soft);
    background: #f1f5f9;
    border: 1px solid #e2e8f0;
    font-size: 11px;
    font-weight: 900;
    white-space: nowrap;
}

.vs-ui-chip.success {
    color: #15803d;
    background: #dcfce7;
    border-color: #bbf7d0;
}

.vs-ui-chip.danger {
    color: #b91c1c;
    background: #fee2e2;
    border-color: #fecaca;
}

.vs-ui-chip.warning {
    color: #a16207;
    background: #fef3c7;
    border-color: #fde68a;
}

.vs-ui-disclosure {
    border: 1px solid var(--vs-line);
    border-radius: 12px;
    background: var(--vs-surface);
    overflow: hidden;
}

.vs-ui-disclosure > summary {
    min-height: 38px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 11px;
    color: var(--vs-ink-soft);
    background: var(--vs-surface-soft);
    font-size: 12px;
    font-weight: 950;
    cursor: pointer;
}

.vs-ui-disclosure > summary::-webkit-details-marker {
    display: none;
}

.vs-ui-disclosure > summary::after {
    content: "+";
    width: 22px;
    height: 22px;
    display: grid;
    place-items: center;
    border-radius: 8px;
    color: var(--vs-primary);
    background: #fff;
    border: 1px solid var(--vs-line);
    font-weight: 950;
}

.vs-ui-disclosure[open] > summary::after {
    content: "-";
}

.vs-ui-disclosure-body {
    padding: 11px;
}

.vs-ui-empty {
    padding: 18px;
    border: 1px dashed var(--vs-line-strong);
    border-radius: 14px;
    color: var(--vs-ink-muted);
    background: var(--vs-surface-soft);
    text-align: center;
    font-size: 12px;
    font-weight: 750;
}

/* Legacy lift: old pages inherit the same compact rules. */
.main-content > .content,
.main-content > div,
.main-content > section {
    width: 100%;
    max-width: 1500px;
}

.form-card,
.table-card,
.card,
.dashboard-card,
.exam-card,
.results-panel,
.analysis-card,
.question-analysis-panel,
.auth-card,
.admin-panel,
.vs-panel {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.form-card,
.card,
.dashboard-card,
.exam-card,
.results-panel,
.analysis-card,
.question-analysis-panel,
.auth-card,
.admin-panel,
.vs-panel {
    padding: 12px !important;
}

.table-card {
    padding: 0 !important;
    overflow: hidden !important;
}

.form-card:hover,
.table-card:hover,
.card:hover,
.dashboard-card:hover,
.exam-card:hover,
.admin-panel:hover,
.vs-panel:hover {
    box-shadow: var(--vs-card-shadow-hover) !important;
}

.form-group {
    margin-bottom: 9px !important;
}

.form-group label,
.control-label,
label {
    color: var(--vs-ink-soft);
}

.form-control,
input.form-control,
select.form-control,
textarea.form-control,
.select2-container .select2-selection--single,
.select2-container .select2-selection--multiple {
    min-height: 34px !important;
    border-radius: 10px !important;
    border-color: var(--vs-line) !important;
    color: var(--vs-ink) !important;
    background: #ffffff !important;
    font-size: 12px !important;
    font-weight: 650 !important;
}

textarea.form-control {
    min-height: 72px !important;
}

.form-control:focus,
.select2-container--default.select2-container--focus .select2-selection--multiple,
.select2-container--default .select2-selection--single:focus {
    border-color: var(--vs-primary) !important;
    box-shadow: var(--vs-focus) !important;
}

.save-btn,
.cancel-btn,
.delete-btn,
.action-btn,
.wide-btn,
.btn-primary,
.btn-secondary,
.btn-danger,
.btn-warning,
.btn-success,
.exam-new-btn,
.results-btn {
    min-height: 32px !important;
    border-radius: 10px !important;
    padding: 6px 11px !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    line-height: 1.4 !important;
    box-shadow: none !important;
}

.save-btn,
.btn-primary,
.exam-new-btn,
.results-btn.primary {
    color: #fff !important;
    background: var(--vs-primary) !important;
    border-color: var(--vs-primary) !important;
}

.cancel-btn,
.btn-secondary,
.action-gray {
    color: #334155 !important;
    background: #f8fafc !important;
    border-color: #cbd5e1 !important;
}

.delete-btn,
.btn-danger,
.action-red {
    color: #b91c1c !important;
    background: #fef2f2 !important;
    border-color: #fecaca !important;
}

.btn-warning,
.action-orange,
.action-yellow {
    color: #92400e !important;
    background: #fffbeb !important;
    border-color: #fde68a !important;
}

.action-btn,
.action-blue,
.action-green {
    color: #1e40af !important;
    background: #eff6ff !important;
    border-color: #bfdbfe !important;
}

table th,
table td {
    padding: 7px 9px !important;
}

.table-card table,
.results-table,
.compact-table,
.users-table,
.gradebook-table {
    width: 100%;
    margin: 0 !important;
}

.table-card thead th,
.results-table thead th,
.compact-table thead th,
.users-table thead th,
.gradebook-table thead th {
    color: var(--vs-ink-muted) !important;
    background: #f8fafc !important;
    border-bottom: 1px solid var(--vs-line) !important;
}

.table-card tbody td,
.results-table tbody td,
.compact-table tbody td,
.users-table tbody td,
.gradebook-table tbody td {
    border-bottom: 1px solid var(--vs-line) !important;
}

.badge,
.status,
.status-badge,
.exam-badge {
    border-radius: 999px !important;
    padding: 3px 8px !important;
    font-size: 11px !important;
    font-weight: 900 !important;
}

.page-header,
.exam-list-hero,
.results-hero,
.dashboard-hero,
.admin-hero,
.teacher-hero,
.student-hero,
.parent-hero,
.users-hero,
.vs-hero,
.main-content [class*="hero"] {
    min-height: auto !important;
    padding: 14px !important;
    color: var(--vs-ink) !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.main-content [class*="hero"]::after,
.main-content > section:first-of-type:not(.results-hero):not(.exam-list-hero)::after {
    display: none !important;
}

.page-header h1,
.exam-list-hero h1,
.results-hero h1,
.dashboard-hero h1,
.admin-hero h1,
.teacher-hero h1,
.student-hero h1,
.parent-hero h1,
.users-hero h1,
.vs-hero h1,
.main-content [class*="hero"] h1,
.main-content [class*="hero"] h2 {
    color: var(--vs-ink) !important;
    font-size: 18px !important;
    font-weight: 950 !important;
}

.page-header p,
.exam-list-hero p,
.results-hero p,
.main-content [class*="hero"] p {
    color: var(--vs-ink-muted) !important;
    font-size: 12px !important;
}

details:not(.vs-menu-group) > summary {
    border-radius: 10px;
    color: var(--vs-ink-soft);
    font-weight: 900;
}

.required-mark,
.qb-required,
.exam-required,
.form-required-label::after {
    color: var(--vs-danger) !important;
    font-weight: 950 !important;
}

body.vs-dark-saas {
    --vs-bg: #0f172a;
    --vs-surface: #111827;
    --vs-surface-soft: #182235;
    --vs-surface-tint: #172554;
    --vs-line: rgba(148, 163, 184, .22);
    --vs-line-strong: rgba(148, 163, 184, .34);
    --vs-ink: #e5e7eb;
    --vs-ink-soft: #cbd5e1;
    --vs-ink-muted: #94a3b8;
    --vs-focus: 0 0 0 3px rgba(96, 165, 250, .22);
    --vs-card-shadow: 0 14px 34px rgba(2, 6, 23, .26);
    --vs-card-shadow-hover: 0 18px 42px rgba(2, 6, 23, .34);
}

body.vs-dark-saas .main-content {
    background: #0f172a !important;
    color: var(--vs-ink) !important;
}

body.vs-dark-saas .form-card,
body.vs-dark-saas .table-card,
body.vs-dark-saas .card,
body.vs-dark-saas .dashboard-card,
body.vs-dark-saas .exam-card,
body.vs-dark-saas .results-panel,
body.vs-dark-saas .analysis-card,
body.vs-dark-saas .question-analysis-panel,
body.vs-dark-saas .auth-card,
body.vs-dark-saas .admin-panel,
body.vs-dark-saas .vs-panel,
body.vs-dark-saas .vs-ui-card,
body.vs-dark-saas .vs-ui-table-card,
body.vs-dark-saas .vs-ui-section,
body.vs-dark-saas .page-header,
body.vs-dark-saas .exam-list-hero,
body.vs-dark-saas .results-hero,
body.vs-dark-saas .dashboard-hero,
body.vs-dark-saas .admin-hero,
body.vs-dark-saas .teacher-hero,
body.vs-dark-saas .student-hero,
body.vs-dark-saas .parent-hero,
body.vs-dark-saas .users-hero,
body.vs-dark-saas .vs-hero,
body.vs-dark-saas .main-content [class*="hero"] {
    color: var(--vs-ink) !important;
    background: #111827 !important;
    border-color: var(--vs-line) !important;
}

body.vs-dark-saas .form-control,
body.vs-dark-saas input.form-control,
body.vs-dark-saas select.form-control,
body.vs-dark-saas textarea.form-control,
body.vs-dark-saas .vs-ui-control,
body.vs-dark-saas .vs-ui-field input,
body.vs-dark-saas .vs-ui-field select,
body.vs-dark-saas .vs-ui-field textarea,
body.vs-dark-saas .select2-container .select2-selection--single,
body.vs-dark-saas .select2-container .select2-selection--multiple {
    color: var(--vs-ink) !important;
    background: #0b1220 !important;
    border-color: var(--vs-line) !important;
}

body.vs-dark-saas table th,
body.vs-dark-saas .table-card thead th,
body.vs-dark-saas .results-table thead th,
body.vs-dark-saas .compact-table thead th,
body.vs-dark-saas .users-table thead th,
body.vs-dark-saas .gradebook-table thead th {
    color: var(--vs-ink-soft) !important;
    background: #182235 !important;
}

body.vs-dark-saas table td,
body.vs-dark-saas table th,
body.vs-dark-saas label,
body.vs-dark-saas .control-label,
body.vs-dark-saas .vs-ui-title h1,
body.vs-dark-saas .vs-ui-title h2,
body.vs-dark-saas .main-content [class*="hero"] h1,
body.vs-dark-saas .main-content [class*="hero"] h2 {
    color: var(--vs-ink) !important;
}

body.vs-dark-saas p,
body.vs-dark-saas small,
body.vs-dark-saas .vs-ui-title p,
body.vs-dark-saas .main-content [class*="hero"] p {
    color: var(--vs-ink-muted) !important;
}

body.vs-dark-saas .cancel-btn,
body.vs-dark-saas .btn-secondary,
body.vs-dark-saas .action-gray,
body.vs-dark-saas .vs-ui-btn {
    color: var(--vs-ink-soft) !important;
    background: #182235 !important;
    border-color: var(--vs-line) !important;
}

body.vs-dark-saas .vs-ui-btn.primary,
body.vs-dark-saas .save-btn,
body.vs-dark-saas .btn-primary,
body.vs-dark-saas .exam-new-btn,
body.vs-dark-saas .results-btn.primary {
    color: #fff !important;
    background: #2563eb !important;
    border-color: #2563eb !important;
}

@media (max-width: 768px) {
    .main-content {
        padding: 10px !important;
    }

    .vs-ui-head {
        align-items: stretch;
    }

    .vs-ui-actions {
        justify-content: flex-start;
    }

    .vs-ui-grid,
    .vs-ui-grid.is-dense {
        grid-template-columns: 1fr;
    }

    table th,
    table td {
        padding: 7px !important;
    }
}

@media (max-width: 1100px) {
    .vs-shell,
    body.theme-light.vs-sidebar-collapsed .vs-shell {
        grid-template-columns: 1fr !important;
    }

    .vs-sidebar {
        position: fixed !important;
        right: 0;
        top: 0;
        width: 260px !important;
        max-width: calc(100vw - 34px);
        transform: translateX(104%);
        transition: transform .2s ease;
    }

    body.vs-sidebar-open .vs-sidebar {
        transform: translateX(0);
    }

    body.theme-light.vs-sidebar-collapsed .vs-sidebar {
        width: 260px !important;
    }

    body.theme-light.vs-sidebar-collapsed .vs-brand-copy,
    body.theme-light.vs-sidebar-collapsed .vs-pinned-title span,
    body.theme-light.vs-sidebar-collapsed .vs-pin-link span,
    body.theme-light.vs-sidebar-collapsed .vs-menu-chevron,
    body.theme-light.vs-sidebar-collapsed .vs-side-link span {
        display: initial !important;
    }

    .vs-topbar {
        grid-template-columns: auto minmax(0, 1fr) auto !important;
    }

    .vs-user-chip {
        display: none !important;
    }
}

/* ================================
   Education area polish v1
   ================================ */
.courses-hero,
.classrooms-hero,
.years-hero,
.edu-hero {
    min-height: auto !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
    flex-wrap: wrap !important;
    padding: 14px !important;
    color: var(--vs-ink) !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.courses-hero h1,
.classrooms-hero h1,
.years-hero h1,
.edu-hero h1 {
    margin: 0 0 2px !important;
    color: var(--vs-ink) !important;
    font-size: 18px !important;
    font-weight: 950 !important;
}

.courses-hero p,
.classrooms-hero p,
.years-hero p,
.edu-hero p {
    margin: 0 !important;
    color: var(--vs-ink-muted) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
}

.courses-action-row,
.classroom-actions,
.course-row-actions,
.years-actions {
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    flex-wrap: wrap !important;
}

.courses-action-row a,
.classrooms-create-btn,
.courses-filter-submit,
.courses-filter-clear,
.classroom-filter-submit,
.classroom-filter-clear,
.years-btn,
.course-save-btn,
.course-cancel-btn,
.btn-save-modern,
.btn-cancel-modern,
.action-blue,
.action-green,
.action-yellow,
.action-gray,
.action-red,
.action-disabled {
    min-height: 30px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 5px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    padding: 5px 9px !important;
    font-family: var(--vs-font-family) !important;
    font-size: 11px !important;
    font-weight: 900 !important;
    line-height: 1.4 !important;
    text-decoration: none !important;
    box-shadow: none !important;
    white-space: nowrap !important;
}

.courses-action-row a:first-child,
.classrooms-create-btn,
.courses-filter-submit,
.classroom-filter-submit,
.years-btn.primary,
.course-save-btn,
.btn-save-modern {
    color: #fff !important;
    background: var(--vs-primary) !important;
    border-color: var(--vs-primary) !important;
}

.courses-action-row a:not(:first-child),
.courses-filter-clear,
.classroom-filter-clear,
.years-btn.secondary,
.course-cancel-btn,
.btn-cancel-modern,
.action-gray {
    color: var(--vs-ink-soft) !important;
    background: var(--vs-surface-soft) !important;
    border-color: var(--vs-line) !important;
}

.action-blue,
.years-btn.blue {
    color: #1d4ed8 !important;
    background: #eff6ff !important;
    border-color: #bfdbfe !important;
}

.action-green {
    color: #15803d !important;
    background: #ecfdf5 !important;
    border-color: #bbf7d0 !important;
}

.action-yellow,
.years-btn.yellow {
    color: #92400e !important;
    background: #fffbeb !important;
    border-color: #fde68a !important;
}

.action-red,
.years-btn.red {
    color: #b91c1c !important;
    background: #fef2f2 !important;
    border-color: #fecaca !important;
}

.action-disabled {
    color: #94a3b8 !important;
    background: #f8fafc !important;
    border-color: #e2e8f0 !important;
    cursor: not-allowed !important;
}

.years-btn.dark {
    color: #fff !important;
    background: #0f172a !important;
    border-color: #0f172a !important;
}

.courses-filter-card,
.classroom-filter-card,
.years-card,
.edu-section,
.course-form-card,
.classroom-form-card {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    padding: 12px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.courses-filter-form,
.classroom-filter-form,
.years-create-form,
.years-filter-form,
.course-grid,
.classroom-form-grid {
    gap: 8px 10px !important;
}

.courses-filter-item,
.classroom-filter-item,
.years-field,
.course-group,
.form-group-modern {
    display: grid !important;
    gap: 4px !important;
}

.courses-filter-item label,
.classroom-filter-item label,
.years-field label,
.course-group label,
.form-group-modern label {
    margin: 0 !important;
    color: var(--vs-ink-soft) !important;
    font-size: 11px !important;
    font-weight: 900 !important;
}

.courses-filter-control,
.classroom-filter-control,
.years-control,
.course-control,
.form-control-modern {
    min-height: 32px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    padding: 5px 8px !important;
    color: var(--vs-ink) !important;
    background: #fff !important;
    font-family: var(--vs-font-family) !important;
    font-size: 11px !important;
    font-weight: 650 !important;
    box-shadow: none !important;
}

.courses-filter-control:focus,
.classroom-filter-control:focus,
.years-control:focus,
.course-control:focus,
.form-control-modern:focus {
    border-color: var(--vs-primary) !important;
    box-shadow: var(--vs-focus) !important;
}

.courses-kpi-grid,
.classrooms-kpi-grid,
.years-kpis {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
    gap: 8px !important;
}

.courses-kpi,
.classrooms-kpi,
.years-kpi {
    min-height: 66px !important;
    display: grid !important;
    gap: 2px !important;
    align-content: center !important;
    padding: 10px 12px !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 12px !important;
    box-shadow: var(--vs-shadow-xs) !important;
}

.courses-kpi span,
.classrooms-kpi span,
.years-kpi span {
    color: var(--vs-ink-muted) !important;
    font-size: 11px !important;
    font-weight: 850 !important;
}

.courses-kpi strong,
.classrooms-kpi strong,
.years-kpi strong {
    color: var(--vs-primary) !important;
    font-size: 20px !important;
    font-weight: 950 !important;
}

.courses-table-card,
.classrooms-table-card,
.years-table-card {
    padding: 0 !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
    overflow: hidden !important;
}

.courses-table-scroll,
.classrooms-table-scroll,
.years-table-scroll {
    overflow-x: auto !important;
}

.courses-table,
.classrooms-table,
.years-table {
    width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    margin: 0 !important;
    font-size: 12px !important;
}

.courses-table th,
.courses-table td,
.classrooms-table th,
.classrooms-table td,
.years-table th,
.years-table td {
    padding: 7px 9px !important;
    border-bottom: 1px solid var(--vs-line) !important;
    vertical-align: middle !important;
}

.courses-table th,
.classrooms-table th,
.years-table th {
    color: var(--vs-ink-muted) !important;
    background: var(--vs-surface-soft) !important;
    font-weight: 950 !important;
    white-space: nowrap !important;
}

.courses-table tbody tr:hover,
.classrooms-table tbody tr:hover,
.years-table tbody tr:hover {
    background: color-mix(in srgb, var(--vs-primary) 4%, #fff) !important;
}

.course-row-title,
.classroom-row-title,
.year-title {
    display: grid !important;
    gap: 1px !important;
}

.course-row-title strong,
.classroom-row-title strong,
.year-title strong {
    color: var(--vs-ink) !important;
    font-size: 12px !important;
    font-weight: 950 !important;
}

.course-row-title span,
.classroom-row-title span,
.year-title span {
    color: var(--vs-ink-muted) !important;
    font-size: 10px !important;
    font-weight: 750 !important;
}

.course-row-badge,
.classroom-badge,
.online-badge,
.year-badge {
    min-height: 23px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 999px !important;
    padding: 3px 8px !important;
    font-size: 10px !important;
    font-weight: 950 !important;
    white-space: nowrap !important;
}

.course-row-badge.active,
.classroom-badge.active,
.online-badge.ready,
.year-badge.active,
.year-badge.open,
.year-badge.current {
    color: #15803d !important;
    background: #dcfce7 !important;
}

.course-row-badge.inactive,
.classroom-badge.inactive,
.online-badge.empty,
.year-badge.inactive,
.year-badge.closed {
    color: #b91c1c !important;
    background: #fee2e2 !important;
}

.year-badge.archive,
.year-badge.used {
    color: #1d4ed8 !important;
    background: #dbeafe !important;
}

.edu-page {
    gap: 12px !important;
}

.edu-layout {
    gap: 12px !important;
}

.edu-section-title {
    margin-bottom: 9px !important;
    padding-bottom: 8px !important;
    border-bottom: 1px solid var(--vs-line) !important;
}

.edu-section-title h2 {
    margin: 0 !important;
    color: var(--vs-ink) !important;
    font-size: 15px !important;
    font-weight: 950 !important;
}

.edu-section-title span {
    color: var(--vs-ink-muted) !important;
    font-size: 11px !important;
    font-weight: 800 !important;
}

.edu-list {
    display: grid !important;
    gap: 8px !important;
}

.edu-item {
    min-height: 64px !important;
    display: grid !important;
    grid-template-columns: 38px minmax(0, 1fr) auto !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 10px !important;
    color: var(--vs-ink) !important;
    background: var(--vs-surface-soft) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 12px !important;
    text-decoration: none !important;
    box-shadow: none !important;
}

.edu-item:hover {
    background: var(--vs-primary-soft) !important;
    border-color: color-mix(in srgb, var(--vs-primary) 26%, var(--vs-line)) !important;
}

.edu-icon {
    width: 38px !important;
    height: 38px !important;
    display: grid !important;
    place-items: center !important;
    border-radius: 12px !important;
    color: var(--vs-primary) !important;
    background: #ffffff !important;
    border: 1px solid var(--vs-line) !important;
    font-size: 17px !important;
}

.edu-item h3 {
    margin: 0 0 2px !important;
    color: var(--vs-ink) !important;
    font-size: 13px !important;
    font-weight: 950 !important;
}

.edu-item p {
    margin: 0 !important;
    color: var(--vs-ink-muted) !important;
    font-size: 11px !important;
    font-weight: 700 !important;
}

.edu-arrow {
    min-height: 28px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 9px !important;
    padding: 4px 9px !important;
    color: var(--vs-primary) !important;
    background: #ffffff !important;
    border: 1px solid var(--vs-line) !important;
    font-size: 11px !important;
    font-weight: 950 !important;
}

body.vs-dark-saas .courses-filter-control,
body.vs-dark-saas .classroom-filter-control,
body.vs-dark-saas .years-control,
body.vs-dark-saas .course-control,
body.vs-dark-saas .form-control-modern {
    color: var(--vs-ink) !important;
    background: #0b1220 !important;
    border-color: var(--vs-line) !important;
}

body.vs-dark-saas .edu-icon,
body.vs-dark-saas .edu-arrow,
body.vs-dark-saas .vs-pin-toggle {
    color: #93c5fd !important;
    background: #0b1220 !important;
    border-color: var(--vs-line) !important;
}

body.vs-dark-saas .action-blue,
body.vs-dark-saas .years-btn.blue {
    color: #bfdbfe !important;
    background: #172554 !important;
    border-color: #1e3a8a !important;
}

body.vs-dark-saas .action-green {
    color: #bbf7d0 !important;
    background: #052e16 !important;
    border-color: #166534 !important;
}

body.vs-dark-saas .action-yellow,
body.vs-dark-saas .years-btn.yellow {
    color: #fde68a !important;
    background: #422006 !important;
    border-color: #92400e !important;
}

body.vs-dark-saas .action-red,
body.vs-dark-saas .years-btn.red {
    color: #fecaca !important;
    background: #450a0a !important;
    border-color: #991b1b !important;
}

/* UI bugfix v1: keep RTL topbar placement and dark table hover readable. */
.vs-topbar {
    direction: rtl !important;
}

.vs-topbar > * {
    direction: rtl !important;
}

.vs-top-actions {
    margin-inline-start: auto !important;
    margin-inline-end: 0 !important;
}

body.vs-dark-saas .vs-topbar {
    direction: rtl !important;
}

body.vs-dark-saas .table-card tbody tr:hover,
body.vs-dark-saas .results-table tbody tr:hover,
body.vs-dark-saas .compact-table tbody tr:hover,
body.vs-dark-saas .users-table tbody tr:hover,
body.vs-dark-saas .gradebook-table tbody tr:hover,
body.vs-dark-saas .courses-table tbody tr:hover,
body.vs-dark-saas .classrooms-table tbody tr:hover,
body.vs-dark-saas .years-table tbody tr:hover,
body.vs-dark-saas .vs-ui-table tbody tr:hover {
    background: rgba(59, 130, 246, .12) !important;
}

body.vs-dark-saas .table-card tbody tr:hover td,
body.vs-dark-saas .results-table tbody tr:hover td,
body.vs-dark-saas .compact-table tbody tr:hover td,
body.vs-dark-saas .users-table tbody tr:hover td,
body.vs-dark-saas .gradebook-table tbody tr:hover td,
body.vs-dark-saas .courses-table tbody tr:hover td,
body.vs-dark-saas .classrooms-table tbody tr:hover td,
body.vs-dark-saas .years-table tbody tr:hover td,
body.vs-dark-saas .vs-ui-table tbody tr:hover td {
    color: var(--vs-ink) !important;
}

@media (max-width: 760px) {
    .courses-hero,
    .classrooms-hero,
    .years-hero,
    .edu-hero {
        align-items: stretch !important;
    }

    .courses-action-row,
    .classroom-actions,
    .course-row-actions,
    .years-actions {
        justify-content: flex-start !important;
    }

    .edu-item {
        grid-template-columns: 34px minmax(0, 1fr) !important;
    }

    .edu-arrow {
        grid-column: 1 / -1 !important;
        justify-self: start !important;
    }
}

/* UI bugfix v2: stable one-row topbar in both themes. */
.vs-topbar,
body.vs-dark-saas .vs-topbar {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 10px !important;
    direction: rtl !important;
}

.vs-sidebar-toggle,
body.vs-dark-saas .vs-sidebar-toggle {
    order: 1 !important;
    flex: 0 0 auto !important;
}

.vs-top-page,
body.vs-dark-saas .vs-top-page {
    order: 2 !important;
    flex: 0 1 auto !important;
    min-width: 0 !important;
    justify-self: auto !important;
}

.vs-user-chip,
body.vs-dark-saas .vs-user-chip {
    order: 3 !important;
    flex: 0 0 auto !important;
    justify-self: auto !important;
}

.vs-top-actions,
body.vs-dark-saas .vs-top-actions {
    order: 4 !important;
    flex: 0 0 auto !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 7px !important;
    margin-right: auto !important;
    margin-left: 0 !important;
    margin-inline-start: 0 !important;
    margin-inline-end: 0 !important;
    justify-self: auto !important;
}

.vs-logout-form,
body.vs-dark-saas .vs-logout-form {
    margin: 0 !important;
    display: inline-flex !important;
}

/* UI bugfix v3: physical topbar columns. Left actions, right page title. */
.vs-topbar,
body.vs-dark-saas .vs-topbar {
    display: grid !important;
    grid-template-columns: auto auto minmax(0, 1fr) auto auto !important;
    grid-auto-flow: column !important;
    align-items: center !important;
    gap: 10px !important;
    direction: ltr !important;
}

.vs-topbar > *,
body.vs-dark-saas .vs-topbar > * {
    direction: rtl !important;
}

.vs-top-actions,
body.vs-dark-saas .vs-top-actions {
    grid-column: 1 !important;
    order: initial !important;
    justify-self: start !important;
    margin: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 7px !important;
}

.vs-user-chip,
body.vs-dark-saas .vs-user-chip {
    grid-column: 2 !important;
    order: initial !important;
    justify-self: start !important;
}

.vs-top-page,
body.vs-dark-saas .vs-top-page {
    grid-column: 4 !important;
    order: initial !important;
    justify-self: end !important;
    min-width: 0 !important;
    margin: 0 !important;
    text-align: right !important;
}

.vs-sidebar-toggle,
body.vs-dark-saas .vs-sidebar-toggle {
    grid-column: 5 !important;
    order: initial !important;
    justify-self: end !important;
}

@media (max-width: 640px) {
    .vs-topbar,
    body.vs-dark-saas .vs-topbar {
        grid-template-columns: auto minmax(0, 1fr) auto !important;
    }

    .vs-top-actions,
    body.vs-dark-saas .vs-top-actions {
        grid-column: 1 !important;
    }

    .vs-user-chip,
    body.vs-dark-saas .vs-user-chip {
        display: none !important;
    }

    .vs-top-page,
    body.vs-dark-saas .vs-top-page {
        grid-column: 2 !important;
    }

    .vs-sidebar-toggle,
    body.vs-dark-saas .vs-sidebar-toggle {
        grid-column: 3 !important;
    }
}

/* Auth guard: login owns its visual background and must not inherit admin theme. */
body.login-auth-page {
    min-height: 100vh !important;
    background: linear-gradient(135deg, #1e3a8a 0%, #2563eb 35%, #4f46e5 100%) !important;
    color: #111827 !important;
}

body.login-auth-page .login-page,
body.login-auth-page .login-wrapper {
    background: transparent !important;
}

body.login-auth-page .login-brand,
body.login-auth-page .login-brand h1,
body.login-auth-page .login-brand p {
    color: #ffffff !important;
}

body.login-auth-page .login-card {
    background: rgba(255, 255, 255, .96) !important;
    color: #111827 !important;
}

body.forgot-auth-page,
body.access-denied-auth-page {
    min-height: 100vh !important;
    background: linear-gradient(135deg, #1e3a8a 0%, #2563eb 35%, #4f46e5 100%) !important;
    color: #111827 !important;
}

body.forgot-auth-page .forgot-card,
body.access-denied-auth-page .access-denied-card {
    background: rgba(255, 255, 255, .96) !important;
    color: #111827 !important;
}

body.forgot-auth-page h1,
body.forgot-auth-page h2,
body.forgot-auth-page label,
body.access-denied-auth-page h1,
body.access-denied-auth-page h2 {
    color: #111827 !important;
}

body.forgot-auth-page p,
body.access-denied-auth-page p {
    color: #64748b !important;
}

/* Education base entities polish v1: grades and fields. */
.grades-shell,
.fields-shell {
    display: grid !important;
    gap: 12px !important;
}

.grades-hero,
.fields-hero,
.grade-form-hero,
.field-form-hero {
    min-height: auto !important;
    padding: 14px !important;
    color: var(--vs-ink) !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.grades-hero h1,
.fields-hero h1,
.grade-form-hero h1,
.field-form-hero h1 {
    margin: 0 0 2px !important;
    color: var(--vs-ink) !important;
    font-size: 18px !important;
    font-weight: 950 !important;
}

.grades-hero p,
.fields-hero p,
.grade-form-hero p,
.field-form-hero p {
    margin: 0 !important;
    color: var(--vs-ink-muted) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
}

.grades-card,
.fields-card,
.grade-form-card,
.field-form-card {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    padding: 12px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.grades-card-title,
.fields-card-title {
    margin: 0 0 9px !important;
    color: var(--vs-ink) !important;
    font-size: 14px !important;
    font-weight: 950 !important;
}

.grades-create-form,
.fields-create-form,
.grades-filter-form,
.fields-filter-form,
.grade-form-grid,
.field-form-grid {
    gap: 8px 10px !important;
}

.grades-field,
.fields-field,
.grade-form-item,
.field-form-item {
    display: grid !important;
    gap: 4px !important;
}

.grades-field label,
.fields-field label,
.grade-form-item > label:first-child,
.field-form-item > label:first-child {
    margin: 0 !important;
    color: var(--vs-ink-soft) !important;
    font-size: 11px !important;
    font-weight: 900 !important;
}

.grades-field label span[aria-hidden="true"],
.fields-field label span[aria-hidden="true"],
.grade-form-item label span[aria-hidden="true"],
.field-form-item label span[aria-hidden="true"] {
    color: var(--vs-danger) !important;
    font-weight: 950 !important;
}

.grades-control,
.fields-control,
.grade-control,
.field-control {
    min-height: 32px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    padding: 5px 8px !important;
    color: var(--vs-ink) !important;
    background: #fff !important;
    font-family: var(--vs-font-family) !important;
    font-size: 11px !important;
    font-weight: 650 !important;
    box-shadow: none !important;
}

.grades-control:focus,
.fields-control:focus,
.grade-control:focus,
.field-control:focus {
    border-color: var(--vs-primary) !important;
    box-shadow: var(--vs-focus) !important;
}

.grades-check,
.fields-check,
.grade-check,
.field-check {
    min-height: 32px !important;
    display: flex !important;
    align-items: center !important;
    gap: 7px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    padding: 5px 8px !important;
    color: var(--vs-ink-soft) !important;
    background: var(--vs-surface-soft) !important;
    font-size: 11px !important;
    font-weight: 850 !important;
}

.grades-check input,
.fields-check input,
.grade-check input,
.field-check input {
    accent-color: var(--vs-primary);
}

.grades-actions,
.fields-actions,
.grade-form-actions,
.field-form-actions {
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    flex-wrap: wrap !important;
}

.grades-actions form,
.fields-actions form {
    margin: 0 !important;
}

.grades-btn,
.fields-btn,
.grade-btn,
.field-btn {
    min-height: 30px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 5px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    padding: 5px 9px !important;
    font-family: var(--vs-font-family) !important;
    font-size: 11px !important;
    font-weight: 900 !important;
    line-height: 1.4 !important;
    text-decoration: none !important;
    box-shadow: none !important;
    white-space: nowrap !important;
}

.grades-btn.primary,
.fields-btn.primary,
.grade-btn.primary,
.field-btn.primary {
    color: #fff !important;
    background: var(--vs-primary) !important;
    border-color: var(--vs-primary) !important;
}

.grades-btn.secondary,
.fields-btn.secondary,
.grade-btn.secondary,
.field-btn.secondary {
    color: var(--vs-ink-soft) !important;
    background: var(--vs-surface-soft) !important;
    border-color: var(--vs-line) !important;
}

.grades-btn.blue,
.fields-btn.blue {
    color: #1d4ed8 !important;
    background: #eff6ff !important;
    border-color: #bfdbfe !important;
}

.grades-btn.yellow,
.fields-btn.yellow {
    color: #92400e !important;
    background: #fffbeb !important;
    border-color: #fde68a !important;
}

.grades-btn.red,
.fields-btn.red {
    color: #b91c1c !important;
    background: #fef2f2 !important;
    border-color: #fecaca !important;
}

.grades-kpis,
.fields-kpis {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
    gap: 8px !important;
}

.grades-kpi,
.fields-kpi {
    min-height: 66px !important;
    display: grid !important;
    gap: 2px !important;
    align-content: center !important;
    padding: 10px 12px !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 12px !important;
    box-shadow: var(--vs-shadow-xs) !important;
}

.grades-kpi span,
.fields-kpi span {
    margin: 0 !important;
    color: var(--vs-ink-muted) !important;
    font-size: 11px !important;
    font-weight: 850 !important;
}

.grades-kpi strong,
.fields-kpi strong {
    color: var(--vs-primary) !important;
    font-size: 20px !important;
    font-weight: 950 !important;
}

.grades-table-card,
.fields-table-card {
    padding: 0 !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
    overflow: hidden !important;
}

.grades-table-scroll,
.fields-table-scroll {
    overflow-x: auto !important;
}

.grades-table,
.fields-table {
    width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    margin: 0 !important;
    font-size: 12px !important;
}

.grades-table th,
.grades-table td,
.fields-table th,
.fields-table td {
    padding: 7px 9px !important;
    border-bottom: 1px solid var(--vs-line) !important;
    vertical-align: middle !important;
}

.grades-table th,
.fields-table th {
    color: var(--vs-ink-muted) !important;
    background: var(--vs-surface-soft) !important;
    font-weight: 950 !important;
    white-space: nowrap !important;
}

.grades-table tbody tr:hover,
.fields-table tbody tr:hover {
    background: color-mix(in srgb, var(--vs-primary) 4%, #fff) !important;
}

.grade-title,
.field-title {
    display: grid !important;
    gap: 1px !important;
}

.grade-title strong,
.field-title strong {
    color: var(--vs-ink) !important;
    font-size: 12px !important;
    font-weight: 950 !important;
}

.grade-title span,
.field-title span {
    color: var(--vs-ink-muted) !important;
    font-size: 10px !important;
    font-weight: 750 !important;
}

.grade-badge,
.field-badge {
    min-height: 23px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 999px !important;
    padding: 3px 8px !important;
    font-size: 10px !important;
    font-weight: 950 !important;
    white-space: nowrap !important;
}

.grade-badge.active,
.field-badge.active {
    color: #15803d !important;
    background: #dcfce7 !important;
}

.grade-badge.inactive,
.field-badge.inactive {
    color: #b91c1c !important;
    background: #fee2e2 !important;
}

.grade-badge.field,
.field-badge.code {
    color: #1d4ed8 !important;
    background: #dbeafe !important;
}

.grade-badge.no-field,
.field-badge.no-code {
    color: #64748b !important;
    background: #f1f5f9 !important;
}

.grade-badge.used,
.field-badge.used {
    color: #92400e !important;
    background: #fef3c7 !important;
}

.grade-warning,
.field-warning {
    color: #92400e !important;
    background: #fffbeb !important;
    border: 1px solid #fde68a !important;
    border-radius: 12px !important;
    padding: 9px 11px !important;
}

.grade-validation,
.field-validation {
    color: #b91c1c !important;
    background: #fef2f2 !important;
    border: 1px solid #fecaca !important;
    border-radius: 12px !important;
    padding: 9px 11px !important;
}

.grade-error,
.field-error {
    color: var(--vs-danger) !important;
    font-size: 10px !important;
    font-weight: 850 !important;
}

body.vs-dark-saas .grades-control,
body.vs-dark-saas .fields-control,
body.vs-dark-saas .grade-control,
body.vs-dark-saas .field-control {
    color: var(--vs-ink) !important;
    background: #0b1220 !important;
    border-color: var(--vs-line) !important;
}

body.vs-dark-saas .grades-table tbody tr:hover,
body.vs-dark-saas .fields-table tbody tr:hover {
    background: rgba(59, 130, 246, .12) !important;
}

body.vs-dark-saas .grades-btn.blue,
body.vs-dark-saas .fields-btn.blue {
    color: #bfdbfe !important;
    background: #172554 !important;
    border-color: #1e3a8a !important;
}

body.vs-dark-saas .grades-btn.yellow,
body.vs-dark-saas .fields-btn.yellow {
    color: #fde68a !important;
    background: #422006 !important;
    border-color: #92400e !important;
}

body.vs-dark-saas .grades-btn.red,
body.vs-dark-saas .fields-btn.red {
    color: #fecaca !important;
    background: #450a0a !important;
    border-color: #991b1b !important;
}

@media (max-width: 760px) {
    .grades-actions,
    .fields-actions,
    .grade-form-actions,
    .field-form-actions {
        justify-content: flex-start !important;
    }
}

/* Course and classroom forms polish v1. */
.course-page-hero,
.classroom-page-hero {
    min-height: auto !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
    flex-wrap: wrap !important;
    padding: 14px !important;
    margin-bottom: 12px !important;
    color: var(--vs-ink) !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.course-page-hero h1,
.classroom-page-hero h1 {
    margin: 0 0 2px !important;
    color: var(--vs-ink) !important;
    font-size: 18px !important;
    font-weight: 950 !important;
}

.course-page-hero p,
.classroom-page-hero p {
    margin: 0 !important;
    color: var(--vs-ink-muted) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
}

.course-page-hero i,
.classroom-page-hero i {
    width: 38px !important;
    height: 38px !important;
    display: grid !important;
    place-items: center !important;
    border-radius: 12px !important;
    color: var(--vs-primary) !important;
    background: var(--vs-primary-soft) !important;
    border: 1px solid color-mix(in srgb, var(--vs-primary) 22%, var(--vs-line)) !important;
    font-size: 18px !important;
}

.course-form-card,
.classroom-form-card {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    padding: 12px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.course-form-title,
.classroom-form-title {
    margin-bottom: 10px !important;
    padding-bottom: 9px !important;
    border-bottom: 1px solid var(--vs-line) !important;
}

.course-form-title h2,
.classroom-form-title h2 {
    margin: 0 0 2px !important;
    color: var(--vs-ink) !important;
    font-size: 15px !important;
    font-weight: 950 !important;
}

.course-form-title p,
.classroom-form-title p {
    margin: 0 !important;
    color: var(--vs-ink-muted) !important;
    font-size: 11px !important;
    font-weight: 750 !important;
}

.course-grid,
.classroom-form-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px 10px !important;
}

.course-group,
.form-group-modern {
    display: grid !important;
    gap: 4px !important;
    margin: 0 !important;
}

.course-group.full,
.form-group-modern.full {
    grid-column: 1 / -1 !important;
}

.course-group label,
.form-group-modern > label:first-child {
    margin: 0 !important;
    color: var(--vs-ink-soft) !important;
    font-size: 11px !important;
    font-weight: 900 !important;
}

.course-section-title,
.classroom-section-title {
    grid-column: 1 / -1 !important;
    min-height: 34px !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    margin: 6px 0 0 !important;
    padding: 8px 0 4px !important;
    border-top: 1px solid var(--vs-line) !important;
    color: var(--vs-ink) !important;
    font-size: 12px !important;
    font-weight: 950 !important;
}

.course-section-title:first-child,
.classroom-section-title:first-child {
    margin-top: 0 !important;
    padding-top: 0 !important;
    border-top: 0 !important;
}

.course-section-title i,
.classroom-section-title i {
    width: 24px !important;
    height: 24px !important;
    display: grid !important;
    place-items: center !important;
    border-radius: 8px !important;
    color: var(--vs-primary) !important;
    background: var(--vs-primary-soft) !important;
}

.course-control,
.form-control-modern {
    min-height: 32px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    padding: 5px 8px !important;
    color: var(--vs-ink) !important;
    background: #fff !important;
    font-family: var(--vs-font-family) !important;
    font-size: 11px !important;
    font-weight: 650 !important;
    box-shadow: none !important;
}

.course-control:focus,
.form-control-modern:focus {
    border-color: var(--vs-primary) !important;
    box-shadow: var(--vs-focus) !important;
}

.course-help,
.field-hint {
    margin-top: 2px !important;
    color: var(--vs-ink-muted) !important;
    font-size: 10px !important;
    font-weight: 700 !important;
}

.course-checkbox,
.checkbox-modern {
    min-height: 32px !important;
    display: flex !important;
    align-items: center !important;
    gap: 7px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    padding: 5px 8px !important;
    color: var(--vs-ink-soft) !important;
    background: var(--vs-surface-soft) !important;
    font-size: 11px !important;
    font-weight: 850 !important;
}

.course-checkbox {
    margin-top: 10px !important;
}

.course-checkbox input,
.checkbox-modern input {
    accent-color: var(--vs-primary);
}

.course-actions,
.classroom-actions {
    display: flex !important;
    align-items: center !important;
    gap: 7px !important;
    flex-wrap: wrap !important;
    margin-top: 12px !important;
    padding-top: 10px !important;
    border-top: 1px solid var(--vs-line) !important;
}

.course-save-btn,
.course-cancel-btn,
.btn-save-modern,
.btn-cancel-modern {
    min-height: 32px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    padding: 6px 11px !important;
    font-family: var(--vs-font-family) !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    line-height: 1.4 !important;
    text-decoration: none !important;
    box-shadow: none !important;
}

.course-save-btn,
.btn-save-modern {
    color: #fff !important;
    background: var(--vs-primary) !important;
    border-color: var(--vs-primary) !important;
}

.course-cancel-btn,
.btn-cancel-modern {
    color: var(--vs-ink-soft) !important;
    background: var(--vs-surface-soft) !important;
    border-color: var(--vs-line) !important;
}

.field-error {
    color: var(--vs-danger) !important;
    font-size: 10px !important;
    font-weight: 850 !important;
}

.validation-summary {
    color: #b91c1c !important;
    background: #fef2f2 !important;
    border: 1px solid #fecaca !important;
    border-radius: 12px !important;
    padding: 9px 11px !important;
}

body.vs-dark-saas .course-control,
body.vs-dark-saas .form-control-modern {
    color: var(--vs-ink) !important;
    background: #0b1220 !important;
    border-color: var(--vs-line) !important;
}

body.vs-dark-saas .course-section-title i,
body.vs-dark-saas .classroom-section-title i,
body.vs-dark-saas .course-page-hero i,
body.vs-dark-saas .classroom-page-hero i {
    color: #93c5fd !important;
    background: #0b1220 !important;
    border-color: var(--vs-line) !important;
}

@media (max-width: 1100px) {
    .course-grid,
    .classroom-form-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
}

@media (max-width: 700px) {
    .course-grid,
    .classroom-form-grid {
        grid-template-columns: 1fr !important;
    }

    .course-group.full,
    .form-group-modern.full {
        grid-column: auto !important;
    }

    .course-actions,
    .classroom-actions {
        justify-content: flex-start !important;
    }
}

/* Broad low-risk legacy UI polish v1. CSS-only. */
.users-pro,
.notifications-page,
.teacher-message-page,
.attendance-report-page,
.parent-page,
.parent-manage-page,
.vs-staff-page,
.vs-staff-form-page,
.course-import-shell {
    display: grid !important;
    gap: 12px !important;
    color: var(--vs-ink) !important;
}

.users-pro-head,
.notifications-header,
.message-hero,
.attendance-hero,
.parent-hero,
.pm-header,
.vs-hero,
.import-hero,
.preview-hero,
.course-import-hero,
.edit-student-hero,
.edit-teacher-hero,
.student-create-hero,
.teacher-create-hero {
    min-height: auto !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
    flex-wrap: wrap !important;
    padding: 14px !important;
    color: var(--vs-ink) !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
    overflow: visible !important;
}

.users-pro-head h1,
.notifications-header h1,
.message-hero h1,
.attendance-hero h1,
.parent-hero h1,
.pm-header h1,
.vs-hero h1,
.import-hero h1,
.preview-hero h1,
.course-import-hero h1,
.edit-student-hero h1,
.edit-teacher-hero h1,
.student-create-hero h1,
.teacher-create-hero h1 {
    margin: 0 0 2px !important;
    color: var(--vs-ink) !important;
    font-size: 18px !important;
    font-weight: 950 !important;
}

.users-pro-head p,
.notifications-header p,
.message-hero p,
.attendance-hero p,
.parent-hero p,
.pm-header p,
.vs-hero p,
.import-hero p,
.preview-hero p,
.course-import-hero p,
.edit-student-hero p,
.edit-teacher-hero p,
.student-create-hero p,
.teacher-create-hero p {
    margin: 0 !important;
    color: var(--vs-ink-muted) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
}

.users-pro-title,
.users-pro-actions,
.notification-actions,
.message-actions,
.attendance-actions,
.vs-hero-actions,
.vs-actions,
.preview-actions,
.import-action-row,
.course-import-actions,
.child-actions,
.filter-actions,
.edit-actions,
.student-actions,
.teacher-actions {
    display: flex !important;
    align-items: center !important;
    gap: 7px !important;
    flex-wrap: wrap !important;
}

.users-pro-title-icon,
.import-hero-icon,
.attendance-hero-badge,
.hero-visual,
.edit-student-hero i,
.edit-teacher-hero i,
.student-create-hero i,
.teacher-create-hero i {
    width: 38px !important;
    height: 38px !important;
    display: grid !important;
    place-items: center !important;
    border-radius: 12px !important;
    color: var(--vs-primary) !important;
    background: var(--vs-primary-soft) !important;
    border: 1px solid color-mix(in srgb, var(--vs-primary) 22%, var(--vs-line)) !important;
    font-size: 18px !important;
    box-shadow: none !important;
}

.users-filter-card,
.users-table-pro,
.import-card,
.course-import-card,
.attendance-filter-card,
.attendance-list-card,
.attendance-row-card,
.message-card,
.message-help-card,
.notif-list,
.notif-item,
.parent-child-card,
.pm-card,
.vs-panel,
.edit-student-card,
.edit-teacher-card,
.student-form-card,
.teacher-form-card,
.preview-table-wrap {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.users-filter-card,
.import-card,
.course-import-card,
.attendance-filter-card,
.attendance-list-card,
.message-card,
.message-help-card,
.notif-item,
.parent-child-card,
.pm-card,
.vs-panel,
.edit-student-card,
.edit-teacher-card,
.student-form-card,
.teacher-form-card {
    padding: 12px !important;
}

.users-pro-summary,
.attendance-kpi-grid,
.attendance-kpis {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
    gap: 8px !important;
}

.users-pro-total,
.users-pro-mini,
.attendance-kpi,
.dash-card {
    min-height: 66px !important;
    display: grid !important;
    gap: 2px !important;
    align-content: center !important;
    padding: 10px 12px !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 12px !important;
    box-shadow: var(--vs-shadow-xs) !important;
}

.users-pro-total span,
.users-pro-mini span,
.attendance-kpi span,
.dash-card span {
    color: var(--vs-ink-muted) !important;
    font-size: 11px !important;
    font-weight: 850 !important;
}

.users-pro-total strong,
.users-pro-mini strong,
.attendance-kpi strong,
.dash-card strong,
.dash-card p {
    color: var(--vs-primary) !important;
    font-size: 20px !important;
    font-weight: 950 !important;
}

.users-filter-form,
.announcement-form,
.message-card form,
.pm-form,
.course-import-card form {
    gap: 8px 10px !important;
}

.users-filter-form label,
.announcement-form label,
.message-card label,
.pm-form label,
.course-import-label,
.form-row label {
    color: var(--vs-ink-soft) !important;
    font-size: 11px !important;
    font-weight: 900 !important;
}

.users-filter-form input,
.users-filter-form select,
.announcement-form input,
.announcement-form select,
.announcement-form textarea,
.message-card input,
.message-card select,
.message-card textarea,
.pm-form input,
.pm-form select,
.course-import-control,
.attendance-filter-card input,
.attendance-filter-card select,
.attendance-filter-card textarea {
    min-height: 32px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    color: var(--vs-ink) !important;
    background: #fff !important;
    font-family: var(--vs-font-family) !important;
    font-size: 11px !important;
    font-weight: 650 !important;
    box-shadow: none !important;
}

.users-table-scroll,
.preview-table-wrap,
.pm-table-wrap,
.attendance-table-scroll,
.attendance-table-wrap {
    overflow-x: auto !important;
}

.users-table,
.preview-table,
.pm-table,
.attendance-table,
.app-table {
    width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    margin: 0 !important;
    font-size: 12px !important;
}

.users-table th,
.users-table td,
.preview-table th,
.preview-table td,
.pm-table th,
.pm-table td,
.attendance-table th,
.attendance-table td,
.app-table th,
.app-table td {
    padding: 7px 9px !important;
    border-bottom: 1px solid var(--vs-line) !important;
    vertical-align: middle !important;
}

.users-table th,
.preview-table th,
.pm-table th,
.attendance-table th,
.app-table th {
    color: var(--vs-ink-muted) !important;
    background: var(--vs-surface-soft) !important;
    font-weight: 950 !important;
    white-space: nowrap !important;
}

.users-table tbody tr:hover,
.preview-table tbody tr:hover,
.pm-table tbody tr:hover,
.attendance-table tbody tr:hover,
.app-table tbody tr:hover {
    background: color-mix(in srgb, var(--vs-primary) 4%, #fff) !important;
}

.users-pro-btn,
.notif-btn,
.notif-open-btn,
.btn-send-modern,
.btn-back-modern,
.btn-primary-modern,
.btn-secondary-modern,
.btn-save-small,
.import-btn-primary,
.import-btn-secondary,
.preview-btn,
.course-import-btn,
.parent-btn,
.pm-btn,
.pm-row-btn,
.vs-btn,
.edit-save-btn,
.edit-cancel-btn,
.student-save-btn,
.student-cancel-btn,
.teacher-save-btn,
.teacher-cancel-btn,
.small-btn {
    min-height: 30px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 5px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    padding: 5px 9px !important;
    font-family: var(--vs-font-family) !important;
    font-size: 11px !important;
    font-weight: 900 !important;
    line-height: 1.4 !important;
    text-decoration: none !important;
    box-shadow: none !important;
    white-space: nowrap !important;
}

.users-pro-btn.primary,
.users-pro-btn.success,
.notif-btn.primary,
.btn-send-modern,
.btn-primary-modern,
.btn-save-small,
.import-btn-primary,
.preview-btn.primary,
.course-import-btn.primary,
.parent-btn.primary,
.pm-btn.primary,
.vs-btn-primary,
.edit-save-btn,
.student-save-btn,
.teacher-save-btn,
.small-btn {
    color: #fff !important;
    background: var(--vs-primary) !important;
    border-color: var(--vs-primary) !important;
}

.users-pro-btn,
.notif-btn.secondary,
.btn-back-modern,
.btn-secondary-modern,
.import-btn-secondary,
.preview-btn.secondary,
.course-import-btn.soft,
.parent-btn.secondary,
.pm-btn.light,
.pm-row-btn,
.vs-btn-muted,
.vs-btn-ghost,
.vs-btn-light,
.edit-cancel-btn,
.student-cancel-btn,
.teacher-cancel-btn {
    color: var(--vs-ink-soft) !important;
    background: var(--vs-surface-soft) !important;
    border-color: var(--vs-line) !important;
}

.parent-btn.warning {
    color: #92400e !important;
    background: #fffbeb !important;
    border-color: #fde68a !important;
}

.parent-btn.info,
.vs-btn-soft {
    color: #1d4ed8 !important;
    background: #eff6ff !important;
    border-color: #bfdbfe !important;
}

.users-alert,
.notif-alert,
.announcement-alert,
.alert-modern,
.pm-alert,
.attendance-alert,
.course-import-alert {
    border-radius: 12px !important;
    padding: 9px 11px !important;
    font-size: 12px !important;
    font-weight: 850 !important;
}

.users-alert.success,
.notif-alert.success,
.announcement-alert.success,
.alert-success-modern,
.pm-alert.success,
.attendance-alert.success {
    color: #166534 !important;
    background: #ecfdf5 !important;
    border: 1px solid #bbf7d0 !important;
}

.users-alert.error,
.pm-alert.error,
.attendance-alert.danger,
.course-import-alert {
    color: #b91c1c !important;
    background: #fef2f2 !important;
    border: 1px solid #fecaca !important;
}

.notif-empty,
.users-empty,
.parent-empty,
.pm-empty,
.attendance-empty {
    padding: 18px !important;
    border: 1px dashed var(--vs-line-strong) !important;
    border-radius: 14px !important;
    color: var(--vs-ink-muted) !important;
    background: var(--vs-surface-soft) !important;
    text-align: center !important;
    font-size: 12px !important;
    font-weight: 800 !important;
}

body.vs-dark-saas .users-filter-form input,
body.vs-dark-saas .users-filter-form select,
body.vs-dark-saas .announcement-form input,
body.vs-dark-saas .announcement-form select,
body.vs-dark-saas .announcement-form textarea,
body.vs-dark-saas .message-card input,
body.vs-dark-saas .message-card select,
body.vs-dark-saas .message-card textarea,
body.vs-dark-saas .pm-form input,
body.vs-dark-saas .pm-form select,
body.vs-dark-saas .course-import-control,
body.vs-dark-saas .attendance-filter-card input,
body.vs-dark-saas .attendance-filter-card select,
body.vs-dark-saas .attendance-filter-card textarea {
    color: var(--vs-ink) !important;
    background: #0b1220 !important;
    border-color: var(--vs-line) !important;
}

body.vs-dark-saas .users-table tbody tr:hover,
body.vs-dark-saas .preview-table tbody tr:hover,
body.vs-dark-saas .pm-table tbody tr:hover,
body.vs-dark-saas .attendance-table tbody tr:hover,
body.vs-dark-saas .app-table tbody tr:hover {
    background: rgba(59, 130, 246, .12) !important;
}

body.vs-dark-saas .users-pro-title-icon,
body.vs-dark-saas .import-hero-icon,
body.vs-dark-saas .attendance-hero-badge,
body.vs-dark-saas .hero-visual,
body.vs-dark-saas .edit-student-hero i,
body.vs-dark-saas .edit-teacher-hero i,
body.vs-dark-saas .student-create-hero i,
body.vs-dark-saas .teacher-create-hero i {
    color: #93c5fd !important;
    background: #0b1220 !important;
    border-color: var(--vs-line) !important;
}

@media (max-width: 760px) {
    .users-pro-actions,
    .notification-actions,
    .message-actions,
    .attendance-actions,
    .vs-hero-actions,
    .vs-actions,
    .preview-actions,
    .import-action-row,
    .course-import-actions,
    .child-actions,
    .filter-actions,
    .edit-actions,
    .student-actions,
    .teacher-actions {
        justify-content: flex-start !important;
    }
}

/* Reports, gradebook and assignments polish v1. CSS-only. */
.gradebook-page,
.reports-index-page,
.report-page,
.student-report-page,
.student-assign-page,
.teacher-assign-page,
.student-profile-grid,
.parent-academics-page {
    display: grid !important;
    gap: 12px !important;
    color: var(--vs-ink) !important;
}

.gradebook-page > header,
.reports-header,
.report-hero,
.student-report-hero,
.stu-assign-head,
.assign-ui-head,
.sub-ui-head,
.submit-ui-head,
.student-profile-hero,
.student-exams-hero,
.result-hero {
    min-height: auto !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
    flex-wrap: wrap !important;
    padding: 14px !important;
    color: var(--vs-ink) !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.gradebook-page > header h1,
.reports-header h1,
.report-hero h1,
.student-report-hero h1,
.stu-assign-head h1,
.assign-ui-head h1,
.sub-ui-head h1,
.submit-ui-head h1,
.student-profile-hero h1,
.student-exams-hero h1,
.result-hero h1 {
    margin: 0 0 2px !important;
    color: var(--vs-ink) !important;
    font-size: 18px !important;
    font-weight: 950 !important;
}

.gradebook-page > header p,
.reports-header p,
.report-hero p,
.student-report-hero p,
.stu-assign-head p,
.assign-ui-head p,
.sub-ui-head p,
.submit-ui-head p,
.student-profile-hero p,
.student-exams-hero p,
.result-hero p {
    margin: 0 !important;
    color: var(--vs-ink-muted) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
}

.gb-filter,
.gb-actions-row,
.gb-table-panel,
.reports-row,
.report-info-card,
.official-info-card,
.student-info-card,
.course-report-card,
.attendance-card,
.student-report-card,
.stu-assign-filter,
.stu-assign-card,
.assign-ui-filter,
.assign-ui-table-card,
.assign-form-card,
.sub-ui-filter,
.sub-ui-card,
.submit-ui-card,
.student-profile-card,
.student-exam-card,
.score-card,
.answer-key-card,
.result-info-card,
.pa-table-wrap {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-card-shadow) !important;
}

.gb-filter,
.gb-actions-row,
.gb-table-panel,
.reports-row,
.report-info-card,
.official-info-card,
.student-info-card,
.course-report-card,
.attendance-card,
.student-report-card,
.stu-assign-filter,
.stu-assign-card,
.assign-ui-filter,
.assign-ui-table-card,
.assign-form-card,
.sub-ui-filter,
.sub-ui-card,
.submit-ui-card,
.student-profile-card,
.student-exam-card,
.score-card,
.answer-key-card,
.result-info-card {
    padding: 12px !important;
}

.report-kpi-grid,
.student-exams-kpi-grid,
.result-kpi-grid,
.sub-ui-kpis {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
    gap: 8px !important;
}

.report-kpi,
.student-exams-kpi,
.result-kpi,
.sub-ui-kpi {
    min-height: 66px !important;
    display: grid !important;
    gap: 2px !important;
    align-content: center !important;
    padding: 10px 12px !important;
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 12px !important;
    box-shadow: var(--vs-shadow-xs) !important;
}

.report-kpi span,
.student-exams-kpi span,
.result-kpi span,
.sub-ui-kpi span {
    color: var(--vs-ink-muted) !important;
    font-size: 11px !important;
    font-weight: 850 !important;
}

.report-kpi strong,
.student-exams-kpi strong,
.result-kpi strong,
.sub-ui-kpi strong {
    color: var(--vs-primary) !important;
    font-size: 20px !important;
    font-weight: 950 !important;
}

.gb-table-wrap,
.assign-ui-table-wrap,
.sub-ui-card,
.stu-assign-card,
.pa-table-wrap {
    overflow-x: auto !important;
}

.gb-fixed-table,
.assign-ui-table,
.sub-ui-table,
.stu-assign-table,
.descriptive-table,
.official-report-table,
.pa-table {
    width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    margin: 0 !important;
    font-size: 12px !important;
}

.gb-fixed-table th,
.gb-fixed-table td,
.assign-ui-table th,
.assign-ui-table td,
.sub-ui-table th,
.sub-ui-table td,
.stu-assign-table th,
.stu-assign-table td,
.descriptive-table th,
.descriptive-table td,
.official-report-table th,
.official-report-table td,
.pa-table th,
.pa-table td {
    padding: 7px 9px !important;
    border-bottom: 1px solid var(--vs-line) !important;
    vertical-align: middle !important;
}

.gb-fixed-table th,
.assign-ui-table th,
.sub-ui-table th,
.stu-assign-table th,
.descriptive-table th,
.official-report-table th,
.pa-table th {
    color: var(--vs-ink-muted) !important;
    background: var(--vs-surface-soft) !important;
    font-weight: 950 !important;
    white-space: nowrap !important;
}

.gb-fixed-table tbody tr:hover,
.assign-ui-table tbody tr:hover,
.sub-ui-table tbody tr:hover,
.stu-assign-table tbody tr:hover,
.descriptive-table tbody tr:hover,
.official-report-table tbody tr:hover,
.pa-table tbody tr:hover {
    background: color-mix(in srgb, var(--vs-primary) 4%, #fff) !important;
}

.gb-btn,
.reports-btn,
.report-print-btn,
.report-btn,
.official-action-btn,
.print-btn,
.view-report-btn,
.assign-ui-btn-primary,
.assign-ui-btn-secondary,
.assign-ui-btn-muted,
.assign-ui-btn-danger,
.assign-form-btn,
.assign-calendar-btn,
.stu-btn,
.submit-btn,
.result-back-btn,
.assign-page-btn {
    min-height: 30px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 5px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    padding: 5px 9px !important;
    font-family: var(--vs-font-family) !important;
    font-size: 11px !important;
    font-weight: 900 !important;
    line-height: 1.4 !important;
    text-decoration: none !important;
    box-shadow: none !important;
    white-space: nowrap !important;
}

.gb-btn-primary,
.reports-btn-primary,
.report-print-btn,
.report-btn.primary,
.official-action-btn.primary,
.print-btn,
.view-report-btn,
.assign-ui-btn-primary,
.assign-form-btn.primary,
.stu-btn.primary,
.submit-btn.primary,
.assign-page-btn.active {
    color: #fff !important;
    background: var(--vs-primary) !important;
    border-color: var(--vs-primary) !important;
}

.gb-btn-secondary,
.gb-btn-light,
.reports-btn-secondary,
.reports-btn-light,
.report-btn.secondary,
.official-action-btn.secondary,
.assign-ui-btn-secondary,
.assign-ui-btn-muted,
.assign-form-btn.muted,
.stu-btn.muted,
.submit-btn.muted,
.result-back-btn,
.assign-page-btn {
    color: var(--vs-ink-soft) !important;
    background: var(--vs-surface-soft) !important;
    border-color: var(--vs-line) !important;
}

.assign-ui-btn-danger {
    color: #b91c1c !important;
    background: #fef2f2 !important;
    border-color: #fecaca !important;
}

.gb-filter-form input,
.gb-filter-form select,
.assign-ui-filter input,
.assign-ui-filter select,
.stu-assign-filter input,
.stu-assign-filter select,
.sub-ui-filter input,
.sub-ui-filter select,
.assign-form-card input,
.assign-form-card select,
.assign-form-card textarea,
.submit-ui-card input,
.submit-ui-card select,
.submit-ui-card textarea,
.pa-filter input,
.pa-filter select {
    min-height: 32px !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 9px !important;
    color: var(--vs-ink) !important;
    background: #fff !important;
    font-family: var(--vs-font-family) !important;
    font-size: 11px !important;
    font-weight: 650 !important;
    box-shadow: none !important;
}

.student-exam-card-grid,
.course-card-list,
.student-report-list,
.student-profile-grid {
    gap: 10px !important;
}

.student-exam-icon,
.student-avatar,
.student-avatar-placeholder {
    border-radius: 14px !important;
    border: 1px solid var(--vs-line) !important;
    box-shadow: none !important;
}

.student-exam-badge,
.pa-status {
    border-radius: 999px !important;
    padding: 3px 8px !important;
    font-size: 10px !important;
    font-weight: 950 !important;
}

.empty-report,
.reports-empty {
    padding: 18px !important;
    border: 1px dashed var(--vs-line-strong) !important;
    border-radius: 14px !important;
    color: var(--vs-ink-muted) !important;
    background: var(--vs-surface-soft) !important;
    text-align: center !important;
    font-size: 12px !important;
    font-weight: 800 !important;
}

body.vs-dark-saas .gb-filter-form input,
body.vs-dark-saas .gb-filter-form select,
body.vs-dark-saas .assign-ui-filter input,
body.vs-dark-saas .assign-ui-filter select,
body.vs-dark-saas .stu-assign-filter input,
body.vs-dark-saas .stu-assign-filter select,
body.vs-dark-saas .sub-ui-filter input,
body.vs-dark-saas .sub-ui-filter select,
body.vs-dark-saas .assign-form-card input,
body.vs-dark-saas .assign-form-card select,
body.vs-dark-saas .assign-form-card textarea,
body.vs-dark-saas .submit-ui-card input,
body.vs-dark-saas .submit-ui-card select,
body.vs-dark-saas .submit-ui-card textarea,
body.vs-dark-saas .pa-filter input,
body.vs-dark-saas .pa-filter select {
    color: var(--vs-ink) !important;
    background: #0b1220 !important;
    border-color: var(--vs-line) !important;
}

body.vs-dark-saas .gb-fixed-table tbody tr:hover,
body.vs-dark-saas .assign-ui-table tbody tr:hover,
body.vs-dark-saas .sub-ui-table tbody tr:hover,
body.vs-dark-saas .stu-assign-table tbody tr:hover,
body.vs-dark-saas .descriptive-table tbody tr:hover,
body.vs-dark-saas .official-report-table tbody tr:hover,
body.vs-dark-saas .pa-table tbody tr:hover {
    background: rgba(59, 130, 246, .12) !important;
}

@media print {
    .report-info-card,
    .official-info-card,
    .student-info-card,
    .course-report-card,
    .attendance-card,
    .student-report-card {
        box-shadow: none !important;
    }
}

/* Admin utility pages polish v1: schedules, bells, attendance, documents and access pages. */
.schedule-page,
.bells-shell,
.attendance-shell,
.learning-goals-page,
.templates-shell,
.os-shell,
.vs-access-page {
    color: var(--vs-ink) !important;
}

.schedule-hero,
.bells-hero,
.bell-form-hero,
.attendance-hero,
.lg-hero,
.templates-hero,
.os-top,
.vs-hero {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-shadow-sm) !important;
    padding: 14px 16px !important;
}

.schedule-hero h1,
.bells-hero h1,
.bell-form-hero h1,
.attendance-hero h1,
.lg-hero h1,
.templates-hero h1,
.os-top h1,
.vs-hero h1 {
    color: var(--vs-ink) !important;
    font-size: 18px !important;
    font-weight: 950 !important;
    margin-bottom: 4px !important;
}

.schedule-hero p,
.bells-hero p,
.bell-form-hero p,
.attendance-hero p,
.lg-hero p,
.templates-hero p,
.os-top p,
.vs-hero p {
    color: var(--vs-ink-muted) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    margin-bottom: 0 !important;
}

.schedule-form-card,
.schedule-list-card,
.bells-filter-card,
.bells-table-card,
.bell-form-card,
.attendance-table-card,
.templates-card,
.templates-table-card,
.os-panel,
.vs-panel,
.geo-table-wrap,
.lg-table-wrap {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-shadow-sm) !important;
}

.schedule-kpi,
.bells-kpi,
.attendance-kpi,
.templates-kpi,
.os-stat {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 12px !important;
    box-shadow: none !important;
    padding: 11px 12px !important;
}

.schedule-kpi span,
.bells-kpi span,
.attendance-kpi span,
.templates-kpi span,
.os-stat span {
    color: var(--vs-ink-muted) !important;
    font-size: 11px !important;
    font-weight: 800 !important;
}

.schedule-kpi strong,
.bells-kpi strong,
.attendance-kpi strong,
.templates-kpi strong,
.os-stat strong {
    color: var(--vs-ink) !important;
    font-size: 19px !important;
    font-weight: 950 !important;
}

.card-title-modern,
.templates-card-title,
.os-panel-head h2 {
    color: var(--vs-ink) !important;
    font-size: 14px !important;
    font-weight: 950 !important;
}

.schedule-day-group,
.schedule-item,
.vs-position-row,
.vs-position-line,
.rdr-extension-box,
.rdr-checks {
    background: var(--vs-surface-soft) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 12px !important;
}

.schedule-item {
    padding: 9px 10px !important;
}

.schedule-day-title,
.bell-title,
.attendance-row-title strong,
.lg-goal-text,
.rdr-help-text,
.rdr-meta-line {
    color: var(--vs-ink) !important;
    font-weight: 900 !important;
}

.schedule-time,
.schedule-no-link,
.attendance-row-title span {
    color: var(--vs-ink-muted) !important;
    font-size: 11px !important;
    font-weight: 750 !important;
}

.bells-control,
.bell-control,
.attendance-search,
.attendance-description-input,
.attendance-save-date,
.templates-control,
.geo-filter-bar input,
.geo-filter-bar select,
.geo-form-grid input,
.geo-form-grid select,
.os-field input,
.os-field select,
.os-field textarea,
.rdr-row-textarea,
.rdr-textarea,
.vs-access-page input,
.vs-access-page select,
.vs-access-page textarea,
.lg-filter-form input,
.lg-filter-form select {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 10px !important;
    color: var(--vs-ink) !important;
    min-height: 38px !important;
    box-shadow: none !important;
}

.bells-control:focus,
.bell-control:focus,
.attendance-search:focus,
.attendance-description-input:focus,
.attendance-save-date:focus,
.templates-control:focus,
.geo-filter-bar input:focus,
.geo-filter-bar select:focus,
.geo-form-grid input:focus,
.geo-form-grid select:focus,
.os-field input:focus,
.os-field select:focus,
.os-field textarea:focus,
.rdr-row-textarea:focus,
.rdr-textarea:focus,
.vs-access-page input:focus,
.vs-access-page select:focus,
.vs-access-page textarea:focus,
.lg-filter-form input:focus,
.lg-filter-form select:focus {
    border-color: var(--vs-primary) !important;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .12) !important;
    outline: none !important;
}

.bells-btn,
.bell-btn,
.attendance-btn,
.templates-btn,
.lg-btn,
.lg-mini-btn,
.geo-btn,
.geo-icon-btn,
.os-btn,
.vs-btn,
.btn-small-modern,
.btn-primary-modern,
.btn-danger-modern {
    border-radius: 10px !important;
    min-height: 34px !important;
    padding: 7px 11px !important;
    font-size: 11px !important;
    font-weight: 900 !important;
    box-shadow: none !important;
    border: 1px solid var(--vs-line) !important;
}

.bells-btn:hover,
.bell-btn:hover,
.attendance-btn:hover,
.templates-btn:hover,
.lg-btn:hover,
.lg-mini-btn:hover,
.geo-btn:hover,
.geo-icon-btn:hover,
.os-btn:hover,
.vs-btn:hover,
.btn-small-modern:hover,
.btn-primary-modern:hover,
.btn-danger-modern:hover {
    transform: translateY(-1px);
}

.bells-table,
.attendance-table,
.templates-table,
.lg-table,
.geo-table,
.os-table,
.rdr-table {
    color: var(--vs-ink) !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
}

.bells-table th,
.attendance-table th,
.templates-table th,
.lg-table th,
.geo-table th,
.os-table th,
.rdr-table th {
    background: var(--vs-surface-soft) !important;
    color: var(--vs-ink-muted) !important;
    border-bottom: 1px solid var(--vs-line) !important;
    font-size: 11px !important;
    font-weight: 950 !important;
    padding: 10px 9px !important;
}

.bells-table td,
.attendance-table td,
.templates-table td,
.lg-table td,
.geo-table td,
.os-table td,
.rdr-table td {
    border-bottom: 1px solid var(--vs-line) !important;
    padding: 9px !important;
    vertical-align: middle !important;
    font-size: 12px !important;
}

.bells-table tbody tr:hover,
.attendance-table tbody tr:hover,
.templates-table tbody tr:hover,
.lg-table tbody tr:hover,
.geo-table tbody tr:hover,
.os-table tbody tr:hover,
.rdr-table tbody tr:hover {
    background: rgba(37, 99, 235, .05) !important;
}

.bell-badge,
.attendance-status,
.attendance-status-button,
.template-badge,
.os-badge,
.vs-access-pill {
    border-radius: 999px !important;
    padding: 4px 8px !important;
    font-size: 10px !important;
    font-weight: 950 !important;
    border: 1px solid var(--vs-line) !important;
}

.attendance-status-button {
    background: var(--vs-surface) !important;
    color: var(--vs-ink-muted) !important;
}

.attendance-status-button.active {
    border-color: transparent !important;
    color: #fff !important;
}

.schedule-actions,
.bells-actions,
.bell-form-actions,
.attendance-quick-actions,
.attendance-save-bar,
.template-actions,
.os-actions,
.os-row-actions,
.geo-actions-cell,
.vs-row-actions,
.vs-line-actions,
.lg-actions {
    gap: 7px !important;
}

.attendance-save-bar {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--vs-shadow-sm) !important;
}

.attendance-save-meta,
.attendance-save-meta strong {
    color: var(--vs-ink) !important;
}

.attendance-save-meta span {
    color: var(--vs-ink-muted) !important;
}

.os-alert,
.bells-alert,
.templates-alert,
.attendance-alert,
.bell-validation {
    border-radius: 12px !important;
    border: 1px solid var(--vs-line) !important;
    box-shadow: none !important;
    font-size: 12px !important;
    font-weight: 800 !important;
}

.os-empty {
    color: var(--vs-ink-muted) !important;
    background: var(--vs-surface-soft) !important;
    border: 1px dashed var(--vs-line-strong) !important;
    border-radius: 12px !important;
}

body.vs-dark-saas .schedule-hero,
body.vs-dark-saas .bells-hero,
body.vs-dark-saas .bell-form-hero,
body.vs-dark-saas .attendance-hero,
body.vs-dark-saas .lg-hero,
body.vs-dark-saas .templates-hero,
body.vs-dark-saas .os-top,
body.vs-dark-saas .vs-hero,
body.vs-dark-saas .schedule-form-card,
body.vs-dark-saas .schedule-list-card,
body.vs-dark-saas .bells-filter-card,
body.vs-dark-saas .bells-table-card,
body.vs-dark-saas .bell-form-card,
body.vs-dark-saas .attendance-table-card,
body.vs-dark-saas .templates-card,
body.vs-dark-saas .templates-table-card,
body.vs-dark-saas .os-panel,
body.vs-dark-saas .vs-panel,
body.vs-dark-saas .geo-table-wrap,
body.vs-dark-saas .lg-table-wrap,
body.vs-dark-saas .attendance-save-bar {
    background: #111827 !important;
    border-color: rgba(148, 163, 184, .22) !important;
}

body.vs-dark-saas .schedule-kpi,
body.vs-dark-saas .bells-kpi,
body.vs-dark-saas .attendance-kpi,
body.vs-dark-saas .templates-kpi,
body.vs-dark-saas .os-stat,
body.vs-dark-saas .schedule-day-group,
body.vs-dark-saas .schedule-item,
body.vs-dark-saas .vs-position-row,
body.vs-dark-saas .vs-position-line,
body.vs-dark-saas .rdr-extension-box,
body.vs-dark-saas .rdr-checks {
    background: #0b1220 !important;
    border-color: rgba(148, 163, 184, .22) !important;
}

body.vs-dark-saas .bells-control,
body.vs-dark-saas .bell-control,
body.vs-dark-saas .attendance-search,
body.vs-dark-saas .attendance-description-input,
body.vs-dark-saas .attendance-save-date,
body.vs-dark-saas .templates-control,
body.vs-dark-saas .geo-filter-bar input,
body.vs-dark-saas .geo-filter-bar select,
body.vs-dark-saas .geo-form-grid input,
body.vs-dark-saas .geo-form-grid select,
body.vs-dark-saas .os-field input,
body.vs-dark-saas .os-field select,
body.vs-dark-saas .os-field textarea,
body.vs-dark-saas .rdr-row-textarea,
body.vs-dark-saas .rdr-textarea,
body.vs-dark-saas .vs-access-page input,
body.vs-dark-saas .vs-access-page select,
body.vs-dark-saas .vs-access-page textarea,
body.vs-dark-saas .lg-filter-form input,
body.vs-dark-saas .lg-filter-form select,
body.vs-dark-saas .attendance-status-button {
    background: #0b1220 !important;
    border-color: rgba(148, 163, 184, .24) !important;
    color: var(--vs-ink) !important;
}

body.vs-dark-saas .bells-table th,
body.vs-dark-saas .attendance-table th,
body.vs-dark-saas .templates-table th,
body.vs-dark-saas .lg-table th,
body.vs-dark-saas .geo-table th,
body.vs-dark-saas .os-table th,
body.vs-dark-saas .rdr-table th {
    background: #0b1220 !important;
    color: var(--vs-ink-muted) !important;
}

body.vs-dark-saas .bells-table tbody tr:hover,
body.vs-dark-saas .attendance-table tbody tr:hover,
body.vs-dark-saas .templates-table tbody tr:hover,
body.vs-dark-saas .lg-table tbody tr:hover,
body.vs-dark-saas .geo-table tbody tr:hover,
body.vs-dark-saas .os-table tbody tr:hover,
body.vs-dark-saas .rdr-table tbody tr:hover {
    background: rgba(59, 130, 246, .12) !important;
}

/* Access pages dark-mode contrast fix v1. */
.vs-display-title,
.vs-permission-summary div,
.vs-permission-module,
.vs-permission-item,
.vs-user-summary,
.vs-sticky-actions {
    border-color: var(--vs-line) !important;
}

.vs-display-title,
.vs-permission-item {
    background: var(--vs-surface) !important;
    color: var(--vs-ink) !important;
}

.vs-display-title label,
.vs-display-title strong,
.vs-display-title small,
.vs-permission-item strong,
.vs-check-title strong,
.vs-check-title small,
.vs-user-summary strong,
.vs-user-summary span {
    color: var(--vs-ink) !important;
}

.vs-check-title small,
.vs-user-summary span {
    color: var(--vs-ink-muted) !important;
}

.vs-display-title input:disabled,
.vs-display-title input:disabled + span {
    opacity: 1 !important;
}

body.vs-dark-saas .vs-display-title,
body.vs-dark-saas .vs-permission-summary div,
body.vs-dark-saas .vs-permission-module,
body.vs-dark-saas .vs-permission-item,
body.vs-dark-saas .vs-user-summary,
body.vs-dark-saas .vs-sticky-actions {
    background: #111827 !important;
    border-color: rgba(148, 163, 184, .24) !important;
    color: var(--vs-ink) !important;
    box-shadow: none !important;
}

body.vs-dark-saas .vs-permission-item.selected,
body.vs-dark-saas .vs-position-line.selected {
    background: rgba(37, 99, 235, .16) !important;
    border-color: rgba(96, 165, 250, .62) !important;
}

body.vs-dark-saas .vs-display-title label,
body.vs-dark-saas .vs-display-title strong,
body.vs-dark-saas .vs-display-title small,
body.vs-dark-saas .vs-permission-item strong,
body.vs-dark-saas .vs-permission-module h2,
body.vs-dark-saas .vs-check-title strong,
body.vs-dark-saas .vs-user-summary strong {
    color: #f8fafc !important;
}

body.vs-dark-saas .vs-check-title small,
body.vs-dark-saas .vs-user-summary span,
body.vs-dark-saas .vs-empty {
    color: #cbd5e1 !important;
}

body.vs-dark-saas .vs-chip {
    background: #0b1220 !important;
    border-color: rgba(96, 165, 250, .38) !important;
    color: #93c5fd !important;
}

body.vs-dark-saas .vs-chip.danger {
    border-color: rgba(248, 113, 113, .45) !important;
    color: #fca5a5 !important;
}

/* School staff dark-mode contrast fix v1. */
.vs-staff-page,
.vs-staff-form-page {
    color: var(--vs-ink) !important;
}

.vs-staff-page .vs-panel,
.vs-staff-form-page .vs-panel,
.vs-staff-row,
.staff-photo-preview img {
    background: var(--vs-surface) !important;
    border-color: var(--vs-line) !important;
    box-shadow: var(--vs-shadow-sm) !important;
}

.vs-staff-main strong,
.vs-staff-row b,
.vs-staff-form-page .vs-section-title,
.vs-staff-form-page .vs-field label {
    color: var(--vs-ink) !important;
}

.vs-staff-main span,
.vs-staff-page .vs-label,
.vs-staff-form-page .vs-field small {
    color: var(--vs-ink-muted) !important;
}

.vs-staff-form-page .form-control,
.vs-staff-form-page .form-select,
.vs-staff-page .form-control,
.vs-staff-page .form-select {
    background: var(--vs-surface) !important;
    border: 1px solid var(--vs-line) !important;
    color: var(--vs-ink) !important;
    box-shadow: none !important;
}

.vs-staff-form-page .form-control::placeholder,
.vs-staff-page .form-control::placeholder {
    color: var(--vs-ink-muted) !important;
    opacity: .78 !important;
}

.vs-staff-form-page .vs-section-title,
.vs-staff-form-page .vs-actions {
    border-color: var(--vs-line) !important;
}

.vs-staff-form-page .vs-section-title i {
    background: var(--vs-primary-soft) !important;
    color: var(--vs-primary) !important;
}

body.vs-dark-saas .vs-staff-page .vs-panel,
body.vs-dark-saas .vs-staff-form-page .vs-panel,
body.vs-dark-saas .vs-staff-row,
body.vs-dark-saas .staff-photo-preview img {
    background: #111827 !important;
    border-color: rgba(148, 163, 184, .24) !important;
    box-shadow: none !important;
}

body.vs-dark-saas .vs-staff-row.inactive {
    opacity: .82 !important;
}

body.vs-dark-saas .vs-staff-main strong,
body.vs-dark-saas .vs-staff-row b,
body.vs-dark-saas .vs-staff-form-page .vs-section-title,
body.vs-dark-saas .vs-staff-form-page .vs-field label {
    color: #f8fafc !important;
}

body.vs-dark-saas .vs-staff-main span,
body.vs-dark-saas .vs-staff-page .vs-label,
body.vs-dark-saas .vs-staff-form-page .vs-field small {
    color: #cbd5e1 !important;
}

body.vs-dark-saas .vs-staff-form-page .form-control,
body.vs-dark-saas .vs-staff-form-page .form-select,
body.vs-dark-saas .vs-staff-page .form-control,
body.vs-dark-saas .vs-staff-page .form-select {
    background: #0b1220 !important;
    border-color: rgba(148, 163, 184, .26) !important;
    color: #f8fafc !important;
}

body.vs-dark-saas .vs-staff-form-page .form-control:focus,
body.vs-dark-saas .vs-staff-form-page .form-select:focus,
body.vs-dark-saas .vs-staff-page .form-control:focus,
body.vs-dark-saas .vs-staff-page .form-select:focus {
    border-color: rgba(96, 165, 250, .72) !important;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, .18) !important;
}

body.vs-dark-saas .vs-staff-form-page .vs-section-title,
body.vs-dark-saas .vs-staff-form-page .vs-actions {
    border-color: rgba(148, 163, 184, .2) !important;
}

body.vs-dark-saas .vs-staff-form-page .vs-section-title i {
    background: rgba(37, 99, 235, .18) !important;
    color: #93c5fd !important;
}

/* Global dark-mode form and upload contrast guard v1. */
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) .form-control,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) .form-select,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input[type="text"],
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input[type="search"],
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input[type="number"],
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input[type="email"],
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input[type="tel"],
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input[type="password"],
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input[type="date"],
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input[type="time"],
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input[type="file"],
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) select,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) textarea {
    background-color: #0b1220 !important;
    border-color: rgba(148, 163, 184, .28) !important;
    color: #f8fafc !important;
    box-shadow: none !important;
}

body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) .form-control::placeholder,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input::placeholder,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) textarea::placeholder {
    color: #94a3b8 !important;
    opacity: .9 !important;
}

body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) .form-control:focus,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) .form-select:focus,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input:focus,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) select:focus,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) textarea:focus {
    border-color: rgba(96, 165, 250, .72) !important;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, .18) !important;
    outline: none !important;
}

body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) input[type="file"]::file-selector-button {
    background: rgba(37, 99, 235, .18) !important;
    border: 0 !important;
    border-left: 1px solid rgba(148, 163, 184, .24) !important;
    color: #dbeafe !important;
    font-weight: 900 !important;
    min-height: 30px !important;
}

body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) .card,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) .modal-content,
body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) .dropdown-menu,
body.vs-dark-saas .import-card,
body.vs-dark-saas .upload-box,
body.vs-dark-saas .import-step,
body.vs-dark-saas .import-warning {
    background-color: #111827 !important;
    border-color: rgba(148, 163, 184, .24) !important;
    color: #f8fafc !important;
    box-shadow: none !important;
}

body.vs-dark-saas .import-card h2,
body.vs-dark-saas .import-step strong,
body.vs-dark-saas .upload-box label {
    color: #f8fafc !important;
}

body.vs-dark-saas .import-card p,
body.vs-dark-saas .import-step span,
body.vs-dark-saas .upload-help {
    color: #cbd5e1 !important;
}

body.vs-dark-saas .import-btn-secondary {
    background: #0b1220 !important;
    border-color: rgba(148, 163, 184, .28) !important;
    color: #dbeafe !important;
}

body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) .table {
    color: #e5e7eb !important;
}

body.vs-dark-saas:not(.login-auth-page):not(.forgot-auth-page):not(.access-denied-auth-page) .table > :not(caption) > * > * {
    background-color: transparent !important;
    border-color: rgba(148, 163, 184, .18) !important;
    color: inherit !important;
}

/* Course learning goals dark-mode contrast fix v1. */
body.vs-dark-saas .learning-goals-page {
    color: #f8fafc !important;
}

body.vs-dark-saas .learning-goals-page .lg-panel,
body.vs-dark-saas .learning-goals-page .lg-empty,
body.vs-dark-saas .learning-goals-page .lg-table-wrap {
    background: #111827 !important;
    border-color: rgba(148, 163, 184, .24) !important;
    color: #f8fafc !important;
    box-shadow: none !important;
}

body.vs-dark-saas .learning-goals-page .lg-section-title h2,
body.vs-dark-saas .learning-goals-page .lg-group label,
body.vs-dark-saas .learning-goals-page .lg-course-title strong,
body.vs-dark-saas .learning-goals-page .lg-goal-text {
    color: #f8fafc !important;
}

body.vs-dark-saas .learning-goals-page .lg-section-title span,
body.vs-dark-saas .learning-goals-page .lg-course-title span,
body.vs-dark-saas .learning-goals-page .lg-empty {
    color: #cbd5e1 !important;
}

body.vs-dark-saas .learning-goals-page .lg-control,
body.vs-dark-saas .learning-goals-page input.lg-control,
body.vs-dark-saas .learning-goals-page select.lg-control {
    background: #0b1220 !important;
    border-color: rgba(148, 163, 184, .28) !important;
    color: #f8fafc !important;
    box-shadow: none !important;
}

body.vs-dark-saas .learning-goals-page .lg-control::placeholder {
    color: #94a3b8 !important;
    opacity: .9 !important;
}

body.vs-dark-saas .learning-goals-page .lg-control:focus {
    border-color: rgba(96, 165, 250, .72) !important;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, .18) !important;
}

body.vs-dark-saas .learning-goals-page .lg-table th {
    background: #0b1220 !important;
    color: #cbd5e1 !important;
    border-color: rgba(148, 163, 184, .18) !important;
}

body.vs-dark-saas .learning-goals-page .lg-table td {
    color: #e5e7eb !important;
    border-color: rgba(148, 163, 184, .16) !important;
}

body.vs-dark-saas .learning-goals-page .lg-table tbody tr:hover {
    background: rgba(59, 130, 246, .12) !important;
}

body.vs-dark-saas .learning-goals-page .lg-btn-soft,
body.vs-dark-saas .learning-goals-page .lg-mini-btn {
    background: #0b1220 !important;
    border: 1px solid rgba(148, 163, 184, .24) !important;
    color: #dbeafe !important;
}

body.vs-dark-saas .learning-goals-page .lg-mini-btn.danger {
    background: rgba(127, 29, 29, .32) !important;
    border-color: rgba(248, 113, 113, .38) !important;
    color: #fca5a5 !important;
}

body.vs-dark-saas .learning-goals-page .lg-group .select2-container--default .select2-selection--single {
    background: #0b1220 !important;
    border-color: rgba(148, 163, 184, .28) !important;
    color: #f8fafc !important;
}

body.vs-dark-saas .learning-goals-page .lg-group .select2-container--default .select2-selection--single .select2-selection__rendered {
    color: #f8fafc !important;
}

body.vs-dark-saas .learning-goals-page .lg-group .select2-container--default .select2-selection--single .select2-selection__placeholder {
    color: #94a3b8 !important;
}

body.vs-dark-saas .learning-goals-page .lg-group .select2-container--default .select2-selection--single .select2-selection__arrow b {
    border-color: #cbd5e1 transparent transparent transparent !important;
}

body.vs-dark-saas .learning-goal-select2-dropdown {
    background: #111827 !important;
    border-color: rgba(148, 163, 184, .28) !important;
    box-shadow: 0 18px 34px rgba(0, 0, 0, .28) !important;
}

body.vs-dark-saas .learning-goal-select2-dropdown .select2-search__field {
    background: #0b1220 !important;
    border-color: rgba(148, 163, 184, .28) !important;
    color: #f8fafc !important;
}

body.vs-dark-saas .learning-goal-select2-dropdown .select2-results__option {
    background: #111827 !important;
    color: #e5e7eb !important;
}

body.vs-dark-saas .learning-goal-select2-dropdown .select2-results__option--highlighted[aria-selected] {
    background: rgba(37, 99, 235, .28) !important;
    color: #ffffff !important;
}

/* Notifications and geo pages dark-mode contrast fix v1. */
body.vs-dark-saas .announcement-page,
body.vs-dark-saas .notifications-page,
body.vs-dark-saas .geo-page {
    color: #f8fafc !important;
}

body.vs-dark-saas .announcement-header,
body.vs-dark-saas .announcement-form,
body.vs-dark-saas .notifications-header,
body.vs-dark-saas .notif-empty,
body.vs-dark-saas .notif-item,
body.vs-dark-saas .geo-page .geo-head,
body.vs-dark-saas .geo-page .geo-panel,
body.vs-dark-saas .geo-page .geo-stats article,
body.vs-dark-saas .geo-page .geo-table-wrap,
body.vs-dark-saas .geo-page .geo-empty {
    background: #111827 !important;
    border-color: rgba(148, 163, 184, .24) !important;
    color: #f8fafc !important;
    box-shadow: none !important;
}

body.vs-dark-saas .notif-item.unread {
    background: rgba(37, 99, 235, .12) !important;
    border-color: rgba(96, 165, 250, .4) !important;
}

body.vs-dark-saas .announcement-header h1,
body.vs-dark-saas .notifications-header h1,
body.vs-dark-saas .notif-title-row h2,
body.vs-dark-saas .geo-page .geo-head h1,
body.vs-dark-saas .geo-page .geo-panel-title h2,
body.vs-dark-saas .geo-page .geo-stats strong,
body.vs-dark-saas .geo-page .geo-empty strong {
    color: #f8fafc !important;
}

body.vs-dark-saas .announcement-header p,
body.vs-dark-saas .form-row small,
body.vs-dark-saas .notifications-header p,
body.vs-dark-saas .notif-title-row span,
body.vs-dark-saas .notif-content p,
body.vs-dark-saas .geo-page .geo-head p,
body.vs-dark-saas .geo-page .geo-panel-title p,
body.vs-dark-saas .geo-page .geo-stats span,
body.vs-dark-saas .geo-page .geo-empty span {
    color: #cbd5e1 !important;
}

body.vs-dark-saas .announcement-page .form-row label,
body.vs-dark-saas .geo-page .geo-form-grid label span {
    color: #e5e7eb !important;
}

body.vs-dark-saas .announcement-page .form-row input,
body.vs-dark-saas .announcement-page .form-row select,
body.vs-dark-saas .announcement-page .form-row textarea,
body.vs-dark-saas .geo-page .form-control,
body.vs-dark-saas .geo-page .form-select,
body.vs-dark-saas .geo-page .geo-cell-input,
body.vs-dark-saas .geo-page .geo-cell-select,
body.vs-dark-saas .geo-page .geo-order-input {
    background: #0b1220 !important;
    border-color: rgba(148, 163, 184, .28) !important;
    color: #f8fafc !important;
    box-shadow: none !important;
}

body.vs-dark-saas .announcement-page .form-row input::placeholder,
body.vs-dark-saas .announcement-page .form-row textarea::placeholder,
body.vs-dark-saas .geo-page .form-control::placeholder {
    color: #94a3b8 !important;
    opacity: .9 !important;
}

body.vs-dark-saas .announcement-page .form-row input:focus,
body.vs-dark-saas .announcement-page .form-row select:focus,
body.vs-dark-saas .announcement-page .form-row textarea:focus,
body.vs-dark-saas .geo-page .form-control:focus,
body.vs-dark-saas .geo-page .form-select:focus {
    border-color: rgba(96, 165, 250, .72) !important;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, .18) !important;
}

body.vs-dark-saas .announcement-back,
body.vs-dark-saas .notif-btn.secondary,
body.vs-dark-saas .notif-open-btn,
body.vs-dark-saas .geo-page .geo-btn.secondary,
body.vs-dark-saas .geo-page .geo-btn.ghost,
body.vs-dark-saas .geo-page .geo-icon-btn {
    background: #0b1220 !important;
    border-color: rgba(148, 163, 184, .28) !important;
    color: #dbeafe !important;
}

body.vs-dark-saas .geo-page .geo-table th {
    background: #0b1220 !important;
    color: #cbd5e1 !important;
    border-color: rgba(148, 163, 184, .18) !important;
}

body.vs-dark-saas .geo-page .geo-table td {
    background: #111827 !important;
    color: #e5e7eb !important;
    border-color: rgba(148, 163, 184, .16) !important;
}

body.vs-dark-saas .geo-page .geo-table tr.is-muted td {
    background: rgba(15, 23, 42, .72) !important;
    color: #94a3b8 !important;
}

body.vs-dark-saas .geo-page .geo-table tbody tr:hover td {
    background: rgba(59, 130, 246, .12) !important;
}

body.vs-dark-saas .geo-page .geo-eyebrow,
body.vs-dark-saas .geo-page .geo-chip.info {
    background: rgba(37, 99, 235, .18) !important;
    border-color: rgba(96, 165, 250, .32) !important;
    color: #93c5fd !important;
}

body.vs-dark-saas .geo-page .geo-status.ok,
body.vs-dark-saas .geo-page .geo-icon-btn.success {
    background: rgba(22, 101, 52, .28) !important;
    border-color: rgba(74, 222, 128, .34) !important;
    color: #86efac !important;
}

body.vs-dark-saas .geo-page .geo-status.off,
body.vs-dark-saas .geo-page .geo-icon-btn.danger {
    background: rgba(127, 29, 29, .28) !important;
    border-color: rgba(248, 113, 113, .34) !important;
    color: #fca5a5 !important;
}
