
/* ghost（outlined）统一为中性按钮：避免在深/浅色下反色或过于“主色化” */
.tk-base-btn--ghost.v-btn--variant-outlined[data-v-1ae11f9a] {
  color: rgba(var(--v-theme-on-surface), 0.82) !important;
  border-color: rgba(var(--v-theme-on-surface), 0.14) !important;
  background: rgba(var(--v-theme-on-surface), 0.04) !important;
}
.tk-base-btn--ghost.v-btn--variant-outlined[data-v-1ae11f9a]:hover {
  background: rgba(var(--v-theme-on-surface), 0.06) !important;
}

/* soft：白/黑底按钮（随 surface），用于 2.0 风格的次要入口按钮 */
.tk-base-btn--soft.v-btn--variant-outlined[data-v-1ae11f9a] {
  background: rgb(var(--v-theme-surface)) !important;
  border-color: rgba(var(--v-theme-on-surface), 0.12) !important;
  color: rgba(var(--v-theme-on-surface), 0.86) !important;
  box-shadow:
    0 10px 22px rgba(var(--v-theme-on-surface), 0.06),
    0 2px 10px rgba(var(--v-theme-primary), 0.08);
}
.tk-base-btn--soft.v-btn--variant-outlined[data-v-1ae11f9a]:hover {
  background: rgb(var(--v-theme-surface)) !important;
}
.tk-base-btn--soft[data-v-1ae11f9a] .v-btn__overlay {
  opacity: 0.035 !important;
}
.tk-base-btn--soft[data-v-1ae11f9a] .v-btn__underlay {
  opacity: 0.02 !important;
}

/* 统一 disabled 外观：light/dark 都清晰可辨（避免禁用态仍“像可点击的主色”） */
.v-btn.v-btn--disabled[data-v-1ae11f9a] {
  opacity: 1;
}
.v-btn--variant-flat.v-btn--disabled[data-v-1ae11f9a] {
  background: rgba(var(--v-theme-primary), 0.34) !important;
  color: rgba(var(--v-theme-on-surface), 0.38) !important;
}
.v-btn--variant-outlined.v-btn--disabled[data-v-1ae11f9a] {
  background: transparent !important;
  border-color: rgba(var(--v-theme-primary), 0.26) !important;
  color: rgba(var(--v-theme-on-surface), 0.38) !important;
}

/* H5 深/浅色都清晰：显式绑定 pagination 颜色 */
.tk-base-pagination[data-v-77e73e4c] ul,
.tk-base-pagination[data-v-77e73e4c] .v-pagination__list {
  padding-inline-start: 0 !important;
  padding-left: 0 !important;
  margin: 0 !important;
}
.tk-base-pagination[data-v-77e73e4c] .v-pagination__list {
  justify-content: center;
}
.tk-base-pagination[data-v-77e73e4c] .v-btn {
  color: rgba(var(--v-theme-on-surface), 0.82) !important;
}
.tk-base-pagination[data-v-77e73e4c] .v-pagination__item--is-active .v-btn {
  background: rgba(var(--v-theme-primary), 0.92) !important;
  color: rgb(var(--v-theme-on-primary)) !important;
}
.tk-base-pagination[data-v-77e73e4c] .v-pagination__item:not(.v-pagination__item--is-active) .v-btn {
  background: rgba(var(--v-theme-on-surface), 0.04) !important;
  border: 1px solid rgba(var(--v-theme-on-surface), 0.10) !important;
}
.tk-base-pagination[data-v-77e73e4c] .v-pagination__prev .v-btn,
.tk-base-pagination[data-v-77e73e4c] .v-pagination__next .v-btn {
  background: rgba(var(--v-theme-on-surface), 0.04) !important;
  border: 1px solid rgba(var(--v-theme-on-surface), 0.10) !important;
}

/* 强融合：用 theme roles 派生一个“双色高能边界”，但保持 Material 层级与可读性 */
.tk-accent-panel[data-v-331728ec] {
  position: relative;
}
.tk-accent-panel--border[data-v-331728ec]::before {
  content: '';
  position: absolute;
  inset: 0;
  padding: 1px;
  border-radius: inherit;
  background: linear-gradient(135deg, rgba(var(--v-theme-primary), 0.95), rgba(var(--v-theme-secondary), 0.85));
  background-size: 160% 160%;
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
  opacity: 0.9;
}
.tk-accent-panel--glow[data-v-331728ec] {
  box-shadow:
    0 10px 28px rgba(var(--v-theme-primary), 0.18),
    0 14px 44px rgba(var(--v-theme-secondary), 0.12);
}
.tk-accent-panel--animated[data-v-331728ec]::before {
  animation: tk-accent-shift-331728ec 2.2s cubic-bezier(0.2, 0, 0, 1) infinite alternate;
  will-change: background-position;
}
.tk-accent-panel__subtitle[data-v-331728ec] {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}
@keyframes tk-accent-shift-331728ec {
from {
    background-position: 0% 50%;
}
to {
    background-position: 100% 50%;
}
}
@media (prefers-reduced-motion: reduce) {
.tk-accent-panel--border[data-v-331728ec]::before {
    opacity: 0.8;
}
.tk-accent-panel--animated[data-v-331728ec]::before {
    animation: none;
}
}

.tk-turnstile[data-v-acd8a955] {
  width: 100%;
}
.tk-turnstile__host[data-v-acd8a955] {
  width: 100%;
  min-height: 65px;
}

.tk-base-cell[data-v-643ae09f] {
  border-radius: 12px;
}
.tk-base-cell__divider[data-v-643ae09f] {
  margin-left: 16px;
  margin-right: 16px;
}

