#root {
	max-width: 100%;
	margin: 0;
	padding: 0;
	text-align: center;
	width: 100vw;
	height: 100vh;
	overflow: hidden
}

.tip1 {
	position: absolute;
	color: red;
	left: 0;
	cursor: pointer;
	top: 0;
	height: 100vh;
	width: 100vw;
	text-align: center;
	line-height: 100vh
}

.tip2 {
	position: absolute;
	left: 50%;
	cursor: pointer;
	top: 25%;
	transform: translate(-50%)
}

.button-wrapper {
	display: flex;
	gap: 10px;
	margin-bottom: 10px;
	position: absolute;
	top: 10px;
	left: 10px;
	flex-wrap: wrap;
	z-index: 1000;
	padding: 10px;
	background-color: #00000080;
	border-radius: 8px
}

.button-wrapper button {
	color: #fff;
	background-color: #4caf50;
	border: none;
	padding: 8px 16px;
	border-radius: 4px;
	cursor: pointer;
	transition: background-color .3s
}

.button-wrapper button:hover {
	background-color: #45a049
}

.iframe-wrapper {
    position: fixed; /* 相对于视口定位，不受页面滚动影响 */
    width: 100%; /* 宽度占满视口 */
    left: 0; /* 左边缘对齐视口 */
    bottom: 0; /* 下边缘对齐视口底部 */
    /* 移除 top: 0（避免与 bottom 冲突导致定位异常） */
    overflow: hidden;
    display: flex;
    justify-content: center; /* 内部内容水平居中 */
    align-items: flex-end; /* 内部内容靠下对齐（强化底部效果） */
    background-color: transparent;
    margin-left: 0; /* 清除原有左偏移，避免位置偏差 */
    /* 可根据需要设置高度，例如固定高度或自适应内容 */
    height: auto; /* 高度由内容决定，也可设为固定值如 200px */
    margin-top: 6%;
}

.digital-human-container {
	position: relative;
	width: 100%;
	height: 100vh;
	display: flex;
	flex-direction: column;
	align-items: center;
	background-color: transparent
}

.chat-container {
    position: absolute;
    left: 3%;
    top: calc(-1% + 70vh - 50px);
    width: 67%;
    max-height: 58%;
    background: transparent;
    padding: 16px 0 8px;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    box-sizing: border-box;
    border-bottom-left-radius: 10px;
    border-bottom-right-radius: 10px;
    overflow: hidden;
    padding-top: 260px;
    height: 200px;
	
}

.message-row {
	width: 100%;
	display: flex;
	margin-bottom: 8px
}

.user-row {
	justify-content: flex-end
}

.ai-row {
	justify-content: flex-start
}

.message {
	display: flex;
	flex-direction: column;
	
}

.message-content {
	max-width: 100%;
	padding: 10px 15px;
	border-radius: 15px;
	font-size: 15px;
	line-height: 1.5;
	word-break: break-all;
	text-align: left;
	box-shadow: 0 2px 8px #00000014;
	
	
}

.message.user .message-content {
	background-color: #007affe6;
	color: #fff;
	border-radius: 15px 5px 15px 15px
}

.message.digitalHuman .message-content {
	background-color: #e9e9ebf2;
	color: #000;
	border-radius: 5px 15px 15px;
	width: 40%;
}

.mic-button-container {
	position: fixed;
	bottom: 100px;
	right: 30px;
	z-index: 1000
}

.mic-button {
	width: 60px;
	height: 60px;
	border-radius: 50%;
	background-color: #ffffffe6;
	border: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 2px 10px #0003;
	transition: all .3s ease
}

.mic-button:hover {
	transform: scale(1.1);
	background-color: #fff
}

.mic-button.recording {
	background-color: #f44336e6;
	animation: pulse 1.5s infinite
}

.mic-button.recording:hover {
	background-color: #f44336
}

.mic-button.processing {
	background-color: #808080e6;
	cursor: not-allowed
}

.mic-button.processing:hover {
	transform: none;
	background-color: #808080e6
}

.mic-button.pulse {
	animation: micPulse 2s infinite
}

.mic-icon {
	width: 30px;
	height: 30px;
	object-fit: contain
}

