/* Scoped to authenticated vertical pages; Dcat forms, actions and login retain their behavior. */
body.sandu-admin { font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif; font-size: 14px; color: #333; background: #f1f3f5; }
.sandu-admin .sandu-sidebar { position: fixed; inset: 0 auto 0 0; width: 180px; z-index: 1040; background: rgb(0,20,40); color: #c4cfda; display: flex; flex-direction: column; overflow: hidden; transition: transform .18s ease; }
.sandu-admin .sandu-brand { height: 50px; display: flex; align-items: center; gap: 10px; padding: 0 16px; color: white; border-bottom: 1px solid #193047; font-size: 15px; font-weight: 600; white-space: nowrap; }
.sandu-admin .sandu-brand { flex-shrink: 0; }
.sandu-admin .sandu-navigation { padding: 4px 8px 28px; overflow-y: auto; flex: 1; min-height: 0; }
.sandu-admin .sandu-menu-search { position: relative; margin: 12px 10px 6px; }
.sandu-admin .sandu-menu-search i { position: absolute; left: 9px; top: 10px; color: #8196ac; font-size: 12px; }
.sandu-admin .sandu-menu-search input { display: block; width: 100%; height: 32px; background: #102c46; border: 1px solid #203c55; color: #fff; border-radius: 4px; padding: 5px 8px 5px 27px; font-size: 12px; }
.sandu-admin .sandu-menu-search input::placeholder { color: #91a6bb; }
.sandu-admin .sandu-menu-empty { color: #91a6bb; padding: 14px 10px; font-size: 12px; }
.sandu-admin .sandu-navigation [hidden], .sandu-admin .sandu-home-page [hidden] { display: none !important; }
.sandu-admin .sandu-home, .sandu-admin .sandu-menu-heading { display: flex; align-items: center; gap: 10px; width: 100%; border: 0; border-radius: 3px; background: transparent; padding: 11px 13px; color: #c4cfda; font: inherit; text-align: left; cursor: pointer; }
.sandu-admin .sandu-menu-heading { margin-top: 4px; color: #f2f5f8; }
.sandu-admin .sandu-chevron { margin-left: auto; font-size: 12px; transition: transform .18s; }
.sandu-admin .sandu-menu-items a { display: block; padding: 9px 12px 9px 38px; line-height: 20px; color: #acbdce; border-radius: 3px; }
.sandu-admin .sandu-menu-items a:hover, .sandu-admin .sandu-home:hover, .sandu-admin .sandu-menu-heading:hover { background: #12324e; color: #fff; }
.sandu-admin .sandu-navigation a.is-active { background: #1890ff; color: #fff; }
.sandu-admin .sandu-menu-group.is-collapsed .sandu-menu-items { display: none; }
.sandu-admin .sandu-menu-group.is-collapsed .sandu-chevron { transform: rotate(-90deg); }
.sandu-admin .sandu-navbar { position: fixed; top: 0; right: 0; left: 180px; z-index: 1030; height: 50px; background: #fff; box-shadow: 0 1px 4px #00142812; display: flex; justify-content: space-between; align-items: center; padding: 0 22px 0 14px; }
.sandu-admin .sandu-navbar-left, .sandu-admin .sandu-navbar-right { display: flex; align-items: center; height: 100%; gap: 14px; }
.sandu-admin .sandu-navbar-right > .nav { flex-direction: row; align-items: center; height: 50px; margin: 0; padding: 0; }
.sandu-admin .sandu-navbar .nav-link { padding: 8px; }
.sandu-admin .sandu-navbar .dropdown-user { height: 50px; position: relative; }
.sandu-admin .sandu-navbar .dropdown-user-link { display: flex; align-items: center; gap: 9px; height: 50px; margin: 0; padding: 0 5px; line-height: 20px; white-space: nowrap; }
.sandu-admin .sandu-navbar .dropdown-user-link .user-nav { display: flex !important; flex-direction: row; align-items: center; float: none; margin: 0; padding: 0; line-height: 20px; }
.sandu-admin .sandu-navbar .dropdown-user-link .user-name { display: block; max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; line-height: 20px; margin: 0; padding: 0; }
.sandu-admin .sandu-navbar .dropdown-user-link .user-status { display: none; }
.sandu-admin .sandu-navbar .dropdown-user-link > span { display: flex; align-items: center; flex: 0 0 28px; width: 28px; height: 28px; margin: 0; padding: 0; }
.sandu-admin .sandu-navbar .dropdown-user-link img { display: block; width: 28px !important; height: 28px !important; max-width: 28px; max-height: 28px; object-fit: cover; border-radius: 50%; }
.sandu-admin .sandu-navbar .dropdown-user > .dropdown-menu { top: 100%; margin-top: 0; }
.sandu-admin .sandu-sidebar-toggle { border: 0; background: transparent; color: #555; padding: 8px; cursor: pointer; }
.sandu-admin .sandu-current-page { color: #444; font-size: 14px; }
.sandu-admin .sandu-trial-label { font-size: 12px; color: #8b9199; white-space: nowrap; }
.sandu-admin .app-content.content { margin-left: 180px !important; padding-top: 50px !important; }
.sandu-admin .content-wrapper { margin: 0 !important; padding: 16px 18px !important; }
.sandu-admin .content-header { margin: 0; padding: 0; }
.sandu-admin .content-header section { padding: 2px 0 14px; }
.sandu-admin .content-header h1 { margin: 0; font-size: 18px; line-height: 26px; font-weight: 500; }
.sandu-admin .content-header h1 small { font-size: 12px; color: #909399; margin-left: 10px; }
.sandu-admin .content-body { padding: 0; }
.sandu-admin .card { border: 1px solid #e8ebef; border-radius: 3px; box-shadow: none; margin-bottom: 16px; }
.sandu-admin .card-header { padding: 12px 16px; border-bottom: 1px solid #ebeef5; }
.sandu-admin .card-body { padding: 16px; }
.sandu-admin .card-title { font-size: 15px; }
.sandu-admin .btn { border-radius: 4px; font-size: 13px; min-height: 32px; padding: 6px 15px; line-height: 18px; box-shadow: none; }
.sandu-admin .btn-primary, .sandu-admin .btn-primary.btn-outline { background-color: #1890ff; border-color: #1890ff; color: #fff !important; }
.sandu-admin .btn-primary:hover { background-color: #087ee9; border-color: #087ee9; }
.sandu-admin .form-control:not(textarea) { min-height: 32px; height: 32px; padding: 4px 11px; border-radius: 4px; font-size: 13px; }
.sandu-admin .select2-container .select2-selection--single { min-height: 32px; height: 32px; border-radius: 4px; }
.sandu-admin .table { color: #333; font-size: 13px; }
.sandu-admin .table thead th { background: #f7f8fa; color: #606266; font-weight: 500; border-bottom: 1px solid #ebeef5; padding: 11px 12px; white-space: nowrap; }
.sandu-admin .table tbody td { padding: 10px 12px; border-color: #ebeef5; vertical-align: middle; }
.sandu-admin .table tbody tr:hover { background: #f5f9fe; }
.sandu-admin .table .btn { min-height: 26px; padding: 3px 8px; }
.sandu-admin .box-body { background: #fff; }
.sandu-admin .grid__actions__ { white-space: nowrap; }
.sandu-admin .pagination .page-link { font-size: 13px; }
.sandu-admin .sandu-workspace { display: flex; align-items: flex-start; gap: 14px; }
.sandu-admin .sandu-main-panel { min-width: 0; flex: 1; }
.sandu-admin .sandu-schools { flex: 0 0 205px; width: 205px; background: #fff; border: 1px solid #e8ebef; border-radius: 3px; min-height: 490px; }
.sandu-admin .sandu-schools-heading { display: flex; align-items: center; justify-content: space-between; width: 100%; background: #fff; border: 0; border-bottom: 1px solid #ebeef5; padding: 13px 14px; font-size: 14px; cursor: pointer; color: #333; }
.sandu-admin .sandu-schools-heading span > i { color: #909399; margin-right: 7px; }
.sandu-admin .sandu-schools-content { padding: 12px 8px; }
.sandu-admin .sandu-school-search { position: relative; margin: 0 3px 11px; }
.sandu-admin .sandu-school-search > i { position: absolute; left: 10px; top: 9px; color: #aaa; }
.sandu-admin .sandu-school-search > input { width: 100%; padding-left: 29px; }
.sandu-admin .sandu-school-disabled { display: flex; align-items: center; gap: 5px; color: #909399; font-size: 12px; font-weight: normal; margin: 0 5px 12px; cursor: pointer; }
.sandu-admin .sandu-school-disabled input { margin: 0; }
.sandu-admin .sandu-school-all, .sandu-admin .sandu-tree-link { display: flex; align-items: flex-start; gap: 7px; line-height: 20px; padding: 8px 9px; color: #606266; font-size: 13px; border-radius: 3px; }
.sandu-admin .sandu-tree-link > i, .sandu-admin .sandu-school-all > i { margin-top: 3px; color: #a1a9b1; flex-shrink: 0; }
.sandu-admin .sandu-tree-link > span { overflow-wrap: anywhere; }
.sandu-admin .sandu-tree-link > small { color: #aaa; margin-left: auto; white-space: nowrap; }
.sandu-admin .sandu-tree-link:hover, .sandu-admin .sandu-school-all:hover { background: #f5f7fa; }
.sandu-admin .sandu-schools .is-selected { color: #1890ff; background: #e6f3ff; }
.sandu-admin .sandu-school-list, .sandu-admin .sandu-grade-list, .sandu-admin .sandu-class-list { list-style: none; margin: 0; padding: 0; }
.sandu-admin .sandu-grade-list { margin-left: 15px; }
.sandu-admin .sandu-class-list { margin-left: 14px; }
.sandu-admin .sandu-school-empty { font-size: 12px; color: #a1a9b1; padding: 12px 6px; }
.sandu-admin .sandu-schools [hidden] { display: none !important; }
.sandu-admin .sandu-schools.is-collapsed { min-height: 0; }
.sandu-admin .sandu-schools.is-collapsed .sandu-schools-content { display: none; }
.sandu-admin .sandu-sidebar-backdrop { display: none; }
.sandu-admin .sandu-brand { justify-content:center; gap:4px; padding:0; border:0; font-weight:400; }
.sandu-admin .sandu-brand-title { font-size:20px; line-height:23px; }
.sandu-admin .sandu-brand-badge { font-size:12px; line-height:20px; height:20px; padding:0 5px; background:rgba(250,250,250,.55); border-radius:4px; }
.sandu-admin .sandu-navigation { padding:14px 8px 28px; }
.sandu-admin .sandu-home,.sandu-admin .sandu-menu-heading { height:36px; padding:0 20px; margin:0 0 4px; color:#bfcbd9; line-height:14px; }
.sandu-admin .sandu-menu-items a { display:flex; align-items:center; min-height:36px; padding:0 20px 0 40px; margin-bottom:4px; line-height:14px; color:#bfcbd9; }
.sandu-admin .sandu-navigation a.is-active { background:#409eff; color:#fff; }
.sandu-admin .sandu-menu-search[hidden],.sandu-admin .sandu-current-page[hidden] { display:none !important; }
.sandu-admin .sandu-menu-search-toggle { border:0; background:transparent; padding:8px; color:#909399; cursor:pointer; }
.sandu-admin .sandu-navbar-breadcrumbs { display:flex; align-items:center; gap:10px; color:#909399; font-size:14px; }
.sandu-admin .sandu-navbar-breadcrumbs a,.sandu-admin .sandu-navbar-breadcrumbs [aria-current] { color:#606266; }
.sandu-admin .content-header>.sandu-breadcrumbs,.sandu-admin .content-header[data-sandu-index="1"]>section { display:none; }
.sandu-admin .content-wrapper { padding:15px !important; }
.sandu-admin .sandu-workspace { gap:15px; }
.sandu-admin .sandu-schools { flex-basis:250px; width:250px; min-height:calc(100vh - 80px); border:0; border-radius:5px; }
.sandu-admin .sandu-schools .is-selected { color:#409eff; background:#ecf5ff; }
.sandu-admin .sandu-tree-link { font-size:14px; }
.sandu-admin .sandu-breadcrumbs { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; color: #909399; font-size: 12px; line-height: 18px; margin: 0 0 7px; }
.sandu-admin .sandu-breadcrumbs a { color: #606266; }
.sandu-admin .sandu-breadcrumbs a:hover { color: #1890ff; }
.sandu-admin .sandu-page-content { min-width: 0; }
.sandu-admin .sandu-directory-heading { background: #fff; border: 1px solid #e8ebef; border-radius: 4px; padding: 22px; display: flex; gap: 24px; justify-content: space-between; align-items: center; }
.sandu-admin .sandu-directory-heading h2 { font-size: 21px; margin: 0 0 10px; font-weight: 500; color: #303133; }
.sandu-admin .sandu-directory-heading p { margin: 0; font-size: 13px; color: #909399; line-height: 22px; }
.sandu-admin .sandu-directory-search { position: relative; width: 310px; flex-shrink: 0; }
.sandu-admin .sandu-directory-search > i { position: absolute; top: 10px; left: 11px; color: #909399; }
.sandu-admin .sandu-directory-search input { padding-left: 32px; }
.sandu-admin .sandu-directory-search > span { display: block; font-size: 12px; color: #909399; margin-top: 8px; }
.sandu-admin .sandu-directory-tabs { display: flex; flex-wrap: wrap; gap: 6px; padding: 16px 0 3px; }
.sandu-admin .sandu-directory-tabs button { background: transparent; border: 0; border-bottom: 2px solid transparent; color: #606266; cursor: pointer; padding: 9px 16px; font-size: 14px; }
.sandu-admin .sandu-directory-tabs button.is-selected { color: #1890ff; border-color: #1890ff; }
.sandu-admin .sandu-directory-section { margin: 20px 0 26px; }
.sandu-admin .sandu-directory-section h3 { display: flex; align-items: center; gap: 9px; font-size: 16px; color: #303133; margin: 0 0 12px; font-weight: 500; }
.sandu-admin .sandu-directory-section h3 i { color: #6f8baa; font-size: 14px; }
.sandu-admin .sandu-directory-section h3 small { color: #909399; font-size: 12px; font-weight: 400; }
.sandu-admin .sandu-directory-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.sandu-admin .sandu-feature-card { display: flex; flex-direction: column; background: #fff; border: 1px solid #e8ebef; border-radius: 4px; padding: 18px; min-height: 113px; transition: border-color .15s, background-color .15s; }
.sandu-admin .sandu-feature-card:hover { border-color: #91caff; background: #fafdff; }
.sandu-admin .sandu-feature-title { display: flex; align-items: center; justify-content: space-between; font-size: 15px; color: #303133; margin-bottom: 10px; }
.sandu-admin .sandu-feature-title i { color: #b4bdc7; }
.sandu-admin .sandu-feature-description { font-size: 13px; line-height: 21px; color: #909399; }
.sandu-admin .sandu-directory-empty { background: #fff; border: 1px solid #e8ebef; color: #909399; text-align: center; padding: 50px 18px; margin-top: 20px; }
.sandu-admin.sandu-navigation-collapsed .sandu-sidebar { transform: translateX(-100%); }
.sandu-admin.sandu-navigation-collapsed .app-content.content { margin-left: 0 !important; }
.sandu-admin.sandu-navigation-collapsed .sandu-navbar { left: 0; }
.sandu-admin button:focus-visible, .sandu-admin a:focus-visible { outline: 2px solid #1890ff; outline-offset: 2px; }
@media (max-width: 1100px) { .sandu-admin .sandu-schools { flex-basis: 180px; width: 180px; } .sandu-admin .content-wrapper { padding: 14px 12px !important; } }
@media (max-width: 900px) {
    .sandu-admin .sandu-directory-heading { align-items: flex-start; flex-direction: column; }
    .sandu-admin .sandu-directory-search { width: 100%; }
    .sandu-admin .sandu-directory-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .sandu-admin .sandu-sidebar { transform: translateX(-100%); }
    .sandu-admin .app-content.content { margin-left: 0 !important; }
    .sandu-admin .sandu-navbar { left: 0; }
    .sandu-admin.sandu-navigation-open .sandu-sidebar { transform: translateX(0); }
    .sandu-admin.sandu-navigation-open .sandu-sidebar-backdrop { display: block; position: fixed; inset: 0; z-index: 1035; background: #00142866; border: 0; }
}
@media (max-width: 600px) {
    .sandu-admin .sandu-directory-grid { grid-template-columns: minmax(0,1fr); }
    .sandu-admin .sandu-workspace { display: block; }
    .sandu-admin .sandu-schools { width: 100%; min-height: 0; margin-bottom: 12px; }
    .sandu-admin .sandu-schools-content { max-height: 230px; overflow-y: auto; }
    .sandu-admin .sandu-navbar { padding-right: 6px; }
    .sandu-admin .sandu-current-page { max-width: 150px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .sandu-admin .sandu-navbar-right { gap: 4px; }
}
@media print {
    .sandu-admin .sandu-sidebar, .sandu-admin .sandu-navbar, .sandu-admin .sandu-schools { display: none; }
    .sandu-admin .app-content.content { margin-left: 0 !important; padding-top: 0 !important; }
}