.tk-animated-number[data-v-ee0cd439] {
  font-variant-numeric: tabular-nums;
}

.tk-back-to-top-fab[data-v-dc2667c9] {
  position: fixed;
  right: 16px;
  bottom: var(--v521c2e64);
  z-index: 1000;
}

.theme-toggle[data-v-f437ccf2] {
  border: none;
  background: none;
  padding: 7px;
  border-radius: 999px;
  cursor: pointer;
  line-height: 0;
  -webkit-tap-highlight-color: transparent;
}
.theme-toggle__sun[data-v-f437ccf2],
.theme-toggle__moon[data-v-f437ccf2],
.theme-toggle__sun-beams[data-v-f437ccf2] {
  transform-origin: center center;
}
.theme-toggle__sun[data-v-f437ccf2] {
  fill: rgba(var(--v-theme-on-background), 0.9);
  stroke: none;
  transition: transform 1.6s cubic-bezier(0.25, 0, 0.2, 1);
}
.theme-toggle__moon > circle[data-v-f437ccf2] {
  fill: rgba(var(--v-theme-on-background), 0.9);
  stroke: none;
  transition: transform 0.5s cubic-bezier(0, 0, 0.3, 1);
}
.theme-toggle__sun-beams[data-v-f437ccf2] {
  stroke: rgba(var(--v-theme-on-background), 0.9);
  stroke-width: 2px;
  transition:
    transform 1.6s cubic-bezier(0.5, 1.5, 0.75, 1.25),
    opacity 0.6s cubic-bezier(0.25, 0, 0.3, 1);
}
.theme-toggle.is-light .theme-toggle__sun[data-v-f437ccf2] {
  transform: scale(0.5);
}
.theme-toggle.is-light .theme-toggle__sun-beams[data-v-f437ccf2] {
  transform: rotateZ(0.25turn);
}
.theme-toggle.is-dark .theme-toggle__moon > circle[data-v-f437ccf2] {
  transform: translateX(-20px);
}
.theme-toggle.is-dark .theme-toggle__sun-beams[data-v-f437ccf2] {
  opacity: 0;
}

