/* ============================================================
   在线咨询窗口（左侧悬浮）
   ============================================================ */

.consult-fab {
	position: fixed; left: 0; top: 46%; z-index: 95;
	display: flex; flex-direction: column; align-items: center; gap: 4px;
	padding: 14px 8px; cursor: pointer;
	background: var(--clr-pine); color: #fff;
	border-radius: 0 14px 14px 0;
	box-shadow: 0 8px 24px rgba(20, 83, 45, .35);
	transition: opacity .25s ease, transform .25s ease, visibility .25s;
}
/* 打开聊天框后隐藏悬浮按钮（保持左边缘不露头） */
.consult-fab.is-hidden {
	opacity: 0; visibility: hidden; pointer-events: none;
	transform: translateX(-40px);
}
/* 竖排文字：修复此前悬挂的无选择器声明块 */
.consult-fab span {
	transition: transform .25s, background .25s;
	font-size: 13px; font-weight: 700; letter-spacing: .12em; writing-mode: vertical-rl;
}
/* 页底电话条进入视口时隐藏（避免三层控件叠加） */
.consult-fab.is-cta-near {
	opacity: 0; visibility: hidden; pointer-events: none;
	transform: translateX(-40px);
}
.consult-fab:hover { background: var(--clr-leaf); transform: translateX(3px); }
.consult-fab svg { writing-mode: horizontal-tb; }
.consult-fab-dot {
	position: absolute; top: 8px; right: 6px; width: 9px; height: 9px;
	border-radius: 50%; background: #E74C3C;
	display: none; box-shadow: 0 0 0 3px rgba(231, 76, 60, .25);
	animation: consultPulse 1.6s infinite;
}
.consult-fab-dot.is-show { display: block; }
@keyframes consultPulse {
	0%, 100% { transform: scale(1); }
	50% { transform: scale(1.35); }
}

.consult-panel {
	position: fixed; left: 14px; top: 50%; z-index: 96;
	transform: translateY(-50%);
	width: min(340px, calc(100vw - 28px)); height: min(520px, calc(100vh - 40px));
	background: #fff; border-radius: 16px; overflow: hidden;
	display: flex; flex-direction: column;
	box-shadow: 0 24px 60px rgba(0, 0, 0, .3);
	opacity: 0; pointer-events: none; visibility: hidden;
	transition: transform .3s ease, opacity .3s ease;
}
.consult-panel.is-open {
	opacity: 1; pointer-events: auto; visibility: visible;
}
/* 关闭：淡出（拖动后的位置不跳变） */
.consult-panel.is-closing { opacity: 0; visibility: hidden; }
/* 拖动中：关闭过渡 */
.consult-panel.is-dragging { transition: none; }
/* 头部可拖动 */
.consult-head { cursor: grab; user-select: none; -webkit-user-select: none; }
.consult-head:active { cursor: grabbing; }

.consult-head {
	background: linear-gradient(120deg, var(--clr-pine), var(--clr-pine-2));
	color: #fff; padding: 14px 16px; display: flex; align-items: center; gap: 10px;
}
.consult-head-title { font-weight: 800; font-size: 15px; flex: 1; }
.consult-head-status { font-size: 12px; color: #B7E0C8; display: flex; align-items: center; gap: 5px; }
.consult-online-dot { width: 8px; height: 8px; border-radius: 50%; background: #58D68D; display: inline-block; animation: consultPulse 1.8s infinite; }
.consult-close {
	background: none; border: 0; color: rgba(255,255,255,.8); font-size: 22px;
	cursor: pointer; line-height: 1; padding: 0 2px;
}
.consult-close:hover { color: #fff; }

.consult-body {
	flex: 1; overflow-y: auto; padding: 14px; background: #F5F8F4;
	display: flex; flex-direction: column; gap: 10px;
}
.consult-msg {
	max-width: 84%; padding: 9px 13px; border-radius: 12px;
	font-size: 14px; line-height: 1.6; white-space: pre-wrap;
	word-break: normal; overflow-wrap: break-word;
}
.consult-msg.is-user {
	align-self: flex-end; background: var(--clr-pine); color: #fff;
	border-bottom-right-radius: 3px;
}
.consult-msg.is-agent {
	align-self: flex-start; background: #fff; color: var(--clr-ink);
	border: 1px solid var(--clr-line);
	border-bottom-left-radius: 3px;
}
.consult-msg .msg-time { display: block; font-size: 11px; opacity: .55; margin-top: 4px; }
/* AI 回复的简单富文本：加粗 */
.consult-msg strong { font-weight: 700; color: var(--clr-pine); }
.consult-sys {
	align-self: center; color: #a06b12; background: rgba(200, 144, 47, .10);
	border: 1px solid rgba(200, 144, 47, .25); border-radius: 999px;
	padding: 4px 14px; font-size: 12px;
}
.consult-welcome {
	align-self: flex-start; background: #fff; border: 1px solid var(--clr-line);
	border-radius: 12px; border-bottom-left-radius: 3px;
	padding: 10px 13px; font-size: 13.5px; color: #4a5a51; line-height: 1.7;
}

.consult-input-row {
	display: flex; gap: 8px; padding: 10px 12px; border-top: 1px solid var(--clr-line);
	background: #fff;
}
.consult-input {
	flex: 1; border: 1px solid var(--clr-line); border-radius: 10px;
	padding: 9px 12px; font-size: 14px; font-family: inherit;
	resize: none; max-height: 96px; line-height: 1.5;
}
.consult-input:focus { outline: none; border-color: var(--clr-leaf); }
.consult-send {
	border: 0; border-radius: 10px; padding: 0 18px; cursor: pointer;
	background: var(--clr-pine); color: #fff; font-weight: 700; font-size: 14px;
	transition: background .2s, transform .2s;
}
.consult-send:hover { background: var(--clr-leaf); transform: translateY(-1px); }
.consult-send:disabled { opacity: .5; cursor: wait; }

.consult-foot {
	padding: 7px 12px; font-size: 11.5px; color: #8b9b92;
	background: #F5F8F4; border-top: 1px solid var(--clr-line); text-align: center;
}

@media (max-width: 640px) {
	.consult-fab { top: auto; bottom: 84px; flex-direction: row; writing-mode: horizontal-tb; padding: 10px 14px; border-radius: 999px 0 0 999px; }
	.consult-fab span { display: none; }
	.consult-panel { left: 8px; top: auto; bottom: 8px; transform: none; width: calc(100vw - 16px); height: calc(100vh - 16px); }
	.consult-head { cursor: default; }
}
