.whyfjz-chart-row > .ant-col > .ant-card .ant-card-body,
.ant-layout-content .ant-row:has(.whyfjz-provider-pie) > .ant-col > .ant-card .ant-card-body {
  flex: 1 1 auto !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  box-sizing: border-box !important;
  /* 多留一点顶距，避免折线图例汉字顶部被裁 */
  padding: 20px 12px 12px !important;
}

.whyfjz-chart-row > .ant-col > .ant-card .ant-card-body > div,
.ant-layout-content .ant-row:has(.whyfjz-provider-pie) > .ant-col > .ant-card .ant-card-body > div {
  flex: 1 1 auto !important;
  width: 100% !important;
  height: 292px !important;
  max-height: 292px !important;
  min-height: 0 !important;
  overflow: visible !important;
}

.whyfjz-provider-pie .ant-card-body {
  padding: 8px 4px 10px !important;
}

.whyfjz-provider-pie div[_echarts_instance_],
.whyfjz-provider-pie canvas {
  width: 100% !important;
  height: 100% !important;
  max-height: 292px !important;
}

/*
 * 提供商/证书等编辑页：Casdoor 用 Card(type=inner)+Row/Col，不是 ant-form。
 * 标签 span:2 对中文过窄，整行视觉上挤在左侧；拉宽标签列与输入列。
 */
.ant-layout-content .ant-card.ant-card-type-inner {
  width: 100% !important;
  max-width: 1100px !important;
  /* 随内容增高，由外层页面滚动；避免卡死视口高度造成底部空洞 */
  height: auto !important;
  max-height: none !important;
  min-height: 0 !important;
  overflow: visible !important;
}

.ant-layout-content .ant-card.ant-card-type-inner > .ant-card-body {
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  overflow: visible !important;
}

.ant-layout-content .ant-card.ant-card-type-inner > .ant-card-body > .ant-layout {
  height: auto !important;
  min-height: 0 !important;
}

.ant-layout-content .ant-card.ant-card-type-inner > .ant-card-body > .ant-layout > .ant-layout {
  height: auto !important;
  overflow: visible !important;
}

.ant-layout-content .ant-card.ant-card-type-inner > .ant-card-body .ant-layout-content {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
  padding-bottom: 16px !important;
}

/* 编辑表单行距略收紧，同屏多显示几项，把纵向空间用起来 */
.ant-layout-content .ant-card.ant-card-type-inner > .ant-card-body .ant-layout-content > .ant-row {
  margin-top: 12px !important;
}

.ant-layout-content .ant-card.ant-card-type-inner .ant-row {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: flex-start !important;
  width: 100% !important;
  max-width: 1100px !important;
}

.ant-layout-content .ant-card.ant-card-type-inner .ant-col-2 {
  flex: 0 0 160px !important;
  max-width: 160px !important;
  width: 160px !important;
}

.ant-layout-content .ant-card.ant-card-type-inner .ant-col-22 {
  flex: 1 1 auto !important;
  max-width: calc(100% - 168px) !important;
  width: auto !important;
}

.ant-layout-content .ant-card.ant-card-type-inner .ant-input,
.ant-layout-content .ant-card.ant-card-type-inner .ant-input-affix-wrapper,
.ant-layout-content .ant-card.ant-card-type-inner .ant-input-password,
.ant-layout-content .ant-card.ant-card-type-inner .ant-select,
.ant-layout-content .ant-card.ant-card-type-inner .ant-select-selector,
.ant-layout-content .ant-card.ant-card-type-inner textarea.ant-input {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 320px !important;
}

/* 仍保留对真正 ant-form 页面的加宽 */
.ant-layout-content .ant-form {
  width: 100% !important;
  max-width: 1100px !important;
}

.ant-layout-content .ant-form .ant-form-item-control {
  flex: 1 1 auto !important;
  max-width: none !important;
}

.ant-layout-content .ant-form .ant-input,
.ant-layout-content .ant-form .ant-input-affix-wrapper,
.ant-layout-content .ant-form .ant-select,
.ant-layout-content .ant-form .ant-select-selector {
  width: 100% !important;
  max-width: 100% !important;
}


/*
 * 登录/注册共用：全屏灰底 + 居中白卡片
 */
.login-content {
  max-width: none !important;
  width: 100% !important;
  min-height: 100vh !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: #f3f4f6 !important;
  margin: 0 !important;
  padding: 28px 16px !important;
  box-sizing: border-box !important;
}

