/*
 * EduCore Core v2.9.0 — Global Interface Consistency & Responsive Polish
 * Loaded after the historical frontend/admin styles so every workspace shares
 * one final typography, icon, spacing, visibility and responsive contract.
 */

.sms-frontend.sms-v290-professional-ui,
.sms-school-login-page.sms-v290-login,
.sms-wrap {
    --sms-ui-scale: clamp(.92, var(--sms-font-scale, .97), 1.07);
    --sms-ui-ink: #172033;
    --sms-ui-text: #334155;
    --sms-ui-muted: #5f6f84;
    --sms-ui-subtle: #7a889b;
    --sms-ui-line: #dbe3ee;
    --sms-ui-line-strong: #cbd5e1;
    --sms-ui-surface: #ffffff;
    --sms-ui-soft: #f6f8fc;
    --sms-ui-soft-strong: #eef2f8;
    --sms-ui-focus: color-mix(in srgb, var(--sms-primary, #203aa6) 24%, transparent);
    color: var(--sms-ui-text);
    font-family: var(--sms-font-family, "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
    font-size: calc(13px * var(--sms-ui-scale));
    line-height: 1.5;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.sms-frontend.sms-v290-professional-ui *,
.sms-frontend.sms-v290-professional-ui *::before,
.sms-frontend.sms-v290-professional-ui *::after,
.sms-school-login-page.sms-v290-login *,
.sms-school-login-page.sms-v290-login *::before,
.sms-school-login-page.sms-v290-login *::after,
.sms-wrap *,
.sms-wrap *::before,
.sms-wrap *::after {
    box-sizing: border-box;
}

.sms-frontend.sms-v290-professional-ui img,
.sms-frontend.sms-v290-professional-ui svg,
.sms-school-login-page.sms-v290-login img,
.sms-school-login-page.sms-v290-login svg,
.sms-wrap img,
.sms-wrap svg {
    max-width: 100%;
    height: auto;
}

.sms-frontend.sms-v290-professional-ui button,
.sms-frontend.sms-v290-professional-ui input,
.sms-frontend.sms-v290-professional-ui select,
.sms-frontend.sms-v290-professional-ui textarea,
.sms-school-login-page.sms-v290-login button,
.sms-school-login-page.sms-v290-login input,
.sms-wrap button,
.sms-wrap input,
.sms-wrap select,
.sms-wrap textarea {
    font-family: inherit;
}

/* Consistent icon boxes prevent glyphs from drifting above or below text. */
.sms-frontend.sms-v290-professional-ui .dashicons,
.sms-school-login-page.sms-v290-login .dashicons,
.sms-wrap .dashicons {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    vertical-align: middle;
    line-height: 1 !important;
    margin: 0;
}

.sms-frontend.sms-v290-professional-ui .dashicons::before,
.sms-school-login-page.sms-v290-login .dashicons::before,
.sms-wrap .dashicons::before {
    display: block;
    line-height: 1 !important;
}

.sms-frontend.sms-v290-professional-ui :is(a, button, .sms-front-btn, .sms-icon-action),
.sms-school-login-page.sms-v290-login :is(a, button),
.sms-wrap :is(a.button, button.button) {
    min-width: 0;
}

/* Professional, restrained typography across all normal workspaces. */
.sms-v290-professional-ui .sms-v290-main :is(h1, h2, h3, h4, h5, h6),
.sms-wrap :is(h1, h2, h3, h4, h5, h6),
.sms-school-login-page.sms-v290-login :is(h1, h2, h3) {
    overflow-wrap: anywhere;
    text-wrap: balance;
    line-height: 1.22;
}

.sms-v290-professional-ui .sms-v290-main h1 {
    font-size: clamp(20px, 1.55vw, 26px) !important;
    letter-spacing: -.025em;
}
.sms-v290-professional-ui .sms-v290-main h2 {
    font-size: clamp(17px, 1.25vw, 21px) !important;
    letter-spacing: -.018em;
}
.sms-v290-professional-ui .sms-v290-main h3 {
    font-size: clamp(14px, 1vw, 17px) !important;
}
.sms-v290-professional-ui .sms-v290-main h4 {
    font-size: calc(13px * var(--sms-ui-scale)) !important;
}
.sms-v290-professional-ui .sms-v290-main p,
.sms-v290-professional-ui .sms-v290-main li,
.sms-v290-professional-ui .sms-v290-main label,
.sms-v290-professional-ui .sms-v290-main td,
.sms-v290-professional-ui .sms-v290-main dd {
    font-size: calc(12.5px * var(--sms-ui-scale));
    line-height: 1.52;
}
.sms-v290-professional-ui .sms-v290-main small,
.sms-v290-professional-ui .sms-v290-main .description,
.sms-v290-professional-ui .sms-v290-main .sms-form-help,
.sms-v290-professional-ui .sms-v290-main .sms-muted {
    font-size: calc(11px * var(--sms-ui-scale)) !important;
    line-height: 1.45;
    color: var(--sms-ui-muted);
}
.sms-v290-professional-ui .sms-v290-main .sms-kicker {
    font-size: calc(10.5px * var(--sms-ui-scale)) !important;
    line-height: 1.25;
    letter-spacing: .08em;
}

.sms-wrap { font-size: calc(13px * var(--sms-ui-scale)) !important; }
.sms-wrap h1 { font-size: clamp(21px, 1.7vw, 25px) !important; }
.sms-wrap h2 { font-size: clamp(17px, 1.25vw, 20px) !important; }
.sms-wrap h3 { font-size: clamp(14px, 1vw, 17px) !important; }
.sms-wrap p,
.sms-wrap label,
.sms-wrap td,
.sms-wrap th { font-size: calc(12.5px * var(--sms-ui-scale)) !important; line-height: 1.5; }
.sms-wrap small,
.sms-wrap .description { font-size: calc(11px * var(--sms-ui-scale)) !important; color: var(--sms-ui-muted); }

/* Shared surfaces and heading alignment. */
.sms-v290-professional-ui .sms-v290-main,
.sms-v290-professional-ui .sms-front-body,
.sms-v290-professional-ui .sms-front-body > *,
.sms-v290-professional-ui .sms-front-panel,
.sms-v290-professional-ui .sms-ui-card,
.sms-v290-professional-ui .sms-table-panel,
.sms-v290-professional-ui .sms-responsive-table,
.sms-wrap,
.sms-wrap > * {
    min-width: 0;
    max-width: 100%;
}

.sms-v290-professional-ui .sms-front-body {
    width: 100%;
    padding: clamp(14px, 1.35vw, 24px) !important;
}

.sms-v290-professional-ui .sms-front-panel,
.sms-v290-professional-ui .sms-ui-card,
.sms-v290-professional-ui .sms-table-panel {
    border-radius: 14px !important;
}

.sms-v290-professional-ui .sms-front-panel:not(.sms-table-panel),
.sms-v290-professional-ui .sms-ui-card {
    padding: clamp(15px, 1.3vw, 22px) !important;
}

.sms-v290-professional-ui .sms-panel-head,
.sms-v290-professional-ui .sms-directory-list-head,
.sms-v290-professional-ui .sms-employee-list-head,
.sms-v290-professional-ui .sms-isolated-form-head,
.sms-wrap .sms-panel-head {
    display: flex;
    align-items: flex-start !important;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px 18px !important;
    min-width: 0;
}

.sms-v290-professional-ui .sms-panel-head > *,
.sms-v290-professional-ui .sms-directory-list-head > *,
.sms-v290-professional-ui .sms-employee-list-head > *,
.sms-wrap .sms-panel-head > * {
    min-width: 0;
}

.sms-v290-professional-ui .sms-panel-head h1,
.sms-v290-professional-ui .sms-panel-head h2,
.sms-v290-professional-ui .sms-panel-head h3,
.sms-wrap .sms-panel-head h1,
.sms-wrap .sms-panel-head h2,
.sms-wrap .sms-panel-head h3 {
    margin: 2px 0 4px !important;
}

.sms-v290-professional-ui .sms-panel-head p,
.sms-wrap .sms-panel-head p {
    margin: 0 !important;
    max-width: 72ch;
    color: var(--sms-ui-muted);
}

/* Buttons and compact action controls. */
.sms-v290-professional-ui .sms-front-btn,
.sms-v290-professional-ui button.sms-front-btn,
.sms-v290-professional-ui a.sms-front-btn,
.sms-school-login-page.sms-v290-login .sms-front-btn {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 36px !important;
    max-width: 100%;
    padding: 8px 13px !important;
    border-radius: 9px !important;
    font-size: calc(12px * var(--sms-ui-scale)) !important;
    font-weight: 650 !important;
    line-height: 1.2 !important;
    text-align: center;
    white-space: normal;
}

.sms-v290-professional-ui .sms-front-btn-small,
.sms-v290-professional-ui .sms-icon-action {
    min-height: 32px !important;
    padding: 6px 10px !important;
    font-size: calc(11.5px * var(--sms-ui-scale)) !important;
}

.sms-v290-professional-ui .sms-front-btn .dashicons,
.sms-school-login-page.sms-v290-login .sms-front-btn .dashicons {
    width: 17px !important;
    height: 17px !important;
    font-size: 17px !important;
}

.sms-v290-professional-ui :is(.sms-form-actions, .sms-front-actions, .sms-row-actions, .sms-directory-filter-actions, .sms-sticky-form-actions, .sms-print-toolbar),
.sms-wrap :is(.sms-form-actions, .sms-row-actions) {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px !important;
}

/* Form alignment and readable control sizing. */
.sms-v290-professional-ui :is(.sms-front-form, .sms-directory-filter-form, .sms-task-filter-form, .sms-inline-form) label,
.sms-school-login-page.sms-v290-login label,
.sms-wrap form label {
    min-width: 0;
}

.sms-v290-professional-ui :is(.sms-front-form, .sms-directory-filter-form, .sms-task-filter-form) label > span:first-child,
.sms-school-login-page.sms-v290-login .sms-login-field > span:first-child,
.sms-wrap form label > span:first-child {
    display: block;
    margin-bottom: 5px;
    color: var(--sms-ui-text);
    font-size: calc(11.5px * var(--sms-ui-scale));
    font-weight: 650;
    line-height: 1.35;
}

.sms-v290-professional-ui :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea),
.sms-school-login-page.sms-v290-login :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea),
.sms-wrap :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea) {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    min-height: 38px;
    padding: 8px 10px;
    border-radius: 8px;
    font-size: calc(12.5px * var(--sms-ui-scale)) !important;
    line-height: 1.35;
}

.sms-v290-professional-ui textarea,
.sms-wrap textarea { min-height: 90px; resize: vertical; }

.sms-v290-professional-ui :is(input, select, textarea)::placeholder,
.sms-school-login-page.sms-v290-login input::placeholder,
.sms-wrap :is(input, textarea)::placeholder {
    color: #8795a8 !important;
    opacity: 1;
}

.sms-v290-professional-ui :is(input, select, textarea, button, a):focus-visible,
.sms-school-login-page.sms-v290-login :is(input, button, a):focus-visible,
.sms-wrap :is(input, select, textarea, button, a):focus-visible {
    outline: 3px solid var(--sms-ui-focus) !important;
    outline-offset: 2px;
}

.sms-v290-professional-ui :is(input, select, textarea, button):disabled,
.sms-wrap :is(input, select, textarea, button):disabled {
    opacity: .7 !important;
    cursor: not-allowed;
}

.sms-v290-professional-ui :is(.sms-front-grid, .sms-front-form-grid, .sms-ui-kpi-grid, .sms-grid, .sms-choice-grid, .sms-setting-checkbox-grid),
.sms-wrap :is(.sms-grid, .sms-form-grid) {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)) !important;
    align-items: start;
}

