/* ══════════════════════════════════════════════════════════════
   新祺收单平台 · 支付宝风格主题 v3.0
   精准对标支付宝商家平台视觉规范
   ══════════════════════════════════════════════════════════════ */

/* ─────────────── 0. 设计令牌 ─────────────── */
:root {
  --ap-blue:          #1677ff;
  --ap-blue-hover:    #4096ff;
  --ap-blue-active:   #0958d9;
  --ap-blue-light:    #e6f4ff;
  --ap-blue-pale:     #f0f7ff;

  --ap-bg:            #f5f7fa;
  --ap-sidebar:       #ffffff;
  --ap-header:        #ffffff;

  --ap-radius:        6px;
  --ap-radius-lg:     10px;

  --ap-shadow-sm:     0 1px 2px rgba(0,0,0,.05), 0 1px 4px rgba(0,0,0,.04);
  --ap-shadow:        0 2px 8px rgba(0,0,0,.06),  0 1px 3px rgba(0,0,0,.04);
  --ap-shadow-lg:     0 6px 24px rgba(0,0,0,.09), 0 2px 8px rgba(0,0,0,.05);
  --ap-shadow-card:   0 1px 2px rgba(0,0,0,.04),  0 2px 6px rgba(0,0,0,.04);

  --ap-text:          #1d2129;
  --ap-text-2:        #4e5969;
  --ap-text-3:        #86909c;
  --ap-text-4:        #c9cdd4;
  --ap-border:        #e8ebf0;
  --ap-divide:        #f2f3f5;

  --ap-font: -apple-system, "PingFang SC", "Hiragino Sans GB",
             "Microsoft YaHei UI", "Microsoft YaHei",
             "Helvetica Neue", Arial, sans-serif;
}

/* ─────────────── 1. 全局基础 ─────────────── */
*, *::before, *::after { box-sizing: border-box; }

body, #root {
  font-family:              var(--ap-font) !important;
  color:                    var(--ap-text) !important;
  background:               var(--ap-bg)   !important;
  -webkit-font-smoothing:   antialiased    !important;
  -moz-osx-font-smoothing:  grayscale      !important;
  text-rendering:           optimizeLegibility !important;
  font-feature-settings:    "kern" 1, "liga" 1 !important;
}

/* 文字选中高亮 */
::selection { background: rgba(22,119,255,.15) !important; color: inherit !important; }

