*, :before, :after {
	box-sizing: border-box;
	border-width: 0;
	border-style: solid;
	border-color: #e5e7eb;
}

:before, :after {
	--tw-content: "";
}

html, :host {
	line-height: 1.5;
	-webkit-text-size-adjust: 100%;
	-moz-tab-size: 4;
	-o-tab-size: 4;
	tab-size: 4;
	font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", Segoe UI Symbol, "Noto Color Emoji";
	font-feature-settings: normal;
	font-variation-settings: normal;
	-webkit-tap-highlight-color: transparent;
}

body {
	margin: 0;
	line-height: inherit;
	color: #000 !important;
}

hr {
	height: 0;
	color: inherit;
	border-top-width: 1px;
}

abbr:where([title]) {
	-webkit-text-decoration: underline dotted;
	text-decoration: underline dotted;
}

h1, h2, h3, h4, h5, h6 {
	font-size: inherit;
	font-weight: inherit;
}

a {
	color: inherit;
	text-decoration: inherit;
}

b, strong {
	font-weight: bolder;
}

code, kbd, samp, pre {
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
	font-feature-settings: normal;
	font-variation-settings: normal;
	font-size: 1em;
}

small {
	font-size: 80%;
}

sub, sup {
	font-size: 75%;
	line-height: 0;
	position: relative;
	vertical-align: baseline;
}

sub {
	bottom: -.25em;
}

sup {
	top: -.5em;
}

table {
	text-indent: 0;
	border-color: inherit;
	border-collapse: collapse;
}

button, input, optgroup, select, textarea {
	font-family: inherit;
	font-feature-settings: inherit;
	font-variation-settings: inherit;
	font-size: 100%;
	font-weight: inherit;
	line-height: inherit;
	letter-spacing: inherit;
	color: #000 !important;
	margin: 0;
	padding: 0;
	border-radius: 8px !important;
}

button, select {
	text-transform: none;
}

button, input:where([type=button]), input:where([type=reset]), input:where([type=submit]) {
	-webkit-appearance: button;
	background-color: transparent;
	background-image: none;
}

:-moz-focusring {
	outline: auto;
}

:-moz-ui-invalid {
	box-shadow: none;
}

progress {
	vertical-align: baseline;
}

::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
	height: auto;
}

[type=search] {
	-webkit-appearance: textfield;
	outline-offset: -2px;
}

::-webkit-search-decoration {
	-webkit-appearance: none;
}

::-webkit-file-upload-button {
	-webkit-appearance: button;
	font: inherit;
}

summary {
	display: list-item;
}

blockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre {
	margin: 0;
}

fieldset {
	margin: 0;
	padding: 0;
}

legend {
	padding: 0;
}

ol, ul, menu {
	list-style: none;
	margin: 0;
	padding: 0;
}

dialog {
	padding: 0;
}

textarea {
	resize: vertical;
}

input::-moz-placeholder, textarea::-moz-placeholder {
	opacity: 1;
	color: #9ca3af;
}

input::placeholder, textarea::placeholder {
	opacity: 1;
	color: #9ca3af;
}

button, [role=button] {
	cursor: pointer;
}

:disabled {
	cursor: default;
}

img, svg, video, canvas, audio, iframe, embed, object {
	display: block;
	vertical-align: middle;
}

img, video {
	max-width: 100%;
	height: auto;
}

[hidden] {
	display: none;
}

*, :before, :after {
	--tw-border-spacing-x: 0;
	--tw-border-spacing-y: 0;
	--tw-translate-x: 0;
	--tw-translate-y: 0;
	--tw-rotate: 0;
	--tw-skew-x: 0;
	--tw-skew-y: 0;
	--tw-scale-x: 1;
	--tw-scale-y: 1;
	--tw-scroll-snap-strictness: proximity;
	--tw-ring-offset-width: 0px;
	--tw-ring-offset-color: #fff;
	--tw-ring-offset-shadow: 0 0 rgba(0, 0, 0, 0);
	--tw-ring-shadow: 0 0 rgba(0, 0, 0, 0);
	--tw-shadow: 0 0 rgba(0, 0, 0, 0);
	--tw-shadow-colored: 0 0 rgba(0, 0, 0, 0);
}

