:root{color:#111827;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f6fb;font-family:IBM Plex Sans,Noto Sans SC,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:#f5f6fb;margin:0}.app-shell{background:#f5f6fb;height:100vh;min-height:100vh}.app-main{background:#f5f6fb;height:calc(100vh - 64px)}.app-header{background:#fff;border-bottom:1px solid #eef0f3;justify-content:space-between;align-items:center;height:64px;padding:0 24px;display:flex}.app-header-actions{min-width:0}.app-header-dropdown-trigger{cursor:pointer}.app-icon-button.ant-btn{color:#475569;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex}.app-lang-button.ant-btn{color:#475569}.app-user-trigger{color:#334155;border-radius:8px;align-items:center;gap:8px;min-width:0;height:32px;padding:0 8px;display:inline-flex}.app-user-name{text-overflow:ellipsis;white-space:nowrap;max-width:160px;display:inline-block;overflow:hidden}.app-notification-panel{background:#fff;border:1px solid #e5e7eb;border-radius:10px;flex-direction:column;width:min(380px,100vw - 32px);max-height:min(480px,100vh - 88px);display:flex;overflow:hidden;box-shadow:0 18px 46px #0f172a29}.app-notification-panel__head{border-bottom:1px solid #eef0f3;flex:none;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.app-notification-list{flex:auto;min-height:0;overflow-y:auto}.app-notification-panel__foot{background:#fff;border-top:1px solid #eef0f3;flex:none;padding:8px 14px 10px}.app-notification-list__empty{padding:16px 0}.app-notification-list__button{color:#0f172a;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:10px minmax(0,1fr);align-items:start;gap:8px;width:100%;padding:12px 14px;display:grid}.app-notification-list__button:hover,.app-notification-list__button:focus-visible{background:#f8fafc;outline:none}.app-notification-list__unread-dot{border-radius:999px;width:6px;height:6px;margin-top:7px}.is-unread .app-notification-list__unread-dot{background:#0f766e;box-shadow:0 0 0 2px #ccfbf1}.app-notification-list__content{gap:4px;min-width:0;display:grid}.app-notification-list__title{color:#0f172a;font-size:14px;font-weight:500;line-height:1.45}.is-unread .app-notification-list__title{font-weight:700}.app-notification-list__body{color:#64748b;font-size:13px;line-height:1.5}.app-notification-list__time{color:#94a3b8;font-size:12px;line-height:1.4}.notification-center-page__stat{min-width:180px}.notification-center-page .ant-table-cell{vertical-align:top}.logo-bar{align-items:center;gap:10px;height:40px;display:inline-flex}.logo-icon img{width:32px;height:32px;display:block}.logo-text{color:#111827;font-size:17px;font-weight:500;line-height:1}.logo-version{color:#9ca3af;font-size:12px;line-height:1}.app-sider{border-right:1px solid #eef0f3;overflow:hidden;background:#fff!important}.app-sider .ant-layout-sider-children{height:100%}.sider-inner{flex-direction:column;height:100%;min-height:0;padding:4px 10px 0;display:flex}.sider-menu.ant-menu{background:0 0;flex:auto;min-height:0;overflow-y:auto;border-inline-end:none!important}.sider-menu .ant-menu-item,.sider-menu .ant-menu-submenu-title{color:#334155;border-radius:8px;align-items:center;display:flex;width:100%!important;margin:2px 0!important;padding:8px 12px!important}.sider-menu .ant-menu-submenu .ant-menu-item{padding-left:36px!important}.sider-menu .ant-menu-item-selected{font-weight:500;color:#1d4ed8!important;background:#e8f1ff!important}.sider-collapse-toggle{color:#64748b;cursor:pointer;background:0 0;border:0;border-top:1px solid #eef0f3;justify-content:center;align-items:center;width:calc(100% + 20px);height:40px;margin-top:auto;margin-left:-10px;padding:0 0 6px;display:flex}.app-content{background:#f5f6fb;height:100%;padding:16px 24px 32px;overflow-y:auto}.app-page-head{min-height:24px;margin-bottom:12px}.app-breadcrumb{color:#64748b}.layout-loading{color:#64748b;place-items:center;min-height:180px;display:grid}.panel-card.ant-card{margin-bottom:0;box-shadow:0 10px 24px #0f172a0f;border:1px solid #eef0f3!important;border-radius:10px!important}.panel-card .ant-card-head{border-bottom:1px solid #eef0f3;min-height:56px}.panel-card .ant-card-body{padding:16px 24px 20px}.dashboard-stat-card .ant-card-body{flex-direction:column;gap:12px;display:flex}.profile-page{width:100%}.profile-hero.ant-card{background:linear-gradient(135deg,#fff 0%,#ecfdf5 100%);overflow:hidden}.profile-hero .ant-card-body{padding:20px 24px}.profile-hero__body{align-items:center;gap:18px;display:flex}.profile-avatar{color:#fff;background:linear-gradient(135deg,#0f766e 0%,#2563eb 100%);border-radius:16px;flex:none;place-items:center;width:64px;height:64px;font-size:28px;font-weight:700;display:grid;box-shadow:0 12px 28px #0f766e38}.profile-hero__content{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.profile-hero__title.ant-typography{color:#0f172a;margin:0!important}.profile-meta{color:#475569;flex-wrap:wrap;gap:8px 18px;font-size:13px;display:flex}.profile-field-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.profile-field{background:#f8fafc;border-radius:8px;flex-direction:column;gap:6px;min-width:0;padding:12px;display:flex}.profile-field--wide{grid-column:1/-1}.profile-field__label{color:#64748b;font-size:12px}.profile-field__value{color:#0f172a;overflow-wrap:anywhere;min-width:0}.profile-security-list{flex-direction:column;gap:12px;display:flex}.profile-security-item{background:#fff;border:1px solid #eef0f3;border-radius:8px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:12px;display:grid}.profile-security-item__main{flex-direction:column;gap:4px;min-width:0;display:flex}.profile-security-item__state{text-align:right;min-width:90px}.profile-security-item .ant-btn{min-width:96px}.panel-toolbar{width:100%;margin-bottom:16px}.role-page-grid{min-height:620px}.role-page-grid__sidebar,.role-page-grid__content{display:flex}.role-page-grid__sidebar .panel-card,.role-page-grid__content .panel-card,.role-permission-workbench,.permission-page-tree{width:100%}.role-permission-workbench__hint.ant-typography,.permission-page-tree__hint.ant-typography{margin-bottom:0}.role-permission-workbench__toolbar,.permission-page-tree__toolbar{width:100%}.role-permission-workbench__search,.permission-page-tree__search{width:min(100%,360px)}.role-permission-workbench__loading,.permission-page-tree__loading{place-items:center;min-height:160px;display:grid}.center-shell{background:#f5f6fb;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-shell{background:radial-gradient(circle at 0 0,#0f766e29,#0000 55%),radial-gradient(circle at 100% 100%,#2563eb1f,#0000 55%),linear-gradient(135deg,#f5f6fb 0%,#ccfbf1 42%,#eef2ff 100%);place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card.ant-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);width:min(100%,440px);box-shadow:0 22px 55px #0f172a2e;background:#fffffff0!important;border:1px solid #94a3b833!important;border-radius:16px!important}.auth-card .ant-card-head{border-bottom:none;min-height:auto;padding:18px 24px 0}.auth-card .ant-card-head-wrapper{align-items:center}.auth-card .ant-card-head-title{padding:0;overflow:visible}.auth-card .ant-card-extra{padding:0}.auth-card .ant-card-body{padding:18px 24px 24px}.auth-card-heading{color:#0f172a;align-items:center;gap:10px;font-size:20px;font-weight:600;display:flex}.auth-card-heading-dot{background:linear-gradient(135deg,#0f766e,#0ea5e9);border-radius:999px;flex:none;width:10px;height:10px;box-shadow:0 0 0 4px #14b8a629}.auth-version{color:#94a3b8;letter-spacing:.04em;font-size:12px}.auth-card-copy{flex-direction:column;gap:6px;margin-bottom:18px;display:flex}.auth-kicker.ant-typography{color:#0f766e;letter-spacing:.14em;font-size:12px;font-weight:600}.auth-title.ant-typography{color:#0f172a;margin:0 0 4px!important}.auth-description.ant-typography{color:#475569}.auth-card .ant-alert{border-radius:12px;margin-bottom:16px}.auth-card .ant-form-item{margin-bottom:16px}.auth-card .ant-form-item-label>label{color:#0f172a;font-weight:500}.auth-card .ant-input-affix-wrapper,.auth-card .ant-input-outlined,.auth-card .ant-input-affix-wrapper-status-error,.auth-card .ant-input-affix-wrapper-status-success,.auth-card .ant-input-outlined.ant-input-status-error,.auth-card .ant-input-outlined.ant-input-status-success{height:44px;box-shadow:none;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px}.auth-card .ant-input-affix-wrapper:hover,.auth-card .ant-input-outlined:hover{background:#fff;border-color:#cbd5e1}.auth-card .ant-input-affix-wrapper-focused,.auth-card .ant-input-outlined:focus,.auth-card .ant-input-outlined:focus-within{background:#fff;box-shadow:0 0 0 3px #14b8a624;border-color:#0f766e!important}.auth-card .ant-input-prefix{color:#94a3b8;margin-inline-end:10px}.auth-card .ant-input{background:0 0}.auth-card .ant-input::placeholder{color:#94a3af}.auth-card .ant-btn-primary{background:linear-gradient(135deg,#0f766e 0%,#0ea5e9 100%);border:none;border-radius:12px;height:44px;font-weight:600;box-shadow:0 10px 30px #14b8a64d}.auth-card .ant-btn-primary:hover,.auth-card .ant-btn-primary:focus{background:linear-gradient(135deg,#0f766e 0%,#0284c7 100%);box-shadow:0 14px 35px #0f766e57}.auth-card .ant-btn-primary:disabled{box-shadow:none;background:#94a3b8}.permission-tree-node{align-items:center;gap:8px;min-width:0;max-width:100%;display:inline-flex}.permission-tree-node__type.ant-tag{flex:none;margin-inline-end:0}.permission-tree-node__name{color:#1f2937;font-weight:500}.permission-tree-node--group .permission-tree-node__name{color:#0958d9;font-weight:600}.permission-tree-node__key.ant-typography{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:460px;font-size:12px;overflow:hidden;margin-bottom:0!important}.permission-tree-node--action .permission-tree-node__name{font-weight:400}.openapi-doc-entry-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:16px;display:grid}.openapi-doc-entry-card.ant-card{cursor:pointer;border-color:#e2e8f0;flex-direction:column;height:100%;transition:border-color .16s,box-shadow .16s,transform .16s;display:flex}.openapi-doc-entry-card.ant-card:hover,.openapi-doc-entry-card.ant-card:focus-within{border-color:#bfd3f6;transform:translateY(-1px);box-shadow:0 14px 30px #2563eb1a}.openapi-doc-entry-card.ant-card.is-disabled{cursor:not-allowed;opacity:.68}.openapi-doc-entry-card.ant-card.is-disabled:hover,.openapi-doc-entry-card.ant-card.is-disabled:focus-within{box-shadow:none;border-color:#e2e8f0;transform:none}.openapi-doc-entry-card .ant-card-body{flex-direction:column;flex:1;gap:12px;min-height:128px;display:flex}.openapi-doc-entry-card__content{text-align:left;flex:none;justify-content:flex-start;align-items:flex-start;min-width:0;min-height:auto;display:flex}.openapi-doc-entry-card__header.ant-space{justify-content:flex-start;align-items:center;width:100%}.openapi-doc-entry-card__meta.ant-space{align-items:flex-start;min-width:0}.openapi-doc-entry-card__tags.ant-space{justify-content:flex-start}.openapi-doc-entry-card__icon{color:#1d4ed8;background:#eff6ff;border-radius:8px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:inline-flex}.openapi-doc-entry-card__actions{justify-content:flex-end;align-items:center;width:100%;margin-top:auto;display:flex}@media (width<=576px){.auth-shell{padding:16px}.auth-card.ant-card{border-radius:14px!important}}.app-update-dialog-wrap .ant-modal-content{background:#fff;border:1px solid #dbe8e4;border-radius:40px;overflow:hidden;box-shadow:0 24px 56px #0f172a29;padding:0!important}.app-update-dialog-wrap .ant-modal-header{border-bottom:0;margin-bottom:0;padding:24px 28px 0}.app-update-dialog-wrap .ant-modal-title{overflow:visible}.app-update-dialog-wrap .ant-modal-body{padding:18px 28px 8px}.app-update-dialog-wrap .ant-modal-footer{border-top:0;justify-content:flex-end;gap:12px;margin-top:0;padding:16px 28px 28px;display:flex}.app-update-dialog-wrap .ant-modal-footer .ant-btn{border-radius:10px;min-width:108px;height:40px;font-weight:600}.app-update-dialog-wrap .ant-modal-footer .ant-btn-default{color:#334155;background:#fff;border-color:#d8e5e1}.app-update-dialog-wrap .ant-modal-footer .ant-btn-default:hover,.app-update-dialog-wrap .ant-modal-footer .ant-btn-default:focus{color:#0f172a;background:#fff;border-color:#bdd5ce}.app-update-dialog-wrap .ant-modal-footer .ant-btn-primary{background:linear-gradient(135deg,#0f766e 0%,#14b8a6 100%);border:none;box-shadow:0 10px 24px #0f766e38}.app-update-dialog-wrap .ant-modal-footer .ant-btn-primary:hover,.app-update-dialog-wrap .ant-modal-footer .ant-btn-primary:focus{background:linear-gradient(135deg,#0d655f 0%,#0f9f92 100%);box-shadow:0 12px 28px #0f766e3d}.app-update-dialog{flex-direction:column;gap:14px;display:flex}.app-update-dialog__header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.app-update-dialog__title-main{align-items:center;gap:10px;min-width:0;display:inline-flex}.app-update-dialog__title-accent{background:linear-gradient(#34d399 0%,#0f766e 100%);border-radius:999px;flex:none;width:4px;height:20px}.app-update-dialog__title-text{color:#0f172a;min-width:0;font-size:20px;font-weight:600;line-height:30px}.app-update-dialog__status-badge{color:#0f766e;background:#ecfdf5;border:1px solid #c8f3e6;border-radius:999px;flex:none;align-items:center;height:28px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.app-update-dialog__hero{background:linear-gradient(135deg,#0f766e1f 0%,#14b8a60a 38%,#fffffffa 100%),#f7fdfa;border:1px solid #dceee8;border-radius:22px;flex-direction:column;gap:16px;padding:20px;display:flex}.app-update-dialog__icon-shell{color:#0f766e;background:#ffffffeb;border:1px solid #c8f3e6;border-radius:999px;flex:none;justify-content:center;align-items:center;width:42px;height:42px;font-size:16px;display:inline-flex;box-shadow:0 10px 20px #0f766e1a}.app-update-dialog__chunk-summary{align-items:flex-start;gap:14px;display:flex}.app-update-dialog__description{color:#334155;margin:0;font-size:14px;line-height:24px}.app-update-dialog__description.is-secondary{color:#526277;font-size:13px;line-height:22px}.app-update-dialog__version-flow{flex-direction:column;align-items:center;gap:8px;display:flex}.app-update-dialog__version-panel{text-align:center;background:#fff;border:1px solid #e3e9f1;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:100%;min-width:0;min-height:66px;padding:14px 16px;display:flex;box-shadow:0 1px 2px #0f172a08}.app-update-dialog__version-panel.is-target{background:#fff;border-color:#a6cbff;box-shadow:0 2px 6px #1677ff0f}.app-update-dialog__version-arrow{color:#1677ff;background:#eff5ff;border:1px solid #cfe0fb;border-radius:999px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;font-size:16px;display:inline-flex}.app-update-dialog__version-label{color:#6b7a90;letter-spacing:0;font-size:12px;font-weight:600;line-height:18px}.app-update-dialog__version-value{color:#0f172a;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:16px;font-weight:700;line-height:22px}.app-update-dialog__version-panel.is-target .app-update-dialog__version-label{color:#1677ff}.app-update-dialog.is-chunk .app-update-dialog__title-accent{background:linear-gradient(#fbbf24 0%,#d97706 100%)}.app-update-dialog.is-chunk .app-update-dialog__status-badge{color:#b45309;background:#fff7ed;border-color:#fed7aa}.app-update-dialog.is-chunk .app-update-dialog__hero{background:linear-gradient(135deg,#f59e0b1f 0%,#d977060a 42%,#fffffffa 100%),#fffaf2;border-color:#f8dfb0}.app-update-dialog.is-chunk .app-update-dialog__icon-shell{color:#d97706;border-color:#f7d4a2;box-shadow:0 8px 18px #d9770614}@media (width<=576px){.app-update-dialog-wrap .ant-modal{max-width:calc(100vw - 24px);margin:0 auto}.app-update-dialog-wrap .ant-modal-header,.app-update-dialog-wrap .ant-modal-body{padding-left:20px;padding-right:20px}.app-update-dialog-wrap .ant-modal-footer{padding:16px 20px 20px}.app-update-dialog-wrap .ant-modal-footer .ant-btn{flex:1 1 0}.app-update-dialog__header,.app-update-dialog__chunk-summary{flex-direction:column}.app-update-dialog__version-arrow{width:34px;height:34px}}@media (width<=992px){.app-content{padding:16px}.profile-field-grid,.profile-security-item{grid-template-columns:1fr}.profile-security-item__state{text-align:left}.role-page-grid{min-height:auto}}@media (width<=576px){.profile-hero__body{align-items:flex-start}.profile-avatar{border-radius:14px;width:52px;height:52px;font-size:22px}.profile-meta{flex-direction:column;gap:4px}}
