* {
  margin: 0;
  -webkit-tap-highlight-color: transparent;
}

html,
body {
  -webkit-user-select: none;
  -moz-user-select: none;
       user-select: none;
  width: 100%;
  height: 100%;
}

body {
  overflow-x: hidden;
  font-size: 16px;
}

uni-app,
uni-page,
uni-page-wrapper,
uni-page-body {
  display: block;
  box-sizing: border-box;
  width: 100%;
}

uni-page-wrapper {
  position: relative;
}

#app,
uni-app,
uni-page,
uni-page-wrapper {
  height: 100%;
}

/* toast,modal,actionSheet,picker,layout */
.uni-mask {
  position: fixed;
  z-index: 999;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
}

/* toast,modal,actionSheet,picker */
.uni-fade-enter-active,
.uni-fade-leave-active {
  transition-duration: 0.25s;
  transition-property: opacity;
  transition-timing-function: ease;
}

.uni-fade-enter-from,
.uni-fade-leave-active {
  opacity: 0;
}

.uni-loading,
uni-button[loading]:before {
  background-color: transparent;
  background-image: url('data:image/svg+xml;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=');
  background-repeat: no-repeat;
}

.uni-loading {
  width: 20px;
  height: 20px;
  display: inline-block;
  vertical-align: middle;
  animation: uni-loading 1s steps(12, end) infinite;
  background-size: 100%;
}

@keyframes uni-loading {
  0% {
    transform: rotate3d(0, 0, 1, 0deg);
  }

  100% {
    transform: rotate3d(0, 0, 1, 360deg);
  }
}

html {
  /* --UI-BG-0: #ededed; */
  --primary-color: #007aff;
  --UI-BG: #fff;
  --UI-BG-1: #f7f7f7;
  --UI-BG-2: #fff;
  --UI-BG-3: #f7f7f7;
  --UI-BG-4: #4c4c4c;
  --UI-BG-5: #fff;
  --UI-FG: #000;
  --UI-FG-0: rgba(0, 0, 0, 0.9);
  --UI-FG-HALF: rgba(0, 0, 0, 0.9);
  --UI-FG-1: rgba(0, 0, 0, 0.5);
  --UI-FG-2: rgba(0, 0, 0, 0.3);
  --UI-FG-3: rgba(0, 0, 0, 0.1);
}

uni-page[data-type] uni-page-body {
  background-color: transparent;
}
body::after {
  position: fixed;
  content: '';
  left: -1000px;
  top: -1000px;
  animation: shadow-preload 0.1s;
  animation-delay: 3s;
}