/* ─────────────── 2. 滚动条 ─────────────── */
::-webkit-scrollbar           { width: 5px; height: 5px; }
::-webkit-scrollbar-track     { background: transparent; }
::-webkit-scrollbar-thumb     { background: #d0d3da; border-radius: 10px; }
::-webkit-scrollbar-thumb:hover { background: #a8adb8; }
::-webkit-scrollbar-corner    { background: transparent; }

/* ─────────────── 3. 整体布局背景 ─────────────── */
.ant-layout,
.ant-layout.ant-layout-has-sider { background: var(--ap-bg) !important; }

/* ─────────────── 4. 顶部 Header ─────────────── */
.ant-layout-header,
.ant-pro-layout-header,
.ant-pro-fixed-header {
  background:    var(--ap-header) !important;
  border-bottom: 1px solid var(--ap-border) !important;
  box-shadow:    0 1px 4px rgba(0,0,0,.04) !important;
  height:        56px !important;
  line-height:   56px !important;
  padding:       0 !important;
  position:      sticky !important;
  top:           0 !important;
  z-index:       200 !important;
}

/* ─────────────── 5. 侧边栏 ─────────────── */
.ant-layout-sider,
.ant-pro-sider {
  background:   var(--ap-sidebar) !important;
  border-right: 1px solid var(--ap-border) !important;
  box-shadow:   none !important;
}

/* Logo 区域 */
.ant-pro-sider-logo,
.ant-pro-layout-sider-logo {
  background:    var(--ap-sidebar) !important;
  border-bottom: 1px solid var(--ap-border) !important;
  height:        56px !important;
  display:       flex !important;
  align-items:   center !important;
  padding:       0 20px !important;
  gap:           10px !important;
  overflow:      hidden !important;
  flex-shrink:   0 !important;
}
.ant-pro-sider-logo h1,
.ant-pro-layout-sider-logo h1 {
  font-size:      15px !important;
  font-weight:    700 !important;
  color:          var(--ap-blue) !important;
  letter-spacing: -.3px !important;
  white-space:    nowrap !important;
  margin:         0 !important;
  font-family:    var(--ap-font) !important;
}

/* ─────────────── 6. 菜单 ─────────────── */
.ant-menu,
.ant-menu-root,
.ant-layout-sider .ant-menu {
  background:   transparent !important;
  border-right: none !important;
  padding:      8px 0 !important;
}

.ant-menu-item,
.ant-menu-submenu-title {
  margin:        2px 8px !important;
  width:         calc(100% - 16px) !important;
  border-radius: var(--ap-radius) !important;
  height:        40px !important;
  line-height:   40px !important;
  font-size:     13.5px !important;
  color:         var(--ap-text-2) !important;
  transition:    background .15s ease, color .15s ease !important;
  padding-left:  16px !important;
}

.ant-menu-item:hover,
.ant-menu-submenu-title:hover {
  background: var(--ap-blue-pale) !important;
  color:      var(--ap-blue)      !important;
}

.ant-menu-item-selected,
.ant-menu-item-active {
  background:  var(--ap-blue-light) !important;
  color:       var(--ap-blue)       !important;
  font-weight: 600                  !important;
}

/* 移除右边竖线指示器 */
.ant-menu-item-selected::after,
.ant-menu-item::after { display: none !important; }

/* 图标跟随状态 */
.ant-menu-item-selected .anticon,
.ant-menu-item-active  .anticon { color: var(--ap-blue) !important; }

/* 子菜单 */
.ant-menu-sub.ant-menu-inline { background: transparent !important; }
.ant-menu-sub .ant-menu-item  {
  padding-left: 46px  !important;
  font-size:    13px  !important;
  height:       36px  !important;
  line-height:  36px  !important;
}

/* 菜单分组标题 */
.ant-menu-item-group-title {
  font-size:      11px  !important;
  font-weight:    600   !important;
  text-transform: uppercase !important;
  letter-spacing: .8px  !important;
  color:          var(--ap-text-4) !important;
  padding:        12px 16px 4px   !important;
}

/* ─────────────── 7. 收缩按钮 ─────────────── */
.ant-pro-sider-collapsed-button {
  background:    #fff !important;
  border:        1px solid var(--ap-border) !important;
  border-radius: 50% !important;
  box-shadow:    0 2px 8px rgba(0,0,0,.1) !important;
  color:         var(--ap-text-3) !important;
  width:         20px !important;
  height:        20px !important;
  transition:    all .2s !important;
}
.ant-pro-sider-collapsed-button:hover {
  background:    var(--ap-blue-light) !important;
  color:         var(--ap-blue) !important;
  border-color:  var(--ap-blue-light) !important;
}

/* ─────────────── 8. 面包屑 ─────────────── */
.ant-breadcrumb              { font-size: 13px !important; }
.ant-breadcrumb a            { color: var(--ap-text-3) !important; }
.ant-breadcrumb a:hover      { color: var(--ap-blue)   !important; }
.ant-breadcrumb-separator    { color: var(--ap-text-4) !important; }
.ant-breadcrumb li:last-child,
.ant-breadcrumb li:last-child span { color: var(--ap-text-2) !important; }

/* ─────────────── 9. 页面容器 ─────────────── */
.ant-pro-page-container { background: var(--ap-bg) !important; }

.ant-pro-page-container-children-content {
  padding:    24px !important;
  min-height: calc(100vh - 56px) !important;
}

.ant-pro-page-container-warp-page-header,
.ant-page-header {
  background:    #fff !important;
  border-bottom: 1px solid var(--ap-border) !important;
  padding:       12px 24px !important;
}

.ant-page-header-heading-title {
  font-size:   18px !important;
  font-weight: 600  !important;
  color:       var(--ap-text) !important;
}

/* 页面进入动画 */
.ant-pro-page-container { animation: ap-fade-up .28s cubic-bezier(.4,0,.2,1); }
@keyframes ap-fade-up {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0);    }
}