@keyframes pulse {
	0% {
		transform: scale(1);
		box-shadow: 0 2px 10px #0003
	}

	50% {
		transform: scale(1.05);
		box-shadow: 0 5px 15px #f4433666
	}

	to {
		transform: scale(1);
		box-shadow: 0 2px 10px #0003
	}
}

@keyframes micPulse {
	0% {
		transform: scale(1);
		box-shadow: 0 2px 10px #0003
	}

	50% {
		transform: scale(1.1);
		box-shadow: 0 0 0 15px #007aff4d
	}

	to {
		transform: scale(1);
		box-shadow: 0 2px 10px #0003
	}
}

.loading-dots {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	padding: 8px 0
}

.loading-dots span {
	width: 8px;
	height: 8px;
	background-color: #666;
	border-radius: 50%;
	animation: loadingDots 1.4s infinite ease-in-out both
}

.loading-dots span:nth-child(1) {
	animation-delay: -.32s
}

.loading-dots span:nth-child(2) {
	animation-delay: -.16s
}

@keyframes loadingDots {
	0%,80%,to {
		transform: scale(0)
	}

	40% {
		transform: scale(1)
	}
}

.input-container {
	position: fixed;
	bottom: 10px;
	left: 50%;
	transform: translate(-50%);
	display: flex;
	gap: 10px;
	padding: 15px;
	border-radius: 20px;
	z-index: 1000;
	width: 80%;
	max-width: 600px;
	transition: bottom .3s ease
}

.text-input {
	flex: 1;
	padding: 12px 16px;
	border: 1px solid rgba(255,255,255,.2);
	border-radius: 15px;
	font-size: 16px;
	outline: none;
	transition: border-color .3s;
	background-color: #ffffff1a;
	color: #fff
}

.text-input::placeholder {
	color: #fff9
}

.text-input:focus {
	border-color: #ffffff80;
	box-shadow: 0 0 0 2px #ffffff1a
}

.send-button {
	padding: 12px 24px;
	background-color: #fff3;
	color: #fff;
	border: none;
	border-radius: 15px;
	cursor: pointer;
	transition: all .3s;
	font-size: 16px;
	min-width: 80px
}

.send-button:hover {
	background-color: #ffffff4d;
	transform: translateY(-1px)
}

.send-button:disabled {
	background-color: #ffffff1a;
	cursor: not-allowed;
	transform: none
}

.config-button {
	position: fixed;
	top: 20px;
	right: 20px;
	z-index: 1000;
	padding: 8px 16px;
	background-color: #4a90e2;
	color: #fff;
	border: none;
	border-radius: 4px;
	cursor: pointer;
	font-size: 14px
}

.config-button:hover {
	background-color: #357abd
}

.config-overlay {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background-color: #00000080;
	display: flex;
	justify-content: center;
	align-items: center;
	z-index: 1001
}

.config-content {
	background-color: #fff;
	padding: 20px;
	border-radius: 8px;
	width: 90%;
	max-width: 500px;
	max-height: 90vh;
	overflow-y: auto
}

.config-panel {
	display: flex;
	flex-direction: column;
	gap: 16px
}

.config-panel h3 {
	margin: 0 0 16px;
	color: #333;
	text-align: center
}

.config-item {
	display: flex;
	align-items: center;
	gap: 12px
}

.config-item label {
	min-width: 100px;
	color: #666
}

.config-item input[type=range] {
	flex: 1
}

.config-item span {
	min-width: 30px;
	text-align: right
}

.config-item select {
	flex: 1;
	padding: 6px;
	border: 1px solid #ddd;
	border-radius: 4px
}

.config-buttons {
	display: flex;
	justify-content: flex-end;
	gap: 12px;
	margin-top: 16px
}

.config-buttons button {
	padding: 8px 16px;
	border: none;
	border-radius: 4px;
	cursor: pointer;
	font-size: 14px
}

.config-buttons button:first-child {
	color: #333
}

.config-buttons button:last-child {
	background-color: #4a90e2;
	color: #fff
}

.config-buttons button:hover {
	opacity: .9
}

.config-page {
	min-height: 100vh;
	padding: 20px
}

.config-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 30px;
	padding-bottom: 20px;
	border-bottom: 1px solid #ddd
}

.config-header h1 {
	margin: 0;
	color: #333;
	font-size: 24px
}