.sms-v290-professional-ui :is(.sms-form-row, .sms-choice-fieldset, .sms-choice-line, .sms-switch-card) {
    min-width: 0;
}

/* Tables retain information density while staying usable on small screens. */
.sms-v290-professional-ui .sms-responsive-table,
.sms-wrap .sms-responsive-table {
    width: 100%;
    overflow-x: auto !important;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    border-radius: 12px;
}

.sms-v290-professional-ui .sms-responsive-table table,
.sms-wrap .sms-responsive-table table {
    width: 100%;
    max-width: none;
    border-collapse: separate;
    border-spacing: 0;
}

.sms-v290-professional-ui .sms-responsive-table th,
.sms-wrap .sms-responsive-table th {
    padding: 9px 10px !important;
    font-size: calc(10.75px * var(--sms-ui-scale)) !important;
    line-height: 1.3;
    letter-spacing: .035em;
    vertical-align: middle;
    white-space: nowrap;
}

.sms-v290-professional-ui .sms-responsive-table td,
.sms-wrap .sms-responsive-table td {
    padding: 9px 10px !important;
    font-size: calc(12px * var(--sms-ui-scale)) !important;
    line-height: 1.45;
    vertical-align: middle !important;
    overflow-wrap: anywhere;
}

.sms-v290-professional-ui .sms-responsive-table td strong,
.sms-wrap .sms-responsive-table td strong {
    color: var(--sms-ui-ink);
    font-size: inherit;
    line-height: 1.35;
}

.sms-v290-professional-ui .sms-responsive-table td small,
.sms-wrap .sms-responsive-table td small {
    display: block;
    margin-top: 2px;
    color: var(--sms-ui-muted);
}

.sms-v290-professional-ui :is(.sms-status-pill, .sms-grade-chip),
.sms-wrap .sms-status-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 25px;
    max-width: 100%;
    padding: 4px 8px !important;
    font-size: calc(10.5px * var(--sms-ui-scale)) !important;
    line-height: 1.2;
    white-space: normal;
    text-align: center;
}