/* ─────────────── 10. 卡片 ─────────────── */
.ant-card {
  border-radius: var(--ap-radius-lg) !important;
  box-shadow:    var(--ap-shadow-card) !important;
  border:        1px solid var(--ap-border) !important;
  transition:    box-shadow .2s ease, transform .2s ease !important;
}
.ant-card:hover { box-shadow: var(--ap-shadow-lg) !important; }

.ant-card-head {
  border-bottom: 1px solid var(--ap-divide) !important;
  padding:       0 20px !important;
  min-height:    50px !important;
}
.ant-card-head-title {
  font-size:   15px !important;
  font-weight: 600  !important;
  color:       var(--ap-text) !important;
  padding:     14px 0 !important;
}
.ant-card-body    { padding: 20px !important; }
.ant-card-actions { border-top: 1px solid var(--ap-divide) !important; }

/* ─────────────── 11. ProCard ─────────────── */
.ant-pro-card {
  border-radius: var(--ap-radius-lg) !important;
  box-shadow:    var(--ap-shadow-card) !important;
  border:        1px solid var(--ap-border) !important;
}
.ant-pro-card-title { font-size: 15px !important; font-weight: 600 !important; color: var(--ap-text) !important; }
.ant-pro-card-header { border-bottom: 1px solid var(--ap-divide) !important; padding: 0 20px !important; min-height: 50px !important; }
.ant-pro-card-body   { padding: 20px !important; }

/* ─────────────── 12. 表格 ─────────────── */
.ant-table {
  font-size:        13px !important;
  font-feature-settings: "tnum" 1 !important;
  background:       #fff !important;
}

.ant-table-thead > tr > th {
  background:     #f7f8fa !important;
  color:          var(--ap-text-3) !important;
  font-weight:    600  !important;
  font-size:      12px !important;
  text-transform: uppercase !important;
  letter-spacing: .4px !important;
  border-bottom:  1px solid var(--ap-border) !important;
  padding:        10px 16px !important;
  white-space:    nowrap !important;
}

.ant-table-tbody > tr > td {
  border-bottom: 1px solid var(--ap-divide) !important;
  padding:       11px 16px !important;
  color:         var(--ap-text) !important;
  vertical-align: middle !important;
  transition:    background .12s ease !important;
}