.login-panel,
.login-panel-dark,
.signup-page .signup-panel {
  max-width: 400px !important;
  width: 100% !important;
  margin: 0 auto !important;
  background: #fff !important;
  border: 1px solid #e5e7eb !important;
  border-radius: 16px !important;
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.08) !important;
  padding: 0 !important;
  box-sizing: border-box !important;
}

.login-panel br,
.login-content br {
  display: none !important;
}

.login-panel .login-logo-box,
.login-content:not(.signup-page) .login-logo-box {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  height: 0 !important;
  overflow: hidden !important;
}

.login-form {
  position: relative !important;
  margin-top: 0 !important;
  padding: 28px 28px 24px !important;
  text-align: left !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

/* 登录页语言切换（地球图标）；注册页对应 .signup-languages */
.login-form .login-languages,
.login-form .signup-languages {
  display: none !important;
}

.login-form .ant-form {
  width: 100% !important;
  max-width: 100% !important;
}

.login-form .ant-tabs-nav {
  margin: 4px 0 10px !important;
}

.login-signup-link {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  justify-content: center !important;
  align-items: center !important;
  width: 100% !important;
  min-height: 28px !important;
  margin: 16px 0 8px !important;
  color: #6b7280 !important;
  font-size: 13px !important;
}

.login-signup-link .login-link,
.login-signup-footer .login-link {
  float: none !important;
  color: #2563eb !important;
  font-weight: 500 !important;
  text-decoration: none !important;
}

#root form.ant-form .ant-form-item {
  margin-bottom: 12px !important;
}

.login-form .ant-space-compact {
  width: 100% !important;
  display: inline-flex !important;
  align-items: stretch !important;
  gap: 0 !important;
}

.login-form .ant-space-compact .ant-input-affix-wrapper,
.login-form .ant-space-compact .ant-input {
  flex: 1 1 auto !important;
  min-width: 0 !important;
}

.login-form .ant-space-compact .ant-btn {
  flex: 0 0 auto !important;
  height: auto !important;
  align-self: stretch !important;
  display: inline-flex !important;
  align-items: center !important;
}

.login-form .login-button,
.login-form button.ant-btn-primary[type="submit"],
.login-form .ant-btn.login-button {
  width: 100% !important;
  height: 42px !important;
  margin-top: 4px !important;
  border-radius: 21px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 15px !important;
  background: #111827 !important;
  border-color: #111827 !important;
  color: #fff !important;
}

.login-form .ant-form-item:has(.provider-img),
.login-form .ant-form-item:has(.provider-link) {
  text-align: center !important;
  margin-bottom: 0 !important;
}

.login-form .ant-form + div {
  text-align: center !important;
}

/* 登录/注册共用第三方图标：同一尺寸，保留 ProviderButton 原生悬浮光晕（禁止 overflow 裁切） */
.login-form .provider-link,
.signup-page .provider-link,
.signup-page .signup-providers > span {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 40px !important;
  height: 40px !important;
  margin: 0 !important;
  float: none !important;
  vertical-align: middle !important;
  line-height: 0 !important;
  overflow: visible !important;
}

.login-form .provider-img,
.signup-page .provider-img,
.login-form .provider-link img,
.signup-page .provider-link img {
  width: 32px !important;
  height: 32px !important;
  max-width: 32px !important;
  max-height: 32px !important;
  margin: 0 !important;
  float: none !important;
  object-fit: contain !important;
  border-radius: 50% !important;
}

/* ========== 注册页（.signup-page；卡片壳层与登录共用 .login-content / .login-panel） ========== */
.signup-page .login-logo-box,
.signup-page .panel-logo,
.signup-page .signup-languages {
  display: none !important;
}

.signup-page .signup-form.login-form {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 28px 28px 24px !important;
  text-align: left !important;
  box-sizing: border-box !important;
}

.auth-heading,
.signup-heading {
  text-align: center !important;
  margin: 0 0 16px !important;
}

.auth-brand,
.signup-brand {
  width: 44px !important;
  height: 44px !important;
  max-width: 44px !important;
  max-height: 44px !important;
  object-fit: contain !important;
  border-radius: 10px !important;
  display: block !important;
  margin: 0 auto 8px !important;
}

.auth-title,
.signup-title {
  font-size: 22px !important;
  font-weight: 650 !important;
  color: #111827 !important;
  line-height: 1.25 !important;
  margin: 0 0 4px !important;
}

