/
aliyyyada
/
FrontendAdminPanel
Обзор
Документация
Войти
/
aliyyyada
/
FrontendAdminPanel
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/pages/admin/AdminPage.module.css
1 184 строки
26 KB
Алина
initial commit
15 июн 2026, 18:49
15 июн 2026, 18:49
7512c1b
Код
Авторство
О чём код?
.app { display: flex; min-height: 100vh; background: var(--gray-bg); } .sidebar { display: none; } .main { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-width: 0; } .header { background: var(--gray-bg); padding: 14px 28px; display: flex; align-items: center; gap: 16px; border-bottom: 1px solid var(--gray-border); flex-shrink: 0; } .logo { width: 48px; height: 48px; border-radius: 50%; background: var(--white); border: 2px solid var(--gray-border); display: flex; align-items: center; justify-content: center; flex-shrink: 0; overflow: hidden; } .logoImg { width: 100%; height: 100%; object-fit: cover; } .headerNav { display: flex; align-items: center; gap: 4px; background: var(--white); border-radius: 24px; padding: 6px 8px; border: 1px solid var(--gray-border); } .navBtn { padding: 8px 16px; border-radius: 20px; font-size: 13px; font-weight: 600; font-family: var(--font-main); color: var(--dark-text); white-space: nowrap; transition: background 0.15s; } .navBtn:hover { background: var(--gray-bg); } .navBtnActive { text-decoration: underline; text-underline-offset: 3px; } .headerRight { display: flex; align-items: center; gap: 12px; margin-left: auto; } .userName { font-size: 14px; font-weight: 500; white-space: nowrap; } .logoutBtn { width: 38px; height: 38px; border-radius: var(--radius-sm); background: var(--blue); color: var(--white); font-size: 16px; font-weight: 700; display: flex; align-items: center; justify-content: center; transition: background 0.2s; } .logoutBtn:hover { background: var(--blue-dark); } .docsBtn { width: 34px; height: 34px; border-radius: var(--radius-sm); background: transparent; color: #9ca3af; display: flex; align-items: center; justify-content: center; transition: color 0.2s, background 0.2s; flex-shrink: 0; } .docsBtn:hover { color: var(--blue); background: rgba(45,60,192,0.07); } .docMenuItem { display: block; width: 100%; text-align: left; padding: 10px 14px; font-size: 13px; font-weight: 500; color: var(--dark-text); font-family: var(--font-main); background: none; border-bottom: 1px solid var(--gray-border); transition: background 0.15s; } .docMenuItem:last-child { border-bottom: none; } .docMenuItem:hover { background: var(--gray-bg); color: var(--blue); } .content { flex: 1; overflow: hidden; display: flex; flex-direction: column; min-height: 0; } .card { background: var(--white); border-radius: var(--radius-lg); padding: 20px; box-shadow: var(--shadow-sm); } .cardCompact { padding: 14px 16px; } .cardTitle { font-size: 15px; font-weight: 500; margin-bottom: 12px; } .spinner { width: 32px; height: 32px; border: 3px solid var(--gray-border); border-top-color: var(--blue); border-radius: 50%; animation: spin 0.7s linear infinite; margin: 24px auto; } @keyframes spin { to { transform: rotate(360deg); } } .emptyText { text-align: center; color: var(--gray-text); font-size: 13px; padding: 32px 0; } .dashBody { flex: 1; display: grid; grid-template-columns: 440px 1fr; gap: 20px; padding: 20px 28px 24px; overflow: hidden; min-height: 0; } .leftCol { display: flex; flex-direction: column; gap: 16px; overflow-y: auto; } .rightCol { display: flex; flex-direction: column; overflow: hidden; min-height: calc(100vh - 400px); max-height: calc(100vh - 130px); align-self: start; } .calHeader { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; } .calNavBtn { width: 24px; height: 24px; border-radius: 50%; background: var(--dark-text); color: var(--white); font-size: 12px; display: flex; align-items: center; justify-content: center; transition: opacity 0.2s; } .calNavBtn:hover { opacity: 0.7; } .calMonthLabel { font-size: 12px; font-weight: 500; letter-spacing: 0.5px; } .calGrid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; } .calDayName { text-align: center; font-size: 9px; font-weight: 400; color: var(--gray-text); padding: 3px 0; } .calDay { aspect-ratio: 1; border-radius: 50%; font-size: 11px; font-weight: 500; color: var(--dark-text); display: flex; align-items: center; justify-content: center; transition: all 0.15s; font-family: var(--font-main); cursor: pointer; } .calDay:hover { background: var(--gray-bg); } .calDayToday { background: var(--blue) !important; color: var(--white) !important; } .calDaySelected { background: rgba(45,60,192,0.15) !important; color: var(--blue) !important; } .dateChip { display: inline-block; background: var(--gray-bg); border-radius: 20px; padding: 4px 14px; font-size: 11px; font-weight: 500; color: var(--gray-text); margin-bottom: 12px; } .lessonList { display: flex; flex-direction: column; gap: 12px; } .lessonRow { display: flex; align-items: center; gap: 14px; } .lessonNum { font-size: 22px; font-weight: 700; color: var(--orange); min-width: 48px; } .lessonInfo { display: flex; flex-direction: column; gap: 2px; } .lessonTime { font-size: 18px; font-weight: 500; } .lessonTeacher { font-size: 11px; color: var(--gray-text); } .appTabs { display: flex; border-bottom: 1px solid var(--gray-border); margin: -20px -20px 0; padding: 0 20px; } .appTab { padding: 14px 20px; font-size: 13px; font-weight: 500; font-family: var(--font-main); color: var(--gray-text); border-bottom: 3px solid transparent; transition: all 0.2s; } .appTabActive { color: var(--dark-text); border-bottom-color: var(--dark-text); } .appList { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; overflow-y: auto; flex: 1; } .dateGroup { font-size: 12px; font-weight: 400; color: var(--gray-text); padding: 8px 0 4px; text-align: center; } .appCard { background: var(--white); border: 1px solid var(--gray-border); border-radius: var(--radius-md); padding: 12px 14px; display: flex; flex-direction: column; gap: 5px; transition: box-shadow 0.2s; } .appCard:hover { box-shadow: var(--shadow-sm); } .appName { font-size: 16px; font-weight: 600; } .appMeta { display: flex; flex-direction: column; gap: 2px; font-size: 12px; } .metaRow { display: inline-flex; align-items: center; gap: 5px; } .appActions { display: flex; align-items: center; gap: 8px; margin-top: 2px; } .commentIconBtn { display: flex; align-items: center; opacity: 0.85; transition: opacity 0.2s; } .commentIconBtn:hover { opacity: 1; } .declineBtn { margin-left: auto; padding: 7px 14px; border-radius: var(--radius-sm); background: var(--gray-bg); color: var(--gray-text); font-size: 12px; font-weight: 500; font-family: var(--font-main); border: 1px solid var(--gray-border); transition: all 0.2s; } .declineBtn:hover { background: rgba(229,62,62,0.08); color: var(--error); border-color: var(--error); } .acceptBtn { padding: 7px 18px; border-radius: var(--radius-sm); background: var(--blue); color: var(--white); font-size: 12px; font-weight: 500; font-family: var(--font-main); transition: background 0.2s; } .acceptBtn:hover { background: var(--blue-dark); } .commentBox { background: var(--gray-bg); border-radius: var(--radius-sm); padding: 10px; display: flex; flex-direction: column; gap: 6px; border: 1px solid var(--gray-border); } .commentLabel { font-size: 14px; font-weight: 500; } .commentInput { width: 100%; border: 1px solid var(--gray-border); border-radius: var(--radius-sm); padding: 8px 10px; font-size: 12px; font-family: var(--font-main); resize: none; outline: none; background: var(--white); } .commentInput:focus { border-color: var(--blue); } .commentInput::placeholder { color: var(--gray-text); } .commentDoneBtn { align-self: flex-end; padding: 7px 18px; background: var(--blue); color: var(--white); border-radius: var(--radius-sm); font-size: 12px; font-weight: 500; font-family: var(--font-main); letter-spacing: 0.5px; } .commentDoneBtn:hover { background: var(--blue-dark); } .commentReadonly { font-size: 12px; color: var(--gray-text); font-style: italic; padding: 4px 0; } .mgmtWrapper { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-height: 0; } .mgmtTabs { display: flex; gap: 8px; padding: 16px 28px 0; flex-shrink: 0; flex-wrap: wrap; } .mgmtTab { padding: 8px 18px; border-radius: 20px; font-size: 13px; font-weight: 500; font-family: var(--font-main); color: var(--dark-text); background: var(--white); border: 1px solid var(--gray-border); transition: all 0.15s; } .mgmtTab:hover { border-color: var(--blue); color: var(--blue); } .mgmtTabActive { background: var(--blue); color: var(--white); border-color: var(--blue); } .mgmtBody { flex: 1; padding: 16px 28px 24px; overflow: hidden; display: flex; min-height: 0; } .splitPanel { display: grid; grid-template-columns: 440px 1fr; gap: 20px; width: 100%; overflow: hidden; } .referralWrapper, .invoicesWrapper { display: grid; grid-template-columns: 440px 1fr; gap: 20px; width: 100%; padding: 20px 28px 24px; overflow: hidden; flex: 1; min-height: 0; } .listPanel { background: var(--white); border-radius: var(--radius-lg); padding: 16px; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; gap: 10px; overflow: hidden; } .searchRow { display: flex; align-items: center; position: relative; } .searchInput { width: 100%; padding: 10px 38px 10px 14px; border-radius: 20px; border: 1px solid var(--gray-border); background: var(--gray-bg); font-size: 13px; font-family: var(--font-main); outline: none; transition: border-color 0.2s; } .searchInput:focus { border-color: var(--blue); } .searchIcon { position: absolute; right: 12px; display: flex; align-items: center; pointer-events: none; } .addBtn { width: 100%; padding: 12px; background: var(--blue); color: var(--white); border-radius: var(--radius-md); font-size: 13px; font-weight: 500; font-family: var(--font-main); transition: background 0.2s; } .addBtn:hover { background: var(--blue-dark); } .listScroll { flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; } .listItem { display: flex; align-items: center; gap: 8px; padding: 12px 14px; border-radius: var(--radius-md); background: var(--white); border: 1px solid var(--gray-border); cursor: pointer; transition: all 0.15s; } .listItem:hover { border-color: var(--blue); } .listItemActive { background: var(--gray-bg); border-color: var(--gray-border); } .listItemMain { font-size: 13px; font-weight: 400; flex: 1; } .listItemSub { font-size: 11px; color: var(--gray-text); } .listAvatar { width: 42px; height: 42px; border-radius: 50%; background: var(--gray-bg); border: 1px solid var(--gray-border); overflow: hidden; flex-shrink: 0; display: flex; align-items: center; justify-content: center; } .listAvatar img { width: 100%; height: 100%; object-fit: cover; } .listAvatarPlaceholder { width: 22px; height: 22px; opacity: 0.35; } .deleteCircleBtn { width: 26px; height: 26px; border-radius: 50%; background: var(--gray-bg); border: 1px solid var(--gray-border); color: var(--gray-text); font-size: 18px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; transition: all 0.2s; line-height: 1; padding-bottom: 1px; } .deleteCircleBtn:hover { background: rgba(229,62,62,0.1); border-color: var(--error); color: var(--error); } .groupNum { font-size: 20px; font-weight: 700; color: var(--orange); min-width: 44px; } .detailPanel { background: var(--white); border-radius: var(--radius-lg); padding: 20px; box-shadow: var(--shadow-sm); overflow-y: auto; display: flex; flex-direction: column; gap: 0; max-width: 640px; width: 100%; align-self: start; } .detailHeader { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; flex-shrink: 0; } .tariffRow { display: flex; align-items: center; gap: 8px; } .tariffLabel { font-size: 13px; font-weight: 500; color: var(--dark-text); } .iconBtn { display: flex; align-items: center; opacity: 0.85; transition: opacity 0.2s; } .iconBtn:hover { opacity: 1; } .editBtn { padding: 9px 20px; background: var(--blue); color: var(--white); border-radius: var(--radius-md); font-size: 13px; font-weight: 500; font-family: var(--font-main); transition: background 0.2s; } .editBtn:hover:not(:disabled) { background: var(--blue-dark); } .editBtn:disabled { opacity: 0.6; } .detailForm { flex: 1; } .detailPanelWide { max-width: none; } .profileArea { display: flex; align-items: flex-start; gap: 16px; margin-bottom: 4px; } .profileNameBlock { flex: 1; min-width: 0; } .formGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; } .formCol { display: flex; flex-direction: column; gap: 0; } .twoCol { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; } .photoPlaceholder { width: 128px; height: 128px; background: var(--gray-bg); border-radius: var(--radius-md); border: 1px dashed var(--gray-border); overflow: hidden; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .avatarDetail { width: 100%; height: 100%; object-fit: cover; } .fieldGroup { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; } .fieldLabel { font-size: 11px; font-weight: 400; color: var(--gray-text); letter-spacing: 0.2px; } .fieldInput { padding: 9px 12px; border: 1px solid var(--gray-border); border-radius: var(--radius-sm); background: var(--gray-input); font-size: 13px; font-family: var(--font-main); color: var(--dark-text); outline: none; transition: border-color 0.2s; width: 100%; } .fieldInput:focus { border-color: var(--blue); background: var(--white); } .fieldInput:disabled { color: var(--dark-text); cursor: default; } .fieldInputError { border-color: #ef4444 !important; } .fieldErrText { font-size: 11px; color: #ef4444; margin-top: 3px; display: block; } .fieldSelect { padding: 9px 12px; border: 1px solid var(--gray-border); border-radius: var(--radius-sm); background: var(--gray-input); font-size: 13px; font-family: var(--font-main); color: var(--dark-text); outline: none; width: 100%; cursor: pointer; } .fieldSelect:focus { border-color: var(--blue); } .kppToggle { display: flex; align-items: center; gap: 20px; padding: 4px 0; } .kppOption { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 500; cursor: pointer; } .kppOption input[type="radio"] { accent-color: var(--blue); width: 15px; height: 15px; } .detailName { font-size: 18px; font-weight: 500; margin-bottom: 4px; } .detailPhone { font-size: 13px; color: var(--gray-text); } .scheduleBlock, .studentsBlock { background: var(--gray-bg); border-radius: var(--radius-md); padding: 14px; margin-bottom: 12px; } .blockTitle { font-size: 13px; font-weight: 700; margin-bottom: 10px; } .scheduleAddRow { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; } .timeInput { padding: 6px 8px; border: 1px solid var(--gray-border); border-radius: var(--radius-sm); font-size: 12px; font-family: var(--font-main); background: var(--white); outline: none; width: 90px; } .daySelect { padding: 6px 8px; border: 1px solid var(--gray-border); border-radius: var(--radius-sm); font-size: 12px; font-family: var(--font-main); background: var(--white); outline: none; flex: 1; } .addCircleBtn { width: 28px; height: 28px; border-radius: 50%; background: var(--blue); color: var(--white); font-size: 18px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; transition: background 0.2s; } .addCircleBtn:hover { background: var(--blue-dark); } .scheduleRow { display: flex; align-items: center; gap: 8px; font-size: 13px; padding: 4px 0; border-bottom: 1px solid var(--gray-border); } .scheduleRow:last-child { border-bottom: none; } .wdayChip { background: var(--white); border: 1px solid var(--gray-border); border-radius: 8px; padding: 2px 8px; font-size: 11px; font-weight: 600; } .deleteSmallBtn { margin-left: auto; font-size: 11px; color: var(--gray-text); transition: color 0.2s; } .deleteSmallBtn:hover { color: var(--error); } .studentsHeader { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; } .countChip { background: var(--white); border: 1px solid var(--gray-border); border-radius: 10px; padding: 2px 8px; font-size: 11px; font-weight: 600; } .studentSmallRow { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12px; padding: 5px 0; border-bottom: 1px solid var(--gray-border); color: var(--dark-text); } .studentSmallRow:last-child { border-bottom: none; } .studentSmallInfo { display: flex; flex-direction: column; gap: 1px; min-width: 0; } .studentSmallName { font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .tariffPriceRow { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 16px 0; } .priceBox { background: var(--gray-bg); border-radius: var(--radius-md); padding: 14px; display: flex; flex-direction: column; gap: 6px; align-items: center; } .priceLbl { font-size: 11px; font-weight: 800; color: var(--gray-text); text-align: center; } .priceVal { font-size: 18px; font-weight: 500; text-align: center; } .referralDetail { background: var(--white); border-radius: var(--radius-lg); padding: 20px; box-shadow: var(--shadow-sm); overflow-y: auto; max-width: 600px; width: 100%; align-self: start; } .referralHeader { display: flex; align-items: center; gap: 16px; margin-bottom: 20px; } .referralList { display: flex; flex-direction: column; gap: 10px; } .referralRow { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: var(--gray-bg); border-radius: var(--radius-md); gap: 12px; } .refName { font-size: 13px; font-weight: 400; flex: 1; } .payBonusBtn { padding: 8px 16px; background: var(--orange); color: var(--white); border-radius: var(--radius-md); font-size: 12px; font-weight: 500; font-family: var(--font-main); transition: background 0.2s; } .payBonusBtn:hover:not(:disabled) { background: var(--orange-dark); } .payBonusBtn:disabled { opacity: 0.5; } .bonusPaidBtn { padding: 8px 16px; background: var(--gray-border); color: var(--gray-text); border-radius: var(--radius-md); font-size: 12px; font-weight: 500; font-family: var(--font-main); } .bonusDate { font-size: 10px; color: var(--gray-text); text-align: right; margin-top: 2px; } .invoiceDetail { background: var(--white); border-radius: var(--radius-lg); padding: 20px; box-shadow: var(--shadow-sm); overflow-y: auto; display: flex; flex-direction: column; gap: 16px; max-width: 680px; width: 100%; align-self: start; } .invoiceStudentHeader { display: flex; align-items: flex-start; justify-content: space-between; } .newInvoiceCard { background: var(--gray-bg); border-radius: var(--radius-md); padding: 16px; } .amountRow { display: flex; align-items: center; gap: 6px; } .rubleSign { font-size: 13px; font-weight: 400; color: var(--gray-text); } .issueBtn { display: block; margin: 12px auto 0; padding: 10px 24px; background: var(--blue); color: var(--white); border-radius: var(--radius-md); font-size: 13px; font-weight: 500; font-family: var(--font-main); transition: background 0.2s; } .issueBtn:hover:not(:disabled) { background: var(--blue-dark); } .issueBtn:disabled { opacity: 0.5; } .invoiceList { display: flex; flex-direction: column; gap: 8px; } .invoiceRow { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: var(--gray-bg); border-radius: var(--radius-md); } .invoiceInfo { flex: 1; display: flex; flex-direction: column; gap: 2px; } .invoiceService { font-size: 14px; font-weight: 600; } .invoiceAmount { font-size: 12px; font-weight: 400; color: var(--dark-text); } .invoiceDeadline { font-size: 11px; color: #e07b00; font-weight: 500; } .invoiceStatus { font-size: 11px; color: var(--gray-text); } .confirmPayBtn { padding: 8px 14px; background: var(--blue); color: var(--white); border-radius: var(--radius-md); font-size: 12px; font-weight: 500; font-family: var(--font-main); white-space: nowrap; transition: background 0.2s; } .confirmPayBtn:hover { background: var(--blue-dark); } .paidBtn { padding: 8px 14px; background: var(--gray-border); color: var(--gray-text); border-radius: var(--radius-md); font-size: 12px; font-weight: 500; font-family: var(--font-main); white-space: nowrap; } .deleteInvBtn { width: 26px; height: 26px; border-radius: 50%; background: var(--gray-bg); border: 1px solid var(--gray-border); color: var(--gray-text); font-size: 18px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; transition: all 0.2s; line-height: 1; padding-bottom: 1px; } .deleteInvBtn:hover { background: rgba(229,62,62,0.1); border-color: var(--error); color: var(--error); } .modalOverlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); display: flex; align-items: center; justify-content: center; z-index: 1000; } .modalBox { background: var(--white); border-radius: var(--radius-lg); padding: 28px; min-width: 380px; max-width: 600px; width: 90%; max-height: 90vh; overflow-y: auto; position: relative; box-shadow: var(--shadow-lg); } .modalClose { position: absolute; top: 14px; right: 16px; font-size: 16px; color: var(--gray-text); transition: color 0.2s; } .modalClose:hover { color: var(--dark-text); } .modalTitle { font-size: 17px; font-weight: 700; margin-bottom: 4px; } .modalSubtitle { font-size: 13px; color: var(--gray-text); margin-bottom: 12px; } .modalGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; margin-bottom: 16px; } .primaryBtn { width: 100%; padding: 13px; background: var(--blue); color: var(--white); border-radius: var(--radius-md); font-size: 14px; font-weight: 700; font-family: var(--font-main); margin-top: 16px; transition: background 0.2s; } .primaryBtn:hover:not(:disabled) { background: var(--blue-dark); } .primaryBtn:disabled { opacity: 0.6; } .errorText { color: var(--error); font-size: 12px; margin-top: 4px; } .pendingBadge { display: inline-block; margin-left: 8px; padding: 2px 8px; background: #fff3cd; color: #856404; border: 1px solid #ffc107; border-radius: 10px; font-size: 11px; font-weight: 700; vertical-align: middle; } .invoiceFormHeader { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; } .pendingInvRow { display: flex; gap: 8px; align-items: flex-end; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--gray-border); } .studentSearchBox { position: relative; margin-bottom: 8px; } .studentDropdown { position: absolute; top: 100%; left: 0; right: 0; background: var(--white); border: 1px solid var(--gray-border); border-radius: var(--radius-sm); z-index: 100; max-height: 180px; overflow-y: auto; box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .studentDropdownItem { padding: 8px 12px; cursor: pointer; font-size: 13px; display: flex; justify-content: space-between; align-items: center; } .studentDropdownItem:hover { background: var(--gray-bg); } .phoneHint { color: var(--gray-text); font-size: 11px; } .groupHint { color: var(--accent, #5c6bc0); font-size: 11px; font-weight: 600; margin-left: 4px; } .bellWrapper { position: relative; } .bellBtn { position: relative; background: none; border: none; cursor: pointer; padding: 6px 8px; border-radius: var(--radius-sm, 6px); display: flex; align-items: center; } .bellBtn:hover { background: var(--gray-border); } .bellBadge { position: absolute; top: -2px; right: -2px; background: #e53935; color: #fff; font-size: 10px; font-weight: 700; min-width: 16px; height: 16px; border-radius: 8px; display: flex; align-items: center; justify-content: center; padding: 0 3px; line-height: 1; } .notifPanel { position: absolute; top: calc(100% + 8px); right: 0; width: 340px; max-height: 420px; background: var(--white, #fff); border: 1px solid var(--gray-border); border-radius: var(--radius-md, 10px); box-shadow: 0 8px 24px rgba(0,0,0,.12); z-index: 1000; display: flex; flex-direction: column; overflow: hidden; } .notifHeader { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid var(--gray-border); flex-shrink: 0; } .notifTitle { font-weight: 600; font-size: 14px; } .notifRefreshBtn { background: none; border: none; cursor: pointer; font-size: 16px; color: var(--gray-text); padding: 2px 6px; border-radius: 4px; } .notifRefreshBtn:hover { background: var(--gray-bg); } .notifList { overflow-y: auto; flex: 1; } .notifItem { padding: 10px 16px; border-bottom: 1px solid var(--gray-border); cursor: default; } .notifItem:last-child { border-bottom: none; } .notifUnread { background: #f0f4ff; } .notifRead { background: var(--white, #fff); } .notifText { font-size: 13px; color: var(--dark-text); line-height: 1.4; } .notifDate { font-size: 11px; color: var(--gray-text); margin-top: 3px; } .fieldLabelDisabled { color: var(--gray-text); } .fieldInputDimmed { background: var(--gray-bg) !important; color: var(--gray-text) !important; }