.tk-auth-shell-wrap[data-v-50b69373] {
  position: relative;
  min-height: 100dvh;
  background: rgb(var(--v-theme-background));
  overflow-x: hidden;
}
.tk-auth-shell[data-v-50b69373] {
  width: 100%;
  max-width: var(--h5-max-width);
  margin: 0 auto;
  padding: var(--space-16);
  padding-bottom: calc(var(--space-16) + var(--safe-bottom));
  overflow-x: clip;
  box-sizing: border-box;
}
.tk-auth-topbar[data-v-50b69373] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: var(--space-12);
}
.tk-auth-brand[data-v-50b69373] {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.tk-auth-logo[data-v-50b69373] {
  width: 36px;
  height: 36px;
  flex: 0 0 36px;
}
.tk-auth-brand__title[data-v-50b69373] {
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: 0.2px;
}
.tk-auth-actions[data-v-50b69373] {
  display: flex;
  align-items: center;
  gap: 4px;
}
.tk-auth-hero[data-v-50b69373] {
  display: none;
}
.tk-auth-header[data-v-50b69373] {
  position: relative;
  margin-bottom: var(--space-10);
  padding-top: var(--space-6);
}
.tk-auth-deco[data-v-50b69373] {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: var(--space-10);
}
.tk-auth-deco__line[data-v-50b69373] {
  height: 1px;
  flex: 1 1 auto;
  background: linear-gradient(
    90deg,
    rgba(var(--v-theme-on-surface), 0),
    rgba(var(--v-theme-on-surface), 0.12),
    rgba(var(--v-theme-on-surface), 0)
  );
}
.tk-auth-deco__chip[data-v-50b69373] {
  border: 1px solid rgba(var(--v-theme-on-surface), 0.10);
}
.tk-auth-cookie[data-v-50b69373] {
  position: relative;
  margin-bottom: var(--space-10);
  overflow: hidden;
  border: 1px solid rgba(var(--v-theme-on-surface), 0.10);
  background: rgba(var(--v-theme-surface), 0.86);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  box-shadow:
    0 10px 28px rgba(0, 0, 0, 0.06),
    0 1px 0 rgba(var(--v-theme-on-surface), 0.06) inset;
}
.tk-auth-cookie[data-v-50b69373]::before {
  content: '';
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: linear-gradient(180deg, rgba(var(--v-theme-secondary), 0.85), rgba(var(--v-theme-primary), 0.85));
  opacity: 0.9;
}
.tk-auth-cookie__inner[data-v-50b69373] {
  padding: var(--space-12);
  padding-left: calc(var(--space-12) + 6px);
}
.tk-auth-cookie__top[data-v-50b69373] {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.tk-auth-cookie__icon[data-v-50b69373] {
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: rgba(var(--v-theme-on-surface), 0.04);
  border: 1px solid rgba(var(--v-theme-on-surface), 0.10);
  flex: 0 0 28px;
}
.tk-auth-cookie__actions[data-v-50b69373] {
  margin-top: var(--space-10);
  display: flex;
  align-items: center;
  gap: 8px;
}
.tk-auth-shell__view[data-v-50b69373] {
  width: 100%;
}
.tk-auth-switch-stage[data-v-50b69373] {
  position: relative;
  margin-top: var(--space-10);
}
.tk-auth-bg[data-v-50b69373] {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  contain: strict;
  z-index: 0;
}
.tk-auth-shell-wrap[data-v-50b69373] > :not(.tk-auth-bg) {
  position: relative;
  z-index: 1;
}
.tk-auth-bg__blob[data-v-50b69373] {
  position: absolute;
  border-radius: 999px;
  will-change: transform;
  filter: blur(80px);
}
.tk-auth-bg__blob--a[data-v-50b69373] {
  top: -140px;
  left: -120px;
  width: 440px;
  height: 440px;
  background: rgba(var(--v-theme-primary), 0.34);
  animation: tk-aurora-a-50b69373 22s cubic-bezier(0.4, 0, 0.2, 1) infinite alternate;
}
.tk-auth-bg__blob--b[data-v-50b69373] {
  top: 280px;
  right: -140px;
  width: 420px;
  height: 420px;
  background: rgba(var(--v-theme-secondary), 0.30);
  animation: tk-aurora-b-50b69373 26s cubic-bezier(0.4, 0, 0.2, 1) infinite alternate;
}
.tk-auth-bg__blob--c[data-v-50b69373] {
  bottom: -120px;
  left: 50%;
  width: 380px;
  height: 380px;
  transform: translate3d(-50%, 0, 0);
  filter: blur(90px);
  background: rgba(var(--v-theme-tertiary), 0.26);
  animation: tk-aurora-c-50b69373 30s cubic-bezier(0.4, 0, 0.2, 1) infinite alternate;
}
@keyframes tk-aurora-a-50b69373 {
from {
    transform: translate3d(0, 0, 0) scale(1);
}
to {
    transform: translate3d(22px, 18px, 0) scale(1.06);
}
}
@keyframes tk-aurora-b-50b69373 {
from {
    transform: translate3d(0, 0, 0) scale(1);
}
to {
    transform: translate3d(-26px, 14px, 0) scale(1.05);
}
}
@keyframes tk-aurora-c-50b69373 {
from {
    transform: translate3d(-50%, 0, 0) scale(1);
}
to {
    transform: translate3d(calc(-50% + 18px), -20px, 0) scale(1.06);
}
}
[data-theme="dark"] .tk-auth-bg__blob--a[data-v-50b69373] {
  background: rgba(var(--v-theme-primary), 0.48);
}
[data-theme="dark"] .tk-auth-bg__blob--b[data-v-50b69373] {
  background: rgba(var(--v-theme-secondary), 0.44);
}
[data-theme="dark"] .tk-auth-bg__blob--c[data-v-50b69373] {
  background: rgba(var(--v-theme-tertiary), 0.40);
}
.tk-auth-bg__grain[data-v-50b69373] {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(rgba(var(--v-theme-on-background), 0.06) 1px, transparent 1px),
    radial-gradient(rgba(var(--v-theme-on-background), 0.04) 1px, transparent 1px);
  background-size: 18px 18px, 28px 28px;
  background-position: 0 0, 9px 9px;
  -webkit-mask-image: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0.9),
    rgba(0, 0, 0, 0.3) 55%,
    rgba(0, 0, 0, 0) 80%
  );
  mask-image: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0.9),
    rgba(0, 0, 0, 0.3) 55%,
    rgba(0, 0, 0, 0) 80%
  );
}
@media (prefers-reduced-motion: reduce) {
.tk-auth-bg__blob[data-v-50b69373] {
    animation: none;
}
}

.tk-notification-card[data-v-4d54f1f2] {
  /* outlined 会让背景透明，通知弹窗需要更强可读性 */
  border: 1px solid var(--tk-border-subtle);
}

.tk-toast[data-v-83e2f45e] .v-overlay__content {
  margin-top: calc(var(--safe-top) + 10px);
}

/* tonal snackbar 在不同主题下统一可读 */
.tk-toast[data-v-83e2f45e] .v-snackbar__content {
  color: rgba(var(--v-theme-on-surface), 0.92) !important;
}
.tk-toast[data-v-83e2f45e] .v-icon {
  color: rgba(var(--v-theme-on-surface), 0.82) !important;
}