.auth-subtitle,
.signup-subtitle {
  font-size: 13px !important;
  color: #6b7280 !important;
  line-height: 1.4 !important;
  margin: 0 !important;
}

/* 覆盖管理台「ant-form max-width:1100px」对注册表单的影响 */
.signup-page .ant-form,
.ant-layout-content .signup-page .ant-form,
.signup-page .signup-ant-form {
  width: 100% !important;
  max-width: 100% !important;
}

.signup-page .ant-form-item {
  margin-bottom: 14px !important;
}

.signup-page .ant-row {
  display: block !important;
  flex-wrap: nowrap !important;
  max-width: 100% !important;
}

.signup-page .ant-col,
.signup-page .ant-form-item-label,
.signup-page .ant-form-item-control {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  flex: none !important;
  padding: 0 !important;
}

.signup-page .ant-form-item-label {
  padding: 0 0 6px !important;
  line-height: 1.2 !important;
  text-align: left !important;
}

.signup-page .ant-form-item-label > label {
  height: auto !important;
  font-size: 13px !important;
  color: #374151 !important;
}

.signup-page .ant-form-item-control-input,
.signup-page .ant-form-item-control-input-content {
  min-height: 0 !important;
}

/* 统一控件高度：避免 size=large + min-height 把密码框撑高 */
.signup-page .ant-input,
.signup-page .ant-input-affix-wrapper,
.signup-page .ant-input-password,
.signup-page .ant-input-lg,
.signup-page .ant-input-affix-wrapper-lg {
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: 40px !important;
  min-height: 40px !important;
  max-height: 40px !important;
  padding: 0 11px !important;
  border-radius: 10px !important;
  border: 1px solid #c4c4c4 !important;
  background: #fff !important;
  box-shadow: none !important;
  box-sizing: border-box !important;
  font-size: 14px !important;
  line-height: 38px !important;
}

.signup-page .ant-input-affix-wrapper,
.signup-page .ant-input-password,
.signup-page .ant-input-affix-wrapper-lg {
  display: inline-flex !important;
  align-items: center !important;
  padding-inline: 11px !important;
}

.signup-page .ant-input-affix-wrapper > input.ant-input,
.signup-page .ant-input-password > input.ant-input,
.signup-page .ant-input-affix-wrapper > input.ant-input-lg {
  height: 100% !important;
  min-height: 0 !important;
  max-height: none !important;
  padding: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  line-height: 1.4 !important;
  background: transparent !important;
}

.signup-page .ant-input-affix-wrapper .ant-input-prefix,
.signup-page .ant-input-affix-wrapper .ant-input-suffix,
.signup-page .ant-input-password .ant-input-suffix {
  display: inline-flex !important;
  align-items: center !important;
  margin: 0 !important;
}

.signup-page .ant-input-affix-wrapper .ant-input-prefix {
  margin-inline-end: 8px !important;
}

.signup-page .ant-input-affix-wrapper .ant-input-suffix,
.signup-page .ant-input-password .ant-input-suffix {
  margin-inline-start: 8px !important;
}

.signup-page .ant-input:hover,
.signup-page .ant-input-affix-wrapper:hover,
.signup-page .ant-input-password:hover {
  border-color: #8c8c8c !important;
}

.signup-page .ant-input:focus,
.signup-page .ant-input-affix-wrapper-focused,
.signup-page .ant-input-affix-wrapper:focus,
.signup-page .ant-input-password-focused {
  border-color: #111827 !important;
  box-shadow: 0 0 0 2px rgba(17, 24, 39, 0.08) !important;
}

/* 验证码：输入框 + 按钮等高无缝拼接 */
.signup-page .ant-space,
.signup-page .ant-space-compact {
  width: 100% !important;
  display: inline-flex !important;
  align-items: stretch !important;
  gap: 0 !important;
  column-gap: 0 !important;
}

.signup-page .ant-space-compact > .ant-input,
.signup-page .ant-space-compact > .ant-input-affix-wrapper,
.signup-page .ant-space-compact > .ant-input-password {
  flex: 1 1 auto !important;
  width: auto !important;
  max-width: none !important;
  height: 40px !important;
  min-height: 40px !important;
  max-height: 40px !important;
  border-radius: 10px 0 0 10px !important;
  z-index: 1 !important;
}