@keyframes shadow-preload {
  0% {
    background-image: url(https://cdn.dcloud.net.cn/img/shadow-grey.png);
  }
  100% {
    background-image: url(https://cdn.dcloud.net.cn/img/shadow-grey.png);
  }
}
.uni-async-error {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  color: #999;
  padding: 100px 10px;
  text-align: center;
}
.uni-async-loading {
  box-sizing: border-box;
  width: 100%;
  padding: 50px;
  text-align: center;
}

.uni-async-loading .uni-loading {
  width: 30px;
  height: 30px;
}
uni-page-head {
  display: block;
  box-sizing: border-box;
}

.uni-page-head {
  position: fixed;
  left: var(--window-left);
  right: var(--window-right);
  height: 44px;
  height: calc(44px + constant(safe-area-inset-top));
  height: calc(44px + env(safe-area-inset-top));
  padding: 7px 3px;
  padding-top: calc(7px + constant(safe-area-inset-top));
  padding-top: calc(7px + env(safe-area-inset-top));
  display: flex;
  overflow: hidden;
  justify-content: space-between;
  box-sizing: border-box;
  z-index: 998;
  color: #fff;
  background-color: #000;
  transition-property: all;
}

.uni-page-head * {
  box-sizing: border-box;
}

.uni-page-head .uni-btn-icon {
  overflow: hidden;
  min-width: 1em;
  font-style: normal;
}

.uni-page-head-titlePenetrate,
.uni-page-head-titlePenetrate .uni-page-head-bd,
.uni-page-head-titlePenetrate .uni-page-head-bd * {
  pointer-events: none;
}

.uni-page-head-titlePenetrate * {
  pointer-events: auto;
}

.uni-page-head.uni-page-head-transparent .uni-page-head-ft > div {
  justify-content: center;
}

.uni-page-head ~ .uni-placeholder {
  width: 100%;
  height: 44px;
  height: calc(44px + constant(safe-area-inset-top));
  height: calc(44px + env(safe-area-inset-top));
}

.uni-placeholder-titlePenetrate {
  pointer-events: none;
}

.uni-page-head-hd {
  display: flex;
  align-items: center;
  font-size: 16px;
}

.uni-page-head-bd {
  position: absolute;
  left: 70px;
  right: 70px;
  min-width: 0;
  -webkit-user-select: auto;
     -moz-user-select: auto;
          user-select: auto;
}

.uni-page-head-btn {
  position: relative;
  width: auto;
  margin: 0 2px;
  word-break: keep-all;
  white-space: pre;
  cursor: pointer;
  font-size: 0px;
}

/* .uni-page-head-btn svg {
} */

.uni-page-head-transparent .uni-page-head-btn {
  display: flex;
  align-items: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background-color: rgba(0, 0, 0, 0.5);
}

.uni-page-head-btn-red-dot::after {
  content: attr(badge-text);
  position: absolute;
  right: 0;
  top: 0;
  background-color: red;
  color: white;
  width: 18px;
  height: 18px;
  line-height: 18px;
  border-radius: 18px;
  overflow: hidden;
  transform: scale(0.5) translate(40%, -40%);
  transform-origin: 100% 0;
}

.uni-page-head-btn-red-dot[badge-text]::after {
  font-size: 12px;
  width: auto;
  min-width: 18px;
  max-width: 42px;
  text-align: center;
  padding: 0 3px;
  transform: scale(0.7) translate(40%, -40%);
}

.uni-page-head-btn-select svg {
  vertical-align: middle;
  margin-left: 2px;
  transform: rotate(270deg) scale(0.8);
}

.uni-page-head-search {
  position: relative;
  display: flex;
  flex: 1;
  margin: 0 2px;
  line-height: 30px;
  font-size: 15px;
}

.uni-page-head-search-input {
  width: 100%;
  height: 100%;
  padding-left: 34px;
  text-align: left;
}

.uni-page-head-search-input .uni-input-input:disabled {
  pointer-events: none;
}

.uni-page-head-search-placeholder {
  position: absolute;
  max-width: 100%;
  height: 100%;
  padding-left: 34px;
  overflow: hidden;
  word-break: keep-all;
  white-space: pre;
}

.uni-page-head-search-placeholder-right {
  right: 0;
}

.uni-page-head-search-placeholder-center {
  left: 50%;
  transform: translateX(-50%);
}

.uni-page-head-search-icon {
  position: absolute;
  top: 0;
  left: 2px;
  width: 30px;
  height: 30px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.uni-page-head-ft {
  display: flex;
  align-items: center;
  flex-direction: row-reverse;
  font-size: 13px;
}

.uni-page-head__title {
  font-weight: bold;
  font-size: 16px;
  line-height: 30px;
  text-align: center;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.uni-page-head__title .uni-loading {
  width: 16px;
  height: 16px;
  margin-top: -3px;
}

.uni-page-head__title .uni-page-head__title_image {
  width: auto;
  height: 26px;
  vertical-align: middle;
}

.uni-page-head-shadow {
  overflow: visible;
}

.uni-page-head-shadow::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  height: 5px;
  background-size: 100% 100%;
}

uni-page-head[uni-page-head-type='default'] ~ uni-page-wrapper {
  height: calc(100% - 44px);
  height: calc(100% - 44px - constant(safe-area-inset-top));
  height: calc(100% - 44px - env(safe-area-inset-top));
}

.uni-page-head-shadow-grey::after {
  background-image: url('https://cdn.dcloud.net.cn/img/shadow-grey.png');
}

.uni-page-head-shadow-blue::after {
  background-image: url('https://cdn.dcloud.net.cn/img/shadow-blue.png');
}

.uni-page-head-shadow-green::after {
  background-image: url('https://cdn.dcloud.net.cn/img/shadow-green.png');
}

.uni-page-head-shadow-orange::after {
  background-image: url('https://cdn.dcloud.net.cn/img/shadow-orange.png');
}

.uni-page-head-shadow-red::after {
  background-image: url('https://cdn.dcloud.net.cn/img/shadow-red.png');
}

.uni-page-head-shadow-yellow::after {
  background-image: url('https://cdn.dcloud.net.cn/img/shadow-yellow.png');
}
            
uni-tabbar {
  display: block;
  box-sizing: border-box;
  width: 100%;
  z-index: 998;
}

.uni-tabbar {
  display: flex;
  z-index: 998;
  box-sizing: border-box;
}

.uni-tabbar-top,
.uni-tabbar-bottom,
.uni-tabbar-top .uni-tabbar,
.uni-tabbar-bottom .uni-tabbar {
  position: fixed;
  left: var(--window-left);
  right: var(--window-right);
}

.uni-app--showlayout + .uni-tabbar-top,
.uni-app--showlayout + .uni-tabbar-bottom,
.uni-app--showlayout + .uni-tabbar-top .uni-tabbar,
.uni-app--showlayout + .uni-tabbar-bottom .uni-tabbar {
  left: var(--window-margin);
  right: var(--window-margin);
}

.uni-tabbar-bottom .uni-tabbar {
  bottom: 0;
  padding-bottom: 0;
  padding-bottom: constant(safe-area-inset-bottom);
  padding-bottom: env(safe-area-inset-bottom);
}

.uni-tabbar ~ .uni-placeholder {
  width: 100%;
  margin-bottom: 0;
  margin-bottom: constant(safe-area-inset-bottom);
  margin-bottom: env(safe-area-inset-bottom);
}

.uni-tabbar * {
  box-sizing: border-box;
}

.uni-tabbar__item {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  flex: 1;
  font-size: 0;
  text-align: center;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}

.uni-tabbar__bd {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

.uni-tabbar__icon {
  position: relative;
  display: inline-block;
  margin-top: 5px;
}

.uni-tabbar__icon.uni-tabbar__icon__diff {
  margin-top: 0px;
  width: 34px;
  height: 34px;
}

.uni-tabbar__icon img {
  width: 100%;
  height: 100%;
}

.uni-tabbar__iconfont {
  font-family: 'UniTabbarIconFont';
}

.uni-tabbar__label {
  position: relative;
  text-align: center;
  font-size: 10px;
}

.uni-tabbar-border {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 1px;
  transform: scaleY(0.5);
}

.uni-tabbar__reddot {
  position: absolute;
  top: 2px;
  right: 0;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background-color: #f43530;
  color: #ffffff;
  transform: translate(40%, 0%);
}

.uni-tabbar__badge {
  width: auto;
  height: 16px;
  line-height: 16px;
  border-radius: 16px;
  min-width: 16px;
  padding: 0 2px;
  font-size: 12px;
  text-align: center;
  white-space: nowrap;
}

.uni-tabbar__mid {
  display: flex;
  justify-content: center;
  position: absolute;
  bottom: 0;
  background-size: 100% 100%;
}

.uni-app--showtabbar uni-page-wrapper {
  display: block;
  height: calc(100% - var(--tab-bar-height));
  height: calc(100% - var(--tab-bar-height) - constant(safe-area-inset-bottom));
  height: calc(100% - var(--tab-bar-height) - env(safe-area-inset-bottom));
}
uni-page[data-type] uni-page-wrapper {
  height: 100%;
}
.uni-app--showtabbar uni-page-wrapper::after {
  content: '';
  display: block;
  width: 100%;
  height: var(--tab-bar-height);
  height: calc(var(--tab-bar-height) + constant(safe-area-inset-bottom));
  height: calc(var(--tab-bar-height) + env(safe-area-inset-bottom));
}
.uni-app--showtabbar
  uni-page-head[uni-page-head-type='default']
  ~ uni-page-wrapper {
  height: calc(100% - 44px - var(--tab-bar-height));
  height: calc(
    100% - 44px - constant(safe-area-inset-top) - var(--tab-bar-height) -
      constant(safe-area-inset-bottom)
  );
  height: calc(
    100% - 44px - env(safe-area-inset-top) - var(--tab-bar-height) -
      env(safe-area-inset-bottom)
  );
}
uni-page-refresh {
  position: absolute;
  top: 0;
  width: 100%;
  height: 40px;
  display: block;
  box-sizing: border-box;
}

.uni-page-refresh {
  position: absolute;
  top: -45px;
  left: 50%;
  transform: translate3d(-50%, 0, 0);
  width: 40px;
  height: 40px;
  justify-content: center;
  align-items: center;
  background: #fff;
  border-radius: 50%;
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.117647),
    0 1px 4px rgba(0, 0, 0, 0.117647);
  display: none;
  z-index: 997;
}

.uni-page-refresh-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
}

.uni-page-refresh--pulling .uni-page-refresh,
.uni-page-refresh--aborting .uni-page-refresh,
.uni-page-refresh--reached .uni-page-refresh,
.uni-page-refresh--refreshing .uni-page-refresh,
.uni-page-refresh--restoring .uni-page-refresh {
  display: flex;
}

.uni-page-refresh--pulling .uni-page-refresh__spinner,
.uni-page-refresh--aborting .uni-page-refresh__spinner,
.uni-page-refresh--reached .uni-page-refresh__spinner,
.uni-page-refresh--refreshing .uni-page-refresh__icon,
.uni-page-refresh--restoring .uni-page-refresh__icon {
  display: none;
}

.uni-page-refresh--refreshing .uni-page-refresh__spinner {
  transform-origin: center center;
  animation: uni-page-refresh-rotate 2s linear infinite;
}

.uni-page-refresh--refreshing .uni-page-refresh__path {
  stroke-dasharray: 1, 200;
  stroke-dashoffset: 0;
  stroke-linecap: round;
  animation: uni-page-refresh-dash 1.5s ease-in-out infinite,
    uni-page-refresh-colorful 6s ease-in-out infinite;
}

@keyframes uni-page-refresh-rotate {
  100% {
    transform: rotate(360deg);
  }
}

@keyframes uni-page-refresh-dash {
  0% {
    stroke-dasharray: 1, 200;
    stroke-dashoffset: 0;
  }

  50% {
    stroke-dasharray: 89, 200;
    stroke-dashoffset: -35px;
  }

  100% {
    stroke-dasharray: 89, 200;
    stroke-dashoffset: -124px;
  }
}
/* 用实际元素绘制连接线 - 改用flex布局 */
.tree-li[data-v-b3bed7b9] {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  position: relative;
  padding: 0.46875rem 0.3125rem 0 0.3125rem;
  flex-shrink: 0;
  min-width: -moz-fit-content;
  min-width: fit-content;
}

/* 连接线：左半部分水平线 */
.tree-line-left[data-v-b3bed7b9] {
  position: absolute;
  top: 0;
  right: 50%;
  width: 50%;
  height: 0.46875rem;
  border-top: 0.0625rem solid #a1887f;
  z-index: 1;
}

/* 连接线：右半部分水平线 */
.tree-line-right[data-v-b3bed7b9] {
  position: absolute;
  top: 0;
  left: 50%;
  width: 50%;
  height: 0.46875rem;
  border-top: 0.0625rem solid #a1887f;
  z-index: 1;
}

/* 连接线：垂直线 */
.tree-line-vertical[data-v-b3bed7b9] {
  position: absolute;
  top: 0;
  left: 50%;
  width: 0.0625rem;
  height: 0.46875rem;
  background-color: #a1887f;
  transform: translateX(-50%);
  z-index: 1;
}

/* 节点卡片 */
.tree-card[data-v-b3bed7b9] {
  display: inline-block;
  background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  border: 0.0625rem solid #d7ccc8;
  border-radius: 0.3125rem;
  padding: 0.375rem 0.3125rem;
  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.1);
  cursor: pointer;
  min-width: 2.8125rem;
  position: relative;
  z-index: 2;
  margin: 0.15625rem;
}
.tree-card[data-v-b3bed7b9]:active {
  transform: scale(0.98);
}

/* 男性节点 */
.tree-card[data-v-b3bed7b9]:not(.is-female) {
  border-top: 0.125rem solid #90caf9;
  background: linear-gradient(135deg, #ffffff 0%, #e3f2fd 100%);
}

/* 女性节点 */
.tree-card.is-female[data-v-b3bed7b9] {
  border-top: 0.125rem solid #f48fb1;
  background: linear-gradient(135deg, #ffffff 0%, #fce4ec 100%);
}

/* 有子节点 */
.tree-card.has-children[data-v-b3bed7b9] {
  border-bottom: 0.09375rem solid #8d6e63;
}
.tree-card-inner[data-v-b3bed7b9] {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.125rem;
}
.member-name[data-v-b3bed7b9] {
  font-weight: bold;
  font-size: var(--font-size-base);
  color: #2c3e50;
}
.member-gender-age[data-v-b3bed7b9] {
  font-size: var(--font-size-xs);
  margin-top: 0.125rem;
  display: flex;
  gap: 0.25rem;
  justify-content: center;
  align-items: center;
}
.gender-male[data-v-b3bed7b9] {
  color: #409EFF;
  font-weight: bold;
}
.gender-female[data-v-b3bed7b9] {
  color: #F56C6C;
  font-weight: bold;
}
.member-spouse[data-v-b3bed7b9] {
  font-size: 0.5625rem;
  color: #666;
}
.member-life[data-v-b3bed7b9] {
  font-size: 0.5625rem;
  color: #999;
  border-top: 0.03125rem dashed #e0e0e0;
  padding-top: 0.09375rem;
}

/* 展开/收起按钮 */
.toggle-btn[data-v-b3bed7b9] {
  position: absolute;
  bottom: -0.3125rem;
  left: 50%;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #8d6e63 0%, #6d4c41 100%);
  color: white;
  border-radius: 50%;
  width: 1.25rem;
  height: 1.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--font-size-xs);
  box-shadow: 0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.3);
  z-index: 5;
}

/* 子节点列表 */
.children-ul[data-v-b3bed7b9] {
  padding-top: 0.46875rem;
  position: relative;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  gap: 0.625rem;
  width: 100%;
}

/* 从父节点到子节点的垂直连接线 */
.parent-to-children-line[data-v-b3bed7b9] {
  position: absolute;
  top: 0;
  left: 50%;
  width: 0.0625rem;
  height: 0.46875rem;
  background-color: #a1887f;
  transform: translateX(-50%);
  z-index: 1;
}/* 全局样式 */
/* 全局样式变量 */
/* 通用容器 */
.page-container {
  min-height: 100vh;
  background-color: #f5f7fa;
}
.content-section {
  background-color: #fff;
  margin: 0.625rem;
  border-radius: 0.5rem;
  padding: 0.9375rem;
}
/* 卡片样式 */
.card {
  background-color: #fff;
  border-radius: 0.5rem;
  padding: 0.9375rem;
  margin-bottom: 0.625rem;
  box-shadow: 0 0.125rem 0.375rem rgba(0, 0, 0, 0.05);
}
.card-title {
  font-size: var(--font-size-lg);
  font-weight: bold;
  color: #303133;
  margin-bottom: 0.625rem;
}
/* 列表项 */
.list-item {
  display: flex;
  align-items: center;
  padding: 0.9375rem 0;
  border-bottom: 0.03125rem solid #dcdfe6;
}
.list-item:last-child {
  border-bottom: none;
}
.list-item-content {
  flex: 1;
}
.list-item-title {
  font-size: var(--font-size-lg);
  color: #303133;
  margin-bottom: 0.3125rem;
}
.list-item-desc {
  font-size: var(--font-size-base);
  color: #606266;
}
.list-item-extra {
  margin-left: 0.625rem;
  color: #909399;
  font-size: var(--font-size-base);
}
/* 按钮样式 */
.btn {
  padding: 0.625rem 1.25rem;
  border-radius: 0.25rem;
  font-size: var(--font-size-base);
  text-align: center;
}
.btn-primary {
  background-color: #1890ff;
  color: #fff;
}
.btn-default {
  background-color: #fff;
  color: #303133;
  border: 0.03125rem solid #dcdfe6;
}
/* 标签样式 */
.tag {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  border-radius: 0.1875rem;
  font-size: var(--font-size-xs);
}
.tag-primary {
  background-color: rgba(24, 144, 255, 0.1);
  color: #1890ff;
}
.tag-success {
  background-color: rgba(82, 196, 26, 0.1);
  color: #52c41a;
}
/* 空状态 */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 3.125rem 0;
}
.empty-state .empty-icon {
  font-size: 3.75rem;
  color: #909399;
  margin-bottom: 0.625rem;
}
.empty-state .empty-text {
  font-size: var(--font-size-base);
  color: #909399;
}
/* 加载中 */
.loading {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.25rem 0;
  color: #909399;
  font-size: var(--font-size-base);
}
/* 分割线 */
.divider {
  height: 0.03125rem;
  background-color: #dcdfe6;
  margin: 0.9375rem 0;
}
/* 头像 */
.avatar {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  -o-object-fit: cover;
     object-fit: cover;
}
.avatar-lg {
  width: 3.75rem;
  height: 3.75rem;
}
.avatar-sm {
  width: 1.875rem;
  height: 1.875rem;
}
/* 文本省略 */
.ellipsis {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ellipsis-2 {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
/* flex布局 */
.flex {
  display: flex;
}
.flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}
.flex-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.flex-column {
  display: flex;
  flex-direction: column;
}
/* 🔥 隐藏 uni-app 框架自带的页面异步加载旋转圈（标题下方的 .uni-async-loading） */
.uni-async-loading {
  display: none !important;
}
/* 默认主题变量（会被JavaScript动态覆盖） */
uni-page-body {
  --theme-primary: #1890ff;
  --theme-primary-light: #40a9ff;
  --theme-primary-dark: #096dd9;
  --theme-button-primary: #1890ff;
  --theme-button-primary-light: #40a9ff;
  --theme-background: #f5f7fa;
  --theme-surface: #ffffff;
  --theme-text: #303133;
  --theme-text-secondary: #606266;
  --theme-text-placeholder: #909399;
  --theme-text-on-primary: #ffffff;
  --theme-text-on-card: #ffffff;
  --theme-text-unselected: #000000;
  --theme-border: #dcdfe6;
  --theme-success: #67c23a;
  --theme-warning: #e6a23c;
  --theme-danger: #f56c6c;
  --theme-info: #909399;
  /* 导航栏（含状态栏区域）默认变量，由 applyNavbarVars 按主题覆盖 */
  --navbar-bg: #ffffff;
  --navbar-text: #2C3E50;
  --navbar-border: 1px solid rgba(0, 0, 0, 0.05);
  /* 默认字体大小变量（会被JavaScript动态覆盖） */
  --font-size-xs: 0.75rem;
  --font-size-sm: 0.8125rem;
  --font-size-base: 0.875rem;
  --font-size-lg: 1rem;
  --font-size-xl: 1.125rem;
  --font-size-2xl: 1.25rem;
  --font-size-3xl: 1.5rem;
  --font-size-4xl: 1.75rem;
  --font-size-5xl: 2rem;
  --font-size-6xl: 2.25rem;
  background-color: var(--theme-background);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
body {
  background-color: var(--theme-background);
}
/* 🔥 主题化导航栏背景：覆盖各页面写死的白色 inline 背景，使其跟随主题色。
   自定义导航栏（navigationStyle: custom）页面的导航栏会延伸到系统状态栏区域，
   其背景原本写死为白色，导致“状态栏始终是白色”。这里用全局变量 + !important 统一跟随主题。
   --navbar-bg / --navbar-text / --navbar-border 由 globalThemeMixin.applyNavbarVars 按主题写入。
   覆盖项目里所有导航栏容器类名（nav-bar / navbar / custom-navbar / custom-nav / s1-nav-bar / nav-container）。 */
.nav-bar,
.navbar,
.custom-navbar,
.custom-nav,
.s1-nav-bar,
.nav-container {
  background: var(--navbar-bg, rgba(255, 255, 255, 0.9)) !important;
  border-bottom: var(--navbar-border, 1px solid rgba(0, 0, 0, 0.05)) !important;
}
.nav-bar uni-text,
.navbar uni-text,
.custom-navbar uni-text,
.custom-nav uni-text,
.s1-nav-bar uni-text,
.nav-container uni-text {
  color: var(--navbar-text, #2C3E50) !important;
}
/* 全局文本颜色 */
.text-primary {
  color: var(--theme-primary);
}
.text-success {
  color: var(--theme-success);
}
.text-warning {
  color: var(--theme-warning);
}
.text-error {
  color: var(--theme-danger);
}
.text-info {
  color: var(--theme-info);
}
/* 全局背景色 */
.bg-primary {
  background-color: var(--theme-primary);
}
.bg-success {
  background-color: var(--theme-success);
}
.bg-warning {
  background-color: var(--theme-warning);
}
.bg-error {
  background-color: var(--theme-danger);
}
/* 全局间距 */
.mt-10 {
  margin-top: 0.3125rem;
}
.mt-20 {
  margin-top: 0.625rem;
}
.mt-30 {
  margin-top: 0.9375rem;
}
.mb-10 {
  margin-bottom: 0.3125rem;
}
.mb-20 {
  margin-bottom: 0.625rem;
}
.mb-30 {
  margin-bottom: 0.9375rem;
}
.ml-10 {
  margin-left: 0.3125rem;
}
.mr-10 {
  margin-right: 0.3125rem;
}
.p-20 {
  padding: 0.625rem;
}
.p-30 {
  padding: 0.9375rem;
}
/* 覆盖uni-tag组件的样式以支持主题 */
.uni-tag {
  /* 默认标签 */
  /* Primary标签 - 使用主题色 */
  /* Success标签 */
  /* Warning标签 */
  /* Error标签 */
  /* 空心标签 */
}
.uni-tag.uni-tag--default {
  background-color: var(--theme-text-placeholder) !important;
  border-color: var(--theme-text-placeholder) !important;
  color: #fff !important;
}
.uni-tag.uni-tag--primary {
  background-color: var(--theme-primary) !important;
  border-color: var(--theme-primary) !important;
  color: var(--theme-text-on-primary) !important;
}
.uni-tag.uni-tag--success {
  background-color: var(--theme-success) !important;
  border-color: var(--theme-success) !important;
  color: #fff !important;
}
.uni-tag.uni-tag--warning {
  background-color: var(--theme-warning) !important;
  border-color: var(--theme-warning) !important;
  color: #fff !important;
}
.uni-tag.uni-tag--error {
  background-color: var(--theme-danger) !important;
  border-color: var(--theme-danger) !important;
  color: #fff !important;
}
.uni-tag.uni-tag--inverted {
  background-color: transparent !important;
}
.uni-tag.uni-tag--inverted.uni-tag--primary {
  color: var(--theme-primary) !important;
  border-color: var(--theme-primary) !important;
}
.uni-tag.uni-tag--inverted.uni-tag--success {
  color: var(--theme-success) !important;
  border-color: var(--theme-success) !important;
}
.uni-tag.uni-tag--inverted.uni-tag--warning {
  color: var(--theme-warning) !important;
  border-color: var(--theme-warning) !important;
}
.uni-tag.uni-tag--inverted.uni-tag--error {
  color: var(--theme-danger) !important;
  border-color: var(--theme-danger) !important;
}
.ct-mask[data-v-dedafc09] {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  pointer-events: none;
  z-index: 99999;
}
.ct-box[data-v-dedafc09] {
  margin-top: 3.75rem;
  max-width: 80%;
  display: flex;
  align-items: center;
  padding: 0.625rem 1rem;
  border-radius: 0.5rem;
  background: rgba(0, 0, 0, 0.8);
  color: #fff;
  font-size: 0.875rem;
  line-height: 1.4;
  box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.2);
}
.ct-icon[data-v-dedafc09] {
  margin-right: 0.375rem;
  font-size: 0.9375rem;
}
.ct-msg[data-v-dedafc09] {
  flex: 1;
}
/* 不同类型配色 */
.ct-info .ct-box[data-v-dedafc09] { background: rgba(0, 0, 0, 0.8);
}
.ct-success .ct-box[data-v-dedafc09] { background: rgba(103, 194, 58, 0.92);
}
.ct-warning .ct-box[data-v-dedafc09] { background: rgba(230, 162, 60, 0.95);
}
.ct-error .ct-box[data-v-dedafc09] { background: rgba(245, 108, 108, 0.95);
}