::backdrop {
	--tw-border-spacing-x: 0;
	--tw-border-spacing-y: 0;
	--tw-translate-x: 0;
	--tw-translate-y: 0;
	--tw-rotate: 0;
	--tw-skew-x: 0;
	--tw-skew-y: 0;
	--tw-scale-x: 1;
	--tw-scale-y: 1;
	--tw-scroll-snap-strictness: proximity;
	--tw-ring-offset-width: 0px;
	--tw-ring-offset-color: #fff;
	--tw-ring-offset-shadow: 0 0 rgba(0, 0, 0, 0);
	--tw-ring-shadow: 0 0 rgba(0, 0, 0, 0);
	--tw-shadow: 0 0 rgba(0, 0, 0, 0);
	--tw-shadow-colored: 0 0 rgba(0, 0, 0, 0);
}

.container {
	width: 100%;
}

@media (min-width: 640px) {
	.container {
		max-width: 640px;
	}
}

@media (min-width: 768px) {
	.container {
		max-width: 768px;
	}
}

@media (min-width: 1024px) {
	.container {
		max-width: 1024px;
	}
}

@media (min-width: 1280px) {
	.container {
		max-width: 1280px;
	}
}

@media (min-width: 1536px) {
	.container {
		max-width: 1536px;
	}
}

.static {
	position: static !important;
}

.\!fixed, .fixed {
	position: fixed !important;
}

.absolute {
	position: absolute !important;
}

.relative {
	position: relative !important;
}

.order-last {
	order: 9999 !important;
}

.m-auto {
	margin: auto !important;
}

.mx-1 {
	margin-left: .25rem !important;
	margin-right: .25rem !important;
}

.mx-2 {
	margin-left: .5rem !important;
	margin-right: .5rem !important;
}

.my-1 {
	margin-top: .25rem !important;
	margin-bottom: .25rem !important;
}

.-mt-4 {
	margin-top: -1rem !important;
}

.mb-4 {
	margin-bottom: 1rem !important;
}

.ml-1 {
	margin-left: .25rem !important;
}

.ml-2 {
	margin-left: .5rem !important;
}

.ml-4 {
	margin-left: 1rem !important;
}

.mr-1 {
	margin-right: .25rem !important;
}

.mr-2 {
	margin-right: .5rem !important;
}

.mr-4 {
	margin-right: 1rem !important;
}

.mt-1 {
	margin-top: .25rem !important;
}

.mt-2 {
	margin-top: .5rem !important;
}

.mt-3 {
	margin-top: .75rem !important;
}

.mt-4 {
	margin-top: 1rem !important;
}

.box-border {
	box-sizing: border-box !important;
}

.block {
	display: block !important;
}

.inline-block {
	display: inline-block !important;
}

.inline {
	display: inline !important;
}

.flex {
	display: flex !important;
}

.\!table, .table {
	display: table !important;
}

.grid {
	display: grid !important;
}

.hidden {
	display: none !important;
}

.h-10 {
	height: 2.5rem !important;
}

.w-auto {
	width: auto !important;
}

.w-full {
	width: 100% !important;
}

.flex-1 {
	flex: 1 1 0% !important;
}

.flex-initial {
	flex: 0 1 auto !important;
}

.flex-shrink {
	flex-shrink: 1 !important;
}

.flex-grow {
	flex-grow: 1 !important;
}

.transform {
	transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important;
}

.cursor-move {
	cursor: move !important;
}

.cursor-pointer {
	cursor: pointer !important;
}

.resize {
	resize: both !important;
}

.flex-col {
	flex-direction: column !important;
}

.flex-wrap {
	flex-wrap: wrap !important;
}

.items-center {
	align-items: center !important;
}

.justify-end {
	justify-content: flex-end !important;
}

.justify-center {
	justify-content: center !important;
}

.justify-between {
	justify-content: space-between !important;
}

.justify-around {
	justify-content: space-around !important;
}

.border {
	border-width: 1px !important;
}

.px-1 {
	padding-left: .25rem !important;
	padding-right: .25rem !important;
}

.px-2 {
	padding-left: .5rem !important;
	padding-right: .5rem !important;
}

.px-4 {
	padding-left: 1rem !important;
	padding-right: 1rem !important;
}