.back-button {
	padding: 8px 16px;
	background-color: #4a90e2;
	color: #fff;
	border: none;
	border-radius: 4px;
	cursor: pointer;
	font-size: 14px
}

.back-button:hover {
	background-color: #357abd
}

.config-section {
	background-color: #fff;
	padding: 20px;
	border-radius: 8px;
	margin-bottom: 20px;
	box-shadow: 0 2px 4px #0000001a
}

.config-section h2 {
	margin: 0 0 20px;
	color: #333;
	font-size: 18px
}

.config-item {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 15px
}

.config-item:last-child {
	margin-bottom: 0
}

.config-item label {
	min-width: 120px;
	color: #666;
	font-size: 14px
}

.config-item input[type=range] {
	flex: 1;
	height: 6px;
	-webkit-appearance: none;
	background: #ddd;
	border-radius: 3px;
	outline: none
}

.config-item input[type=range]::-webkit-slider-thumb {
	-webkit-appearance: none;
	width: 16px;
	height: 16px;
	background: #4a90e2;
	border-radius: 50%;
	cursor: pointer
}

.config-item span {
	min-width: 30px;
	text-align: right;
	color: #666;
	font-size: 14px
}

.config-item select {
	flex: 1;
	padding: 8px;
	border: 1px solid #ddd;
	border-radius: 4px;
	font-size: 14px;
	color: #333;
	background-color: #fff
}

.config-item input[type=checkbox] {
	margin-right: 8px
}

.config-buttons {
	display: flex;
	justify-content: center;
	margin-top: 30px
}

.reset-button {
	padding: 12px 24px;
	background-color: #f5f5f5;
	color: #333;
	border: 1px solid #ddd;
	border-radius: 4px;
	cursor: pointer;
	font-size: 14px;
	transition: all .3s ease
}

.reset-button:hover {
	background-color: #e5e5e5
}

.loading {
	display: flex;
	justify-content: center;
	align-items: center;
	min-height: 200px;
	font-size: 16px;
	color: #666
}

.error-message {
	background-color: #ffebee;
	color: #c62828;
	padding: 12px;
	border-radius: 4px;
	margin-bottom: 20px;
	text-align: center
}

.header-buttons {
	display: flex;
	gap: 10px
}

.save-button {
	padding: 8px 16px;
	background-color: #4caf50;
	color: #fff;
	border: none;
	border-radius: 4px;
	cursor: pointer;
	font-size: 14px;
	transition: background-color .3s
}

.save-button:hover {
	background-color: #45a049
}

.save-button:disabled {
	background-color: #ccc;
	cursor: not-allowed
}

.save-button[data-status=success] {
	background-color: #4caf50
}

.save-button[data-status=error] {
	background-color: #f44336
}

.config-page-main-area {
	display: flex;
	gap: 20px;
	padding: 20px;
	height: calc(100vh - 100px)
}

.left-panel {
	width: 400px;
	background: #fff;
	border-radius: 8px;
	padding: 20px;
	box-shadow: 0 2px 8px #0000001a;
	overflow-y: auto
}

.middle-preview-area {
	flex: 1;
	background: #fff;
	border-radius: 8px;
	padding: 20px;
	box-shadow: 0 2px 8px #0000001a;
	display: flex;
	flex-direction: column
}

.config-item {
	margin-bottom: 24px
}

.config-item-label {
	font-size: 16px;
	font-weight: 500;
	color: #333;
	margin-bottom: 12px
}

.figuer-card-wrapper,.tts-card-wrapper {
	background: #f5f7fa;
	border-radius: 8px;
	padding: 16px;
	display: flex;
	gap: 16px
}

.figuer-card-thumbnail-box,.tts-card-thumbnail-box {
	width: 120px;
	height: 160px;
	border-radius: 4px;
	overflow: hidden
}

.figuer-card-thumbnail,.tts-card-thumbnail img {
	width: 100%;
	height: 100%;
	object-fit: cover
}

.figuer-card-info,.tts-card-info {
	flex: 1;
	display: flex;
	flex-direction: column;
	justify-content: space-between
}

.figuer-card-name,.tts-card-name {
	font-size: 16px;
	font-weight: 500;
	color: #333
}

.figuer-card-id-box,.tts-card-id-box {
	font-size: 14px;
	color: #666
}