/* Toolbars, filters and tabs should wrap instead of forcing horizontal page overflow. */
.sms-v290-professional-ui :is(.sms-directory-toolbar, .sms-table-tools, .sms-task-filter-form, .sms-directory-filter-form, .sms-filter-only-panel form, .sms-report-type-picker, .sms-academic-task-nav, .sms-workflow-nav, .sms-tabs, .sms-report-tabs),
.sms-wrap :is(.sms-directory-toolbar, .sms-table-tools, .nav-tab-wrapper) {
    min-width: 0;
    max-width: 100%;
}

.sms-v290-professional-ui :is(.sms-directory-toolbar, .sms-table-tools, .sms-task-filter-form, .sms-directory-filter-form) {
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 9px 12px !important;
}

.sms-v290-professional-ui :is(.sms-directory-toolbar, .sms-table-tools, .sms-task-filter-form, .sms-directory-filter-form) > * {
    min-width: min(100%, 150px);
    flex: 1 1 170px;
}

.sms-v290-professional-ui :is(.sms-tabs, .sms-report-tabs, .sms-academic-task-nav, .sms-workflow-nav) {
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}

.sms-v290-professional-ui :is(.sms-tabs, .sms-report-tabs, .sms-academic-task-nav, .sms-workflow-nav) a {
    font-size: calc(11.5px * var(--sms-ui-scale)) !important;
    line-height: 1.25;
}

/* Empty states and icon-led cards use compact icons and readable copy. */
.sms-v290-professional-ui :is(.sms-empty-filter-state, .sms-empty-workspace-card, .sms-dashboard-empty, .sms-menu-hidden-card, .sms-v280-empty-mini) {
    text-align: center;
    overflow-wrap: anywhere;
}

.sms-v290-professional-ui :is(.sms-empty-filter-state, .sms-empty-workspace-card, .sms-dashboard-empty, .sms-menu-hidden-card) > .dashicons {
    width: 34px !important;
    height: 34px !important;
    font-size: 34px !important;
}

/* Header, navigation and dashboard typography. */
.sms-v290-professional-ui .sms-v280-topbar,
.sms-v290-professional-ui .sms-v280-sidebar,
.sms-v290-professional-ui .sms-v280-main {
    font-size: calc(12.5px * var(--sms-ui-scale));
}

.sms-v290-professional-ui .sms-v280-brand-copy strong {
    font-size: 16px !important;
    line-height: 1.2;
}
.sms-v290-professional-ui .sms-v280-brand-copy small {
    font-size: 10.5px !important;
    line-height: 1.25;
}
.sms-v290-professional-ui .sms-edn-nav-trigger,
.sms-v290-professional-ui .sms-v280-sidebar-actions a {
    gap: 10px !important;
    font-size: calc(12px * var(--sms-ui-scale)) !important;
    line-height: 1.25;
}
.sms-v290-professional-ui .sms-edn-nav-trigger .sms-v280-nav-icon,
.sms-v290-professional-ui .sms-v280-sidebar-actions .dashicons {
    width: 20px !important;
    height: 20px !important;
    font-size: 17px !important;
}
.sms-v290-professional-ui .sms-edn-mega-menu .sms-edn-mega-column > a {
    min-height: 37px;
    gap: 8px !important;
    padding: 7px 9px !important;
    font-size: calc(11.25px * var(--sms-ui-scale)) !important;
    line-height: 1.3;
}
.sms-v290-professional-ui .sms-edn-mega-menu .sms-edn-mega-column > a .dashicons {
    width: 17px !important;
    height: 17px !important;
    font-size: 15px !important;
}
.sms-v290-professional-ui .sms-edn-mega-menu .sms-edn-mega-column > a b {
    color: var(--sms-ui-ink) !important;
    font-size: inherit !important;
    line-height: inherit;
}
.sms-v290-professional-ui .sms-edn-mega-menu .sms-edn-mega-column > a small {
    font-size: 10px !important;
    line-height: 1.3;
}

.sms-v290-professional-ui .sms-header-icon-button,
.sms-v290-professional-ui .sms-v280-sidebar-collapse {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
}
.sms-v290-professional-ui .sms-header-icon-button .dashicons,
.sms-v290-professional-ui .sms-v280-sidebar-collapse .dashicons {
    width: 18px !important;
    height: 18px !important;
    font-size: 18px !important;
}
.sms-v290-professional-ui .sms-v280-userbox strong {
    font-size: 12px !important;
    line-height: 1.25;
}
.sms-v290-professional-ui .sms-v280-userbox small {
    font-size: 10px !important;
    line-height: 1.2;
    color: var(--sms-ui-muted) !important;
}

.sms-v290-professional-ui .sms-v280-welcome-copy h1 {
    margin: 0 0 4px !important;
    font-size: clamp(20px, 1.8vw, 26px) !important;
}
.sms-v290-professional-ui .sms-v280-welcome-copy p {
    margin: 0 !important;
    font-size: calc(12px * var(--sms-ui-scale)) !important;
}
.sms-v290-professional-ui .sms-v280-kpi-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 185px), 1fr)) !important;
}
.sms-v290-professional-ui .sms-v280-kpi {
    min-width: 0;
    padding: 15px !important;
    gap: 11px !important;
}
.sms-v290-professional-ui .sms-v280-kpi-icon {
    width: 38px !important;
    height: 38px !important;
    font-size: 19px !important;
}
.sms-v290-professional-ui .sms-v280-kpi small {
    font-size: 10.5px !important;
}
.sms-v290-professional-ui .sms-v280-kpi strong {
    font-size: clamp(21px, 1.8vw, 28px) !important;
    line-height: 1.15;
}
.sms-v290-professional-ui .sms-v280-kpi em {
    font-size: 10.5px !important;
    line-height: 1.3;
}
.sms-v290-professional-ui .sms-v280-card header h2 {
    font-size: 15px !important;
    line-height: 1.3;
}
.sms-v290-professional-ui .sms-v280-card header p {
    font-size: 10.75px !important;
}

/* Login page: balanced desktop layout and safe single-column mobile layout. */
.sms-school-login-page.sms-v290-login {
    width: 100%;
    min-height: 100svh;
    padding: clamp(14px, 3vw, 40px) !important;
    overflow-x: hidden;
    background: #f4f7fb;
}

