.admin-shell { display: flex; height: 100vh; min-height: 100vh; background-color: #f5f7fa; overflow: hidden; } .admin-sidebar { width: 220px; height: 100vh; flex: none; background-color: #304156; transition: width 0.3s ease; display: flex; flex-direction: column; overflow: hidden; } .admin-shell--collapsed .admin-sidebar { width: 64px; } .admin-sidebar-header { display: flex; align-items: center; justify-content: space-between; padding: 16px; border-bottom: 1px solid #3d4e5f; } .admin-brand { display: flex; align-items: center; gap: 8px; text-decoration: none; color: #fff; overflow: hidden; } .brand-mark { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; background-color: #409eff; border-radius: 4px; font-size: 18px; font-weight: 700; flex-shrink: 0; } .brand-text { font-size: 16px; font-weight: 600; white-space: nowrap; } .collapse-btn { color: #bfcbd9; cursor: pointer; font-size: 20px; flex-shrink: 0; } .collapse-btn:hover { color: #fff; } .admin-menu { --el-menu-bg-color: transparent; --el-menu-text-color: #bfcbd9; --el-menu-active-color: #409eff; --el-menu-hover-bg-color: #263445; flex: 1; min-height: 0; border-right: none; background-color: transparent; overflow-y: auto; overflow-x: hidden; } .admin-sidebar-footer { display: grid; flex: none; gap: 10px; padding: 12px; border-top: 1px solid #3d4e5f; background: rgba(16, 24, 39, 0.18); } .admin-shell--collapsed .admin-sidebar-footer { padding: 10px 8px; } .sidebar-notification { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 32px; padding: 0 10px; border: 1px solid rgba(64, 158, 255, 0.35); border-radius: 8px; color: #d7dfec; text-decoration: none; transition: background-color 0.2s, border-color 0.2s; } .sidebar-notification:hover, .sidebar-notification.router-link-active { background-color: rgba(64, 158, 255, 0.14); border-color: rgba(64, 158, 255, 0.8); color: #fff; } .admin-shell--collapsed .sidebar-notification { padding: 0; } .sidebar-notification-icon { position: relative; display: grid; width: 20px; height: 20px; place-items: center; } .sidebar-notification-text { font-size: 13px; font-weight: 700; } .sidebar-badge { position: absolute; top: -8px; right: -13px; min-width: 16px; height: 16px; padding: 0 4px; border: 2px solid #304156; border-radius: 999px; background: #ef4444; color: #fff; font-size: 10px; font-style: normal; font-weight: 800; line-height: 12px; text-align: center; box-sizing: border-box; } .sidebar-status { display: flex; align-items: center; justify-content: center; gap: 7px; width: 100%; min-height: 30px; padding: 0 10px; border: 1px solid; border-radius: 8px; color: #d7dfec; cursor: pointer; transition: background-color 0.2s, border-color 0.2s; } .sidebar-status:hover { background-color: rgba(255, 255, 255, 0.08); } .admin-shell--collapsed .sidebar-status { padding: 0; } .sidebar-user { display: flex; align-items: center; gap: 10px; min-width: 0; width: 100%; padding: 8px; border-radius: 10px; cursor: pointer; transition: background-color 0.2s; } .sidebar-user:hover { background-color: rgba(255, 255, 255, 0.08); } .admin-shell--collapsed .sidebar-user { justify-content: center; padding: 8px 0; } .sidebar-user-text { display: grid; min-width: 0; gap: 2px; } .sidebar-user-text strong { overflow: hidden; color: #fff; font-size: 13px; line-height: 18px; text-overflow: ellipsis; white-space: nowrap; } .sidebar-user-text small { overflow: hidden; color: #8fa0ba; font-size: 12px; line-height: 16px; text-overflow: ellipsis; white-space: nowrap; } .admin-menu:not(.el-menu--collapse) { width: 100%; } :deep(.el-menu) { background-color: transparent; } :deep(.el-sub-menu__title) { color: #bfcbd9; } :deep(.el-sub-menu__title:hover) { background-color: #263445; } :deep(.el-sub-menu.is-active > .el-sub-menu__title) { color: #409eff; } :deep(.el-menu-item) { color: #bfcbd9; } :deep(.el-menu-item:hover) { background-color: #263445; } :deep(.el-menu-item.is-active) { color: #409eff; background-color: #263445; } :deep(.el-menu--inline) { background-color: #263445; } :deep(.el-menu--inline .el-menu-item) { height: 46px; background-color: #263445; font-size: 14px; } :deep(.el-menu--inline .el-menu-item:hover), :deep(.el-menu--inline .el-menu-item.is-active) { background-color: #1f2d3d; } .menu-item-label { min-width: 0; } .menu-item-badge { margin-left: auto; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: #f43f5e; color: #ffffff; font-size: 11px; font-style: normal; font-weight: 700; line-height: 18px; text-align: center; } :deep(.el-menu--collapse .menu-item-badge) { position: absolute; top: 6px; right: 5px; min-width: 8px; width: 8px; height: 8px; padding: 0; border: 2px solid #304156; border-radius: 50%; color: transparent; font-size: 0; line-height: 0; } :global(.admin-menu-popper) { --el-menu-bg-color: #304156; --el-menu-text-color: #bfcbd9; --el-menu-active-color: #409eff; --el-menu-hover-bg-color: #263445; } :global(.admin-menu-popper .el-menu) { border-right: none; background-color: #304156; } :global(.admin-menu-popper .el-menu-item) { color: #bfcbd9; } :global(.admin-menu-popper .el-menu-item:hover), :global(.admin-menu-popper .el-menu-item.is-active) { color: #409eff; background-color: #263445; } .admin-workspace { flex: 1; min-width: 0; min-height: 0; height: 100vh; display: flex; flex-direction: column; overflow: hidden; } .status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; } .status-text { font-size: 13px; color: inherit; font-weight: 500; } :deep(.el-dropdown-menu__item .status-dot) { margin-right: 8px; } .admin-main { flex: 1; min-height: 0; padding: 18px 24px 24px; overflow-y: auto; } :global(.force-password-dialog) { max-width: calc(100vw - 32px); } .force-password-form { display: grid; gap: 2px; }