.config-sub-item {
	margin-bottom: 16px;
	display: flex;
	align-items: center;
	gap: 12px
}

.config-sub-item label {
	min-width: 100px;
	color: #666
}

.config-sub-item input[type=range] {
	flex: 1;
	height: 4px;
	-webkit-appearance: none;
	background: #ddd;
	border-radius: 2px;
	outline: none
}

.config-sub-item input[type=range]::-webkit-slider-thumb {
	-webkit-appearance: none;
	width: 16px;
	height: 16px;
	background: #4a90e2;
	border-radius: 50%;
	cursor: pointer
}

.config-sub-item span {
	min-width: 30px;
	text-align: right;
	color: #666
}

.config-sub-item input[type=checkbox] {
	margin-right: 8px
}

.virtual-bround-area-title {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 16px
}

.virtual-bround-area-title span {
	font-size: 16px;
	font-weight: 500;
	color: #333
}

.virtual-bround-area-desc {
	font-size: 14px;
	color: #666
}

.virtual-bround-area {
	width: 100%;
	height: 100%;
	border-radius: 8px;
	overflow: hidden
}

.virtual-bround-area.portrait {
	aspect-ratio: 9/16;
	max-width: 400px;
	margin: 0 auto
}

.draggable-wrapper {
	width: 100%;
	height: 100%;
	position: relative
}

.cropper-container {
	width: 100%;
	height: 100%;
	position: relative;
	overflow: hidden
}

.cropper-image {
	position: absolute;
	width: 100%;
	height: 100%;
	background-size: contain;
	background-position: center;
	background-repeat: no-repeat
}

@media (max-width: 1200px) {
	.config-page-main-area {
		flex-direction: column
	}

	.left-panel {
		width: 100%
	}

	.middle-preview-area {
		height: 500px
	}
}

.modal-overlay {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background-color: #00000080;
	display: flex;
	justify-content: center;
	align-items: center;
	z-index: 1000
}

.modal-content {
	background: #fff;
	border-radius: 8px;
	width: 90%;
	max-width: 800px;
	max-height: 90vh;
	overflow-y: auto;
	position: relative
}

.modal-header {
	padding: 16px 24px;
	border-bottom: 1px solid #eee;
	display: flex;
	justify-content: space-between;
	align-items: center
}

.modal-header h2 {
	margin: 0;
	font-size: 18px;
	color: #333
}

.modal-close {
	background: none;
	border: none;
	font-size: 24px;
	color: #666;
	cursor: pointer;
	padding: 0;
	line-height: 1
}

.modal-body {
	padding: 24px
}

@keyframes spin {
	0% {
		transform: rotate(0)
	}

	to {
		transform: rotate(360deg)
	}
}

.figure-grid,.voice-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill,minmax(200px,1fr));
	gap: 20px;
	padding: 10px
}

.figure-card,.voice-card {
	background: #f5f7fa;
	border-radius: 8px;
	overflow: hidden;
	cursor: pointer;
	transition: all .3s ease;
	border: 2px solid transparent
}

.figure-card:hover,.voice-card:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 12px #0000001a
}

.figure-card.selected,.voice-card.selected {
	border-color: #4a90e2
}

.figure-image,.voice-image {
	width: 100%;
	height: 200px;
	overflow: hidden
}

.figure-image img,.voice-image img {
	width: 100%;
	height: 100%;
	object-fit: cover
}

.figure-info,.voice-info {
	padding: 12px
}

.figure-name,.voice-name {
	font-size: 16px;
	font-weight: 500;
	color: #333;
	margin-bottom: 4px
}

.figure-id,.voice-id {
	font-size: 14px;
	color: #666
}

.figuer-card-wrapper,.tts-card-wrapper {
	cursor: pointer;
	transition: all .3s ease
}

.figuer-card-wrapper:hover,.tts-card-wrapper:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 12px #0000001a
}

.hide-scrollbar::-webkit-scrollbar {
	display: none
}

.hide-scrollbar {
	-ms-overflow-style: none;
	scrollbar-width: none
}