.py-1 {
	padding-top: .25rem !important;
	padding-bottom: .25rem !important;
}

.py-2 {
	padding-top: .5rem !important;
	padding-bottom: .5rem !important;
}

.py-3 {
	padding-top: .75rem !important;
	padding-bottom: .75rem !important;
}

.py-4 {
	padding-top: 1rem !important;
	padding-bottom: 1rem !important;
}

.py-8 {
	padding-top: 2rem !important;
	padding-bottom: 2rem !important;
}

.pt-8 {
	padding-top: 2rem !important;
}

.text-center {
	text-align: center !important;
}

.text-right {
	text-align: right !important;
}

.text-2xl {
	font-size: 1.5rem !important;
	line-height: 2rem !important;
}

.text-3xl {
	font-size: 1.875rem !important;
	line-height: 2.25rem !important;
}

.text-base {
	font-size: 1rem !important;
	line-height: 1.5rem !important;
}

.text-lg {
	font-size: 1.125rem !important;
	line-height: 1.75rem !important;
}

.text-xl {
	font-size: 1.25rem !important;
	line-height: 1.75rem !important;
}

.text-xs {
	font-size: .75rem !important;
	line-height: 1rem !important;
}

.italic {
	font-style: italic !important;
}

.leading-none {
	line-height: 1 !important;
}

.text-gray-400 {
	--tw-text-opacity: 1 !important;
}

.text-gray-500 {
	--tw-text-opacity: 1 !important;
}

.text-red-500 {
	--tw-text-opacity: 1 !important;
}

.underline {
	text-decoration-line: underline !important;
}

.outline {
	outline-style: solid !important;
}

.blur {
	--tw-blur: blur(8px) !important;
	filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
}

.filter {
	filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
}

.backdrop-filter {
	-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia) !important;
	backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia) !important;
}

.transition {
	transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter !important;
	transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter !important;
	transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter !important;
	transition-timing-function: cubic-bezier(.4, 0, .2, 1) !important;
	transition-duration: .15s !important;
}

@media (min-width: 768px) {
	.md\:w-1/3 {
		width: 33.333333% !important;
	}
}

.expand-transition-enter-active, .expand-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.expand-transition-move {
	transition: transform .4s;
}

.expand-x-transition-enter-active, .expand-x-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.expand-x-transition-move {
	transition: transform .4s;
}

.fade-enter-active, .fade-leave-active {
	transition: opacity .2s ease-in-out;
}

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

.fade-slide-leave-active, .fade-slide-enter-active {
	transition: all .3s;
}

.fade-slide-enter-from {
	opacity: 0;
	transform: translate(-30px);
}

.fade-slide-leave-to {
	opacity: 0;
	transform: translate(30px);
}

.fade-bottom-enter-active, .fade-bottom-leave-active {
	transition: opacity .25s, transform .3s;
}

.fade-bottom-enter-from {
	opacity: 0;
	transform: translateY(-10%);
}

.fade-bottom-leave-to {
	opacity: 0;
	transform: translateY(10%);
}

.fade-scale-leave-active, .fade-scale-enter-active {
	transition: all .28s;
}

.fade-scale-enter-from {
	opacity: 0;
	transform: scale(1.2);
}

.fade-scale-leave-to {
	opacity: 0;
	transform: scale(.8);
}

.fade-top-enter-active, .fade-top-leave-active {
	transition: opacity .2s, transform .25s;
}

.fade-top-enter-from {
	opacity: 0;
	transform: translateY(8%);
}

.fade-top-leave-to {
	opacity: 0;
	transform: translateY(-8%);
}

.scale-transition-enter-active, .scale-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.scale-transition-move {
	transition: transform .4s;
}

.scale-transition-enter-from, .scale-transition-leave, .scale-transition-leave-to {
	opacity: 0;
	transform: scale(0);
}

.scale-rotate-transition-enter-active, .scale-rotate-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.scale-rotate-transition-move {
	transition: transform .4s;
}

.scale-rotate-transition-enter-from, .scale-rotate-transition-leave, .scale-rotate-transition-leave-to {
	opacity: 0;
	transform: scale(0) rotate(-45deg);
}