.sms-school-login-page.sms-v290-login .sms-login-card {
    display: grid !important;
    grid-template-columns: minmax(0, 1.05fr) minmax(320px, .95fr) !important;
    width: min(100%, 1080px) !important;
    min-height: min(680px, calc(100svh - 80px));
    margin: 0 auto !important;
    overflow: hidden;
    border-radius: 22px !important;
}
.sms-school-login-page.sms-v290-login .sms-school-login-panel,
.sms-school-login-page.sms-v290-login .sms-school-login-visual {
    min-width: 0;
    padding: clamp(24px, 4vw, 54px) !important;
}
.sms-school-login-page.sms-v290-login .sms-login-brand-row {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}
.sms-school-login-page.sms-v290-login .sms-login-brand-row > :is(img, .dashicons) {
    width: 42px !important;
    height: 42px !important;
    font-size: 22px !important;
    object-fit: contain;
}
.sms-school-login-page.sms-v290-login .sms-login-brand-row strong {
    font-size: 15px !important;
    line-height: 1.25;
}
.sms-school-login-page.sms-v290-login .sms-login-brand-row small {
    font-size: 10.5px !important;
    color: var(--sms-ui-muted);
}
.sms-school-login-page.sms-v290-login .sms-login-form-heading h1 {
    margin: 6px 0 8px !important;
    font-size: clamp(25px, 3vw, 30px) !important;
}
.sms-school-login-page.sms-v290-login .sms-login-form-heading p {
    margin: 0 !important;
    font-size: 12.5px !important;
    color: var(--sms-ui-muted);
}
.sms-school-login-page.sms-v290-login .sms-school-login-form {
    width: 100%;
    min-width: 0;
}
.sms-school-login-page.sms-v290-login .sms-login-input-wrap {
    display: flex !important;
    align-items: center;
    gap: 9px;
    width: 100%;
    min-width: 0;
}
.sms-school-login-page.sms-v290-login .sms-login-input-wrap .dashicons {
    width: 18px !important;
    height: 18px !important;
    font-size: 17px !important;
}
.sms-school-login-page.sms-v290-login .sms-login-input-wrap input {
    min-width: 0;
}
.sms-school-login-page.sms-v290-login .sms-login-form-options,
.sms-school-login-page.sms-v290-login .sms-login-card-footer,
.sms-school-login-page.sms-v290-login .sms-login-page-contact {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 8px 14px;
}
.sms-school-login-page.sms-v290-login .sms-login-visual-copy h2 {
    font-size: clamp(22px, 2.5vw, 29px) !important;
    line-height: 1.22;
}
.sms-school-login-page.sms-v290-login .sms-login-visual-copy p {
    font-size: 12.5px !important;
    line-height: 1.55;
}

/* Light-only professional interface. Old stored dark preferences are ignored. */
.sms-frontend.sms-v290-professional-ui,
.sms-frontend.sms-v290-professional-ui.sms-appearance-dark,
.sms-frontend.sms-v290-professional-ui .sms-v280-shell {
    color-scheme: light !important;
}
.sms-frontend.sms-v290-professional-ui.sms-appearance-dark {
    --sms-bg: #f4f7fb !important;
    --sms-surface: #ffffff !important;
    --sms-text: #172033 !important;
    --sms-muted: #5f6f84 !important;
    --sms-border: #dbe3ee !important;
}

/* Responsive contract shared by every Core and add-on page. */
@media (max-width: 1180px) {
    .sms-v290-professional-ui .sms-front-body { padding: 16px !important; }
    .sms-v290-professional-ui .sms-v280-topbar-search button > span:not(.dashicons) { display: none; }
    .sms-v290-professional-ui .sms-v280-topbar-search button { justify-content: center; }
    .sms-v290-professional-ui .sms-v280-userbox > div { max-width: 120px; }
}

@media (max-width: 960px) {
    .sms-school-login-page.sms-v290-login .sms-login-card {
        grid-template-columns: 1fr !important;
        min-height: 0;
    }
    .sms-school-login-page.sms-v290-login .sms-school-login-visual {
        min-height: 250px;
    }
    .sms-v290-professional-ui :is(.sms-front-grid.two, .sms-front-grid.three, .sms-two-column, .sms-three-column, .sms-v210-detail-grid, .sms-v200-action-grid) {
        grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)) !important;
    }
}

@media (max-width: 780px) {
    .sms-v290-professional-ui .sms-front-body { padding: 12px !important; }
    .sms-v290-professional-ui .sms-front-panel:not(.sms-table-panel),
    .sms-v290-professional-ui .sms-ui-card { padding: 14px !important; }
    .sms-v290-professional-ui .sms-panel-head,
    .sms-v290-professional-ui .sms-directory-list-head,
    .sms-v290-professional-ui .sms-employee-list-head { display: grid; grid-template-columns: minmax(0,1fr); }
    .sms-v290-professional-ui :is(.sms-directory-toolbar, .sms-table-tools, .sms-task-filter-form, .sms-directory-filter-form) > * {
        min-width: min(100%, 200px);
        flex-basis: 100%;
    }
    .sms-v290-professional-ui :is(.sms-form-actions, .sms-front-actions, .sms-directory-filter-actions, .sms-sticky-form-actions) .sms-front-btn {
        flex: 1 1 150px;
    }
    .sms-v290-professional-ui .sms-responsive-table table { min-width: 640px; }
    .sms-v290-professional-ui .sms-responsive-table table[data-sms-mobile-cards="1"] { min-width: 0; }
    .sms-v290-professional-ui .sms-v280-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
    .sms-v290-professional-ui .sms-v280-dashboard-row { grid-template-columns: 1fr !important; }
    .sms-v290-professional-ui .sms-v280-userbox > div,
    .sms-v290-professional-ui .sms-v280-userbox .sms-userbox-chevron { display: none !important; }
    .sms-v290-professional-ui .sms-v280-userbox { width: 42px !important; min-width: 42px !important; padding: 4px !important; }
}