.display-box {
	position: absolute;
	top: 100px;
	left: 3%;
	width: 68%;
	height: 600px;
	border-radius: 10px;
	box-shadow: 0 4px 12px #00000026;
	z-index: 1000;
	-webkit-backdrop-filter: blur(5px);
	backdrop-filter: blur(5px);
	display: flex;
	flex-direction: column;
	overflow: hidden
}

.display-media {
	flex: 1;
	width: 100%;
	background-color: #000;
	position: relative;
	overflow: hidden
}

.display-content {
	position: fixed;
	bottom: 30px;
	right: 30px;
	padding: 12px 24px;
	color: #fff;
	border-radius: 20px;
	font-size: 16px;
	line-height: 1.5;
	text-align: center;
	max-width: 300px;
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	transition: all .3s ease;
	opacity: 0;
	animation: fadeIn .3s ease forwards;
	z-index: 1000
}

@keyframes fadeIn {
	0% {
		opacity: 0;
		transform: translateY(20px)
	}

	to {
		opacity: 1;
		transform: translateY(0)
	}
}

.hotwords-manager-card .ant-table-wrapper {
	margin-top: 16px
}

.hotwords-manager-card .ant-table-row:hover .hover-visible-button {
	background-color: #f0f0f0
}

.hover-visible-button:hover {
	background-color: #e6f7ff!important
}

.custom-table-row .ant-dropdown-trigger {
	transition: all .3s
}

.custom-table-row:hover .ant-dropdown-trigger {
	transform: scale(1.1)
}

.hotwords-manager-card .ant-table-cell {
	padding: 12px 16px
}

.hotwords-manager-card .ant-dropdown-menu {
	border-radius: 8px;
	box-shadow: 0 3px 6px #00000029
}

.react-resizable {
	position: relative
}

.react-resizable-handle {
	position: absolute;
	width: 20px;
	height: 20px;
	background-repeat: no-repeat;
	background-origin: content-box;
	box-sizing: border-box;
	background-image: url(data:image/svg+xml;
	base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position: bottom right;
	padding: 0 3px 3px 0
}

.react-resizable-handle-sw {
	bottom: 0;
	left: 0;
	cursor: sw-resize;
	transform: rotate(90deg)
}

.react-resizable-handle-se {
	bottom: 0;
	right: 0;
	cursor: se-resize
}

.react-resizable-handle-nw {
	top: 0;
	left: 0;
	cursor: nw-resize;
	transform: rotate(180deg)
}

.react-resizable-handle-ne {
	top: 0;
	right: 0;
	cursor: ne-resize;
	transform: rotate(270deg)
}

.react-resizable-handle-w,.react-resizable-handle-e {
	top: 50%;
	margin-top: -10px;
	cursor: ew-resize
}

.react-resizable-handle-w {
	left: 0;
	transform: rotate(135deg)
}

.react-resizable-handle-e {
	right: 0;
	transform: rotate(315deg)
}

.react-resizable-handle-n,.react-resizable-handle-s {
	left: 50%;
	margin-left: -10px;
	cursor: ns-resize
}

.react-resizable-handle-n {
	top: 0;
	transform: rotate(225deg)
}

.react-resizable-handle-s {
	bottom: 0;
	transform: rotate(45deg)
}

:root {
	font-family: Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;
	line-height: 1.5;
	font-weight: 400;
	color: #ffffffde;
	background-color: #242424;
	font-synthesis: none;
	text-rendering: optimizeLegibility;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale
}

a {
	font-weight: 500;
	color: #646cff;
	text-decoration: inherit
}

a:hover {
	color: #535bf2
}

body {
	margin: 0;
	display: flex;
	place-items: center;
	min-width: 320px;
	min-height: 100vh
}

h1 {
	font-size: 3.2em;
	line-height: 1.1
}

button {
	border-radius: 8px;
	border: 1px solid transparent;
	padding: .6em 1.2em;
	font-size: 1em;
	font-weight: 500;
	font-family: inherit;
	background-color: #1a1a1a;
	cursor: pointer;
	transition: border-color .25s
}

button:hover {
	border-color: #646cff
}

button:focus,button:focus-visible {
	outline: 4px auto -webkit-focus-ring-color
}

@media (prefers-color-scheme: light) {
	:root {
		color: #213547;
		background-color: #fff
	}

	a:hover {
		color: #747bff
	}

	button {
		background-color: #f9f9f9
	}
}



