:root { --primary: #3a7cff; --primary-dark: #285fd1; --ink: #1d2635; --muted: #798498; --line: #e7ebf2; --surface: #fff; --canvas: #f2f5f9; --shadow: 0 8px 24px rgba(26, 48, 89, .08); font-family: "Microsoft YaHei", "PingFang SC", Arial, sans-serif; color: var(--ink); }
* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; }
button, input { font: inherit; }
button { cursor: pointer; }
.login-page { min-height: 100vh; background: #f6f8fc; }
.login-layout { min-height: 100vh; display: grid; grid-template-columns: minmax(360px, 1.1fr) minmax(420px, .9fr); }
.login-intro { position: relative; overflow: hidden; padding: 12vh max(8vw, 48px); color: #fff; background: linear-gradient(135deg, #1c4eaf 0%, #367cff 55%, #67a6ff 100%); }
.login-intro::before, .login-intro::after { content: ""; position: absolute; border: 1px solid rgba(255,255,255,.18); border-radius: 50%; }
.login-intro::before { width: 680px; height: 680px; right: -310px; bottom: -340px; }
.login-intro::after { width: 380px; height: 380px; left: -220px; top: -160px; }
.brand-mark { position: relative; z-index: 1; width: 46px; height: 46px; display: inline-flex; justify-content: center; align-items: center; border-radius: 13px; font-size: 25px; font-weight: 800; color: #2e6eed; background: #fff; box-shadow: 0 8px 22px rgba(5, 42, 120, .14); }
.eyebrow { margin: 0 0 10px; color: #8d98aa; font-size: 11px; font-weight: 700; letter-spacing: 1.4px; }
.login-intro .eyebrow { position: relative; z-index: 1; margin-top: 74px; color: rgba(255,255,255,.76); }
.login-intro h1 { position: relative; z-index: 1; max-width: 450px; margin: 0; font-size: clamp(36px, 4vw, 58px); line-height: 1.2; letter-spacing: 2px; }
.intro-copy { position: relative; z-index: 1; max-width: 420px; margin: 28px 0 0; font-size: 16px; line-height: 1.9; color: rgba(255,255,255,.82); }
.intro-lines { position: relative; z-index: 1; display: flex; gap: 8px; margin-top: 54px; }
.intro-lines i { width: 42px; height: 4px; border-radius: 4px; background: rgba(255,255,255,.38); }.intro-lines i:first-child { background: #fff; }
.login-panel { display: flex; align-items: center; justify-content: center; padding: 32px; background: #fff; }
.login-card { width: min(100%, 390px); }.login-card__heading { display: flex; align-items: center; gap: 14px; margin-bottom: 40px; }.brand-mark--small { width: 42px; height: 42px; font-size: 22px; }.login-card h2 { margin: 0 0 4px; font-size: 27px; }.login-card__heading p, .login-hint { margin: 0; color: var(--muted); font-size: 13px; }.field-label { display: block; margin: 20px 0 8px; color: #445066; font-size: 14px; font-weight: 600; }.field-input { width: 100%; height: 48px; padding: 0 14px; border: 1px solid #dce2ec; border-radius: 8px; outline: none; transition: border-color .2s, box-shadow .2s; }.field-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(58,124,255,.12); }.form-message { min-height: 20px; margin: 13px 0 0; color: #e24b4b; font-size: 13px; opacity: 0; }.form-message.is-visible { opacity: 1; }.primary-button { width: 100%; height: 48px; margin-top: 10px; border: 0; border-radius: 8px; color: #fff; font-weight: 700; background: var(--primary); box-shadow: 0 8px 16px rgba(58,124,255,.24); }.primary-button:hover { background: var(--primary-dark); }.primary-button:disabled { cursor: wait; opacity: .68; }.login-hint { margin-top: 20px; text-align: center; }
.portal-page { min-height: 100vh; background: var(--canvas); }.topbar { height: 60px; display: flex; align-items: stretch; padding: 0 32px; background: var(--surface); border-bottom: 1px solid var(--line); box-shadow: 0 2px 8px rgba(31,49,81,.03); }.topbar__brand { display: flex; align-items: center; gap: 10px; padding-right: 28px; color: #1d2b45; font-size: 15px; font-weight: 700; text-decoration: none; white-space: nowrap; }.brand-mark--top { width: 28px; height: 28px; border-radius: 8px; font-size: 16px; }.app-nav { display: flex; align-items: stretch; overflow-x: auto; }.app-nav__item { position: relative; padding: 0 17px; border: 0; color: #596579; background: transparent; font-size: 14px; white-space: nowrap; }.app-nav__item::after { content: ""; position: absolute; right: 16px; bottom: 0; left: 16px; height: 3px; border-radius: 3px 3px 0 0; background: transparent; }.app-nav__item:hover { color: var(--primary); }.app-nav__item.is-active { color: var(--primary); font-weight: 700; }.app-nav__item.is-active::after { background: var(--primary); }.topbar__tools { display: flex; align-items: center; gap: 18px; margin-left: auto; }.welcome-name { color: #667286; font-size: 13px; }.text-button { padding: 6px 0; border: 0; color: #5d6b80; background: transparent; font-size: 13px; }.text-button:hover { color: var(--primary); }.portal-main { max-width: 1440px; margin: 0 auto; padding: 32px 42px 56px; }.page-heading { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 28px; }.page-heading h1 { margin: 0; font-size: 28px; letter-spacing: .4px; }.page-heading p:not(.eyebrow) { margin: 9px 0 0; color: var(--muted); font-size: 14px; }.heading-date { color: #8893a6; font-size: 13px; }.section-title { display: flex; justify-content: space-between; align-items: center; margin: 0 0 14px; }.section-title h2 { margin: 0; font-size: 17px; }.section-title__count { color: #8b96a8; font-size: 13px; }.app-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }.app-card { min-height: 124px; display: flex; align-items: center; gap: 14px; padding: 21px; border: 1px solid transparent; border-radius: 8px; color: var(--ink); text-align: left; background: #fff; box-shadow: var(--shadow); transition: transform .2s, border-color .2s, box-shadow .2s; }.app-card:hover, .app-card.is-selected { border-color: #8cb4ff; transform: translateY(-2px); box-shadow: 0 12px 26px rgba(42,80,143,.14); }.app-card__icon, .menu-icon { flex: 0 0 auto; display: inline-flex; justify-content: center; align-items: center; color: #fff; background: #5f8fff; }.app-card__icon { width: 43px; height: 43px; border-radius: 9px; font-size: 25px; }.app-card__icon--1 { background: #3ac4c0; }.app-card__icon--2 { background: #ff9d55; }.app-card__icon--3 { background: #7e8cf2; }.app-card__icon--4 { background: #e871a4; }.app-card__content { display: grid; gap: 7px; min-width: 0; }.app-card__content strong { font-size: 16px; }.app-card__content small { overflow: hidden; color: #8490a2; font-size: 12px; line-height: 1.5; text-overflow: ellipsis; white-space: nowrap; }.app-card__arrow { margin-left: auto; color: #b2bdcc; font-size: 20px; }.menu-section { margin-top: 36px; padding-top: 25px; border-top: 1px solid #dfe5ee; }.menu-tree { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }.menu-card { min-height: 110px; padding: 18px; border-radius: 8px; background: #fff; box-shadow: var(--shadow); }.menu-card__head { display: flex; align-items: center; gap: 12px; }.menu-icon { width: 30px; height: 30px; border-radius: 7px; font-size: 17px; }.menu-card h3 { margin: 0; font-size: 14px; }.menu-card p { margin: 5px 0 0; color: #98a2b2; font-size: 11px; }.menu-card__children { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }.menu-card__children span { padding: 4px 7px; border-radius: 4px; color: #60718b; background: #f0f4fa; font-size: 11px; }.loading-card, .empty-state { grid-column: 1 / -1; min-height: 110px; display: grid; place-content: center; gap: 7px; border: 1px dashed #ccd6e5; border-radius: 8px; color: #8490a2; text-align: center; background: rgba(255,255,255,.48); }.empty-state strong { color: #536276; font-size: 14px; }.empty-state span { font-size: 12px; }
@media (max-width: 840px) { .login-layout { grid-template-columns: 1fr; }.login-intro { min-height: 280px; padding: 52px 34px; }.login-intro .eyebrow { margin-top: 38px; }.login-intro h1 { font-size: 35px; }.intro-copy, .intro-lines { display: none; }.login-panel { min-height: calc(100vh - 280px); }.topbar { padding: 0 16px; }.topbar__brand { padding-right: 10px; }.topbar__brand > span:last-child, .welcome-name { display: none; }.app-nav__item { padding: 0 12px; }.portal-main { padding: 24px 18px 40px; }.page-heading { align-items: flex-start; flex-direction: column; gap: 12px; }.heading-date { display: none; } }
@media (max-width: 480px) { .login-panel { padding: 25px; }.app-grid { grid-template-columns: 1fr; }.app-card { min-height: 105px; }.topbar__tools { gap: 0; }.topbar { height: 54px; } }


/* 应用菜单页 */
.application-page { background: #eef2f7; }
.application-layout { min-height: calc(100vh - 60px); display: flex; }
.application-sidebar { position: sticky; top: 0; align-self: flex-start; width: 206px; min-height: calc(100vh - 60px); padding: 22px 12px; color: #d4ddeb; background: #2b3448; }
.application-sidebar__title { display: flex; align-items: center; gap: 10px; padding: 0 10px 21px; border-bottom: 1px solid rgba(255, 255, 255, .12); color: #fff; font-size: 15px; }
.sidebar-app-icon { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; color: #fff; background: #4887ff; font-size: 17px; }
.application-sidebar__label { margin: 20px 10px 8px; color: #8491a8; font-size: 11px; font-weight: 700; letter-spacing: 1px; }
.group-nav { display: grid; gap: 4px; }
.group-nav__item { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 40px; padding: 0 11px; border: 0; border-radius: 5px; color: #c9d3e4; text-align: left; background: transparent; font-size: 13px; transition: color .18s, background .18s; }
.group-nav__item > span { width: 17px; color: #96a7c4; text-align: center; font-size: 16px; }
.group-nav__item:hover, .group-nav__item.is-active { color: #fff; background: #3b78eb; }
.group-nav__item.is-active > span { color: #fff; }.sidebar-loading { padding: 14px 10px; color: #99a6bb; font-size: 12px; }
.application-content { flex: 1; min-width: 0; padding: 28px 34px 56px; }
.application-heading { display: flex; justify-content: space-between; align-items: flex-start; max-width: 1440px; margin: 0 auto 22px; }
.application-heading h1 { margin: 0; color: #25334a; font-size: 25px; }.application-heading p:not(.eyebrow) { margin: 8px 0 0; color: #7f8ba0; font-size: 13px; }
.application-back { margin-top: 7px; }.application-groups { max-width: 1440px; margin: 0 auto; display: grid; gap: 16px; }
.application-group { scroll-margin-top: 18px; overflow: hidden; border-radius: 7px; background: #fff; box-shadow: 0 3px 12px rgba(35, 58, 94, .08); }
.application-group__heading { display: flex; align-items: center; gap: 9px; min-height: 47px; padding: 0 20px; border-bottom: 1px solid #e9edf4; color: #35435a; }
.application-group__heading h2 { margin: 0; font-size: 15px; }.application-group__heading > span:last-child { margin-left: auto; color: #a0aabb; font-size: 12px; }.application-group__icon { width: 22px; color: #4a85ef; font-size: 18px; text-align: center; }
.application-page-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 10px; padding: 16px 20px; }
.application-page-card { min-height: 108px; display: grid; place-content: center; gap: 9px; padding: 12px; border: 1px solid transparent; border-radius: 6px; color: #536176; background: #f8faff; font-size: 13px; transition: border-color .18s, transform .18s, box-shadow .18s; }
.application-page-card:hover { transform: translateY(-2px); border-color: #9cbcff; color: #2d68d6; background: #fff; box-shadow: 0 7px 18px rgba(54, 103, 188, .15); }
.application-page-card__icon { width: 39px; height: 39px; display: inline-flex; align-items: center; justify-content: center; justify-self: center; border-radius: 9px; color: #fff; background: #5e8ff6; font-size: 22px; }.application-page-card--1 .application-page-card__icon { background: #3bc2bd; }.application-page-card--2 .application-page-card__icon { background: #f6a254; }.application-page-card--3 .application-page-card__icon { background: #7e8bea; }.application-page-card--4 .application-page-card__icon { background: #e774a3; }
.application-group__empty { padding: 25px 20px; color: #9aa5b5; font-size: 13px; }.page-toast { position: fixed; z-index: 10; bottom: 28px; left: 50%; padding: 11px 17px; border-radius: 6px; color: #fff; background: rgba(35, 46, 67, .92); box-shadow: 0 7px 20px rgba(0,0,0,.16); font-size: 13px; opacity: 0; pointer-events: none; transform: translate(-50%, 12px); transition: opacity .2s, transform .2s; }.page-toast.is-visible { opacity: 1; transform: translate(-50%, 0); }
@media (max-width: 840px) { .application-sidebar { width: 64px; padding: 16px 8px; }.application-sidebar__title { justify-content: center; padding: 0 0 16px; }.application-sidebar__title strong, .application-sidebar__label, .group-nav__item { font-size: 0; }.group-nav__item { justify-content: center; padding: 0; }.group-nav__item > span { width: auto; font-size: 18px; }.application-content { padding: 23px 18px 40px; }.application-page-grid { grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); padding: 14px; }.application-heading { gap: 13px; flex-direction: column; }.application-back { margin: 0; } }
@media (max-width: 480px) { .application-sidebar { display: none; }.application-content { padding: 20px 14px 35px; }.application-page-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }.application-page-card { min-height: 92px; }.application-group__heading { padding: 0 14px; } }


/* 左侧菜单分组与具体页面菜单 */
.group-nav__entry { position: relative; overflow: visible; }
.group-nav__item { justify-content: flex-start; }
.group-nav__item b { overflow: hidden; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; }
.group-nav__item i { margin-left: auto; color: #94a1b8; font-size: 17px; font-style: normal; transition: transform .18s; }
.group-nav__entry.is-open .group-nav__item i, .group-nav__entry:hover .group-nav__item i { color: #fff; transform: rotate(90deg); }
.group-nav__children { max-height: 0; display: grid; gap: 3px; margin: 0 0 0 13px; overflow: hidden; border-left: 1px solid transparent; opacity: 0; transition: max-height .2s ease, opacity .18s ease, margin .2s ease, padding .2s ease; }
.group-nav__entry.is-open .group-nav__children, .group-nav__entry:hover .group-nav__children { max-height: 180px; margin: 3px 0 6px 13px; padding: 2px 0 2px 11px; border-left-color: rgba(154, 181, 232, .42); opacity: 1; }
.group-nav__child { display: flex; align-items: center; gap: 8px; width: 100%; min-height: 33px; padding: 0 8px; border: 0; border-radius: 4px; color: #adb9cd; text-align: left; background: transparent; font-size: 12px; }
.group-nav__child span { width: 14px; color: #91a4c6; font-size: 14px; text-align: center; }.group-nav__child:hover, .group-nav__child.is-current { color: #fff; background: rgba(69, 132, 244, .82); }.group-nav__child:hover span, .group-nav__child.is-current span { color: #fff; }.group-nav__empty { padding: 6px 8px; color: #808da2; font-size: 11px; }
.page-list-content { flex: 1; min-width: 0; max-width: 1440px; margin: 0 auto; padding: 25px 34px 56px; }
.page-breadcrumb { display: flex; align-items: center; gap: 8px; margin-bottom: 18px; color: #8b96a8; font-size: 13px; }.page-breadcrumb button { padding: 0; border: 0; color: #4a80df; background: transparent; font-size: 13px; }.page-breadcrumb strong { color: #4d5b70; font-weight: 600; }
.page-list-panel { overflow: hidden; border-radius: 8px; background: #fff; box-shadow: 0 4px 15px rgba(37, 58, 89, .08); }.page-list-panel__header { display: flex; justify-content: space-between; align-items: flex-start; padding: 25px 28px 20px; border-bottom: 1px solid #e8edf4; }.page-list-panel__header h1 { margin: 0; color: #26354c; font-size: 23px; }.page-list-panel__header p:not(.eyebrow) { margin: 8px 0 0; color: #8490a2; font-size: 13px; }.primary-button--inline { width: auto; min-width: 72px; height: 36px; margin: 0; padding: 0 16px; font-size: 13px; box-shadow: none; }.page-list-toolbar { display: flex; align-items: center; gap: 9px; padding: 16px 28px; background: #fafbfd; }.page-list-toolbar input { width: 240px; height: 34px; padding: 0 10px; border: 1px solid #dce4ef; border-radius: 4px; color: #9da7b7; background: #fff; font-size: 12px; }.page-list-toolbar button { height: 34px; padding: 0 14px; border: 1px solid #dde4ef; border-radius: 4px; color: #9ca6b6; background: #f4f6f9; font-size: 12px; }.page-list-table-wrap { padding: 0 28px 28px; }.page-list-table { width: 100%; border-spacing: 0; border-collapse: collapse; text-align: left; }.page-list-table th { height: 43px; color: #6c788b; font-size: 12px; font-weight: 600; background: #f6f8fb; }.page-list-table th:first-child, .page-list-table td:first-child { padding-left: 16px; }.page-list-table td { height: 180px; border-bottom: 1px solid #edf0f5; color: #7e8a9c; font-size: 12px; }.page-list-empty { display: grid; place-items: center; gap: 9px; min-height: 150px; text-align: center; }.page-list-empty strong { color: #536177; font-size: 14px; }.page-list-empty span { color: #909bab; font-size: 12px; }
@media (max-width: 840px) { .group-nav__item i { display: none; }.group-nav__children { display: none; }.page-list-content { padding: 20px 18px 40px; }.page-list-panel__header { padding: 21px 18px 16px; }.page-list-toolbar, .page-list-table-wrap { padding-right: 18px; padding-left: 18px; }.page-list-toolbar input { width: 100%; }.page-list-toolbar button { display: none; } }
@media (max-width: 480px) { .page-list-content { padding: 17px 14px 30px; }.page-list-panel__header { gap: 14px; flex-direction: column; }.page-list-toolbar { padding: 13px; }.page-list-table-wrap { padding: 0 13px 20px; overflow-x: auto; }.page-list-table { min-width: 560px; } }


/* 通用列表、页签与表单模板 */
.workspace-tabs { height: 35px; display: flex; align-items: stretch; gap: 1px; padding: 0 12px; overflow-x: auto; border-bottom: 1px solid #dfe5ed; background: #f7f9fc; }
.workspace-tab { display: inline-flex; align-items: stretch; flex: 0 0 auto; border-right: 1px solid #e2e7ef; background: #f7f9fc; }.workspace-tab > button { padding: 0 12px; border: 0; color: #738097; background: transparent; font-size: 12px; }.workspace-tab.is-active { position: relative; background: #fff; }.workspace-tab.is-active::before { content: ""; position: absolute; top: 0; right: 0; left: 0; height: 2px; background: #397df2; }.workspace-tab.is-active > button:first-child { color: #3375e7; }.workspace-tab .workspace-tab__close { padding: 0 8px 0 0; color: #a7b0bf; font-size: 15px; }.workspace-tab--home { min-width: 34px; justify-content: center; font-size: 15px; }
.data-layout { min-height: calc(100vh - 95px); }.data-sidebar { min-height: calc(100vh - 95px); }.data-content { flex: 1; min-width: 0; padding: 12px; overflow: hidden; }.data-panel { position: relative; min-height: calc(100vh - 119px); border: 1px solid #e0e5ed; background: #fff; box-shadow: 0 2px 8px rgba(29, 51, 84, .06); }.data-titlebar { min-height: 55px; display: flex; align-items: center; justify-content: space-between; padding: 8px 14px; border-bottom: 1px solid #e5e9ef; }.data-titlebar h1 { margin: 0; color: #2c394c; font-size: 17px; }.data-titlebar p { margin: 4px 0 0; color: #8b95a6; font-size: 11px; }.link-button { border: 0; color: #377be9; background: transparent; font-size: 12px; }
.filter-panel { max-height: 220px; overflow: hidden; border-bottom: 1px solid #e4e9f0; transition: max-height .22s ease, opacity .18s ease; }.filter-panel.is-collapsed { max-height: 0; opacity: 0; }.filter-grid { display: grid; grid-template-columns: repeat(3, minmax(220px, 1fr)); column-gap: 34px; row-gap: 11px; padding: 14px 22px; }.filter-grid label, .form-grid label { display: grid; grid-template-columns: 78px minmax(0, 1fr); align-items: center; gap: 8px; color: #697589; font-size: 12px; }.filter-grid input, .filter-grid select, .form-grid input, .form-grid select, .form-grid textarea { width: 100%; min-height: 31px; padding: 5px 9px; border: 1px solid #dbe1ea; border-radius: 3px; outline: none; color: #354157; background: #fff; font-size: 12px; }.filter-grid input:focus, .filter-grid select:focus, .form-grid input:focus, .form-grid select:focus, .form-grid textarea:focus { border-color: #6c9df4; box-shadow: 0 0 0 2px rgba(57, 125, 242, .1); }
.list-commandbar { min-height: 46px; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 7px 10px; border-bottom: 1px solid #dfe5ed; background: #fbfcfe; }.list-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }.action-button { min-height: 30px; padding: 0 13px; border: 1px solid #cfd8e6; border-radius: 3px; color: #506077; background: #fff; font-size: 12px; }.action-button:hover { border-color: #76a2ef; color: #286bdc; }.action-button.is-primary { border-color: #397df2; color: #fff; background: #397df2; }.action-button.is-danger { border-color: #f0b0b0; color: #d94a4a; }.pagination { display: flex; align-items: center; gap: 8px; color: #788599; white-space: nowrap; font-size: 12px; }.pagination button, .pagination select { height: 28px; border: 1px solid #d8e0eb; border-radius: 3px; color: #657287; background: #fff; }.pagination button { width: 28px; }.pagination button:disabled { opacity: .4; }.pagination select { padding: 0 6px; }
.column-settings-wrap { position: relative; }.column-panel { position: absolute; z-index: 20; top: 36px; right: 0; width: 270px; padding: 10px; border: 1px solid #d9e1ec; border-radius: 5px; background: #fff; box-shadow: 0 10px 28px rgba(27, 49, 83, .18); }.column-panel__title { display: flex; align-items: center; justify-content: space-between; padding: 2px 2px 8px; border-bottom: 1px solid #edf0f4; font-size: 12px; }.column-panel__title button { border: 0; color: #397df2; background: transparent; font-size: 11px; }.column-option { display: grid; grid-template-columns: 1fr 72px; gap: 8px; padding: 7px 2px; border-bottom: 1px solid #f0f2f6; color: #5e6b7f; font-size: 11px; }.column-option label { display: flex; align-items: center; gap: 5px; }
.data-table-scroll { max-width: 100%; height: calc(100vh - 280px); min-height: 340px; overflow: auto; }.data-table { min-width: 100%; border-spacing: 0; border-collapse: separate; table-layout: fixed; color: #4e5b6f; font-size: 12px; }.data-table th, .data-table td { height: 37px; padding: 0 9px; overflow: hidden; border-right: 1px solid #edf0f4; border-bottom: 1px solid #e7ebf1; text-overflow: ellipsis; white-space: nowrap; background: #fff; }.data-table th { position: sticky; z-index: 5; top: 0; color: #5b687b; background: #f4f6f9; font-weight: 600; }.data-table tbody tr:hover td { background: #f5f9ff; }.data-table .is-frozen { position: sticky; z-index: 3; box-shadow: 1px 0 0 #e0e5ed; }.data-table th.is-frozen { z-index: 7; background: #f4f6f9; }.data-table tbody tr:hover td.is-frozen { background: #f5f9ff; }.data-table .is-number { text-align: right; font-variant-numeric: tabular-nums; }.data-table tfoot td { position: sticky; z-index: 5; bottom: 0; color: #d66a28; background: #fff8df; font-weight: 600; }.data-table tfoot td.is-frozen { z-index: 6; background: #fff8df; }.freeze-mark { margin-left: 5px; color: #6f9ded; font-size: 8px; }.table-link { margin-right: 8px; padding: 0; border: 0; color: #397be7; background: transparent; font-size: 11px; }.status-tag { padding: 3px 7px; border-radius: 10px; font-size: 11px; }.status-tag.is-enabled { color: #198c68; background: #e7f7f1; }.status-tag.is-disabled { color: #a26b36; background: #f8efe5; }.table-empty { height: 180px; display: grid; place-items: center; color: #9ba5b5; }
.form-content { padding-top: 10px; }.form-commandbar { display: flex; align-items: center; gap: 7px; min-height: 45px; padding: 7px 12px; border: 1px solid #e0e5ed; border-bottom: 0; background: #fff; }.business-form { display: grid; gap: 7px; }.form-section { overflow: hidden; border: 1px solid #dfe5ed; background: #fff; }.form-section__heading { width: 100%; height: 39px; display: flex; align-items: center; gap: 7px; padding: 0 13px; border: 0; color: #445269; text-align: left; background: #f8fafc; font-size: 13px; }.form-section__heading span { width: 12px; color: #738198; }.form-section__body { display: none; }.form-section.is-open .form-section__body { display: grid; }.form-grid { grid-template-columns: repeat(3, minmax(220px, 1fr)); column-gap: 34px; row-gap: 17px; padding: 22px 24px 28px; }.form-grid label { grid-template-columns: 84px minmax(0, 1fr); }.form-grid label > span { align-self: start; padding-top: 7px; }.form-grid em { margin-left: 2px; color: #e44f4f; font-style: normal; }.form-grid textarea { resize: vertical; }.form-grid__wide { grid-column: span 2; }.form-grid--readonly input { color: #7f8a9b; background: #f5f7fa; }
@media (max-width: 1100px) { .filter-grid, .form-grid { grid-template-columns: repeat(2, minmax(210px, 1fr)); }.list-commandbar { align-items: flex-start; flex-direction: column; }.data-table-scroll { height: calc(100vh - 330px); }.pagination { align-self: flex-end; } }
@media (max-width: 720px) { .data-sidebar { display: none; }.data-content { padding: 7px; }.filter-grid, .form-grid { grid-template-columns: 1fr; padding: 14px; }.filter-grid label, .form-grid label { grid-template-columns: 76px minmax(0, 1fr); }.form-grid__wide { grid-column: auto; }.list-commandbar { padding: 7px; }.pagination { max-width: 100%; overflow-x: auto; align-self: stretch; }.workspace-tabs { padding-left: 4px; }.data-table-scroll { height: calc(100vh - 370px); } }


/* 页签仅占右侧工作区，左侧菜单从顶栏下方开始 */
.application-page > .workspace-tabs { position: absolute; z-index: 12; top: 60px; right: 0; left: 206px; width: auto; }
.data-layout { min-height: calc(100vh - 60px); }
.data-sidebar { min-height: calc(100vh - 60px); }
.data-content { padding-top: 47px; }
.data-content.form-content { padding-top: 45px; }
.application-page:not(.data-page) .application-content { padding-top: 63px; }
@media (max-width: 840px) { .application-page > .workspace-tabs { left: 64px; } }
@media (max-width: 480px) { .application-page > .workspace-tabs { left: 0; }.application-page:not(.data-page) .application-content { padding-top: 58px; } }


/* 列表剩余空间自动伸缩，合计栏固定在列表底部 */
.data-page .data-content { height: calc(100vh - 60px); min-height: 0; display: flex; flex-direction: column; }
.data-page .data-panel { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.data-table-region { flex: 1; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
.data-page .data-table-scroll { flex: 1; height: auto; min-height: 0; overflow: auto; }
.data-summary-scroll { flex: 0 0 37px; height: 37px; overflow: hidden; border-top: 1px solid #eadfae; background: #fff8df; }
.data-summary-table { min-height: 37px; }
.data-summary-table tfoot td { position: static; height: 36px; border-bottom: 0; }
@media (max-width: 1100px) { .data-page .data-table-scroll { height: auto; min-height: 0; } }
@media (max-width: 720px) { .data-page .data-table-scroll { height: auto; min-height: 0; } }


/* 按应用隔离的扁平页签导航 */
.workspace-tabs { height: 44px; min-height: 44px; align-items: stretch; gap: 0; padding: 0 8px 0 0; border-bottom: 1px solid #dce2eb; background: #f3f5f9; }
.workspace-tabs.is-expanded { height: auto; flex-wrap: wrap; }
.workspace-tabs__more { flex: 0 0 24px; width: 24px; padding: 0; border: 0; color: #778397; background: transparent; font-size: 15px; }
.workspace-tab { position: relative; align-items: stretch; border-right: 0; background: transparent; }
.workspace-tab > button { padding: 0 14px; color: #657287; font-size: 14px; }
.workspace-tab--home { min-width: 38px; padding: 0; color: #8b95a5; background: transparent; font-size: 19px; }
.workspace-tab .workspace-tab__close { padding: 0 5px 0 0; color: #a3adbb; font-size: 15px; }
.workspace-tab:hover > button:first-child { color: #3479ea; }
.workspace-tab.is-active { background: transparent; }
.workspace-tab.is-active::before { top: auto; right: 8px; bottom: 0; left: 8px; height: 3px; border-radius: 2px 2px 0 0; background: #347cf0; }
.workspace-tab.is-active > button:first-child { color: #3479ea; font-weight: 600; }
.application-page > .workspace-tabs { min-height: 44px; }
.data-content { padding-top: 56px; }
.data-content.form-content { padding-top: 54px; }
.application-page:not(.data-page) .application-content { padding-top: 72px; }
@media (max-width: 480px) { .workspace-tab > button { padding: 0 9px; font-size: 12px; }.application-page:not(.data-page) .application-content { padding-top: 68px; } }


/* 列设置置于工具栏最右侧，编码作为详情链接 */
.list-commandbar__right { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.column-settings-button { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; padding: 0; border: 1px solid #d3dce8; border-radius: 3px; color: #68768b; background: #fff; font-size: 17px; line-height: 1; }
.column-settings-button:hover, .column-settings-button:focus { border-color: #6f9ff0; color: #3479e8; outline: none; background: #f5f9ff; }
.code-link { max-width: 100%; padding: 0; overflow: hidden; border: 0; color: #2874df; text-overflow: ellipsis; white-space: nowrap; background: transparent; font-size: 12px; text-align: left; }
.code-link:hover { color: #125cc2; text-decoration: underline; }
@media (max-width: 1100px) { .list-commandbar__right { width: 100%; justify-content: flex-end; margin-left: 0; } }


/* 操作提示统一显示在页面中上方 */
.page-toast { z-index: 100; top: 22px; bottom: auto; transform: translate(-50%, -12px); }
.page-toast.is-visible { transform: translate(-50%, 0); }


/* 列设置增加对齐方式 */
.column-panel { width: 360px; }
.column-option { grid-template-columns: minmax(130px, 1fr) 68px 88px; align-items: center; }
.column-option select { width: 100%; height: 27px; padding: 0 5px; border: 1px solid #d9e1ec; border-radius: 3px; color: #5d6b80; background: #fff; font-size: 11px; outline: none; }
.column-option select:focus { border-color: #6f9ff0; }
@media (max-width: 480px) { .column-panel { right: -2px; width: min(340px, calc(100vw - 28px)); }.column-option { grid-template-columns: minmax(110px, 1fr) 62px 80px; } }


/* 手机端统一适配：侧栏抽屉、全宽内容、可滚动页签和工具栏 */
.mobile-menu-toggle { display: none; }
.mobile-menu-overlay { display: none; }
@media (max-width: 768px) {
    body.mobile-menu-open { overflow: hidden; }
    .topbar { height: 52px; padding: 0 8px; }
    .topbar__brand { flex: 0 0 auto; padding-right: 6px; }
    .topbar__brand > span:last-child { display: none; }
    .brand-mark--top { width: 27px; height: 27px; }
    .app-nav { flex: 1; min-width: 0; }
    .app-nav__item { padding: 0 10px; font-size: 12px; }
    .app-nav__item::after { right: 9px; left: 9px; }
    .topbar__tools { flex: 0 0 auto; gap: 7px; margin-left: 5px; }
    .topbar__tools .welcome-name { display: none; }
    .topbar__tools .text-button { font-size: 11px; white-space: nowrap; }
    .mobile-menu-toggle { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 5px; color: #41536f; background: #edf2fa; font-size: 18px; }
    .application-page > .workspace-tabs { top: 52px; left: 0; height: 44px; min-height: 44px; }
    .workspace-tabs { padding-right: 4px; overflow-x: auto; overflow-y: hidden; }
    .workspace-tab { flex: 0 0 auto; }
    .workspace-tab > button { min-height: 43px; }
    .application-layout, .data-layout { min-height: calc(100vh - 52px); }
    .application-sidebar, .data-sidebar { position: fixed; z-index: 40; top: 52px; bottom: 0; left: 0; width: 240px; min-height: 0; display: block; padding: 18px 12px; overflow-y: auto; box-shadow: 8px 0 24px rgba(20, 37, 65, .2); transform: translateX(-102%); transition: transform .22s ease; }
    .mobile-menu-open .application-sidebar { transform: translateX(0); }
    .mobile-menu-overlay { position: fixed; z-index: 35; top: 52px; right: 0; bottom: 0; left: 0; background: rgba(18, 29, 48, .38); }
    .mobile-menu-open .mobile-menu-overlay { display: block; }
    .application-sidebar__title { justify-content: flex-start; padding: 0 8px 16px; }
    .application-sidebar__title strong { display: inline; font-size: 14px; }
    .application-sidebar__label { display: block; margin: 17px 8px 7px; font-size: 11px; }
    .group-nav__item { justify-content: flex-start; padding: 0 10px; font-size: 13px; }
    .group-nav__item > span { width: 17px; font-size: 16px; }
    .group-nav__item b { display: inline; }
    .group-nav__item i { display: inline; }
    .group-nav__children { display: grid; }
    .application-content, .data-content, .page-list-content { width: 100%; max-width: none; margin: 0; }
    .application-page:not(.data-page) .application-content { padding: 56px 12px 20px; }
    .data-page .data-content { height: calc(100vh - 52px); padding: 52px 7px 7px; }
    .data-content.form-content { padding-top: 52px; }
    .data-panel { min-height: 0; }
    .data-titlebar { min-height: 52px; padding: 7px 10px; }
    .data-titlebar h1 { font-size: 16px; }
    .data-titlebar p { max-width: 230px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .filter-panel { max-height: 460px; }
    .filter-panel.is-collapsed { max-height: 0; }
    .filter-grid { grid-template-columns: 1fr; gap: 9px; padding: 12px 10px; }
    .filter-grid label { grid-template-columns: 68px minmax(0, 1fr); }
    .list-commandbar { gap: 6px; padding: 6px; }
    .list-actions { width: 100%; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; }
    .list-actions .action-button { flex: 0 0 auto; }
    .list-commandbar__right { width: 100%; justify-content: space-between; gap: 5px; }
    .pagination { flex: 1; justify-content: flex-end; overflow-x: auto; }
    .column-settings-wrap { flex: 0 0 auto; }
    .column-panel { position: fixed; top: 108px; right: 8px; width: calc(100vw - 16px); max-height: calc(100vh - 124px); overflow-y: auto; }
    .column-option { grid-template-columns: minmax(110px, 1fr) 62px 82px; }
    .data-table-region { min-height: 220px; }
    .data-table th, .data-table td { height: 35px; padding: 0 7px; font-size: 11px; }
    .form-commandbar { position: sticky; z-index: 8; top: 0; flex-wrap: nowrap; overflow-x: auto; }
    .form-commandbar .action-button { flex: 0 0 auto; }
    .form-grid { grid-template-columns: 1fr; gap: 13px; padding: 15px 11px 18px; }
    .form-grid label { grid-template-columns: 74px minmax(0, 1fr); }
    .form-grid__wide { grid-column: auto; }
    .page-toast { top: 12px; width: max-content; max-width: calc(100vw - 28px); text-align: center; }
}


/* 顶栏个人中心入口与个人资料页面 */
.profile-entry { display: inline-flex; align-items: center; min-height: 32px; padding: 0 8px; border: 0; border-radius: 4px; color: #627087; background: transparent; font-size: 13px; }
.profile-entry:hover, .profile-entry.is-active { color: #3478e8; background: #f0f5fe; }
.profile-entry .welcome-name { display: inline; color: inherit; }
.profile-main { max-width: 1080px; margin: 0 auto; padding: 30px 28px 55px; }
.profile-heading { display: flex; align-items: flex-start; gap: 18px; margin-bottom: 22px; }.profile-heading h1 { margin: 0; color: #25334a; font-size: 27px; }.profile-heading p:not(.eyebrow) { margin: 8px 0 0; color: #7f8b9f; font-size: 13px; }.profile-back { margin-top: 2px; padding: 6px 0; border: 0; color: #477bd2; background: transparent; font-size: 13px; }
.profile-overview { display: flex; align-items: center; gap: 18px; padding: 24px 27px; border-radius: 9px; color: #fff; background: linear-gradient(125deg, #326fd9, #5694f3); box-shadow: 0 10px 28px rgba(47, 105, 202, .2); }.profile-avatar-large { width: 64px; height: 64px; display: grid; place-items: center; flex: 0 0 auto; border: 2px solid rgba(255,255,255,.65); border-radius: 50%; color: #3978df; background: #fff; font-size: 25px; font-weight: 700; }.profile-overview h2 { margin: 0 0 8px; font-size: 22px; }.profile-overview p { display: flex; gap: 8px; margin: 0; color: rgba(255,255,255,.8); font-size: 12px; }.profile-overview i { font-style: normal; }
.profile-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 17px; }.profile-card { overflow: hidden; border: 1px solid #e1e7ef; border-radius: 8px; background: #fff; box-shadow: 0 4px 15px rgba(34, 57, 91, .06); }.profile-card > header { padding: 18px 21px 14px; border-bottom: 1px solid #e8edf3; }.profile-card h2 { margin: 0; color: #354258; font-size: 16px; }.profile-card header p { margin: 6px 0 0; color: #929cac; font-size: 11px; }.profile-card--security { grid-column: 1 / -1; }
.profile-details { display: grid; grid-template-columns: 1fr 1fr; margin: 0; padding: 8px 21px 19px; }.profile-details div { min-width: 0; padding: 13px 0; border-bottom: 1px solid #eff2f6; }.profile-details div:nth-child(odd) { padding-right: 15px; }.profile-details dt { margin-bottom: 6px; color: #8b96a7; font-size: 11px; }.profile-details dd { margin: 0; overflow: hidden; color: #47556b; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.contact-form { display: grid; gap: 17px; padding: 21px; }.contact-form label { display: grid; grid-template-columns: 72px minmax(0,1fr); align-items: start; gap: 9px; color: #647187; font-size: 12px; }.contact-form label > span { padding-top: 8px; }.contact-form input { width: 100%; height: 34px; padding: 0 10px; border: 1px solid #d9e1ec; border-radius: 4px; outline: none; color: #3e4c61; }.contact-form input:focus { border-color: #6d9df0; box-shadow: 0 0 0 2px rgba(63,126,234,.1); }.contact-form small { display: block; margin-top: 5px; color: #929dad; font-size: 10px; }.contact-form__actions { padding-left: 81px; }
.security-action { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 20px 21px; }.security-action div { display: grid; gap: 6px; }.security-action strong { color: #46546a; font-size: 13px; }.security-action span { color: #919cac; font-size: 11px; }.danger-button { height: 33px; padding: 0 15px; border: 1px solid #e9a9a9; border-radius: 4px; color: #d74b4b; background: #fff; font-size: 12px; }.danger-button:hover { color: #fff; background: #db5555; }
@media (max-width: 768px) { .topbar__tools .profile-entry .welcome-name { display: inline; max-width: 65px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.profile-entry { padding: 0 5px; font-size: 11px; }.profile-main { padding: 19px 12px 35px; }.profile-heading { gap: 11px; margin-bottom: 15px; }.profile-heading h1 { font-size: 22px; }.profile-overview { padding: 19px 17px; }.profile-avatar-large { width: 52px; height: 52px; font-size: 21px; }.profile-overview h2 { font-size: 18px; }.profile-grid { grid-template-columns: 1fr; gap: 12px; }.profile-card--security { grid-column: auto; }.profile-details { grid-template-columns: 1fr; }.profile-details div:nth-child(odd) { padding-right: 0; }.contact-form { padding: 17px 14px; }.contact-form label { grid-template-columns: 65px minmax(0,1fr); }.contact-form__actions { padding-left: 74px; }.security-action { align-items: flex-start; flex-direction: column; }.danger-button { width: 100%; } }


/* 基础资料选择器：单选、多选、分组 */
body.reference-picker-open { overflow: hidden; }
.reference-picker-overlay { position: fixed; z-index: 200; inset: 0; display: grid; place-items: center; padding: 22px; background: rgba(22, 31, 48, .55); }
.reference-picker { width: min(1120px, 96vw); height: min(680px, 90vh); display: flex; flex-direction: column; overflow: hidden; border-radius: 7px; background: #fff; box-shadow: 0 24px 70px rgba(10, 24, 48, .3); }
.reference-picker__header { flex: 0 0 54px; display: flex; align-items: center; gap: 16px; padding: 0 18px; border-bottom: 1px solid #dfe5ed; }.reference-picker__header > div:first-child { display: flex; align-items: center; gap: 8px; min-width: 170px; }.reference-picker__header h2 { margin: 0; color: #2d394d; font-size: 17px; }.reference-picker__mode { padding: 2px 7px; border-radius: 9px; color: #3c78dc; background: #eaf2ff; font-size: 10px; }.reference-picker__search { display: flex; align-items: center; width: min(390px, 45vw); margin-left: auto; border-bottom: 1px solid #cfd7e3; color: #8994a5; }.reference-picker__search input { flex: 1; min-width: 0; height: 35px; border: 0; outline: none; }.reference-picker__search button { height: 28px; border: 0; color: #3879e7; background: transparent; font-size: 12px; }.reference-picker__close { width: 30px; height: 30px; border: 0; color: #7e899a; background: transparent; font-size: 21px; }
.reference-picker__body { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr); }.reference-picker__body.has-groups { grid-template-columns: 225px minmax(0, 1fr); }.reference-picker__body.has-selected { grid-template-columns: minmax(0, 1fr) 270px; }.reference-picker__body.has-groups.has-selected { grid-template-columns: 210px minmax(0, 1fr) 260px; }
.reference-picker__groups { min-width: 0; overflow-y: auto; border-right: 1px solid #dfe5ed; background: #fbfcfe; }.reference-picker__group-title { padding: 13px 14px 8px; color: #8a95a6; font-size: 11px; }.reference-picker__group-list { display: grid; gap: 2px; padding: 0 8px; }.reference-picker__group-list button { min-height: 35px; display: flex; align-items: center; gap: 7px; padding: 0 9px; border: 0; border-radius: 3px; color: #59677d; text-align: left; background: transparent; }.reference-picker__group-list button.is-active { color: #2f72db; background: #e8f1ff; }
.reference-picker__main { min-width: 0; min-height: 0; display: flex; flex-direction: column; position: relative; }.reference-picker__main.is-loading::after { content: "加载中…"; position: absolute; z-index: 5; inset: 0; display: grid; place-items: center; color: #617087; background: rgba(255,255,255,.68); font-size: 13px; }.reference-picker__table-scroll { flex: 1; min-height: 0; overflow: auto; }.reference-picker table { min-width: 100%; border-spacing: 0; border-collapse: separate; table-layout: fixed; font-size: 12px; }.reference-picker th, .reference-picker td { height: 38px; padding: 0 9px; overflow: hidden; border-right: 1px solid #edf0f4; border-bottom: 1px solid #e5e9ef; color: #4f5b6e; text-align: left; text-overflow: ellipsis; white-space: nowrap; }.reference-picker th { position: sticky; z-index: 2; top: 0; color: #596679; background: #f5f7fa; }.reference-picker tbody tr { cursor: pointer; }.reference-picker tbody tr:hover td, .reference-picker tbody tr.is-selected td { background: #edf5ff; }.reference-picker__selection-cell { width: 40px; text-align: center !important; }.reference-picker__index { width: 46px; text-align: center !important; }.reference-picker__empty { height: 180px !important; color: #929dad !important; text-align: center !important; }
.reference-picker__pagination { flex: 0 0 42px; display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 0 12px; border-top: 1px solid #dfe5ed; color: #748095; font-size: 11px; }.reference-picker__pagination button, .reference-picker__pagination select { height: 27px; border: 1px solid #d4dce8; border-radius: 3px; color: #647187; background: #fff; }.reference-picker__pagination button { width: 28px; }
.reference-picker__selected { min-width: 0; overflow-y: auto; border-left: 1px solid #dfe5ed; }.reference-picker__selected header { height: 43px; display: flex; align-items: center; justify-content: space-between; padding: 0 12px; border-bottom: 1px solid #e5e9ef; color: #5c687b; font-size: 12px; }.reference-picker__selected header button { border: 0; color: #397bea; background: transparent; }.reference-picker__selected-list { display: grid; gap: 5px; padding: 9px; }.reference-picker__selected-list > div { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 9px; border-radius: 4px; background: #f4f7fb; }.reference-picker__selected-list span { min-width: 0; display: grid; gap: 3px; }.reference-picker__selected-list b, .reference-picker__selected-list small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.reference-picker__selected-list b { color: #47556a; font-size: 12px; }.reference-picker__selected-list small { color: #929cad; font-size: 10px; }.reference-picker__selected-list button { border: 0; color: #a0aaba; background: transparent; }.reference-picker__selected-list p { color: #9ba5b4; text-align: center; font-size: 12px; }
.reference-picker__footer { flex: 0 0 54px; display: flex; align-items: center; justify-content: center; gap: 10px; border-top: 1px solid #dfe5ed; }.reference-picker__footer button { min-width: 66px; height: 31px; border: 1px solid #ced7e4; border-radius: 3px; color: #637086; background: #fff; }.reference-picker__footer button.is-primary { border-color: #3c7df0; color: #fff; background: #3c7df0; }
.reference-field { display: flex; min-width: 0; }.reference-field input { border-radius: 3px 0 0 3px; }.reference-field button { flex: 0 0 35px; border: 1px solid #dbe1ea; border-left: 0; border-radius: 0 3px 3px 0; color: #62748f; background: #f8fafc; }.reference-field button:hover { color: #3478e8; background: #edf4ff; }.reference-picker-demo-value { grid-column: 1 / -1; padding: 7px 10px; border: 1px dashed #d5deea; border-radius: 4px; color: #6d798d; background: #fafbfd; font-size: 11px; }
@media (max-width: 768px) { .reference-picker-overlay { padding: 0; }.reference-picker { width: 100vw; height: 100vh; max-height: none; border-radius: 0; }.reference-picker__header { flex-wrap: wrap; height: auto; min-height: 92px; padding: 8px 12px; }.reference-picker__header > div:first-child { min-width: 0; }.reference-picker__search { order: 3; width: 100%; margin: 0; }.reference-picker__body, .reference-picker__body.has-groups, .reference-picker__body.has-selected, .reference-picker__body.has-groups.has-selected { grid-template-columns: 1fr; }.reference-picker__groups { max-height: 115px; border-right: 0; border-bottom: 1px solid #dfe5ed; }.reference-picker__group-list { display: flex; overflow-x: auto; }.reference-picker__group-list button { flex: 0 0 auto; }.reference-picker__selected { max-height: 150px; border-top: 1px solid #dfe5ed; border-left: 0; }.reference-picker__selected-list { display: flex; overflow-x: auto; }.reference-picker__selected-list > div { flex: 0 0 170px; }.reference-picker__main { min-height: 250px; }.reference-picker__footer { flex-basis: 58px; } }


/* 可输入多选引用字段与普通用户页面授权 */
.reference-field--searchable { position: relative; }
.reference-field--searchable .reference-field__input { min-width: 0; border-radius: 3px 0 0 3px; }
.reference-field--searchable .reference-field__clear { flex-basis: 29px; border-radius: 0; }
.reference-field__clear:disabled { cursor: default; color: #bdc5d0; background: #f5f6f8; }
.reference-field__picker { flex-basis: 35px; }
.reference-field__suggestions { position: absolute; z-index: 30; top: calc(100% + 3px); right: 0; left: 0; max-height: 260px; overflow-y: auto; border: 1px solid #d6dfeb; border-radius: 3px; background: #fff; box-shadow: 0 8px 20px rgba(31, 50, 81, .16); }
.reference-field__suggestions button, .reference-field__suggestions p { width: 100%; display: flex; gap: 8px; padding: 8px 10px; border: 0; color: #536176; text-align: left; background: #fff; font-size: 12px; }
.reference-field__suggestions button:hover { background: #edf5ff; }.reference-field__suggestions p { color: #8994a5; }
.user-page-permission-layout { min-height: 430px; display: grid; grid-template-columns: minmax(340px, .9fr) minmax(380px, 1.1fr); }
.user-page-permission-users { overflow: auto; border-right: 1px solid #dfe5ed; }.user-page-permission-users table { width: 100%; border-spacing: 0; border-collapse: collapse; font-size: 12px; }.user-page-permission-users th, .user-page-permission-users td { height: 38px; padding: 0 10px; border-bottom: 1px solid #e7ebf1; color: #516075; text-align: left; }.user-page-permission-users th { color: #627086; background: #f5f7fa; }.user-page-permission-users tr[data-user-id] { cursor: pointer; }.user-page-permission-users tr[data-user-id]:hover td, .user-page-permission-users tr.is-selected td { background: #edf5ff; }
.user-page-permission-tree { min-width: 0; display: flex; flex-direction: column; }.user-page-permission-tree > header { height: 45px; display: flex; align-items: center; justify-content: space-between; padding: 0 12px; border-bottom: 1px solid #dfe5ed; font-size: 12px; }.user-page-permission-tree__body { flex: 1; overflow: auto; padding: 10px 14px; }.user-page-permission-tree__body p { color: #8b96a7; font-size: 12px; }.upp-app { margin-bottom: 10px; }.upp-app > strong { display: block; padding: 6px 0; color: #405068; font-size: 12px; }.upp-node label { display: flex; align-items: center; gap: 7px; min-height: 29px; color: #59687d; font-size: 12px; }
@media (max-width: 860px) { .user-page-permission-layout { grid-template-columns: 1fr; }.user-page-permission-users { max-height: 260px; border-right: 0; border-bottom: 1px solid #dfe5ed; } }

.reference-picker__pagination { order: 0; flex: 0 0 42px; border-top: 0; border-bottom: 1px solid #dfe5ed; background: #fbfcfe; }
.reference-picker__table-scroll { order: 1; }


/* 选择器中间数据、空状态和失败状态默认撑满剩余区域 */
.reference-picker__table-scroll { display: flex; flex-direction: column; }
.reference-picker__table-scroll > table { flex: 0 0 auto; width: 100%; }
.reference-picker__table-scroll > table.is-empty { flex: 1 1 auto; height: 100%; }
.reference-picker__table-scroll > table.is-empty tbody,
.reference-picker__table-scroll > table.is-empty tbody tr { height: 100%; }
.reference-picker__table-scroll > table.is-empty .reference-picker__empty { height: 100% !important; vertical-align: middle; }


/* 组织基础资料：左树右表 */
.org-page-content { min-height: 0; }
.org-page { flex: 1; min-height: 0; display: flex; flex-direction: column; overflow: hidden; border: 1px solid #dfe5ed; background: #fff; }
.org-page__header { flex: 0 0 57px; display: flex; align-items: center; justify-content: space-between; padding: 7px 14px; border-bottom: 1px solid #e3e8ef; }.org-page__header h1 { margin: 0; color: #2e3b50; font-size: 17px; }.org-page__header p { margin: 4px 0 0; color: #8d98a8; font-size: 11px; }
.org-toolbar { flex: 0 0 45px; display: flex; align-items: center; gap: 7px; padding: 6px 9px; overflow-x: auto; border-bottom: 1px solid #dfe5ed; background: #fafbfd; }.org-toolbar > label { display: flex; align-items: center; gap: 6px; margin-left: 7px; color: #68758a; white-space: nowrap; font-size: 11px; }.org-toolbar select { height: 30px; min-width: 90px; border: 1px solid #d5deea; border-radius: 3px; color: #526078; background: #fff; }
.org-split { flex: 1; min-height: 0; display: grid; grid-template-columns: 235px minmax(0, 1fr); }
.org-tree-panel { min-height: 0; overflow: hidden; border-right: 1px solid #dce3ec; background: #fbfcfe; }.org-tree-search { height: 42px; display: flex; align-items: center; gap: 5px; padding: 0 9px; border-bottom: 1px solid #e5e9ef; color: #8995a7; }.org-tree-search input { min-width: 0; flex: 1; height: 28px; border: 1px solid #d7dfe9; border-radius: 3px; padding: 0 7px; outline: none; }.org-tree { height: calc(100% - 42px); overflow: auto; padding: 6px 4px; }.org-tree-node > button { width: 100%; height: 32px; display: flex; align-items: center; gap: 6px; padding-right: 8px; border: 0; border-radius: 3px; color: #526077; text-align: left; background: transparent; white-space: nowrap; }.org-tree-node > button:hover { background: #edf3fc; }.org-tree-node > button.is-active { color: #2d71dd; background: #deebff; }.org-tree-node > button span { width: 11px; color: #7890b2; }.org-loading, .org-empty { color: #909bab; text-align: center; font-size: 12px; }
.org-table-panel { min-width: 0; min-height: 0; display: flex; flex-direction: column; }.org-table-heading { flex: 0 0 42px; display: flex; align-items: center; justify-content: space-between; padding: 0 11px; border-bottom: 1px solid #e5e9ef; }.org-table-heading > div { display: flex; align-items: center; gap: 7px; color: #445168; }.org-table-heading > div span { color: #909bad; font-size: 11px; }.org-table-heading label { width: min(330px, 42%); display: flex; align-items: center; gap: 5px; color: #8793a6; border-bottom: 1px solid #ccd6e3; }.org-table-heading input { flex: 1; min-width: 0; height: 30px; border: 0; outline: none; }.org-table-pagination { flex: 0 0 37px; display: flex; align-items: center; justify-content: flex-end; gap: 7px; padding: 0 10px; border-bottom: 1px solid #dfe5ed; color: #748196; font-size: 11px; }.org-table-pagination button, .org-table-pagination select { height: 27px; border: 1px solid #d4dce8; border-radius: 3px; color: #5d6a80; background: #fff; }.org-table-pagination button { width: 27px; }.org-table-scroll { flex: 1; min-height: 0; overflow: auto; }.org-table-scroll table { min-width: 1420px; border-spacing: 0; border-collapse: separate; table-layout: fixed; font-size: 11px; }.org-table-scroll th, .org-table-scroll td { height: 36px; padding: 0 8px; overflow: hidden; border-right: 1px solid #edf0f4; border-bottom: 1px solid #e6eaf0; color: #4e5b6f; text-overflow: ellipsis; white-space: nowrap; }.org-table-scroll th { position: sticky; z-index: 2; top: 0; color: #586578; background: #f4f6f9; }.org-table-scroll tbody tr { cursor: pointer; }.org-table-scroll tbody tr:hover td, .org-table-scroll tbody tr.is-selected td { background: #edf5ff; }.org-table-scroll .org-check-cell { width: 38px; text-align: center; }.org-table-scroll td.org-empty { height: 220px; }.org-code-link { padding: 0; border: 0; color: #2875e2; background: transparent; }.org-code-link:hover { text-decoration: underline; }
.org-modal-overlay { position: fixed; z-index: 210; inset: 0; display: grid; place-items: center; padding: 18px; background: rgba(24, 34, 51, .5); }.org-modal { width: min(760px, 94vw); overflow: hidden; border-radius: 7px; background: #fff; box-shadow: 0 22px 70px rgba(18, 31, 53, .28); }.org-modal > header { height: 51px; display: flex; align-items: center; justify-content: space-between; padding: 0 17px; border-bottom: 1px solid #e0e6ee; }.org-modal h2 { margin: 0; color: #354258; font-size: 16px; }.org-modal header button { border: 0; color: #7c8899; background: transparent; font-size: 20px; }.org-modal__body { display: grid; grid-template-columns: 1fr 1fr; gap: 15px 25px; padding: 22px; }.org-modal label { display: grid; grid-template-columns: 83px minmax(0, 1fr); align-items: center; gap: 7px; color: #647187; font-size: 12px; }.org-modal label em { color: #e14d4d; font-style: normal; }.org-modal input, .org-modal select, .org-modal textarea { width: 100%; min-height: 32px; padding: 5px 8px; border: 1px solid #d7dfea; border-radius: 3px; outline: none; }.org-modal textarea { resize: vertical; }.org-modal__wide, .org-modal__computed { grid-column: 1 / -1; }.org-modal__computed { display: flex; gap: 25px; padding: 9px 12px; border-radius: 4px; color: #738095; background: #f5f7fa; font-size: 11px; }.org-modal footer { height: 53px; display: flex; align-items: center; justify-content: center; gap: 9px; border-top: 1px solid #e0e6ee; }.org-modal footer button { min-width: 65px; height: 31px; border: 1px solid #ced7e4; border-radius: 3px; color: #5e6b80; background: #fff; }.org-modal footer button.is-primary { border-color: #3c7df0; color: #fff; background: #3c7df0; }
@media (max-width: 768px) { .org-page__header { padding: 6px 9px; }.org-toolbar { min-height: 45px; flex-basis: auto; }.org-split { grid-template-columns: 1fr; grid-template-rows: 180px minmax(0, 1fr); }.org-tree-panel { border-right: 0; border-bottom: 1px solid #dce3ec; }.org-table-heading label { width: 55%; }.org-modal__body { grid-template-columns: 1fr; max-height: calc(100vh - 150px); overflow-y: auto; padding: 15px 12px; }.org-modal__wide, .org-modal__computed { grid-column: auto; }.org-modal label { grid-template-columns: 75px minmax(0,1fr); } }


/* 组织页面按用户列表布局统一 */
.org-filter-panel { flex: 0 0 auto; max-height: 120px; overflow: hidden; border-bottom: 1px solid #e3e8ef; transition: max-height .2s ease, opacity .16s ease; }
.org-filter-panel.is-collapsed { max-height: 0; opacity: 0; }
.org-filter-grid { display: grid; grid-template-columns: repeat(3, minmax(190px, 1fr)); gap: 12px 28px; padding: 12px 14px; }
.org-filter-grid label { display: grid; grid-template-columns: 72px minmax(0, 1fr); align-items: center; gap: 7px; color: #697589; font-size: 11px; }
.org-filter-grid select { width: 100%; height: 31px; border: 1px solid #d8e0ea; border-radius: 3px; color: #526078; background: #fff; }
.org-commandbar { flex: 0 0 44px; display: flex; align-items: center; justify-content: space-between; padding: 6px 8px; border-bottom: 1px solid #dfe5ed; background: #fafbfd; }
.org-actions { display: flex; align-items: center; gap: 6px; }
.org-table-heading label button { flex: 0 0 auto; height: 28px; padding: 0 7px; border: 0; color: #3578e7; background: transparent; font-size: 11px; }
.org-table-tools { flex: 0 0 38px; display: flex; align-items: center; justify-content: flex-end; gap: 7px; padding: 0 7px; border-bottom: 1px solid #dfe5ed; background: #fbfcfe; }
.org-table-tools .org-table-pagination { flex: 0 0 auto; height: 37px; padding: 0; border: 0; }
.org-column-wrap { position: relative; flex: 0 0 auto; }
.org-column-panel { top: 36px; right: 0; width: 360px; }
.org-column-panel .column-option { grid-template-columns: minmax(130px, 1fr) 68px 88px; }
.org-column-panel .column-option select { width: 100%; height: 27px; padding: 0 5px; border: 1px solid #d9e1ec; border-radius: 3px; color: #5d6b80; background: #fff; font-size: 11px; }
.org-table-scroll { display: flex; flex-direction: column; }
.org-table-scroll table { flex: 0 0 auto; min-width: 100%; }
.org-table-scroll table.is-empty { flex: 1 1 auto; height: 100%; }
.org-table-scroll table.is-empty tbody, .org-table-scroll table.is-empty tbody tr { height: 100%; }
.org-table-scroll table.is-empty td.org-empty { height: 100%; vertical-align: middle; }
.org-table-scroll th.is-frozen, .org-table-scroll td.is-frozen { position: sticky; z-index: 3; box-shadow: 1px 0 0 #dfe5ed; background: #fff; }
.org-table-scroll th.is-frozen { z-index: 5; background: #f4f6f9; }
.org-table-scroll tbody tr:hover td.is-frozen, .org-table-scroll tbody tr.is-selected td.is-frozen { background: #edf5ff; }
@media (max-width: 900px) { .org-filter-grid { grid-template-columns: repeat(2, minmax(180px, 1fr)); } }
@media (max-width: 768px) { .org-filter-grid { grid-template-columns: 1fr; max-height: none; padding: 10px 8px; }.org-filter-panel { max-height: 180px; }.org-filter-panel.is-collapsed { max-height: 0; }.org-actions { width: 100%; overflow-x: auto; }.org-actions .action-button { flex: 0 0 auto; }.org-split { grid-template-rows: 190px minmax(0, 1fr); }.org-table-heading { gap: 7px; padding: 0 7px; }.org-table-heading label { width: 63%; }.org-table-tools { justify-content: space-between; }.org-column-panel { position: fixed; top: 105px; right: 8px; width: calc(100vw - 16px); max-height: calc(100vh - 120px); overflow-y: auto; } }


/* 组织表单顶部状态操作按钮 */
.org-modal--workflow { width: min(900px, 96vw); }
.org-modal__actions { min-height: 45px; display: flex; align-items: center; gap: 7px; padding: 7px 16px; overflow-x: auto; border-bottom: 1px solid #e0e6ee; background: #f8fafc; }
.org-modal__actions .action-button { flex: 0 0 auto; }
.org-modal--workflow input[readonly], .org-modal--workflow select:disabled, .org-modal--workflow textarea[readonly] { color: #788598; background: #f3f5f8; cursor: not-allowed; }
.org-modal--workflow .reference-field input { background: #fff; cursor: default; }
.org-modal--workflow .reference-field button:disabled { color: #a9b2c0; background: #f1f3f6; cursor: not-allowed; }
.org-modal--workflow .org-modal__computed { flex-wrap: wrap; line-height: 1.8; }
@media (max-width: 768px) { .org-modal--workflow { width: 100vw; height: 100vh; border-radius: 0; }.org-modal--workflow .org-modal__body { max-height: calc(100vh - 96px); }.org-modal__actions { min-height: 47px; } }


/* 基础资料选择器始终显示在组织表单之上 */
.org-modal-overlay { z-index: 210; }
.reference-picker-overlay { z-index: 320; }


/* 组织列表多选 */
.org-selected-count { margin-left: auto; color: #7b8799; white-space: nowrap; font-size: 11px; }
.org-table-scroll input[type="checkbox"] { cursor: pointer; }


/* 系统应用与系统菜单管理页面 */
.system-page-content { min-height: 0; }
.system-manage-page { flex: 1; min-height: 0; display: flex; flex-direction: column; overflow: hidden; border: 1px solid #dfe5ed; background: #fff; }
.system-table-scroll { flex: 1; min-height: 0; overflow: auto; }
.system-table-scroll table { min-width: 1500px; width: 100%; border-spacing: 0; border-collapse: separate; table-layout: fixed; font-size: 11px; }
.system-table-scroll th, .system-table-scroll td { height: 36px; padding: 0 8px; overflow: hidden; border-right: 1px solid #edf0f4; border-bottom: 1px solid #e5e9ef; color: #4f5c70; text-overflow: ellipsis; white-space: nowrap; }
.system-table-scroll th { position: sticky; z-index: 2; top: 0; color: #596679; background: #f4f6f9; }
.system-table-scroll tbody tr { cursor: pointer; }
.system-table-scroll tbody tr:hover td, .system-table-scroll tbody tr.is-selected td { background: #edf5ff; }
.system-check { width: 40px; text-align: center; }
.system-empty { height: 210px !important; color: #929dad !important; text-align: center !important; }
.system-link { padding: 0; border: 0; color: #2875df; background: transparent; }
.system-link:hover { text-decoration: underline; }
.system-menu-split { flex: 1; min-height: 0; display: grid; grid-template-columns: 235px minmax(0, 1fr); }
.system-app-tree { min-height: 0; overflow: hidden; border-right: 1px solid #dce3ec; background: #fbfcfe; }
.system-tree-search { height: 42px; display: flex; align-items: center; gap: 5px; padding: 0 9px; border-bottom: 1px solid #e5e9ef; color: #8995a7; }
.system-tree-search input { min-width: 0; flex: 1; height: 28px; padding: 0 7px; border: 1px solid #d7dfe9; border-radius: 3px; outline: none; }
#system-app-list { height: calc(100% - 42px); overflow-y: auto; padding: 6px 5px; }
#system-app-list > button { width: 100%; min-height: 42px; display: grid; grid-template-columns: 22px minmax(0, 1fr); grid-template-rows: 21px 16px; padding: 3px 8px; border: 0; border-radius: 4px; color: #556378; text-align: left; background: transparent; }
#system-app-list > button span { grid-row: 1 / 3; align-self: center; color: #6684ad; }
#system-app-list > button b, #system-app-list > button small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#system-app-list > button b { font-size: 12px; }
#system-app-list > button small { color: #939dad; font-size: 10px; }
#system-app-list > button.is-active { color: #2f71dc; background: #dfebff; }
.system-menu-table { min-width: 0; min-height: 0; display: flex; flex-direction: column; }
.system-menu-search { flex: 0 0 43px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 10px; border-bottom: 1px solid #e3e8ef; }
.system-menu-search label { width: min(390px, 50%); display: flex; align-items: center; gap: 5px; border-bottom: 1px solid #ccd6e3; color: #8995a7; }
.system-menu-search input { flex: 1; min-width: 0; height: 30px; border: 0; outline: none; }
.system-menu-search button { height: 28px; border: 0; color: #3578e7; background: transparent; }
.system-table-tools { flex: 0 0 38px; display: flex; align-items: center; justify-content: flex-end; padding: 0 8px; border-bottom: 1px solid #dfe5ed; background: #fbfcfe; }
.system-modal-overlay { position: fixed; z-index: 220; inset: 0; display: grid; place-items: center; padding: 18px; background: rgba(23, 33, 50, .52); }
.system-modal { width: min(760px, 94vw); overflow: hidden; border-radius: 7px; background: #fff; box-shadow: 0 22px 70px rgba(18, 31, 53, .3); }
.system-modal--wide { width: min(900px, 96vw); }
.system-modal > header { height: 51px; display: flex; align-items: center; justify-content: space-between; padding: 0 17px; border-bottom: 1px solid #dfe5ed; }
.system-modal h2 { margin: 0; color: #354258; font-size: 16px; }
.system-modal header button { border: 0; color: #7c8899; background: transparent; font-size: 20px; }
.system-modal-body { display: grid; grid-template-columns: 1fr 1fr; gap: 15px 25px; max-height: calc(90vh - 105px); overflow-y: auto; padding: 22px; }
.system-modal-body label { display: grid; grid-template-columns: 82px minmax(0, 1fr); align-items: center; gap: 7px; color: #647187; font-size: 12px; }
.system-modal-body input, .system-modal-body select, .system-modal-body textarea { width: 100%; min-height: 32px; padding: 5px 8px; border: 1px solid #d7dfea; border-radius: 3px; outline: none; }
.system-modal-body label.wide { grid-column: 1 / -1; }
.system-modal > footer { height: 53px; display: flex; align-items: center; justify-content: center; gap: 9px; border-top: 1px solid #dfe5ed; }
.system-modal footer button { min-width: 65px; height: 31px; border: 1px solid #ced7e4; border-radius: 3px; color: #5e6b80; background: #fff; }
.system-modal footer button.is-primary { border-color: #3c7df0; color: #fff; background: #3c7df0; }
@media (max-width: 768px) { .system-menu-split { grid-template-columns: 1fr; grid-template-rows: 180px minmax(0, 1fr); }.system-app-tree { border-right: 0; border-bottom: 1px solid #dce3ec; }.system-menu-search { padding: 0 7px; }.system-menu-search label { width: 62%; }.system-modal { width: 100vw; height: 100vh; border-radius: 0; }.system-modal-body { grid-template-columns: 1fr; max-height: calc(100vh - 105px); padding: 15px 12px; }.system-modal-body label.wide { grid-column: auto; } }


/* 管理员应用菜单授权 */
.admin-scope-modal { width: min(980px, 96vw); }
.admin-user-field { display: grid; grid-template-columns: 1fr 260px; gap: 20px; padding: 18px 20px; border-bottom: 1px solid #e1e6ed; }
.admin-user-field label { display: grid; grid-template-columns: 86px minmax(0,1fr); align-items: center; gap: 8px; color: #5f6d82; font-size: 12px; }
.admin-user-field select { height: 32px; border: 1px solid #d6deea; border-radius: 3px; }
.admin-scope-title { display: flex; align-items: center; gap: 12px; padding: 13px 20px 9px; }
.admin-scope-title strong { color: #3f4d63; font-size: 13px; }
.admin-scope-title span { color: #929cad; font-size: 11px; }
.admin-scope-tree { height: min(470px, 55vh); overflow-y: auto; padding: 5px 20px 18px; }
.admin-scope-app { margin-bottom: 10px; overflow: hidden; border: 1px solid #dfe5ed; border-radius: 5px; }
.admin-app-check { min-height: 43px; display: flex; align-items: center; gap: 9px; padding: 5px 12px; background: #f5f8fc; }
.admin-app-check span { display: flex; align-items: center; gap: 9px; }
.admin-app-check b { color: #405069; font-size: 13px; }
.admin-app-check small { color: #939eae; font-size: 10px; }
.admin-menu-tree { display: grid; grid-template-columns: repeat(3, minmax(160px, 1fr)); gap: 2px 10px; padding: 8px 12px 12px; }
.admin-menu-tree label { min-height: 31px; display: flex; align-items: center; gap: 7px; color: #59677b; font-size: 11px; }
.admin-menu-tree label small { margin-left: auto; color: #9ba5b4; font-size: 9px; }
@media (max-width: 768px) { .admin-user-field { grid-template-columns: 1fr; padding: 13px 11px; }.admin-scope-title { align-items: flex-start; flex-direction: column; padding: 10px 11px 6px; }.admin-scope-tree { height: calc(100vh - 260px); padding: 4px 10px 14px; }.admin-menu-tree { grid-template-columns: 1fr; } }


/* 管理员权限双栏穿梭树 */
.admin-transfer-modal { width: min(1180px, 97vw); }
.permission-tabs { flex: 0 0 42px; display: flex; align-items: flex-end; gap: 0; padding: 0 20px; border-bottom: 1px solid #dfe5ed; }
.permission-tabs button { min-width: 92px; height: 32px; border: 1px solid #d2dae6; color: #637086; background: #fff; }
.permission-tabs button.is-active { border-color: #d45858; color: #fff; background: #d45858; }
.permission-tabs button:disabled { opacity: .55; }
.permission-transfer { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 76px minmax(0, 1fr); gap: 12px; padding: 12px 20px 15px; }
.permission-pane { min-width: 0; height: min(520px, 58vh); display: flex; flex-direction: column; overflow: hidden; border: 1px solid #d7dee9; background: #fff; }
.permission-pane > header { flex: 0 0 48px; display: flex; align-items: center; gap: 12px; padding: 0 11px; border-bottom: 1px solid #dfe5ed; }
.permission-pane > header strong { flex: 0 0 auto; color: #49576c; font-size: 13px; }
.permission-pane > header label { display: flex; align-items: center; flex: 1; min-width: 0; margin-left: auto; border-bottom: 1px solid #cfd7e3; color: #8a96a8; }
.permission-pane > header input { flex: 1; min-width: 0; height: 30px; border: 0; outline: none; }
.permission-tree { flex: 1; min-height: 0; overflow: auto; padding: 7px 8px 14px; }
.permission-node > label { min-height: 34px; display: flex; align-items: center; gap: 7px; padding-right: 8px; border-radius: 3px; color: #536176; cursor: pointer; }
.permission-node > label:hover { background: #f0f5fc; }
.permission-app-node { margin-bottom: 5px; }
.permission-app-node > label { min-height: 40px; background: #f6f8fb; }
.permission-children { padding-left: 20px; }
.permission-menu-node .permission-children { padding-left: 16px; }
.permission-toggle { width: 15px; flex: 0 0 15px; color: #788ca9; text-align: center; }
.permission-name { min-width: 0; display: flex; align-items: center; gap: 8px; }
.permission-name b, .permission-name small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.permission-name b { font-size: 12px; font-weight: 500; }
.permission-name small { color: #929dac; font-size: 10px; }
.permission-transfer-actions { display: grid; align-content: center; justify-items: center; gap: 14px; }
.permission-transfer-actions button { width: 50px; height: 35px; border: 1px solid #d1d9e5; color: #6d798c; background: #fff; font-size: 25px; line-height: 1; }
.permission-transfer-actions button:first-child { border-color: #d85b5b; color: #fff; background: #d85b5b; }
.permission-empty { padding: 35px 10px; color: #9aa4b4; text-align: center; font-size: 12px; }
.admin-transfer-modal > footer { flex: 0 0 54px; }
@media (max-width: 768px) {
    .admin-transfer-modal { width: 100vw; height: 100vh; border-radius: 0; }
    .admin-user-field { flex: 0 0 auto; }
    .permission-tabs { padding: 0 10px; overflow-x: auto; }
    .permission-transfer { grid-template-columns: 1fr; grid-template-rows: minmax(220px, 1fr) 52px minmax(220px, 1fr); gap: 7px; padding: 8px 10px; overflow-y: auto; }
    .permission-pane { height: 42vh; min-height: 220px; }
    .permission-transfer-actions { grid-auto-flow: column; align-content: center; justify-content: center; }
    .permission-transfer-actions button { transform: rotate(90deg); }
    .permission-children { padding-left: 12px; }
}


/* 通用角色四级功能权限树 */
.role-permission-modal { width: min(1120px, 97vw); }
.role-permission-fields { display: grid; grid-template-columns: 1fr 1fr 180px; gap: 16px; padding: 16px 20px; border-bottom: 1px solid #dfe5ed; background: #fbfcfe; }
.role-permission-fields label { display: grid; grid-template-columns: 66px minmax(0, 1fr); align-items: center; gap: 7px; color: #647187; font-size: 12px; }
.role-permission-fields input, .role-permission-fields select { min-width: 0; height: 32px; padding: 0 8px; border: 1px solid #d7dfea; border-radius: 3px; outline: none; background: #fff; }
.role-permission-pane { padding: 14px 20px 16px; background: #f6f8fc; }
.role-permission-pane > header { display: flex; align-items: center; justify-content: space-between; padding: 0 2px 10px; }
.role-permission-pane > header div { display: flex; align-items: baseline; gap: 11px; }
.role-permission-pane > header strong { color: #3e4d64; font-size: 14px; }
.role-permission-pane > header span { color: #8996a8; font-size: 11px; }
.role-permission-hint { white-space: nowrap; }
.role-permission-tree { max-height: min(550px, 58vh); overflow: auto; padding: 2px; }
.role-tree-node { margin-top: 7px; }
.role-tree-app { margin-top: 0; overflow: hidden; border: 1px solid #dbe3ee; border-radius: 6px; background: #fff; box-shadow: 0 1px 2px rgba(31, 53, 81, .03); }
.role-tree-row { min-height: 39px; display: flex; align-items: center; padding: 0 11px; border-radius: 4px; }
.role-tree-app > .role-tree-row { min-height: 45px; background: #eaf2ff; }
.role-tree-menu > .role-tree-row { margin-left: 18px; border-left: 2px solid #d5e3fa; background: #f8fbff; }
.role-tree-page > .role-tree-row { margin-left: 38px; border-left-color: #9ec2fb; background: #fff; }
.role-tree-row label { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; color: #45566f; cursor: pointer; }
.role-tree-row input, .role-button-item input { width: 15px; height: 15px; margin: 0; accent-color: #3d7fe8; cursor: pointer; }
.role-tree-row b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.role-tree-row small { margin-left: auto; color: #8b98ab; font-size: 10px; }
.role-tree-icon { width: 16px; color: #5787cb; text-align: center; }
.role-tree-toggle { width: 18px; height: 24px; flex: 0 0 18px; padding: 0; border: 0; color: #6986b1; background: transparent; cursor: pointer; transition: transform .16s ease; }
.role-tree-toggle.is-empty { visibility: hidden; cursor: default; }
.role-tree-node.is-collapsed > .role-tree-row .role-tree-toggle { transform: rotate(-90deg); }
.role-tree-node.is-collapsed > .role-tree-children { display: none; }
.role-tree-children { padding: 0 10px 8px; }
.role-tree-menu > .role-tree-children { padding-left: 10px; }
.role-button-groups { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 7px 0 0 58px; padding: 10px; border: 1px dashed #d7e0eb; border-radius: 4px; background: #fbfdff; }
.role-button-groups section { min-width: 0; border: 1px solid #e1e7ef; border-radius: 4px; background: #fff; }
.role-button-groups header { min-height: 31px; display: flex; align-items: center; gap: 6px; padding: 0 8px; border-bottom: 1px solid #e9edf3; background: #f5f8fd; }
.role-button-groups header b { color: #53647c; font-size: 11px; }
.role-button-groups header small { color: #98a3b2; font-size: 10px; }
.role-group-mark { width: 17px; height: 17px; display: grid; place-items: center; border-radius: 3px; color: #3678d9; background: #dceaff; font-size: 10px; font-weight: 700; }
.role-group-mark.is-business { color: #bf6b36; background: #fff0df; }
.role-button-groups section > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 5px; padding: 6px; }
.role-button-item { min-width: 0; min-height: 27px; display: flex; align-items: center; gap: 5px; padding: 0 4px; border-radius: 3px; color: #596a80; cursor: pointer; font-size: 11px; }
.role-button-item:hover { background: #edf4ff; }
.role-button-item span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.role-button-item small { margin-left: auto; overflow: hidden; color: #a0aab8; text-overflow: ellipsis; white-space: nowrap; font-size: 9px; }
.role-button-empty { grid-column: 1 / -1; min-height: 27px; display: flex; align-items: center; padding: 0 4px; color: #a0aab8; font-size: 10px; }
@media (max-width: 768px) { .role-permission-modal { width: 100vw; height: 100vh; border-radius: 0; }.role-permission-fields { grid-template-columns: 1fr; gap: 9px; padding: 12px; }.role-permission-pane { padding: 11px; }.role-permission-pane > header div { display: block; }.role-permission-pane > header span { display: block; margin-top: 3px; }.role-permission-hint { display: none !important; }.role-permission-tree { max-height: calc(100vh - 260px); }.role-tree-menu > .role-tree-row { margin-left: 7px; }.role-tree-page > .role-tree-row { margin-left: 14px; }.role-button-groups { grid-template-columns: 1fr; margin-left: 20px; }.role-button-groups section > div { grid-template-columns: 1fr; } }

/* 管理员权限树节点折叠 */
.permission-toggle[data-permission-toggle] { cursor: pointer; transition: transform .16s ease; }
.permission-node.is-collapsed > label .permission-toggle[data-permission-toggle] { transform: rotate(-90deg); }
.permission-node.is-collapsed > .permission-children { display: none; }


/* 业务按钮权限左侧应用菜单页面树 */
.business-permission-split { width: 100%; min-width: 0; overflow: hidden; transition: grid-template-columns .18s ease; }
.business-permission-split > .system-menu-table { width: 100%; height: 100%; }
.business-permission-split.is-tree-collapsed { grid-template-columns: 0 minmax(0, 1fr); }
.business-permission-split.is-tree-collapsed > .system-app-tree { display: none; }
.business-permission-table-heading { justify-content: flex-start; }
.business-permission-table-heading > div { min-width: 0; display: flex; align-items: center; gap: 8px; }
.business-permission-table-heading strong { overflow: hidden; color: #3f4d63; text-overflow: ellipsis; white-space: nowrap; }
.business-tree-panel-toggle { width: 28px; min-width: 28px; border: 1px solid #d6deea !important; border-radius: 3px; color: #5f718b !important; background: #f7f9fc !important; font-size: 18px; line-height: 1; }
.business-tree-panel-toggle:hover { border-color: #78a2ed !important; color: #2f71dc !important; background: #edf4ff !important; }
#bp-tree { height: calc(100% - 42px); overflow-y: auto; padding: 7px 5px 14px; }
.business-permission-app { margin-bottom: 7px; }
.business-app-heading { width: 100%; min-height: 36px; display: flex; align-items: center; gap: 5px; padding: 0 9px; border: 0; color: #40516a; text-align: left; background: #f1f5fb; font-size: 12px; cursor: pointer; }
.business-app-heading:hover { background: #e8eff9; }
.business-app-heading strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.business-menu-node > button { width: 100%; min-height: 32px; display: flex; align-items: center; gap: 6px; border: 0; border-radius: 3px; color: #5b687c; text-align: left; background: transparent; }
.business-menu-node > button[aria-disabled="true"] { color: #6c7788; cursor: default; }
.business-menu-node > button:not([aria-disabled="true"]):hover { color: #2f71dc; background: #edf4ff; }
.business-menu-node > button.is-active { color: #2468d5; background: #dfeaff; }
.business-tree-toggle { width: 13px; flex: 0 0 13px; color: #7690b4; text-align: center; transition: transform .16s ease; }
.business-menu-children { min-width: 0; }
.business-permission-app.is-collapsed > .business-app-heading .business-tree-toggle,
.business-menu-node.is-collapsed > button .business-tree-toggle { transform: rotate(-90deg); }
.business-permission-app.is-collapsed > .business-menu-children,
.business-menu-node.is-collapsed > .business-menu-children { display: none; }
.business-permission-table-scroll { display: flex; flex-direction: column; }
.business-permission-table-scroll > table { flex: 0 0 auto; height: auto; }
#bp-table.is-empty { flex: 1 1 auto; height: 100%; }
#bp-table.is-empty tbody, #bp-table.is-empty tbody tr { height: 100%; }
#bp-table.is-empty td.system-empty { height: 100% !important; vertical-align: middle; }
.business-selected-count { margin-left: auto; color: #7b8799; white-space: nowrap; font-size: 11px; }
.business-permission-table-scroll input[type="checkbox"], .common-permission-table input[type="checkbox"] { cursor: pointer; }
.permission-button-node > label { color: #4f6078; }
.permission-button-node .permission-toggle { color: #d36464; font-size: 9px; }
@media (max-width: 768px) {
    .business-permission-split.is-tree-collapsed { grid-template-columns: 1fr; grid-template-rows: 0 minmax(0, 1fr); }
    .business-permission-table-heading { padding-left: 7px; }
}

/* 全局列表列设置、冻结列和自适应序号 */
.zyd-column-settings { flex: 0 0 auto; }
.zyd-column-panel { width: 465px; max-height: min(520px, 70vh); overflow-y: auto; }
.zyd-column-option { grid-template-columns: minmax(125px, 1fr) 62px 78px 92px; gap: 7px; }
.zyd-column-option .column-width-field { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 3px; }
.zyd-column-option .column-width-field span { color: #7b8799; text-align: right; }
.zyd-column-option input[type="number"] { width: 100%; height: 27px; min-width: 0; padding: 0 4px; border: 1px solid #d9e1ec; border-radius: 3px; color: #5d6b80; background: #fff; font-size: 11px; outline: none; }
.zyd-column-option input[type="number"]:focus { border-color: #6f9ff0; }
.column-options-empty { margin: 16px 0; color: #909bad; text-align: center; font-size: 11px; }
.zyd-managed-table th, .zyd-managed-table td { box-sizing: border-box; }
.zyd-managed-table .is-index-column { font-variant-numeric: tabular-nums; }
.system-table-scroll .zyd-managed-table th.is-frozen,
.system-table-scroll .zyd-managed-table td.is-frozen { position: sticky; z-index: 3; box-shadow: 1px 0 0 #dfe5ed; background: #fff; }
.system-table-scroll .zyd-managed-table th.is-frozen { z-index: 5; background: #f4f6f9; }
.system-table-scroll .zyd-managed-table tbody tr:hover td.is-frozen,
.system-table-scroll .zyd-managed-table tbody tr.is-selected td.is-frozen { background: #edf5ff; }
@media (max-width: 600px) {
    .zyd-column-panel { position: fixed; top: 104px; right: 8px; width: calc(100vw - 16px); max-height: calc(100vh - 120px); }
    .zyd-column-option { grid-template-columns: minmax(105px, 1fr) 58px 72px 82px; gap: 5px; }
}

.org-column-panel .zyd-column-option { grid-template-columns: minmax(125px, 1fr) 62px 78px 92px; }
@media (max-width: 600px) { .org-column-panel .zyd-column-option { grid-template-columns: minmax(105px, 1fr) 58px 72px 82px; } }

/* 调度作业与调度日志左树右表 */
#job-tree, #job-log-tree { height: calc(100% - 42px); overflow-y: auto; padding: 7px 5px 14px; }
.job-tree-app { margin-bottom: 7px; }
.job-tree-app-head { width: 100%; min-height: 36px; display: flex; align-items: center; gap: 5px; padding: 0 9px; border: 0; color: #40516a; text-align: left; background: #f1f5fb; font-size: 12px; cursor: pointer; }
.job-tree-app-head:hover { background: #e8eff9; }
.job-tree-app-head > span, .job-tree-node > button > span { width: 13px; flex: 0 0 13px; color: #7690b4; text-align: center; transition: transform .16s ease; }
.job-tree-app-head b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.job-tree-node > button { width: 100%; min-height: 32px; display: flex; align-items: center; gap: 6px; border: 0; border-radius: 3px; color: #5b687c; text-align: left; background: transparent; }
.job-tree-node > button:disabled { color: #6c7788; cursor: default; }
.job-tree-node > button:not(:disabled):hover { color: #2f71dc; background: #edf4ff; }
.job-tree-node > button.is-active { color: #2468d5; background: #dfeaff; }
.job-tree-app.is-collapsed > .job-tree-children, .job-tree-node.is-collapsed > .job-tree-children { display: none; }
.job-tree-app.is-collapsed > .job-tree-app-head > span, .job-tree-node.is-collapsed > button > span { transform: rotate(-90deg); }

/* 用户生日空数据列表撑满可用工作区 */
.user-birthday-table { position: relative; flex: 1 1 auto !important; align-self: stretch; height: 100%; min-height: 0; display: flex; flex-direction: column; background: #fff; }
.user-birthday-table > table { flex: 0 0 auto; }
.user-birthday-empty-overlay { position: absolute; z-index: 1; top: 36px; right: 0; bottom: 0; left: 0; min-height: calc(100% - 36px); display: grid; place-items: center; color: #8b98aa; background: #eef6ff; font-size: 12px; }
.user-birthday-empty-overlay[hidden] { display: none; }
.user-birthday-table > table.is-empty { flex: 0 0 auto; height: auto; }
.user-birthday-table > table.is-empty tbody { display: none; }

/* 用户生日：为两行查询条件保留完整高度，避免第二行控件被操作栏遮挡。 */
#birthday-filter:not(.is-collapsed) { min-height: 96px; max-height: 96px; overflow: visible; }
#birthday-filter .filter-grid { box-sizing: border-box; min-height: 96px; grid-auto-rows: 28px; align-content: start; }
#birthday-filter.is-collapsed { min-height: 0; height: 0; overflow: hidden; }
@media (max-width: 1100px) {
    #birthday-filter:not(.is-collapsed) { min-height: 135px; max-height: 135px; }
    #birthday-filter .filter-grid { min-height: 135px; }
}
@media (max-width: 700px) {
    #birthday-filter:not(.is-collapsed) { min-height: 212px; max-height: 212px; }
    #birthday-filter .filter-grid { min-height: 212px; }
}

/* 登录成功欢迎加载页 */
.login-welcome-page { min-height: 100vh; overflow: hidden; color: #f5f8ff; background: #071527; transition: opacity .38s ease, transform .38s ease; }
.login-welcome-page::before, .login-welcome-page::after { content: ""; position: fixed; border: 1px solid rgba(105, 151, 230, .18); border-radius: 50%; pointer-events: none; }
.login-welcome-page::before { width: 620px; height: 620px; top: -310px; left: -160px; }
.login-welcome-page::after { width: 760px; height: 760px; right: -360px; bottom: -430px; }
.login-welcome-page.is-leaving { opacity: 0; transform: scale(1.015); }
.login-welcome { position: relative; z-index: 1; min-height: 100vh; display: grid; place-content: center; justify-items: center; padding: 32px; text-align: center; }
.login-welcome__mark { width: 48px; height: 48px; display: grid; place-items: center; margin-bottom: 30px; border: 1px solid rgba(169, 200, 255, .6); border-radius: 14px; color: #eff6ff; background: rgba(53, 99, 170, .34); box-shadow: 0 10px 32px rgba(0, 0, 0, .2); font-size: 24px; font-weight: 800; }
.login-welcome__hint { margin: 0 0 18px; color: #8aa3c8; font-size: 11px; font-weight: 700; letter-spacing: 1.7px; }
.login-welcome h1 { margin: 0; font-size: clamp(30px, 4vw, 48px); font-weight: 400; letter-spacing: 2px; }
.login-welcome__copy { margin: 16px 0 24px; color: #9db0cb; font-size: 14px; }
.login-welcome__loader { display: flex; gap: 8px; align-items: center; height: 12px; }
.login-welcome__loader i { width: 7px; height: 7px; border-radius: 50%; background: #83b2ff; animation: login-welcome-bounce 1s infinite ease-in-out; }
.login-welcome__loader i:nth-child(2) { animation-delay: .14s; }.login-welcome__loader i:nth-child(3) { animation-delay: .28s; }
@keyframes login-welcome-bounce { 0%, 70%, 100% { transform: translateY(0); opacity: .35; } 35% { transform: translateY(-8px); opacity: 1; } }

/* 通用角色权限：无数据时按用户列表的完整表格空态展示。 */
.user-page-permission-page > .system-table-scroll { min-height: 360px; }
.user-page-permission-page > .system-table-scroll .system-empty { height: 320px; padding: 0; color: #9aa6b7; text-align: center; vertical-align: middle; font-size: 13px; background: #fff; }

/* 通用角色：分配用户弹窗左右双栏布局。 */
.admin-transfer-modal { width: min(1120px, 96vw); }
.role-user-assignment { min-height: min(540px, 62vh); display: grid; grid-template-columns: minmax(280px, 42%) minmax(0, 58%); gap: 12px; padding: 14px; background: #f7f9fc; }
.role-user-org-pane, .role-user-list-pane { min-width: 0; overflow: hidden; border: 1px solid #dbe3ee; border-radius: 4px; background: #fff; }
.role-user-org-pane > header, .role-user-list-pane > header { min-height: 38px; display: flex; align-items: center; gap: 8px; padding: 0 12px; border-bottom: 1px solid #e7ecf3; color: #4d5f77; background: #f8faff; font-size: 13px; }
.role-user-list-pane > header input { flex: 1; min-width: 0; height: 28px; padding: 0 8px; border: 1px solid #d5dfec; border-radius: 3px; }
#role-org-list { height: calc(min(540px, 62vh) - 40px); overflow: auto; padding: 8px; display: grid; align-content: start; gap: 4px; }
#role-org-list button { width: 100%; min-height: 32px; padding: 0 10px; border: 0; border-radius: 3px; color: #56677d; text-align: left; background: transparent; }
#role-org-list button:hover, #role-org-list button.is-active { color: #2d70da; background: #eaf2ff; }
.role-user-list-pane .role-user-table-wrap { height: calc(min(540px, 62vh) - 82px); overflow: auto; }
#role-users label { display: inline-flex; align-items: center; }
.admin-transfer-modal footer { display: flex; justify-content: center; gap: 8px; padding: 12px; border-top: 1px solid #e1e7ef; background: #fff; }
@media (max-width: 760px) { .role-user-assignment { grid-template-columns: 1fr; min-height: 0; }.admin-transfer-modal { width: 100vw; height: 100vh; border-radius: 0; } #role-org-list, .role-user-table-wrap { height: 220px; } }

/* 通用角色分配用户完整页面 */
.role-user-modal { width: min(1180px, 97vw); max-height: 92vh; overflow: hidden; }
.role-user-modal > header div h2 { margin: 0; }
.role-user-modal > header div p { margin: 3px 0 0; color: #8996a8; font-size: 11px; }
.role-user-modal .role-user-assignment { height: min(610px, 68vh); min-height: 430px; grid-template-columns: minmax(280px, 34%) minmax(560px, 66%); gap: 12px; }
.role-user-modal .role-user-org-pane, .role-user-modal .role-user-list-pane { display: flex; flex-direction: column; }
.role-user-modal .role-user-org-pane > header, .role-user-modal .role-user-list-pane > header { flex: 0 0 44px; }
.role-user-modal .role-user-org-pane > header input { flex: 1; min-width: 0; height: 28px; padding: 0 8px; border: 1px solid #d7e0ec; border-radius: 3px; }
.role-user-modal .role-user-list-pane > header { justify-content: space-between; }
.role-user-modal .role-user-list-pane > header > div:first-child { display: flex; align-items: baseline; gap: 8px; }
.role-user-modal .role-user-list-pane > header span { color: #8b98aa; font-size: 11px; }
.role-user-actions { display: flex; align-items: center; gap: 5px; }
.role-user-actions button { height: 27px; padding: 0 9px; border: 1px solid #cfdae9; border-radius: 3px; color: #52657e; background: #fff; font-size: 11px; }
.role-user-actions button:first-child { border-color: #397df2; color: #fff; background: #397df2; }
.role-user-actions button:disabled { cursor: not-allowed; opacity: .45; }
.role-user-modal #role-org-list { flex: 1 1 auto; height: auto; min-height: 0; }
.role-user-modal #role-org-list button { display: flex; align-items: center; gap: 6px; }
.role-user-modal #role-org-list button span { width: 14px; color: #8294ad; }
.role-user-modal #role-org-list button b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }
.role-user-modal #role-org-list button small { margin-left: auto; color: #9ba6b5; font-size: 10px; }
.role-user-search { flex: 0 0 42px; display: flex; align-items: center; gap: 10px; padding: 6px 10px; border-bottom: 1px solid #e7ecf3; }
.role-user-search input { flex: 1; min-width: 0; height: 29px; padding: 0 9px; border: 1px solid #d6dfeb; border-radius: 3px; }
.role-user-search span { color: #7e8ca1; white-space: nowrap; font-size: 11px; }
.role-user-table-wrap { flex: 1 1 auto; min-height: 0; overflow: auto; }
.role-user-table { width: 100%; min-width: 680px; border-spacing: 0; border-collapse: separate; table-layout: fixed; color: #526077; font-size: 11px; }
.role-user-table th, .role-user-table td { height: 35px; padding: 0 8px; overflow: hidden; border-right: 1px solid #e9eef4; border-bottom: 1px solid #e4eaf1; text-overflow: ellipsis; white-space: nowrap; }
.role-user-table th { position: sticky; z-index: 2; top: 0; color: #5b687c; background: #f2f5f9; font-weight: 600; }
.role-user-table th:nth-child(1), .role-user-table td:nth-child(1) { width: 38px; text-align: center; }
.role-user-table th:nth-child(2), .role-user-table td:nth-child(2) { width: 42px; text-align: center; }
.role-user-table th:nth-child(3), .role-user-table td:nth-child(3) { width: 125px; }
.role-user-table th:nth-child(4), .role-user-table td:nth-child(4) { width: 110px; }
.role-user-table th:nth-child(5), .role-user-table td:nth-child(5) { width: 120px; }
.role-user-table th:nth-child(6), .role-user-table td:nth-child(6) { width: 75px; text-align: center; }
.role-user-table th:nth-child(7), .role-user-table td:nth-child(7) { width: 90px; text-align: center; }
.role-user-table tr.is-selected td { background: #edf5ff; }
.role-user-table .system-empty { height: 210px; color: #9aa6b7; text-align: center; }
.role-user-switch { position: relative; display: inline-flex; width: 34px; height: 18px; cursor: pointer; }
.role-user-switch input { position: absolute; opacity: 0; pointer-events: none; }
.role-user-switch span { width: 34px; height: 18px; border-radius: 10px; background: #c8d1dd; transition: background .16s; }
.role-user-switch span::after { content: ""; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(25, 44, 71, .25); transition: transform .16s; }
.role-user-switch input:checked + span { background: #4284ed; }
.role-user-switch input:checked + span::after { transform: translateX(16px); }
@media (max-width: 850px) { .role-user-modal .role-user-assignment { height: calc(100vh - 130px); grid-template-columns: 1fr; }.role-user-org-pane { max-height: 210px; }.role-user-modal { width: 100vw; max-height: 100vh; height: 100vh; border-radius: 0; } }

/* 分配用户表格数据行保持紧凑，不随内容区高度拉伸。 */
.role-user-table { height: auto !important; align-self: flex-start; }
.role-user-table tbody { height: auto !important; }
.role-user-table tbody tr { height: 35px; }
.role-user-table tbody td:not(.system-empty) { height: 35px !important; min-height: 35px; max-height: 35px; }

/* 登录页注册与个人中心密码修改 */
.login-panel { align-items: center; overflow-y: auto; padding: 36px 40px; }
.login-panel.is-register { align-items: flex-start; padding-top: clamp(36px, 6vh, 64px); }
.auth-card-wrap { width: min(100%, 700px); }
.auth-card-wrap .login-card { width: 100%; }
#login-form { max-width: 560px; margin: 0 auto; }
.auth-card-wrap .login-card__heading { margin-bottom: 28px; }
.register-card .login-card__heading { margin-bottom: 20px; }
.auth-switch { margin: 18px 0 0; color: #7a879b; font-size: 13px; text-align: center; }
.auth-switch button { padding: 3px 6px; border: 0; color: #3473dd; background: transparent; font-weight: 700; }
.auth-switch button:hover { color: #285fd1; text-decoration: underline; }
.register-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 13px 16px; }
.register-grid > label { display: grid; gap: 6px; color: #56657a; font-size: 12px; }
.register-grid input, .register-grid select { width: 100%; height: 39px; min-width: 0; padding: 0 10px; border: 1px solid #d9e1ec; border-radius: 5px; outline: none; color: #3e4d61; background: #fff; }
.register-grid input:focus, .register-grid select:focus { border-color: #5590f1; box-shadow: 0 0 0 3px rgba(58,124,255,.1); }
.register-code-field { grid-column: 1 / -1; }
.register-code-field > div { display: grid; grid-template-columns: minmax(0,1fr) 116px; gap: 8px; }
.register-code-field button { border: 1px solid #8bb2f5; border-radius: 5px; color: #3473dd; background: #f2f7ff; font-size: 12px; }
.register-code-field button:disabled { cursor: wait; opacity: .62; }
.form-message.is-success { color: #16835f; }
.password-form { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; border-bottom: 1px solid #edf1f5; }
.password-form label { grid-template-columns: 68px minmax(0, 1fr); }
.password-form .contact-form__actions { padding-left: 0; }
@media (max-width: 720px) { .login-panel { padding: 36px 24px; }.auth-card-wrap { width: 100%; }.auth-card-wrap .login-card__heading { margin-bottom: 24px; }.register-grid { grid-template-columns: 1fr; }.register-code-field { grid-column: auto; }.password-form { grid-template-columns: 1fr; } }

/* 个人中心：联系方式锁定，修改密码按需展开。 */
.contact-form--readonly input { color: #657287; cursor: default; background: #f4f6f9; }
.password-form[hidden], .security-action[hidden] { display: none !important; }
.password-form { animation: profile-password-open .18s ease-out; }
.password-form__actions { display: flex; align-items: center; gap: 8px; }
.security-action--logout { border-top: 1px solid #edf1f5; }
@keyframes profile-password-open { from { opacity: 0; transform: translateY(-5px); } to { opacity: 1; transform: translateY(0); } }
@media (max-width: 720px) { .password-form__actions { padding-left: 74px; } }