.signup-page .ant-space-compact > .ant-btn,
.signup-page .ant-space-compact > button.ant-btn-primary,
.signup-page .ant-space-compact > .ant-btn-lg {
  flex: 0 0 auto !important;
  width: auto !important;
  max-width: none !important;
  height: 40px !important;
  min-height: 40px !important;
  max-height: 40px !important;
  margin-inline-start: -1px !important;
  padding: 0 14px !important;
  border-radius: 0 10px 10px 0 !important;
  border: 1px solid #c4c4c4 !important;
  background: #f3f4f6 !important;
  color: #111827 !important;
  box-shadow: none !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 14px !important;
  line-height: 1 !important;
  z-index: 0 !important;
}

.signup-page .ant-space-compact > .ant-btn:hover,
.signup-page .ant-space-compact > button.ant-btn-primary:hover {
  color: #111827 !important;
  border-color: #8c8c8c !important;
  background: #e5e7eb !important;
  z-index: 2 !important;
}

.signup-page .ant-checkbox {
  top: 0 !important;
  align-self: center !important;
}

.signup-page .ant-checkbox-inner {
  width: 16px !important;
  height: 16px !important;
  border: 1.5px solid #9ca3af !important;
  border-radius: 4px !important;
  background: #fff !important;
}

.signup-page .ant-checkbox-checked .ant-checkbox-inner {
  background: #111827 !important;
  border-color: #111827 !important;
}

.signup-page .ant-checkbox-wrapper {
  display: inline-flex !important;
  align-items: center !important;
  gap: 0 !important;
  line-height: 22px !important;
  color: #4b5563 !important;
  font-size: 13px !important;
}

.signup-page .ant-checkbox + span {
  padding-inline-start: 8px !important;
  padding-inline-end: 0 !important;
  line-height: 22px !important;
}

/* 只有「注册」提交按钮全宽，不能波及「获取验证码」 */
.signup-page .signup-button,
.signup-page button.ant-btn-primary[type="submit"] {
  width: 100% !important;
  height: 42px !important;
  border-radius: 21px !important;
  margin-top: 2px !important;
  background: #111827 !important;
  border-color: #111827 !important;
  color: #fff !important;
  font-size: 15px !important;
  font-weight: 500 !important;
}

.signup-page .signup-submit-item {
  margin-bottom: 0 !important;
}

.signup-page .signup-login-hint {
  display: block !important;
  width: 100% !important;
  margin: 16px 0 8px !important;
  text-align: center !important;
  font-size: 13px !important;
  line-height: 1.5 !important;
  color: #6b7280 !important;
}

.signup-page .signup-providers {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  width: 100% !important;
  margin: 8px 0 0 !important;
  padding: 8px 0 4px !important;
  gap: 8px !important;
  overflow: visible !important;
}

.signup-page a {
  color: #2563eb !important;
}

.signup-page .ant-form-item:has(.signup-login-hint) {
  text-align: center !important;
}

/* ========== 数据看板 / 应用列表：修复 Provider 环形图裁切、Logo 过大、Provider 文字重叠 ========== */

/* 2. 应用列表：限制 Logo 尺寸 */
.ant-table-tbody td img,
.ant-table-tbody td .ant-avatar,
.ant-table-tbody td .ant-image-img,
.ant-table-row td img,
.ant-table-row td .ant-avatar {
  width: 40px !important;
  height: 40px !important;
  max-width: 40px !important;
  max-height: 40px !important;
  object-fit: contain !important;
  border-radius: 6px !important;
}

/* 3. 应用列表：Provider 列 flex 横向单行，超出单元格宽度才换行，压缩表格行高 */
.ant-table-thead th:nth-last-child(2),
.ant-table-tbody td:nth-last-child(2) {
  min-width: 220px !important;
  width: auto !important;
  max-width: none !important;
}

.ant-table-tbody td:nth-last-child(2) > div,
.ant-table-tbody td:nth-last-child(2) > span,
.ant-table-tbody td:nth-last-child(2) .ant-table-cell-content > div,
.ant-table-tbody td:nth-last-child(2) .ant-table-cell-content > span {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 4px 10px !important;
  line-height: 1.5 !important;
}

/* 每个提供商（编辑按钮 + 名称链接）整体一行，内部禁止断行 */
.ant-table-tbody td:nth-last-child(2) > div > div,
.ant-table-tbody td:nth-last-child(2) > span > span,
.ant-table-tbody td:nth-last-child(2) .ant-table-cell-content > div > div,
.ant-table-tbody td:nth-last-child(2) .ant-table-cell-content > span > span {
  display: inline-flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  white-space: nowrap !important;
}