/* 背景更“实心”，避免看起来太透明 */
.tk-toast[data-v-83e2f45e] .v-snackbar__wrapper {
  position: relative;
  overflow: hidden;
  background: rgba(var(--v-theme-surface), 0.96) !important;
  border: 1px solid rgba(var(--v-theme-on-surface), 0.12) !important;
  box-shadow:
    0 10px 26px rgba(0, 0, 0, 0.20),
    0 2px 10px rgba(0, 0, 0, 0.12);
  backdrop-filter: blur(8px);
}
.tk-toast[data-v-83e2f45e] .v-snackbar__wrapper::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: var(--tk-toast-accent);
  opacity: 0.95;
}
*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}.h5-page{padding:var(--space-16);}.visible{visibility:visible;}.absolute{position:absolute;}.fixed{position:fixed;}.relative,[relative=""]{position:relative;}.sticky{position:sticky;}.bottom-0{bottom:0;}.left-0{left:0;}.right-0{right:0;}.top-0{top:0;}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;}.z-40{z-index:40;}.z-50{z-index:50;}.grid{display:grid;}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr));}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr));}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr));}[rows~="\32 "]{grid-template-rows:repeat(2,minmax(0,1fr));}.ma-\[14px\]{margin:14px;}.ma-3{margin:0.75rem;}.mx-\[6px\]{margin-left:6px;margin-right:6px;}.mx-auto{margin-left:auto;margin-right:auto;}.my{margin-top:1rem;margin-bottom:1rem;}.my-\[var\(--space-8\)\]{margin-top:var(--space-8);margin-bottom:var(--space-8);}.mb-\[12px\]{margin-bottom:12px;}.mb-\[var\(--space-10\)\]{margin-bottom:var(--space-10);}.mb-\[var\(--space-12\)\]{margin-bottom:var(--space-12);}.mb-2{margin-bottom:0.5rem;}.mb-4{margin-bottom:1rem;}.ml-\[2px\]{margin-left:2px;}.ml-\[6px\]{margin-left:6px;}.ml-\[8px\]{margin-left:8px;}.ml-auto{margin-left:auto;}.mr-\[2px\]{margin-right:2px;}.mr-\[4px\]{margin-right:4px;}.mr-\[6px\]{margin-right:6px;}.mr-\[var\(--space-4\)\]{margin-right:var(--space-4);}.mr-1{margin-right:0.25rem;}.mt-\[10px\]{margin-top:10px;}.mt-\[12px\]{margin-top:12px;}.mt-\[2px\]{margin-top:2px;}.mt-\[4px\]{margin-top:4px;}.mt-\[6px\]{margin-top:6px;}.mt-\[8px\]{margin-top:8px;}.mt-\[var\(--space-10\)\]{margin-top:var(--space-10);}.mt-\[var\(--space-12\)\]{margin-top:var(--space-12);}.mt-\[var\(--space-14\)\]{margin-top:var(--space-14);}.mt-\[var\(--space-16\)\]{margin-top:var(--space-16);}.mt-\[var\(--space-4\)\]{margin-top:var(--space-4);}.mt-\[var\(--space-6\)\]{margin-top:var(--space-6);}.mt-\[var\(--space-8\)\]{margin-top:var(--space-8);}.inline{display:inline;}.block,[block=""]{display:block;}.inline-block{display:inline-block;}.hidden{display:none;}.size-5{width:1.25rem;height:1.25rem;}[size~="\31 0"]{width:2.5rem;height:2.5rem;}[size~="\31 2"]{width:3rem;height:3rem;}[size~="\31 4"]{width:3.5rem;height:3.5rem;}[size~="\31 5"]{width:3.75rem;height:3.75rem;}[size~="\31 6"]{width:4rem;height:4rem;}[size~="\31 8"]{width:4.5rem;height:4.5rem;}[size~="\32 0"]{width:5rem;height:5rem;}[size~="\32 2"]{width:5.5rem;height:5.5rem;}[size~="\32 4"]{width:6rem;height:6rem;}[size~="\32 8"]{width:7rem;height:7rem;}[size~="\33 4"]{width:8.5rem;height:8.5rem;}[size~="\33 6"]{width:9rem;height:9rem;}[size~="\34 0"]{width:10rem;height:10rem;}[size~="\34 2"]{width:10.5rem;height:10.5rem;}[size~="\34 4"]{width:11rem;height:11rem;}[size~="\34 8"]{width:12rem;height:12rem;}[size~="\35 6"]{width:14rem;height:14rem;}[size~="lg"]{width:32rem;height:32rem;}[size~="md"]{width:28rem;height:28rem;}.\!min-w-0{min-width:0 !important;}.h-\[56px\]{height:56px;}.h-\[var\(--space-12\)\]{height:var(--space-12);}.h-full{height:100%;}.h2{height:0.5rem;}.h3{height:0.75rem;}.max-h-\[320px\]{max-height:320px;}.max-h-55vh{max-height:55vh;}.max-w-\[70\%\]{max-width:70%;}.max-w-\[var\(--h5-max-width\)\]{max-width:var(--h5-max-width);}.min-h-\[420px\]{min-height:420px;}.min-w-0{min-width:0;}.w-\[40\%\]{width:40%;}.w-\[58\%\]{width:58%;}.w-\[78\%\]{width:78%;}.w-full{width:100%;}.flex,[flex=""]{display:flex;}.inline-flex{display:inline-flex;}.flex-1{flex:1 1 0%;}.flex-shrink{flex-shrink:1;}.flex-shrink-0,.shrink-0{flex-shrink:0;}.grow,[grow=""]{flex-grow:1;}.flex-col,[flex-col=""]{flex-direction:column;}.flex-wrap{flex-wrap:wrap;}.transform{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite;}.cursor-pointer{cursor:pointer;}.items-start{align-items:flex-start;}.items-end{align-items:flex-end;}.items-center,[items-center=""]{align-items:center;}.justify-end{justify-content:flex-end;}.justify-center{justify-content:center;}.justify-between,[justify-between=""]{justify-content:space-between;}.gap-\[10px\]{gap:10px;}.gap-\[12px\]{gap:12px;}.gap-\[4px\]{gap:4px;}.gap-\[6px\]{gap:6px;}.gap-\[8px\]{gap:8px;}.gap-\[var\(--space-10\)\]{gap:var(--space-10);}.gap-\[var\(--space-16\)\]{gap:var(--space-16);}.gap-\[var\(--space-8\)\]{gap:var(--space-8);}.gap-2{gap:0.5rem;}.gap-3{gap:0.75rem;}.overflow-auto{overflow:auto;}.overflow-hidden{overflow:hidden;}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.whitespace-pre-line{white-space:pre-line;}.whitespace-pre-wrap{white-space:pre-wrap;}.break-words{overflow-wrap:break-word;}.break-all{word-break:break-all;}.border,[border=""]{border-width:1px;}.border-2{border-width:2px;}.border-t{border-top-width:1px;}.border-\[var\(--tk-border-subtle\)\]{border-color:var(--tk-border-subtle);}.border-\[var\(--tk-text-muted\)\]{border-color:var(--tk-text-muted);}.border-t-\[var\(--tk-text\)\]{border-top-color:var(--tk-text);}.\!rounded-\[var\(--radius-12\)\]{border-radius:var(--radius-12) !important;}.rounded,[rounded=""]{border-radius:0.25rem;}.rounded-\[12px\]{border-radius:12px;}.rounded-\[16px\]{border-radius:16px;}.rounded-\[2px\]{border-radius:2px;}.rounded-\[var\(--radius-12\)\]{border-radius:var(--radius-12);}.rounded-\[var\(--radius-16\)\]{border-radius:var(--radius-16);}.rounded-full{border-radius:9999px;}.rounded-lg,[rounded~="lg"]{border-radius:0.5rem;}[rounded~="\30 "]{border-radius:0;}[rounded~="sm"]{border-radius:0.125rem;}.border-solid{border-style:solid;}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity)) /* #fff */;}[stroke-width~="\38 "]{stroke-width:8px;}.p-\[10px\]{padding:10px;}.p-\[12px\]{padding:12px;}.p-\[14px\]{padding:14px;}.p-\[16px\]{padding:16px;}.p-\[18px\]{padding:18px;}.p-\[8px\]{padding:8px;}.p-\[var\(--space-10\)\]{padding:var(--space-10);}.p-\[var\(--space-12\)\],.pa-\[var\(--space-12\)\]{padding:var(--space-12);}.p-0,.pa-0{padding:0;}.pa-\[var\(--space-16\)\]{padding:var(--space-16);}.pa-4{padding:1rem;}[p-0~="default\:"]:default{padding:0;}.px,.px-4,[px=""]{padding-left:1rem;padding-right:1rem;}.px-\[10px\]{padding-left:10px;padding-right:10px;}.px-\[12px\]{padding-left:12px;padding-right:12px;}.px-\[14px\]{padding-left:14px;padding-right:14px;}.px-\[16px\]{padding-left:16px;padding-right:16px;}.px-\[4px\]{padding-left:4px;padding-right:4px;}.px-\[6px\]{padding-left:6px;padding-right:6px;}.px-\[8px\]{padding-left:8px;padding-right:8px;}.px-\[var\(--space-14\)\]{padding-left:var(--space-14);padding-right:var(--space-14);}.py-\[0px\]{padding-top:0px;padding-bottom:0px;}.py-\[10px\]{padding-top:10px;padding-bottom:10px;}.py-\[12px\]{padding-top:12px;padding-bottom:12px;}.py-\[var\(--space-12\)\]{padding-top:var(--space-12);padding-bottom:var(--space-12);}.py-0{padding-top:0;padding-bottom:0;}.py-12{padding-top:3rem;padding-bottom:3rem;}.py-2\.5{padding-top:0.625rem;padding-bottom:0.625rem;}.py-4{padding-top:1rem;padding-bottom:1rem;}.pb-\[calc\(56px\+var\(--safe-bottom\)\)\]{padding-bottom:calc(56px + var(--safe-bottom));}.pb-\[calc\(var\(--space-12\)\+var\(--safe-bottom\)\)\]{padding-bottom:calc(var(--space-12) + var(--safe-bottom));}.pb-\[calc\(var\(--space-14\)\+var\(--safe-bottom\)\)\]{padding-bottom:calc(var(--space-14) + var(--safe-bottom));}.pb-\[var\(--safe-bottom\)\]{padding-bottom:var(--safe-bottom);}.pb-\[var\(--space-10\)\]{padding-bottom:var(--space-10);}.pb-\[var\(--space-12\)\]{padding-bottom:var(--space-12);}.pb-\[var\(--space-14\)\]{padding-bottom:var(--space-14);}.pr-\[10px\]{padding-right:10px;}.pt-\[12px\]{padding-top:12px;}.pt-\[2px\]{padding-top:2px;}.pt-\[56px\]{padding-top:56px;}.pt-\[calc\(56px\+var\(--safe-top\)\+var\(--space-12\)\)\]{padding-top:calc(56px + var(--safe-top) + var(--space-12));}.pt-\[var\(--space-10\)\]{padding-top:var(--space-10);}.pt-\[var\(--space-6\)\]{padding-top:var(--space-6);}.pt-\[var\(--space-8\)\]{padding-top:var(--space-8);}.pt-0{padding-top:0;}.text-center{text-align:center;}.text-left{text-align:left;}[text~="\31 "]{font-size:0.25rem;}.text-\[rgba\(255\,80\,80\,0\.95\)\]{--un-text-opacity:0.95;color:rgba(255, 80, 80, var(--un-text-opacity)) /* rgba(255,80,80,0.95) */;}[empty-text~="\$t\("]:empty{color:var(--t\() /* var(--t\() */;}[color~="amber"]{--un-text-opacity:1;color:rgb(251 191 36 / var(--un-text-opacity)) /* #fbbf24 */;}.font-600{font-weight:600;}.font-700{font-weight:700;}.font-medium{font-weight:500;}.leading-relaxed{line-height:1.625;}.leading-tight{line-height:1.25;}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;}.uppercase{text-transform:uppercase;}.tabular-nums{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction);}.underline{text-decoration-line:underline;}.tab{-moz-tab-size:4;-o-tab-size:4;tab-size:4;}.text-shadow{--un-text-shadow:0 0 1px var(--un-text-shadow-color, rgb(0 0 0 / 0.2)),0 0 1px var(--un-text-shadow-color, rgb(1 0 5 / 0.1));text-shadow:var(--un-text-shadow);}.opacity-60{opacity:0.6;}.opacity-70{opacity:0.7;}.opacity-75{opacity:0.75;}.opacity-80{opacity:0.8;}.opacity-85{opacity:0.85;}.opacity-90{opacity:0.9;}[opacity~="\30 \.16"]{opacity:0.0016;}.hover\:opacity-100:hover{opacity:1;}.outline{outline-style:solid;}.ring{--un-ring-width:3px;--un-ring-offset-shadow:var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color);--un-ring-shadow:var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color);box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}.filter,[filter=""]{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}.backdrop-filter{-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);}.transition,[transition=""]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}[transition-duration~="\31 40"]{transition-duration:140ms;}.ease,.ease-in-out{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}.ease-in{transition-timing-function:cubic-bezier(0.4, 0, 1, 1);}.ease-out{transition-timing-function:cubic-bezier(0, 0, 0.2, 1);}[content~="\$t\("]{content:var(--t\();}[placeholder~="\$t\("]::placeholder{color:var(--t\() /* var(--t\() */;}.\@container{container-type:inline-size;}@media (min-width: 640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr));}}/* Brand fonts (local): Urbanist + TikTokDisplayFont */