.slide-y-transition-enter-active, .slide-y-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.slide-y-transition-move {
	transition: transform .4s;
}

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

.slide-y-reverse-transition-enter-active, .slide-y-reverse-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.slide-y-reverse-transition-move {
	transition: transform .4s;
}

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

.slide-x-transition-enter-active, .slide-x-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.slide-x-transition-move {
	transition: transform .4s;
}

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

.slide-x-reverse-transition-enter-active, .slide-x-reverse-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.slide-x-reverse-transition-move {
	transition: transform .4s;
}

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

.scroll-y-transition-enter-active, .scroll-y-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.scroll-y-transition-move {
	transition: transform .4s;
}

.scroll-y-transition-enter-from, .scroll-y-transition-leave-to {
	opacity: 0;
}

.scroll-y-transition-enter-from {
	transform: translateY(-15px);
}

.scroll-y-transition-leave-to {
	transform: translateY(15px);
}

.scroll-y-reverse-transition-enter-active, .scroll-y-reverse-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.scroll-y-reverse-transition-move {
	transition: transform .4s;
}

.scroll-y-reverse-transition-enter-from, .scroll-y-reverse-transition-leave-to {
	opacity: 0;
}

.scroll-y-reverse-transition-enter-from {
	transform: translateY(15px);
}

.scroll-y-reverse-transition-leave-to {
	transform: translateY(-15px);
}

.scroll-x-transition-enter-active, .scroll-x-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.scroll-x-transition-move {
	transition: transform .4s;
}

.scroll-x-transition-enter-from, .scroll-x-transition-leave-to {
	opacity: 0;
}

.scroll-x-transition-enter-from {
	transform: translate(-15px);
}

.scroll-x-transition-leave-to {
	transform: translate(15px);
}

.scroll-x-reverse-transition-enter-active, .scroll-x-reverse-transition-leave-active {
	transition: .3s cubic-bezier(.25, .8, .5, 1) !important;
}

.scroll-x-reverse-transition-move {
	transition: transform .4s;
}

.scroll-x-reverse-transition-enter-from, .scroll-x-reverse-transition-leave-to {
	opacity: 0;
}

.scroll-x-reverse-transition-enter-from {
	transform: translate(15px);
}

.scroll-x-reverse-transition-leave-to {
	transform: translate(-15px);
}

.zoom-out-enter-active, .zoom-out-leave-active {
	transition: opacity .1 ease-in-out, transform .15s ease-out;
}

.zoom-out-enter-from, .zoom-out-leave-to {
	opacity: 0;
	transform: scale(0);
}

.zoom-fade-enter-active, .zoom-fade-leave-active {
	transition: transform .2s, opacity .3s ease-out;
}

.zoom-fade-enter-from {
	opacity: 0;
	transform: scale(.92);
}

.zoom-fade-leave-to {
	opacity: 0;
	transform: 1.06;
}

.collapse-transition {
	transition: .2s height ease-in-out, .2s padding-top ease-in-out, .2s padding-bottom ease-in-out;
}

/* 登录输入框：透明背景 + 统一8px四角钝化 */
input,
.n-input,
.n-input-wrapper,
.n-input__input {
  background-color: transparent !important;
  background: transparent !important;
  box-shadow: none !important;
  border-color: rgba(0,0,0,0.1) !important;
  border-radius: 8px !important;
}

/* ========================== */
/* ✅ 优化：蓝色旋转加载动画 */
/* ========================== */
.n-spin__spin {
  border-color: #39b54a !important;       /* 改成你统一的绿色 */
  border-top-color: transparent !important; /* 保留圆环缺口 */
  opacity: 0.7 !important;                /* 柔和不刺眼 */
  animation: spin 0.8s linear infinite !important; /* 转速更舒服 */
}

/* 全局 Naive UI 按钮统一样式：透明+边框+圆角8px */
.n-button {
  border-radius: 8px !important;
  background: transparent !important;
  color: #000 !important;
  border-width: 2px !important;
}
.n-button--primary {
  border-color: #39b54a !important;
}
.n-button--error {
  border-color: #ff99bb !important;
}
.n-button--primary:hover {
  background: rgba(57, 181, 74, 0.1) !important;
}
.n-button--error:hover {
  background: rgba(255, 153, 187, 0.1) !important;
}