.ant-table-tbody > tr:hover > td  { background: #f0f7ff !important; }
.ant-table-tbody > tr:last-child > td { border-bottom: none !important; }

/* 固定列阴影 */
.ant-table-cell-fix-right-first::after { box-shadow: -4px 0 8px rgba(0,0,0,.06) !important; }
.ant-table-cell-fix-left-last::after   { box-shadow:  4px 0 8px rgba(0,0,0,.06) !important; }

/* ProTable 整体 */
.ant-pro-table {
  border-radius: var(--ap-radius-lg) !important;
  overflow:      hidden !important;
  box-shadow:    var(--ap-shadow) !important;
}

/* ProTable 工具栏 */
.ant-pro-table-list-toolbar {
  background:    #fff !important;
  padding:       14px 20px 12px !important;
  border-bottom: 1px solid var(--ap-divide) !important;
}
.ant-pro-table-list-toolbar-title {
  font-size:   15px !important;
  font-weight: 600  !important;
  color:       var(--ap-text) !important;
}

/* ProTable 分页行 */
.ant-pro-table-pagination {
  background:  #fff !important;
  border-top:  1px solid var(--ap-divide) !important;
  padding:     12px 20px !important;
}

/* ProTable 查询筛选 */
.ant-pro-query-filter,
.ant-pro-form-light-filter {
  background:    #fff !important;
  border-radius: var(--ap-radius-lg) !important;
  padding:       16px 20px 8px !important;
  margin-bottom: 16px !important;
  box-shadow:    var(--ap-shadow-sm) !important;
  border:        1px solid var(--ap-border) !important;
}

/* 复制按钮 */
.ant-typography-copy,
.anticon-copy { color: var(--ap-text-4) !important; transition: color .15s !important; }
.ant-typography-copy:hover,
.anticon-copy:hover { color: var(--ap-blue) !important; }

/* 表格操作链接 */
.ant-pro-table a,
.ant-table-cell a {
  color:       var(--ap-blue) !important;
  font-weight: 500 !important;
  transition:  color .15s !important;
}
.ant-pro-table a:hover,
.ant-table-cell a:hover { color: var(--ap-blue-active) !important; }

/* ─────────────── 13. 统计卡 Statistic ─────────────── */
.ant-statistic-title {
  font-size:   13px !important;
  color:       var(--ap-text-3) !important;
  font-weight: 500 !important;
}
.ant-statistic-content {
  font-size:         24px !important;
  font-weight:       700  !important;
  color:             var(--ap-text) !important;
  font-feature-settings: "tnum" 1 !important;
  letter-spacing:    -.5px !important;
}

/* ─────────────── 14. 表单 & 输入框 ─────────────── */
.ant-input,
.ant-input-affix-wrapper {
  border-radius: var(--ap-radius) !important;
  border-color:  var(--ap-border) !important;
  font-size:     13px !important;
  height:        34px !important;
  color:         var(--ap-text) !important;
  transition:    border-color .15s, box-shadow .15s !important;
}
.ant-input:hover,
.ant-input-affix-wrapper:hover { border-color: #a5c8ff !important; }
.ant-input:focus,
.ant-input-focused,
.ant-input-affix-wrapper-focused {
  border-color: var(--ap-blue) !important;
  box-shadow:   0 0 0 3px rgba(22,119,255,.1) !important;
}

.ant-input-number {
  border-radius: var(--ap-radius) !important;
  border-color:  var(--ap-border) !important;
  font-feature-settings: "tnum" 1 !important;
}

.ant-select-selector {
  border-radius: var(--ap-radius) !important;
  border-color:  var(--ap-border) !important;
  height:        34px !important;
  font-size:     13px !important;
}
.ant-select:not(.ant-select-disabled):hover .ant-select-selector { border-color: #a5c8ff !important; }
.ant-select-focused:not(.ant-select-disabled) .ant-select-selector {
  border-color: var(--ap-blue) !important;
  box-shadow:   0 0 0 3px rgba(22,119,255,.1) !important;
}

.ant-picker {
  border-radius: var(--ap-radius) !important;
  border-color:  var(--ap-border) !important;
  height:        34px !important;
  font-size:     13px !important;
}
.ant-picker:hover   { border-color: #a5c8ff !important; }
.ant-picker-focused {
  border-color: var(--ap-blue) !important;
  box-shadow:   0 0 0 3px rgba(22,119,255,.1) !important;
}

.ant-form-item-label > label {
  font-size: 13px !important;
  color:     var(--ap-text-2) !important;
}

/* ─────────────── 15. 按钮 ─────────────── */
.ant-btn {
  border-radius: var(--ap-radius) !important;
  font-size:     13px !important;
  font-weight:   500  !important;
  height:        34px !important;
  padding:       0 16px !important;
  transition:    all .2s cubic-bezier(.4,0,.2,1) !important;
  display:       inline-flex !important;
  align-items:   center !important;
  justify-content: center !important;
  gap:           6px !important;
}

.ant-btn-primary {
  background:   var(--ap-blue) !important;
  border-color: var(--ap-blue) !important;
  box-shadow:   0 2px 6px rgba(22,119,255,.25) !important;
  color:        #fff !important;
}
.ant-btn-primary:hover {
  background:   var(--ap-blue-hover) !important;
  border-color: var(--ap-blue-hover) !important;
  box-shadow:   0 4px 12px rgba(22,119,255,.35) !important;
  transform:    translateY(-1px) !important;
}
.ant-btn-primary:active {
  background:   var(--ap-blue-active) !important;
  border-color: var(--ap-blue-active) !important;
  transform:    none !important;
}

.ant-btn-default:hover {
  border-color: var(--ap-blue) !important;
  color:        var(--ap-blue) !important;
}

.ant-btn-link {
  color:   var(--ap-blue) !important;
  padding: 0 4px !important;
  height:  auto !important;
}
.ant-btn-link:hover { color: var(--ap-blue-active) !important; }

.ant-btn-dangerous,
.ant-btn-primary.ant-btn-dangerous {
  background:   #f53f3f !important;
  border-color: #f53f3f !important;
}
.ant-btn-dangerous:hover,
.ant-btn-primary.ant-btn-dangerous:hover {
  background:   #cb2b2b !important;
  border-color: #cb2b2b !important;
}

/* ─────────────── 16. 标签 & 徽章 ─────────────── */
.ant-tag {
  border-radius: 100px !important;
  padding:       2px 10px !important;
  font-size:     12px !important;
  font-weight:   500  !important;
  border:        none !important;
  line-height:   20px !important;
}
.ant-tag-success,
.ant-tag-green   { background: #e8f5e9 !important; color: #2e7d32 !important; }
.ant-tag-warning,
.ant-tag-orange  { background: #fff3e0 !important; color: #e65100 !important; }
.ant-tag-error,
.ant-tag-red     { background: #ffebee !important; color: #c62828 !important; }
.ant-tag-blue,
.ant-tag-processing { background: #e3f2fd !important; color: #1565c0 !important; }
.ant-tag-default { background: #f5f5f5 !important; color: #757575 !important; }

.ant-badge-status-dot { width: 8px !important; height: 8px !important; }
.ant-badge-status-success  .ant-badge-status-dot { background: #00b42a !important; }
.ant-badge-status-processing .ant-badge-status-dot { background: var(--ap-blue) !important; }
.ant-badge-status-error   .ant-badge-status-dot { background: #f53f3f !important; }
.ant-badge-status-warning .ant-badge-status-dot { background: #ff7d00 !important; }
.ant-badge-status-default .ant-badge-status-dot { background: #86909c !important; }

/* ─────────────── 17. 分页 ─────────────── */
.ant-pagination-item {
  border-radius: var(--ap-radius) !important;
  font-size:     13px !important;
}
.ant-pagination-item-active {
  background:    var(--ap-blue) !important;
  border-color:  var(--ap-blue) !important;
}
.ant-pagination-item-active a  { color: #fff !important; }
.ant-pagination-item:hover     { border-color: var(--ap-blue) !important; }
.ant-pagination-item:hover a   { color: var(--ap-blue) !important; }
.ant-pagination-prev .ant-pagination-item-link,
.ant-pagination-next .ant-pagination-item-link { border-radius: var(--ap-radius) !important; }
.ant-pagination-prev:hover .ant-pagination-item-link,
.ant-pagination-next:hover .ant-pagination-item-link {
  border-color: var(--ap-blue) !important;
  color:        var(--ap-blue) !important;
}

/* ─────────────── 18. Modal ─────────────── */
.ant-modal-content {
  border-radius: 12px !important;
  overflow:      hidden !important;
  box-shadow:    0 16px 56px rgba(0,0,0,.14) !important;
  padding:       0 !important;
}
.ant-modal-header  { border-bottom: 1px solid var(--ap-divide) !important; padding: 18px 24px !important; margin: 0 !important; background: #fff !important; }
.ant-modal-title   { font-size: 16px !important; font-weight: 600 !important; color: var(--ap-text) !important; }
.ant-modal-body    { padding: 24px !important; }
.ant-modal-footer  { border-top: 1px solid var(--ap-divide) !important; padding: 14px 24px !important; margin: 0 !important; }

/* ─────────────── 19. Drawer ─────────────── */
.ant-drawer-header { border-bottom: 1px solid var(--ap-divide) !important; padding: 18px 24px !important; }
.ant-drawer-title  { font-size: 16px !important; font-weight: 600 !important; color: var(--ap-text) !important; }
.ant-drawer-body   { padding: 24px !important; }

/* ─────────────── 20. 下拉菜单 ─────────────── */
.ant-dropdown-menu {
  border-radius: 8px !important;
  box-shadow:    0 4px 20px rgba(0,0,0,.10) !important;
  padding:       6px !important;
  border:        1px solid var(--ap-border) !important;
}
.ant-dropdown-menu-item {
  border-radius: 6px !important;
  font-size:     13px !important;
  padding:       8px 14px !important;
  color:         var(--ap-text) !important;
  transition:    background .12s !important;
}
.ant-dropdown-menu-item:hover  { background: var(--ap-blue-pale) !important; color: var(--ap-blue) !important; }
.ant-dropdown-menu-item-divider { background: var(--ap-divide) !important; margin: 4px 0 !important; }

/* ─────────────── 21. Tooltip ─────────────── */
.ant-tooltip-inner {
  border-radius: 6px !important;
  font-size:     12px !important;
  padding:       6px 10px !important;
  background:    rgba(29,33,41,.92) !important;
  box-shadow:    0 4px 14px rgba(0,0,0,.15) !important;
}

/* ─────────────── 22. Popconfirm / Popover ─────────────── */
.ant-popover-inner {
  border-radius: 10px !important;
  box-shadow:    0 6px 24px rgba(0,0,0,.12) !important;
  padding:       16px !important;
}

/* ─────────────── 23. Alert ─────────────── */
.ant-alert {
  border-radius: 8px !important;
  font-size:     13px !important;
  border:        none !important;
  padding:       10px 14px !important;
}
.ant-alert-info    { background: #e6f4ff !important; }
.ant-alert-success { background: #f6ffed !important; }
.ant-alert-warning { background: #fffbe6 !important; }
.ant-alert-error   { background: #fff2f0 !important; }

/* ─────────────── 24. Checkbox / Radio / Switch ─────────────── */
.ant-checkbox-checked .ant-checkbox-inner { background: var(--ap-blue) !important; border-color: var(--ap-blue) !important; }
.ant-radio-checked .ant-radio-inner       { border-color: var(--ap-blue) !important; }
.ant-radio-inner::after                   { background:   var(--ap-blue) !important; }
.ant-switch-checked                       { background:   var(--ap-blue) !important; }

/* ─────────────── 25. 空状态 ─────────────── */
.ant-empty-description { font-size: 13px !important; color: var(--ap-text-4) !important; }

/* ─────────────── 26. Loading Spin ─────────────── */
.ant-spin-dot-item { background-color: var(--ap-blue) !important; }

/* ─────────────── 27. 骨架屏 ─────────────── */
.ant-skeleton-element .ant-skeleton-input,
.ant-skeleton-element .ant-skeleton-button,
.ant-skeleton-element .ant-skeleton-avatar,
.ant-skeleton-content .ant-skeleton-title,
.ant-skeleton-content .ant-skeleton-paragraph li {
  background: linear-gradient(90deg, #f0f2f5 25%, #e8eaed 50%, #f0f2f5 75%) !important;
  background-size: 400% 100% !important;
  animation: ap-skeleton 1.5s ease infinite !important;
}
@keyframes ap-skeleton {
  0%   { background-position: 100% 50%; }
  100% { background-position:   0% 50%; }
}

/* ─────────────── 28. 右上角用户区 ─────────────── */
.ant-pro-layout-header-actions,
.umi-plugin-layout-right {
  display:     flex !important;
  align-items: center !important;
  gap:         4px !important;
  height:      100% !important;
  padding:     0 8px !important;
}
.ant-pro-layout-header-actions-item,
.umi-plugin-layout-action {
  display:        flex !important;
  align-items:    center !important;
  justify-content: center !important;
  height:         40px !important;
  padding:        0 10px !important;
  border-radius:  var(--ap-radius) !important;
  cursor:         pointer !important;
  color:          var(--ap-text-2) !important;
  font-size:      13px !important;
  transition:     background .15s !important;
}
.ant-pro-layout-header-actions-item:hover,
.umi-plugin-layout-action:hover { background: #f5f5f5 !important; }
.umi-plugin-layout-name { color: var(--ap-text-2) !important; font-size: 13px !important; font-weight: 500 !important; }

/* ─────────────── 29. Progress Bar (全局顶部进度条区域) ─────────────── */
#ap-progress {
  position:   fixed;
  top:        0;
  left:       0;
  width:      0%;
  height:     2px;
  background: linear-gradient(90deg, var(--ap-blue), #36cfc9);
  z-index:    9999;
  transition: width .2s ease, opacity .4s ease;
  pointer-events: none;
  box-shadow: 0 0 8px rgba(22,119,255,.5);
}

/* ─────────────── 30. 自定义：页面底部信息栏 ─────────────── */
#ap-footer {
  text-align:  center;
  padding:     20px;
  color:       var(--ap-text-4);
  font-size:   12px;
  margin-top:  auto;
}

/* ─────────────── 31. 登录页背景（供登录 JS 组件使用） ─────────────── */
.ap-login-wrap {
  min-height:      100vh;
  display:         flex;
  background:      #f5f7fa;
  font-family:     var(--ap-font);
}

/* 左侧品牌区 */
.ap-login-brand {
  flex:            1;
  background:      linear-gradient(145deg, #1677ff 0%, #0958d9 55%, #003eb3 100%);
  display:         flex;
  flex-direction:  column;
  align-items:     center;
  justify-content: center;
  padding:         60px 48px;
  position:        relative;
  overflow:        hidden;
  min-height:      100vh;
}
.ap-login-brand::before {
  content:    '';
  position:   absolute;
  inset:      0;
  background: radial-gradient(ellipse at 30% 30%, rgba(255,255,255,.1) 0%, transparent 60%),
              radial-gradient(ellipse at 80% 80%, rgba(0,0,0,.08) 0%, transparent 60%);
}

/* 右侧表单区 */
.ap-login-form-wrap {
  width:           480px;
  min-width:       380px;
  display:         flex;
  flex-direction:  column;
  align-items:     center;
  justify-content: center;
  background:      #fff;
  padding:         60px 56px;
  box-shadow:      -4px 0 20px rgba(0,0,0,.06);
}

/* 移动端折叠 */
@media (max-width: 768px) {
  .ap-login-brand { display: none; }
  .ap-login-form-wrap { width: 100%; min-width: unset; padding: 40px 28px; box-shadow: none; }
}

/* ─────────────── 32. 数字表格对齐 ─────────────── */
.ant-table-tbody td[data-type="number"],
.ant-pro-field-money,
.ant-statistic-content-value {
  font-feature-settings: "tnum" 1 !important;
}

/* ─────────────── 33. 表格行选中 ─────────────── */
.ant-table-tbody > tr.ant-table-row-selected > td {
  background: var(--ap-blue-pale) !important;
}

/* ─────────────── 34. Input 前缀/后缀图标 ─────────────── */
.ant-input-prefix,
.ant-input-suffix { color: var(--ap-text-4) !important; }
.ant-input-affix-wrapper:focus-within .ant-input-prefix { color: var(--ap-blue) !important; }

/* ─────────────── 35. Table 排序 ─────────────── */
.ant-table-column-sorter-up.active,
.ant-table-column-sorter-down.active { color: var(--ap-blue) !important; }

/* ─────────────── 36. 链接 ─────────────── */
a { color: var(--ap-blue) !important; transition: color .15s !important; }
a:hover { color: var(--ap-blue-active) !important; }

/* ─────────────── 37. 折叠侧边栏时 Logo ─────────────── */
.ant-layout-sider-collapsed .ant-pro-sider-logo h1 { display: none !important; }