@font-face {
  font-family: 'Urbanist';
  src: url('/assets/BFGlRth7.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Urbanist';
  src: url('/assets/Cz1KBI75.ttf') format('truetype');
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Urbanist';
  src: url('/assets/IkjGfmrq.ttf') format('truetype');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Urbanist';
  src: url('/assets/Dyg87ONi.ttf') format('truetype');
  font-weight: 500;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Urbanist';
  src: url('/assets/pOjqLDOP.ttf') format('truetype');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Urbanist';
  src: url('/assets/MrG0zYN8.ttf') format('truetype');
  font-weight: 600;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'Urbanist';
  src: url('/assets/_m6Tq3Qd.ttf') format('truetype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Urbanist';
  src: url('/assets/BxCs423y.ttf') format('truetype');
  font-weight: 700;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: 'TikTokDisplayFont';
  src: url('/assets/Cji1lRZG.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'TikTokDisplayFont';
  src: url('/assets/P9ZfXxUS.ttf') format('truetype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* 3.0 Design Tokens（H5 基础 + 品牌补充层） */

/**
 * 约定：
 * - **Vuetify Theme 是颜色单一真相**（background/surface/primary/secondary/error/...）
 * - tokens 只提供：H5 布局/安全区/间距/圆角等“中性能力”，以及少量从 Vuetify 派生的辅助变量（例如 muted 文本）
 * - 禁止在 tokens 里维护另一套完整“组件颜色体系”，避免与 Vuetify roles 打架
 */

:root {
  /* ---- Layout ---- */
  --h5-max-width: 420px;

  /* ---- Fallback（主题未注入时的 body 背景/文字，如 no-JS / FOUC）---- */
  --tk-fallback-bg: #f7f7f7;
  --tk-fallback-on-bg: #111111;

  /* ---- Spacing（px 显式）---- */
  --space-2: 2px;
  --space-4: 4px;
  --space-6: 6px;
  --space-8: 8px;
  --space-10: 10px;
  --space-12: 12px;
  --space-14: 14px;
  --space-16: 16px;

  /* ---- Radius ---- */
  --radius-8: 8px;
  --radius-10: 10px;
  --radius-12: 12px;
  --radius-16: 16px;

  /* ---- Typography（基础字族；字号层级以 Vuetify typography 为准） ---- */
  /* vben 风格：优先 Inter/Roboto + 更完整的中英回退 */
  --font-sans:
    Urbanist,
    Inter,
    Roboto,
    ui-sans-serif,
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    "Helvetica Neue",
    Arial,
    "Noto Sans",
    "Noto Sans SC",
    "PingFang SC",
    "Hiragino Sans GB",
    "Microsoft YaHei UI",
    "Microsoft YaHei",
    "Apple Color Emoji",
    "Segoe UI Emoji",
    "Segoe UI Symbol",
    sans-serif;

  /* 品牌展示字体：用于 Logo 标题/少量品牌标题位 */
  --font-display:
    TikTokDisplayFont,
    Urbanist,
    Inter,
    Roboto,
    ui-sans-serif,
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    "Helvetica Neue",
    Arial,
    "Noto Sans",
    "Noto Sans SC",
    "PingFang SC",
    "Hiragino Sans GB",
    "Microsoft YaHei UI",
    "Microsoft YaHei",
    "Apple Color Emoji",
    "Segoe UI Emoji",
    "Segoe UI Symbol",
    sans-serif;

  /* ---- Derived (from Vuetify theme) ---- */
  /* Vuetify 会注入：--v-theme-on-background / --v-theme-on-surface（值为 "r,g,b"） */
  --tk-text: rgb(var(--v-theme-on-background));
  --tk-text-muted: rgba(var(--v-theme-on-background), 0.7);
  --tk-text-faint: rgba(var(--v-theme-on-background), 0.6);
  --tk-text-surface: rgb(var(--v-theme-on-surface));
  --tk-text-surface-muted: rgba(var(--v-theme-on-surface), 0.72);
  --tk-text-surface-faint: rgba(var(--v-theme-on-surface), 0.60);
  --tk-border-subtle: rgba(var(--v-theme-on-surface), 0.16);
  /* Icon tile: decorative accent (tertiary) + adaptive icon color */
  --tk-icon-tile-bg: rgba(var(--v-theme-tertiary), 0.22);
  --tk-icon-tile-border: rgba(var(--v-theme-tertiary), 0.34);
  --tk-icon-tile-fg: rgba(var(--v-theme-on-surface), 0.86);
  --tk-mask: rgba(0, 0, 0, 0.45);

  /* Gold accent — credit badge, premium/trust indicators */
  --tk-gold-from: #fef9c3;
  --tk-gold-via: #fde68a;
  --tk-gold-to: #fbbf24;
  --tk-gold-text: #92400e;
  --tk-gold-icon: #b45309;
  --tk-gold-border: rgba(217, 161, 12, 0.35);
  --tk-gold-shadow: rgba(180, 83, 9, 0.12);
  --tk-gold-inset: rgba(255, 255, 255, 0.55);

  /* Amber accent (RGB channels) — trade highlights, order glows, CTA gradients */
  --tk-amber: 255, 183, 50;
  --tk-amber-deep: 255, 107, 0;
  --tk-amber-soft: 255, 200, 60;
  --tk-amber-glow: 255, 160, 0;
  --tk-amber-shimmer: 255, 220, 100;
  --tk-amber-hot: 255, 120, 0;
  --tk-amber-pink: 255, 60, 172;
}

[data-theme="dark"] {
  --tk-mask: rgba(0, 0, 0, 0.55);
  --tk-gold-from: #451a03;
  --tk-gold-via: #78350f;
  --tk-gold-to: #92400e;
  --tk-gold-text: #fde68a;
  --tk-gold-icon: #fbbf24;
  --tk-gold-border: rgba(251, 191, 36, 0.22);
  --tk-gold-shadow: rgba(0, 0, 0, 0.30);
  --tk-gold-inset: rgba(255, 255, 255, 0.06);
}

/* ---- Text utilities (avoid opacity dimming whole blocks) ---- */
.tk-text {
  color: var(--tk-text);
}

.tk-text-muted {
  color: var(--tk-text-muted);
}

.tk-text-faint {
  color: var(--tk-text-faint);
}

.tk-text-surface {
  color: var(--tk-text-surface);
}

.tk-text-surface-muted {
  color: var(--tk-text-surface-muted);
}

.tk-text-surface-faint {
  color: var(--tk-text-surface-faint);
}

/* 手机端 H5 基础样式与约束（全局） */

html, body {
  height: 100%;
}

html {
  font-family: var(--font-sans);
  font-size: 17px;
  /* 更稳定地禁用双击缩放（部分 WebView 会无视 user-scalable=no 的 JS 兜底） */
  touch-action: manipulation;
}

/* 避免“短页无滚动条/长页有滚动条”导致的水平抖动（外边距看起来不一致） */
html {
  scrollbar-gutter: stable;
}

@supports not (scrollbar-gutter: stable) {
  html {
    overflow-y: scroll;
  }
}

body {
  margin: 0;
  font-family: var(--font-sans);
  background: var(--tk-fallback-bg);
  background: rgb(var(--v-theme-background));
  color: var(--tk-fallback-on-bg);
  color: rgb(var(--v-theme-on-background));
  line-height: 1.5;
  touch-action: manipulation;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-tap-highlight-color: transparent;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

/* 让原生控件（尤其是 <button>）继承全局字体 */
button,
input,
textarea,
select {
  font: inherit;
}

/* Vuetify typography: 让 M3 utilities 使用我们的字体栈 */
@layer vuetify-utilities.typography {
  .text-display-large,
  .text-display-medium,
  .text-display-small,
  .text-headline-large,
  .text-headline-medium,
  .text-headline-small,
  .text-title-large,
  .text-title-medium,
  .text-title-small,
  .text-body-large,
  .text-body-medium,
  .text-body-small,
  .text-label-large,
  .text-label-medium,
  .text-label-small {
    font-family: var(--font-sans) !important;
  }
}

/* Vuetify card typography: keep titles readable across themes */
.v-card .v-card-title {
  color: rgb(var(--v-theme-on-surface));
}

.v-card .v-card-subtitle {
  color: rgba(var(--v-theme-on-surface), 0.72);
}

.v-card .v-card-text {
  color: rgba(var(--v-theme-on-surface), 0.88);
}

/* View Transition：按 vben 的方式禁用默认动画并处理层级（更顺、更不闪） */
::view-transition-new(root),
::view-transition-old(root) {
  animation: none;
  mix-blend-mode: normal;
}

::view-transition-old(root) {
  z-index: 1;
}

::view-transition-new(root) {
  z-index: 2147483646;
}

[data-theme="dark"]::view-transition-old(root) {
  z-index: 2147483646;
}

[data-theme="dark"]::view-transition-new(root) {
  z-index: 1;
}

/* 安全区变量（用于 Tabbar / 底部弹窗等） */
:root {
  --safe-top: env(safe-area-inset-top);
  --safe-right: env(safe-area-inset-right);
  --safe-bottom: env(safe-area-inset-bottom);
  --safe-left: env(safe-area-inset-left);
}

/* 更稳定的全屏高度：优先 dvh，fallback 用 --vh */
.h5-full-height {
  min-height: 100dvh;
  min-height: calc(var(--vh, 1vh) * 100);
}

/* snappy motion tokens（全局） */

:root {
  --motion-fast: 90ms;
  --motion-md: 140ms;
  --motion-slow: 200ms;
  --motion-ease-out: cubic-bezier(0.2, 0, 0, 1);
}

/* Vuetify 内置 transition：统一节奏（避免忽快忽慢） */
.fade-transition-enter-active,
.fade-transition-leave-active {
  transition-duration: var(--motion-md);
  transition-timing-function: var(--motion-ease-out);
}

/* vben transition.css（原样搬运） */
.slide-up-enter-active,
.slide-up-leave-active {
  transition: 0.25s cubic-bezier(0.25, 0.8, 0.5, 1);
}

.slide-up-move {
  transition: transform 0.3s;
}

.slide-up-enter-from,
.slide-up-leave-to {
  opacity: 0;
  transform: translateY(-15px);
}

.slide-down-enter-active,
.slide-down-leave-active {
  transition: 0.25s cubic-bezier(0.25, 0.8, 0.5, 1);
}

.slide-down-move {
  transition: transform 0.3s;
}

.slide-down-enter-from,
.slide-down-leave-to {
  opacity: 0;
  transform: translateY(15px);
}

.slide-left-enter-active,
.slide-left-leave-active {
  transition: 0.25s cubic-bezier(0.25, 0.8, 0.5, 1);
}

.slide-left-move {
  transition: transform 0.3s;
}

.slide-left-enter-from,
.slide-left-leave-to {
  opacity: 0;
  transform: translate(-15px);
}

.slide-right-enter-active,
.slide-right-leave-active {
  transition: 0.25s cubic-bezier(0.25, 0.8, 0.5, 1);
}

.slide-right-move {
  transition: transform 0.3s;
}

.slide-right-enter-from,
.slide-right-leave-to {
  opacity: 0;
  transform: translate(15px);
}

.bottom-sheet-transition-enter-active,
.bottom-sheet-transition-leave-active {
  transition-duration: var(--motion-slow);
  transition-timing-function: var(--motion-ease-out);
}

/* 路由过渡：前进/后退区分（snappy） */
.tk-route-forward-enter-active,
.tk-route-forward-leave-active,
.tk-route-back-enter-active,
.tk-route-back-leave-active {
  transition:
    opacity var(--motion-md) var(--motion-ease-out),
    transform var(--motion-md) var(--motion-ease-out);
  will-change: opacity, transform;
}

.tk-auth-switch-enter-active,
.tk-auth-switch-leave-active {
  transition:
    opacity var(--motion-slow) var(--motion-ease-out),
    transform var(--motion-slow) var(--motion-ease-out);
  will-change: opacity, transform;
}

/* 移动端更稳：离场元素脱离文档流，避免闪/抖 */
.tk-auth-switch-leave-active {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  width: 100%;
}

.tk-auth-switch-enter-from,
.tk-auth-switch-leave-to {
  opacity: 0;
  transform: translateX(16px);
}

.tk-route-shell,
.tk-route-stage {
  position: relative;
  width: 100%;
  min-height: 100dvh;
  background: rgb(var(--v-theme-background));
  overflow: hidden;
  isolation: isolate;
  contain: paint;
}

/* iOS Safari 下更稳：离场元素脱离文档流，避免重排/抖动 */
.tk-route-forward-leave-active,
.tk-route-back-leave-active,
.tk-route-replace-leave-active {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  width: 100%;
}

.tk-route-forward-enter-from {
  opacity: 0;
  transform: translateX(16px);
}

.tk-route-forward-leave-to {
  opacity: 0;
  transform: translateX(-10px);
}

.tk-route-back-enter-from {
  opacity: 0;
  transform: translateX(-16px);
}

.tk-route-back-leave-to {
  opacity: 0;
  transform: translateX(10px);
}

/* replace：更轻的 fade（不位移） */
.tk-route-replace-enter-active,
.tk-route-replace-leave-active {
  transition: opacity var(--motion-md) var(--motion-ease-out);
  will-change: opacity;
}

.tk-route-replace-enter-from,
.tk-route-replace-leave-to {
  opacity: 0;
}

/* 通用进入/退出：用于任何 show/hide（必须有动效） */
.tk-auto-enter-active,
.tk-auto-leave-active {
  transition:
    opacity var(--motion-fast) var(--motion-ease-out),
    transform var(--motion-fast) var(--motion-ease-out);
  will-change: opacity, transform;
}

.tk-auto-enter-from,
.tk-auto-leave-to {
  opacity: 0;
  transform: translateY(8px);
}

/* 列表/块插入删除：FLIP move（把其它元素挤下去/挤上来） */
.tk-list-enter-active,
.tk-list-leave-active {
  transition:
    opacity var(--motion-md) var(--motion-ease-out),
    transform var(--motion-md) var(--motion-ease-out);
}

.tk-list-enter-from,
.tk-list-leave-to {
  opacity: 0;
  transform: translateY(10px);
}

.tk-list-move {
  transition: transform var(--motion-md) var(--motion-ease-out);
}

.tk-list-leave-active {
  position: absolute;
  left: 0;
  right: 0;
  width: 100%;
}

@media (prefers-reduced-motion: reduce) {
  .fade-transition-enter-active,
  .fade-transition-leave-active,
  .bottom-sheet-transition-enter-active,
  .bottom-sheet-transition-leave-active {
    transition: none;
  }

  .tk-route-forward-enter-active,
  .tk-route-forward-leave-active,
  .tk-route-back-enter-active,
  .tk-route-back-leave-active {
    transition: none;
  }

  .tk-auth-switch-enter-active,
  .tk-auth-switch-leave-active {
    transition: none;
  }

  .tk-auto-enter-active,
  .tk-auto-leave-active,
  .tk-list-enter-active,
  .tk-list-leave-active,
  .tk-list-move {
    transition: none;
  }
}