@media (max-width: 640px) {
    .sms-school-login-page.sms-v290-login { padding: 0 !important; background: #fff; }
    .sms-school-login-page.sms-v290-login .sms-login-card { width: 100% !important; border-radius: 0 !important; box-shadow: none !important; }
    .sms-school-login-page.sms-v290-login .sms-school-login-panel { padding: 24px 18px !important; min-height: 100svh; }
    .sms-school-login-page.sms-v290-login .sms-school-login-visual { display: none !important; }
    .sms-school-login-page.sms-v290-login .sms-login-form-options { align-items: flex-start; flex-direction: column; }
    .sms-school-login-page.sms-v290-login .sms-login-submit { width: 100%; }
    .sms-school-login-page.sms-v290-login .sms-login-page-contact { padding: 14px 18px; justify-content: flex-start; }
    .sms-v290-professional-ui .sms-v280-brand-copy small { display: none; }
    .sms-v290-professional-ui .sms-v280-kpi-grid { grid-template-columns: 1fr !important; }
    .sms-v290-professional-ui .sms-v280-kpi { min-height: 86px; }
    .sms-v290-professional-ui :is(.sms-form-actions, .sms-front-actions, .sms-directory-filter-actions, .sms-sticky-form-actions) {
        align-items: stretch;
        flex-direction: column;
    }
    .sms-v290-professional-ui :is(.sms-form-actions, .sms-front-actions, .sms-directory-filter-actions, .sms-sticky-form-actions) .sms-front-btn {
        width: 100%;
        flex-basis: auto;
    }
}

@media (max-width: 420px) {
    .sms-v290-professional-ui .sms-front-body { padding: 9px !important; }
    .sms-v290-professional-ui .sms-front-panel:not(.sms-table-panel),
    .sms-v290-professional-ui .sms-ui-card { padding: 12px !important; border-radius: 11px !important; }
    .sms-v290-professional-ui .sms-v290-main h1 { font-size: 20px !important; }
    .sms-v290-professional-ui .sms-v290-main h2 { font-size: 17px !important; }
    .sms-v290-professional-ui .sms-front-btn { width: 100%; }
    .sms-v290-professional-ui .sms-responsive-table table { min-width: 590px; }
}

@media print {
    .sms-v290-professional-ui .sms-v280-topbar,
    .sms-v290-professional-ui .sms-v280-sidebar,
    .sms-v290-professional-ui .sms-global-header-spacer,
    .sms-v290-professional-ui .sms-school-footer,
    .sms-v290-professional-ui .sms-front-notice { display: none !important; }
    .sms-v290-professional-ui .sms-v280-main,
    .sms-v290-professional-ui .sms-front-body { margin: 0 !important; padding: 0 !important; background: #fff !important; }
}

/* Cross-module metric and illustration sizing caps. */
.sms-v290-professional-ui .sms-v290-main :is(
    .sms-stat-card,
    .sms-ui-stat-card,
    .sms-dashboard-kpi,
    .sms-attendance-summary-card,
    .sms-front-structure-summary,
    .sms-import-summary-grid article,
    .sms-academic-kpi-grid .sms-stat-card
) strong {
    font-size: clamp(20px, 1.9vw, 27px) !important;
    line-height: 1.15 !important;
}
.sms-v290-professional-ui .sms-v290-main :is(
    .sms-stat-icon,
    .sms-module-card > .dashicons,
    .sms-ui-coming-soon > .dashicons,
    .sms-uifile-hero > .dashicons,
    .sms-empty-records > .dashicons,
    .sms-dashboard-empty > .dashicons,
    .sms-attendance-empty-state > .dashicons,
    .sms-print-preview-placeholder > .dashicons
) {
    width: 34px !important;
    height: 34px !important;
    font-size: 28px !important;
}
.sms-v290-professional-ui .sms-v290-main :is(.sms-module-card, .sms-ui-action-card) {
    min-width: 0;
    gap: 9px !important;
    padding: 14px !important;
}
.sms-v290-professional-ui .sms-v290-main :is(.sms-module-card, .sms-ui-action-card) strong {
    font-size: 12.5px !important;
    line-height: 1.3;
    overflow-wrap: anywhere;
}
.sms-v290-professional-ui .sms-v290-main :is(.sms-module-card, .sms-ui-action-card) small {
    font-size: 10.75px !important;
    line-height: 1.4;
}

/* Final page-family alignment coverage found during the v2.9.0 source audit. */
.sms-v290-professional-ui .sms-v290-main {
    min-width: 0;
    max-width: 100%;
    overflow-x: clip;
}
.sms-v290-professional-ui .sms-v290-main :is(
    .sms-exam-component-scroll,
    .sms-optional-matrix-panel,
    .sms-marks-spreadsheet-panel,
    .sms-front-structure-table-panel,
    .sms-front-structure-enrollment,
    .sms-front-promotion-table-wrap,
    .sms-student-bulk-update-wrap,
    .sms-date-schedule-wrap,
    .sms-simple-assignment-table-wrap,
    .sms-optional-subject-matrix-wrap,
    .sms-marks-entry-wrap
) {
    max-width: 100%;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}
.sms-v290-professional-ui .sms-v290-main :is(
    .sms-task-page-title,
    .sms-erp-module-identity,
    .sms-student-profile-identity,
    .sms-employee-profile-identity,
    .sms-result-school-heading,
    .sms-login-brand-row,
    .sms-workflow-list a,
    .sms-ui-action-card,
    .sms-commercial-card header
) {
    min-width: 0;
}
.sms-v290-professional-ui .sms-v290-main :is(
    .sms-edn-quick-receive-card .dashicons,
    .sms-edn-metric-card .dashicons,
    .sms-employee-profile-photo .dashicons,
    .sms-exam-profile-icon .dashicons,
    .sms-workflow-settings-bridge > .dashicons,
    .sms-employee-review-card > .dashicons,
    .sms-student-review-card > .dashicons,
    .sms-dashboard-kpi > .dashicons,
    .sms-grading-summary-grid .dashicons,
    .sms-exam-control-card > .dashicons,
    .sms-commercial-card header > .dashicons,
    .sms-task-page-title > .dashicons,
    .sms-form-head-icon,
    .sms-document-icon,
    .sms-erp-module-icon
) {
    width: 30px !important;
    height: 30px !important;
    font-size: 21px !important;
    line-height: 1 !important;
}
.sms-v290-professional-ui .sms-v290-main :is(
    .sms-student-profile-placeholder,
    .sms-employee-profile-photo,
    .sms-uifile-avatar,
    .sms-result-school-mark
) {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
}
.sms-v290-professional-ui .sms-v290-main :is(
    .sms-task-page-title,
    .sms-erp-module-identity,
    .sms-student-profile-identity,
    .sms-employee-profile-identity
) :is(h1, h2, p) {
    min-width: 0;
    overflow-wrap: anywhere;
}

/* Legacy login variants are also kept responsive for sites upgraded from older templates. */
.sms-school-login-page.sms-v290-login :is(.sms-school-login-copy h1, .sms-login-card h2, .sms-access-card h2) {
    font-size: clamp(23px, 3vw, 30px) !important;
    line-height: 1.2 !important;
}
.sms-school-login-page.sms-v290-login .sms-login-backdrop-word {
    max-width: 100%;
    font-size: clamp(54px, 11vw, 120px) !important;
    line-height: .85 !important;
    overflow: hidden;
}
.sms-school-login-page.sms-v290-login :is(.sms-login-illustration, .sms-login-visual-copy, .sms-login-visual-meta) {
    min-width: 0;
    max-width: 100%;
}

@media (max-width: 780px) {
    .sms-v290-professional-ui .sms-v290-main :is(
        .sms-exam-component-scroll table,
        .sms-front-promotion-table,
        .sms-student-bulk-update-table,
        .sms-marks-entry-grid,
        .sms-optional-subject-matrix,
        .sms-date-schedule-table,
        .sms-simple-assignment-table
    ) {
        min-width: 680px;
    }
}

@media (max-width: 420px) {
    .sms-school-login-page.sms-v290-login .sms-login-brand-row strong {
        font-size: 14px !important;
    }
    .sms-school-login-page.sms-v290-login .sms-login-form-heading h1 {
        font-size: 24px !important;
    }
}

/* ========================================================================
 * EduCore Core v2.9.1 — Submenu Marker, Mobile Viewport & Login Visibility
 * Restores compact sidebar markers after the global icon normalization,
 * removes excess mobile document height, and guarantees login-button contrast.
 * ====================================================================== */

/* The submenu marker is a decorative dot, not a normal Dashicon. Keep its
 * box tiny even though the global icon contract sizes normal icons to 17px. */
.sms-v291-mobile-visibility-hotfix .sms-v291-shell .sms-edn-mega-menu .sms-edn-mega-column > a {
    grid-template-columns: 6px minmax(0, 1fr) !important;
    gap: 8px !important;
}
.sms-v291-mobile-visibility-hotfix .sms-v291-shell .sms-edn-mega-menu .sms-edn-mega-column > a > .dashicons {
    display: block !important;
    align-self: center !important;
    width: 6px !important;
    min-width: 6px !important;
    max-width: 6px !important;
    height: 6px !important;
    min-height: 6px !important;
    max-height: 6px !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    color: transparent !important;
    background: #b7c1d0 !important;
    border: 0 !important;
    border-radius: 999px !important;
    box-shadow: none !important;
    font-size: 0 !important;
    line-height: 0 !important;
}
.sms-v291-mobile-visibility-hotfix .sms-v291-shell .sms-edn-mega-menu .sms-edn-mega-column > a > .dashicons::before {
    display: none !important;
    content: none !important;
}
.sms-v291-mobile-visibility-hotfix .sms-v291-shell .sms-edn-mega-menu .sms-edn-mega-column > a:is(:hover, :focus, .is-active, [aria-current="page"]) > .dashicons {
    background: var(--sms-v280-primary-solid, #4056d6) !important;
}

/* Prevent application pages restored from the mobile drawer/BFCache from
 * retaining a fixed body or accumulating nested 100vh minimum heights. */
html.sms-mobile-nav-open,
body.sms-mobile-nav-open {
    overscroll-behavior: none;
}
body.sms-school-system-screen,
body.sms-school-system-screen .sms-system-page,
body.sms-school-system-screen .sms-v291-mobile-visibility-hotfix {
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
    background: var(--sms-v280-bg, #f7f8fc) !important;
}

@media (max-width: 900px) {
    html,
    body.sms-school-system-screen {
        min-height: 100% !important;
        height: auto !important;
        margin: 0 !important;
        background: var(--sms-v280-bg, #f7f8fc) !important;
    }
    body.sms-school-system-screen .sms-system-page,
    .sms-v291-mobile-visibility-hotfix,
    .sms-v291-mobile-visibility-hotfix .sms-v291-shell {
        min-height: 100svh !important;
        height: auto !important;
    }
    .sms-v291-mobile-visibility-hotfix .sms-v291-main {
        width: 100% !important;
        max-width: 100% !important;
        min-height: calc(100svh - var(--sms-v285-header-offset, 72px)) !important;
        overflow-x: hidden !important;
        background: var(--sms-v280-bg, #f7f8fc) !important;
    }
    .sms-v291-mobile-visibility-hotfix .sms-v291-main > .sms-front-body {
        min-height: 0 !important;
        max-width: 100% !important;
        overflow-x: hidden !important;
    }
    .sms-v291-mobile-visibility-hotfix .sms-v291-shell .sms-top-module-nav.sms-v280-sidebar {
        top: 0 !important;
        bottom: 0 !important;
        height: 100svh !important;
        min-height: 0 !important;
        max-height: 100svh !important;
        overscroll-behavior: contain;
    }
    .sms-v291-mobile-visibility-hotfix .sms-v291-shell .sms-v280-nav-list {
        min-height: 0 !important;
        overscroll-behavior: contain;
    }
}

@media (max-width: 640px) {
    .sms-v291-mobile-visibility-hotfix .sms-v291-main {
        padding-left: 10px !important;
        padding-right: 10px !important;
        padding-bottom: max(24px, env(safe-area-inset-bottom)) !important;
    }
    .sms-v291-mobile-visibility-hotfix .sms-v291-main::after {
        content: none !important;
        display: none !important;
    }
}

/* The custom login button sits outside .sms-v280-main, so its text contrast
 * must be explicit rather than inherited from normal workspace buttons. */
.sms-school-login-page.sms-v291-login .sms-login-submit,
.sms-school-login-page.sms-v291-login button.sms-login-submit {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    background: var(--sms-primary, #203aa6) !important;
    background-image: none !important;
    border-color: var(--sms-primary, #203aa6) !important;
    opacity: 1 !important;
    visibility: visible !important;
    text-shadow: none !important;
}
.sms-school-login-page.sms-v291-login .sms-login-submit > *,
.sms-school-login-page.sms-v291-login .sms-login-submit .dashicons,
.sms-school-login-page.sms-v291-login .sms-login-submit .dashicons::before {
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    opacity: 1 !important;
    visibility: visible !important;
}
.sms-school-login-page.sms-v291-login .sms-login-submit:is(:hover, :focus, :active) {
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    background: color-mix(in srgb, var(--sms-primary, #203aa6) 88%, #000) !important;
    border-color: color-mix(in srgb, var(--sms-primary, #203aa6) 88%, #000) !important;
}

@media (max-width: 640px) {
    .sms-school-login-page.sms-v291-login {
        min-height: 100svh !important;
        height: 100svh !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
    }
    .sms-school-login-page.sms-v291-login .sms-school-login-panel {
        min-height: 100svh !important;
        height: auto !important;
    }
    .sms-school-login-page.sms-v291-login .sms-login-submit {
        width: 100% !important;
        min-width: 0 !important;
    }
}


/* ========================================================================
 * EduCore Core v2.9.2 — Responsive Shell Stability Hotfix
 * Breaks the mobile header/brand ResizeObserver feedback loop and defines one
 * deterministic compact-shell contract for browser resizing and real devices.
 * ====================================================================== */

@media (max-width: 900px) {
    .sms-v292-responsive-shell-stability .sms-v292-shell {
        --sms-v280-topbar-height: 64px !important;
        --sms-v284-header-offset: 64px !important;
        --sms-v285-header-offset: 64px !important;
        min-height: 100svh !important;
        height: auto !important;
        overflow: visible !important;
    }

    /* The toolbar has a fixed compact height. Its children may never feed a
     * measured height back into the toolbar or move the application downward. */
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-top-appbar.sms-v280-topbar {
        position: fixed !important;
        inset: 0 0 auto 0 !important;
        top: 0 !important;
        right: 0 !important;
        bottom: auto !important;
        left: 0 !important;
        display: flex !important;
        flex-flow: row nowrap !important;
        align-items: center !important;
        justify-content: flex-start !important;
        width: 100% !important;
        height: 64px !important;
        min-height: 64px !important;
        max-height: 64px !important;
        margin: 0 !important;
        padding: 8px 10px !important;
        overflow: visible !important;
        transform: none !important;
        contain: none !important;
        box-sizing: border-box !important;
    }

    /* At mobile widths the brand is a normal toolbar child. It must use its
     * own compact size, never the measured global header-offset variable. */
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-brand {
        position: static !important;
        inset: auto !important;
        display: flex !important;
        flex: 0 1 auto !important;
        width: auto !important;
        min-width: 0 !important;
        max-width: min(170px, 38vw) !important;
        height: 44px !important;
        min-height: 44px !important;
        max-height: 44px !important;
        margin: 0 !important;
        padding: 4px 6px !important;
        overflow: hidden !important;
        transform: none !important;
        box-sizing: border-box !important;
    }
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-brand-copy {
        min-width: 0 !important;
    }
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-brand-copy strong {
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        white-space: nowrap !important;
    }

    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-mobile-menu-toggle,
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-topbar-search,
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-topbar-tools {
        position: static !important;
        top: auto !important;
        bottom: auto !important;
        transform: none !important;
    }
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-topbar-search {
        min-width: 38px !important;
        flex: 0 1 52px !important;
    }
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-topbar-tools {
        flex: 0 0 auto !important;
        margin-left: auto !important;
    }

    /* Main content starts exactly once below the toolbar. The v2.8.5 spacer is
     * retained but made deterministic so no nested viewport heights accumulate. */
    .sms-v292-responsive-shell-stability .sms-v292-main {
        position: relative !important;
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        min-height: calc(100svh - 64px) !important;
        height: auto !important;
        margin: 0 !important;
        padding: 0 14px max(24px, env(safe-area-inset-bottom)) !important;
        overflow-x: hidden !important;
        overflow-y: visible !important;
        transform: none !important;
        box-sizing: border-box !important;
    }
    .sms-v292-responsive-shell-stability .sms-v292-main::before {
        display: block !important;
        width: 100% !important;
        height: 82px !important;
        min-height: 82px !important;
        max-height: 82px !important;
        flex: none !important;
    }
    .sms-v292-responsive-shell-stability .sms-v292-main > .sms-front-body {
        width: 100% !important;
        max-width: 100% !important;
        min-height: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: visible !important;
        box-sizing: border-box !important;
    }

    /* The drawer is the only full-height fixed mobile surface. */
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-top-module-nav.sms-v280-sidebar {
        position: fixed !important;
        inset: 0 auto 0 0 !important;
        top: 0 !important;
        bottom: 0 !important;
        width: min(320px, 88vw) !important;
        min-width: 0 !important;
        max-width: 88vw !important;
        height: 100svh !important;
        min-height: 100svh !important;
        max-height: 100svh !important;
        margin: 0 !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        transform: translate3d(-105%, 0, 0) !important;
        box-sizing: border-box !important;
    }
    body.sms-mobile-nav-open .sms-v292-responsive-shell-stability .sms-v292-shell .sms-top-module-nav.sms-v280-sidebar {
        transform: translate3d(0, 0, 0) !important;
    }

    body.sms-school-system-screen,
    body.sms-school-system-screen .sms-system-page,
    body.sms-school-system-screen .sms-v292-responsive-shell-stability {
        min-height: 100svh !important;
        height: auto !important;
        margin: 0 !important;
        overflow-x: hidden !important;
        overflow-y: visible !important;
    }
}

@media (max-width: 640px) {
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-brand {
        max-width: 118px !important;
    }
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-brand-copy strong {
        font-size: 13px !important;
    }
    .sms-v292-responsive-shell-stability .sms-v292-main {
        padding-right: 10px !important;
        padding-left: 10px !important;
    }
}

/* v2.9.2 final compact-width safeguards. */
@media (max-width: 900px) {
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-top-appbar.sms-v280-topbar > * {
        min-height: 0 !important;
        max-height: 48px !important;
    }
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-brand .sms-top-brand-logo,
    .sms-v292-responsive-shell-stability .sms-v292-shell .sms-v280-brand .sms-top-brand-mark {
        width: 34px !important;
        min-width: 34px !important;
        max-width: 34px !important;
        height: 34px !important;
        min-height: 34px !important;
        max-height: 34px !important;
        object-fit: contain !important;
    }
    html:not(.sms-mobile-nav-open),
    body.sms-school-system-screen:not(.sms-mobile-nav-open) {
        position: static !important;
        top: auto !important;
    }
}


/* ========================================================================
 * EduCore Core v2.9.3 — Mobile Menu Drawer Containment Hotfix
 * The v2.9.2 compact-toolbar child cap also matched the drawer and backdrop,
 * because both are direct header children. Restore independent viewport-sized
 * navigation surfaces and expose only the dedicated mobile menu control.
 * ====================================================================== */
@media (max-width: 900px) {
    .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-top-appbar.sms-v280-topbar {
        -webkit-backdrop-filter: none !important;
        backdrop-filter: none !important;
        filter: none !important;
        contain: none !important;
        transform: none !important;
        overflow: visible !important;
        isolation: isolate !important;
    }

    /* Desktop collapse control must never compete with the mobile drawer button. */
    .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-v280-sidebar-collapse {
        display: none !important;
        visibility: hidden !important;
        pointer-events: none !important;
    }
    .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-mobile-menu-toggle {
        display: grid !important;
        visibility: visible !important;
        pointer-events: auto !important;
    }

    /* Exempt full-screen navigation surfaces from the 48px toolbar-child cap. */
    .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-top-appbar.sms-v280-topbar > .sms-top-module-nav.sms-v280-sidebar {
        position: fixed !important;
        inset: 0 auto 0 0 !important;
        top: 0 !important;
        right: auto !important;
        bottom: 0 !important;
        left: 0 !important;
        z-index: 1220 !important;
        display: block !important;
        width: min(320px, 88vw) !important;
        min-width: 0 !important;
        max-width: 88vw !important;
        height: 100vh !important;
        height: 100svh !important;
        min-height: 100vh !important;
        min-height: 100svh !important;
        max-height: none !important;
        margin: 0 !important;
        padding: 0 12px max(24px, env(safe-area-inset-bottom)) !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        overscroll-behavior: contain !important;
        -webkit-overflow-scrolling: touch !important;
        background: #fff !important;
        border: 0 !important;
        border-right: 1px solid var(--sms-v280-border, #e1e5ee) !important;
        border-radius: 0 !important;
        box-shadow: 18px 0 45px rgba(24, 35, 65, .2) !important;
        transform: translate3d(-105%, 0, 0) !important;
        transition: transform .22s ease !important;
        box-sizing: border-box !important;
        opacity: 1 !important;
        visibility: visible !important;
    }
    body.sms-mobile-nav-open .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-top-appbar.sms-v280-topbar > .sms-top-module-nav.sms-v280-sidebar {
        transform: translate3d(0, 0, 0) !important;
    }

    .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-top-appbar.sms-v280-topbar > .sms-mobile-nav-overlay {
        position: fixed !important;
        inset: 0 !important;
        top: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        left: 0 !important;
        z-index: 1210 !important;
        display: block !important;
        width: 100vw !important;
        min-width: 100vw !important;
        max-width: none !important;
        height: 100vh !important;
        height: 100svh !important;
        min-height: 100vh !important;
        min-height: 100svh !important;
        max-height: none !important;
        margin: 0 !important;
        padding: 0 !important;
        border: 0 !important;
        border-radius: 0 !important;
        background: rgba(15, 23, 42, .48) !important;
        transform: none !important;
        box-sizing: border-box !important;
        touch-action: none !important;
    }
    .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-top-appbar.sms-v280-topbar > .sms-mobile-nav-overlay[hidden] {
        display: none !important;
    }
    body.sms-mobile-nav-open .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-top-appbar.sms-v280-topbar > .sms-mobile-nav-overlay {
        display: block !important;
        opacity: 1 !important;
        pointer-events: auto !important;
        visibility: visible !important;
    }

    .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-mobile-nav-head {
        position: sticky !important;
        top: 0 !important;
        z-index: 3 !important;
        display: flex !important;
        align-items: center !important;
        justify-content: space-between !important;
        min-height: 64px !important;
        max-height: none !important;
        margin: 0 -12px 10px !important;
        padding: max(8px, env(safe-area-inset-top)) 14px 8px !important;
        background: #fff !important;
        border-bottom: 1px solid var(--sms-v280-border, #e1e5ee) !important;
        box-sizing: border-box !important;
    }
    .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-v280-nav-list {
        width: 100% !important;
        min-height: 0 !important;
        padding-bottom: max(20px, env(safe-area-inset-bottom)) !important;
        overflow: visible !important;
    }
}

@media (prefers-reduced-motion: reduce) and (max-width: 900px) {
    .sms-v293-mobile-menu-drawer-hotfix .sms-v293-shell .sms-top-module-nav.sms-v280-sidebar {
        transition: none !important;
    }
}

/* ========================================================================
 * EduCore Core v2.10.1 — Sidebar Submenu Header & Scroll Containment Hotfix
 * Long accordion menus previously remained CSS Grid children inside a
 * viewport-constrained navigation list. When an expanded group contained many
 * submenu columns, the grid auto tracks could shrink while the submenu content
 * overflowed its track, allowing following parent headings and Quick Actions
 * to paint over the open submenu. Use a strict vertical flex flow so every
 * expanded group contributes its complete rendered height on desktop and in
 * the mobile drawer.
 * ====================================================================== */
.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    align-content: normal !important;
    justify-content: flex-start !important;
    gap: 3px !important;
}

.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list > .sms-edn-nav-group {
    position: relative !important;
    display: flex !important;
    flex: 0 0 auto !important;
    flex-direction: column !important;
    align-items: stretch !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    isolation: isolate !important;
}

.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list > .sms-edn-nav-group > .sms-edn-nav-trigger {
    position: relative !important;
    z-index: 1 !important;
    flex: 0 0 auto !important;
    width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 42px !important;
    max-height: none !important;
    box-sizing: border-box !important;
}

.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list > .sms-edn-nav-group > .sms-edn-mega-menu {
    position: static !important;
    inset: auto !important;
    z-index: auto !important;
    float: none !important;
    clear: both !important;
    flex: 0 0 auto !important;
    order: 2 !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    contain: none !important;
    transform: none !important;
    box-sizing: border-box !important;
}

.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list > .sms-edn-nav-group:not(.is-open) > .sms-edn-mega-menu,
.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell.is-sidebar-collapsed .sms-v280-nav-list > .sms-edn-nav-group > .sms-edn-mega-menu {
    display: none !important;
}

.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list > .sms-edn-nav-group.is-open > .sms-edn-mega-menu,
.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list > .sms-edn-nav-group.is-open:hover > .sms-edn-mega-menu,
.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list > .sms-edn-nav-group.is-open:focus-within > .sms-edn-mega-menu {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 1px !important;
    visibility: visible !important;
    opacity: 1 !important;
    pointer-events: auto !important;
}

/* Keep compact desktop navigation closed even when the active group retains is-open. */
.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell.is-sidebar-collapsed .sms-v280-nav-list > .sms-edn-nav-group.is-open > .sms-edn-mega-menu {
    display: none !important;
}

.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-edn-mega-menu > .sms-edn-mega-column {
    position: static !important;
    display: flex !important;
    flex: 0 0 auto !important;
    flex-direction: column !important;
    align-items: stretch !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    box-sizing: border-box !important;
}

.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-edn-mega-menu > .sms-edn-mega-column > a {
    position: relative !important;
    flex: 0 0 auto !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 31px !important;
    height: auto !important;
    max-height: none !important;
    box-sizing: border-box !important;
}

.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-edn-mega-menu > .sms-edn-mega-column > a > span:last-child,
.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-edn-mega-menu > .sms-edn-mega-column > a b,
.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-sidebar-actions a > span:last-child {
    min-width: 0 !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
}

.sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list > .sms-v280-sidebar-actions {
    position: static !important;
    flex: 0 0 auto !important;
    clear: both !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    box-sizing: border-box !important;
}

@media (min-width: 901px) {
    .sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-top-module-nav.sms-v280-sidebar {
        overflow: hidden !important;
    }
    .sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list {
        flex: 1 1 auto !important;
        min-height: 0 !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        overscroll-behavior: contain !important;
        -webkit-overflow-scrolling: touch !important;
    }
}

@media (max-width: 900px) {
    .sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-top-appbar.sms-v280-topbar > .sms-top-module-nav.sms-v280-sidebar {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
    }
    .sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-v280-nav-list {
        flex: 0 0 auto !important;
        width: 100% !important;
        min-height: 0 !important;
        height: auto !important;
        max-height: none !important;
        overflow: visible !important;
    }
    .sms-v2101-sidebar-submenu-flow-hotfix .sms-v2101-shell .sms-mobile-nav-head {
        flex: 0 0 auto !important;
    }
}


/* ========================================================================
 * EduCore Core v2.11.1 — Post-save blank-space containment
 * The former flow pseudo-element depended on a runtime header measurement.
 * A stale or enlarged value could reserve almost one viewport after redirects.
 * Use the fixed toolbar token directly and keep the workspace in normal flow.
 * ====================================================================== */
.sms-v2111-post-save-grade-sheet-hotfix .sms-v285-main {
    padding-top: calc(var(--sms-v280-topbar-height, 72px) + 14px) !important;
    min-height: 100vh !important;
}
.sms-v2111-post-save-grade-sheet-hotfix .sms-v285-main::before {
    content: none !important;
    display: none !important;
    width: 0 !important;
    height: 0 !important;
    min-height: 0 !important;
    flex: 0 0 0 !important;
}
.sms-v2111-post-save-grade-sheet-hotfix .sms-v285-main > .sms-front-notice,
.sms-v2111-post-save-grade-sheet-hotfix .sms-v285-main > .sms-academic-context-bar,
.sms-v2111-post-save-grade-sheet-hotfix .sms-v285-main > .sms-front-body {
    margin-top: 0 !important;
}
@media (max-width: 900px) {
    .sms-v2111-post-save-grade-sheet-hotfix .sms-v285-main {
        padding-top: calc(64px + 12px + env(safe-area-inset-top, 0px)) !important;
        min-height: 100svh !important;
    }
}
@media print {
    .sms-v2111-post-save-grade-sheet-hotfix .sms-v285-main { padding-top: 0 !important; min-height: 0 !important; }
}
