/* ============================================
 * Modern yTree Stylesheet v2
 * 连接线: 纯 CSS 绘制，精确对齐
 * 图标: 蓝色系内联 SVG，零外部依赖
 * ============================================ */

/* ---------- 1. 自定义属性 ---------- */
:root {
	--yt-blue: #3b82f6;
	--yt-blue-400: #60a5fa;
	--yt-blue-300: #93c5fd;
	--yt-blue-200: #bfdbfe;
	--yt-blue-50: #eff6ff;
	--yt-text: #1e293b;
	--yt-text-muted: #64748b;
	--yt-line: #d4d9e1;
	--yt-hover: rgba(241, 245, 249, 0.8);
	--yt-selected-bg: #eff6ff;
	--yt-selected-bd: #93c5fd;
	--yt-red: #ef4444;
}

/* ---------- 2. 基础重置 ---------- */
.yTree * {
	padding: 0;
	margin: 0;
	font: 14px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI",
	"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
	"Helvetica Neue", Arial, sans-serif;
	box-sizing: border-box;
}
.yTree {
	margin: 0;
	padding: 8px;
	color: var(--yt-text);
	user-select: none;
	-webkit-user-select: none;
}

/* ---------- 3. 列表结构 ---------- */
.yTree li {
	padding: 0;
	margin: 0;
	list-style: none;
	line-height: 28px;
	text-align: left;
	white-space: nowrap;
	outline: 0 !important;
	position: relative;
}
.yTree li ul {
	margin: 0;
	padding: 0 0 0 40px;
}

/* ---------- 4. 连接线（纯 CSS，精确对齐）----------
 *
 * 关键尺寸：
 *   缩进 ul padding-left : 22px
 *   竖线位置             : 距 ul 左侧 10px
 *   竖线宽度             : 2px（占据 10~12px）
 *   横线                 : 从 li 左侧向左延伸 12px，到竖线左边缘
 *   行高                 : 28px，竖线底端对齐最后一个子节点行中心
 *
 * 竖线使用 repeating SVG 背景，每 28px 平铺一次，
 * 自动匹配行高，嵌套多层也不会错位。
 * ------------------------------------------------ */

.yTree li ul.line {
	position: relative;
	/* 竖线：SVG 平铺 */
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='28'%3E%3Crect x='0' y='0' width='2' height='28' fill='%23d4d9e1' rx='1'/%3E%3C/svg%3E");
	background-position: 29px 0;
	background-repeat: repeat-y;
}

/* 横线：每个直接子 li 前面画一条 */
.yTree li ul.line > li {
	position: relative;
}
.yTree li ul.line > li::before {
	content: "";
	position: absolute;
	left: -4px;       /* 原 -12px → -8px（40px - 32px = 8px） */
	top: 14px;        /* 行高 28px 的中心 */
	width: 4px;       /* 原 12px → 8px */
	height: 2px;
	background: var(--yt-line);
	border-radius: 1px;
	pointer-events: none;
}

/* ---------- 5. 节点链接 & 选中态 ---------- */
.yTree li a {
	padding: 0 6px;
	margin: 0;
	cursor: pointer;
	height: 28px;
	color: var(--yt-text);
	background-color: transparent;
	text-decoration: none;
	vertical-align: middle;
	display: inline-flex;
	align-items: center;
	border-radius: 6px;
	transition: background-color 0.15s ease;
}
.yTree li a:hover {
	background-color: var(--yt-hover);
	text-decoration: none;
}
.yTree li a.curSelectedNode {
	background-color: var(--yt-selected-bg);
	color: var(--yt-blue);
	font-weight: 500;
	box-shadow: inset 0 0 0 1.5px var(--yt-selected-bd);
}
.yTree li a.curSelectedNode_Edit {
	background-color: var(--yt-selected-bg);
	color: var(--yt-blue);
	box-shadow: inset 0 0 0 1.5px var(--yt-blue);
}
.yTree li a.tmpTargetNode_inner {
	background-color: var(--yt-blue-200);
	color: var(--yt-text);
	box-shadow: inset 0 0 0 1.5px var(--yt-blue);
	opacity: 0.85;
}

/* ---------- 通用 span ---------- */
.yTree li span {
	line-height: 28px;
	margin-right: 2px;
}
.yTree li span.button {
	line-height: 0;
	margin: 0;
	padding: 0;
	width: 22px;
	height: 22px;
	display: inline-block;
	vertical-align: middle;
	border: 0;
	cursor: pointer;
	outline: none;
	background-color: transparent;
	background-repeat: no-repeat;
	background-image: none;
	transition: opacity 0.15s ease;
}

/* ---------- 6. 展开/收起箭头（纯 CSS，无图片）---------- */
.yTree li span.button.switch {
	width: 20px;
	height: 20px;
	position: relative;
	background: none !important;
}
.yTree li span.button.switch::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 7px;
	height: 7px;
	border-right: 2px solid #94a3b8;
	border-bottom: 2px solid #94a3b8;
	transition: transform 0.2s ease, border-color 0.2s ease;
}
/* 收起 → 右箭头 */
.yTree li span.button.root_close::after,
.yTree li span.button.roots_close::after,
.yTree li span.button.center_close::after,
.yTree li span.button.bottom_close::after,
.yTree li span.button.noline_close::after {
	transform: translate(-65%, -50%) rotate(-45deg);
}
/* 展开 → 下箭头 */
.yTree li span.button.root_open::after,
.yTree li span.button.roots_open::after,
.yTree li span.button.center_open::after,
.yTree li span.button.bottom_open::after,
.yTree li span.button.noline_open::after {
	transform: translate(-50%, -65%) rotate(45deg);
}
/* 叶子节点 → 无箭头 */
.yTree li span.button.root_docu::after,
.yTree li span.button.roots_docu::after,
.yTree li span.button.center_docu::after,
.yTree li span.button.bottom_docu::after,
.yTree li span.button.noline_docu::after {
	display: none;
}
.yTree li span.button.switch:hover::after {
	border-color: var(--yt-blue);
}

/* ---------- 7. 节点图标（蓝色系 SVG）---------- */

/* 文件夹 - 关闭 */
.yTree li span.button.ico_close {
	margin-right: 4px;
	width: 22px;
	height: 22px;
	vertical-align: middle;
	background-size: 18px 18px !important;
	background-position: center !important;
	background-repeat: no-repeat !important;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 7c0-1.1.9-2 2-2h4l2 2h8c1.1 0 2 .9 2 2v8c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2V7z' fill='%2360A5FA' stroke='%233B82F6' stroke-width='1.2' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* 文件夹 - 打开 */
.yTree li span.button.ico_open {
	margin-right: 4px;
	width: 22px;
	height: 22px;
	vertical-align: middle;
	background-size: 18px 18px !important;
	background-position: center !important;
	background-repeat: no-repeat !important;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M2 6c0-1.1.9-2 2-2h5l2 2h9c1.1 0 2 .9 2 2v1H2V6z' fill='%233B82F6'/%3E%3Cpath d='M2 11h20l-2 9H4c-1.1 0-2-.9-2-2v-7z' fill='%2393C5FD' stroke='%233B82F6' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* 文件 / 文档 */
.yTree li span.button.ico_docu {
	margin-right: 4px;
	width: 22px;
	height: 22px;
	vertical-align: middle;
	background-size: 18px 18px !important;
	background-position: center !important;
	background-repeat: no-repeat !important;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6z' fill='%23E2E8F0' stroke='%2394A3B8' stroke-width='1.2'/%3E%3Cpath d='M14 2v6h6' fill='%23CBD5E1' stroke='%2394A3B8' stroke-width='1'/%3E%3Cline x1='8' y1='13' x2='16' y2='13' stroke='%2394A3B8' stroke-width='1.5' stroke-linecap='round'/%3E%3Cline x1='8' y1='17' x2='13' y2='17' stroke='%2394A3B8' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* ---------- 8. 复选框（蓝色 SVG）---------- */
.yTree li span.button.chk {
	width: 16px;
	height: 16px;
	margin: 0 4px;
	cursor: default;
}

/* 未选中 */
.yTree li span.button.chk.checkbox_false_full {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Crect x='1.5' y='1.5' width='13' height='13' rx='3' fill='white' stroke='%23D1D5DB' stroke-width='1.5'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.checkbox_false_full_focus {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Crect x='1.5' y='1.5' width='13' height='13' rx='3' fill='white' stroke='%239CA3AF' stroke-width='1.5'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.checkbox_false_part {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Crect x='1.5' y='1.5' width='13' height='13' rx='3' fill='%23DBEAFE' stroke='%2393C5FD' stroke-width='1.5'/%3E%3Cline x1='4.5' y1='8' x2='11.5' y2='8' stroke='%233B82F6' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.checkbox_false_part_focus {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Crect x='1.5' y='1.5' width='13' height='13' rx='3' fill='%23BFDBFE' stroke='%2360A5FA' stroke-width='1.5'/%3E%3Cline x1='4.5' y1='8' x2='11.5' y2='8' stroke='%232563EB' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.checkbox_false_disable {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Crect x='1.5' y='1.5' width='13' height='13' rx='3' fill='%23F9FAFB' stroke='%23E5E7EB' stroke-width='1.5'/%3E%3C/svg%3E");
	background-size: 16px;
	cursor: not-allowed;
	opacity: 0.6;
}

/* 已选中 */
.yTree li span.button.chk.checkbox_true_full {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Crect x='1.5' y='1.5' width='13' height='13' rx='3' fill='%233B82F6' stroke='%233B82F6' stroke-width='1.5'/%3E%3Cpath d='M4.5 8l2.5 2.5L11.5 5.5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.checkbox_true_full_focus {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Crect x='1.5' y='1.5' width='13' height='13' rx='3' fill='%232563EB' stroke='%232563EB' stroke-width='1.5'/%3E%3Cpath d='M4.5 8l2.5 2.5L11.5 5.5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.checkbox_true_part {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Crect x='1.5' y='1.5' width='13' height='13' rx='3' fill='%233B82F6' stroke='%233B82F6' stroke-width='1.5'/%3E%3Cline x1='4.5' y1='8' x2='11.5' y2='8' stroke='white' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.checkbox_true_part_focus {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Crect x='1.5' y='1.5' width='13' height='13' rx='3' fill='%232563EB' stroke='%232563EB' stroke-width='1.5'/%3E%3Cline x1='4.5' y1='8' x2='11.5' y2='8' stroke='white' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.checkbox_true_disable {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Crect x='1.5' y='1.5' width='13' height='13' rx='3' fill='%239CA3AF' stroke='%239CA3AF' stroke-width='1.5'/%3E%3Cpath d='M4.5 8l2.5 2.5L11.5 5.5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-size: 16px;
	cursor: not-allowed;
	opacity: 0.6;
}

/* ---------- 9. 单选按钮（蓝色 SVG）---------- */
.yTree li span.button.chk.radio_false_full {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='white' stroke='%23D1D5DB' stroke-width='1.5'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.radio_false_full_focus {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='white' stroke='%239CA3AF' stroke-width='1.5'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.radio_false_part {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='%23DBEAFE' stroke='%2393C5FD' stroke-width='1.5'/%3E%3Ccircle cx='8' cy='8' r='2.5' fill='%233B82F6'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.radio_false_part_focus {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='%23BFDBFE' stroke='%2360A5FA' stroke-width='1.5'/%3E%3Ccircle cx='8' cy='8' r='2.5' fill='%232563EB'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.radio_false_disable {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='%23F9FAFB' stroke='%23E5E7EB' stroke-width='1.5'/%3E%3C/svg%3E");
	background-size: 16px;
	cursor: not-allowed;
	opacity: 0.6;
}
.yTree li span.button.chk.radio_true_full {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='white' stroke='%233B82F6' stroke-width='1.5'/%3E%3Ccircle cx='8' cy='8' r='3' fill='%233B82F6'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.radio_true_full_focus {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='white' stroke='%232563EB' stroke-width='1.5'/%3E%3Ccircle cx='8' cy='8' r='3' fill='%232563EB'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.radio_true_part {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='white' stroke='%233B82F6' stroke-width='1.5'/%3E%3Ccircle cx='8' cy='8' r='2' fill='%233B82F6'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.radio_true_part_focus {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='white' stroke='%232563EB' stroke-width='1.5'/%3E%3Ccircle cx='8' cy='8' r='2' fill='%232563EB'/%3E%3C/svg%3E");
	background-size: 16px;
}
.yTree li span.button.chk.radio_true_disable {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='white' stroke='%239CA3AF' stroke-width='1.5'/%3E%3Ccircle cx='8' cy='8' r='3' fill='%239CA3AF'/%3E%3C/svg%3E");
	background-size: 16px;
	cursor: not-allowed;
	opacity: 0.6;
}

/* ---------- 10. 操作按钮（编辑 / 删除 / 添加）---------- */

/* 编辑 */
.yTree li span.button.edit {
	margin-left: 4px;
	width: 18px;
	height: 18px;
	vertical-align: middle;
	opacity: 0;
	transition: opacity 0.15s ease;
	background-size: 14px 14px;
	background-position: center;
	background-repeat: no-repeat;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7' stroke='%2394A3B8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M18.5 2.5a2.12 2.12 0 013 3L12 15l-4 1 1-4 9.5-9.5z' stroke='%2394A3B8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.yTree li:hover span.button.edit { opacity: 1; }
.yTree li span.button.edit:hover {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7' stroke='%233B82F6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M18.5 2.5a2.12 2.12 0 013 3L12 15l-4 1 1-4 9.5-9.5z' stroke='%233B82F6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* 删除 */
.yTree li span.button.remove {
	margin-left: 2px;
	width: 18px;
	height: 18px;
	vertical-align: middle;
	opacity: 0;
	transition: opacity 0.15s ease;
	background-size: 14px 14px;
	background-position: center;
	background-repeat: no-repeat;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpolyline points='3 6 5 6 21 6' stroke='%2394A3B8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2' stroke='%2394A3B8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.yTree li:hover span.button.remove { opacity: 1; }
.yTree li span.button.remove:hover {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpolyline points='3 6 5 6 21 6' stroke='%23EF4444' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2' stroke='%23EF4444' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* 添加 */
.yTree li span.button.add {
	margin-left: 2px;
	width: 18px;
	height: 18px;
	vertical-align: middle;
	opacity: 0;
	transition: opacity 0.15s ease;
	background-size: 14px 14px;
	background-position: center;
	background-repeat: no-repeat;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='10' stroke='%2394A3B8' stroke-width='2'/%3E%3Cline x1='12' y1='8' x2='12' y2='16' stroke='%2394A3B8' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='8' y1='12' x2='16' y2='12' stroke='%2394A3B8' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}
.yTree li:hover span.button.add { opacity: 1; }
.yTree li span.button.add:hover {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='10' stroke='%233B82F6' stroke-width='2'/%3E%3Cline x1='12' y1='8' x2='12' y2='16' stroke='%233B82F6' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='8' y1='12' x2='16' y2='12' stroke='%233B82F6' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* ---------- 11. 加载动画（CSS，无 GIF）---------- */
@keyframes yTree-spin {
	to { transform: rotate(360deg); }
}
.yTree li span.button.ico_loading {
	width: 18px;
	height: 18px;
	margin-right: 4px;
	border: 2px solid #e2e8f0;
	border-top-color: var(--yt-blue);
	border-radius: 50%;
	animation: yTree-spin 0.6s linear infinite;
	background: none !important;
	vertical-align: middle;
}

/* ---------- 12. 文本 & 重命名输入框 ---------- */
.node_name {
	margin: 0 0 0 2px;
	position: relative;
	display: inline-block;
	max-width: 280px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	vertical-align: middle;
	line-height: 28px;
}
.yTree li a input.rename {
	height: 24px;
	width: 160px;
	padding: 2px 8px;
	margin: 0;
	font: 13px/1.4 -apple-system, BlinkMacSystemFont, "Segoe UI",
	"PingFang SC", sans-serif;
	border: 1.5px solid var(--yt-blue);
	border-radius: 6px;
	outline: none;
	background: white;
	color: var(--yt-text);
	box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
	transition: box-shadow 0.15s ease;
}
.yTree li a input.rename:focus {
	box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.25);
}

/* ---------- 13. 拖拽 ---------- */
ul.tmpTargetyTree {
	background-color: var(--yt-blue-200);
	border-radius: 6px;
	opacity: 0.85;
}
span.tmpyTreeMove_arrow {
	width: 16px;
	height: 21px;
	display: inline-block;
	padding: 0;
	margin: 2px 0 0 1px;
	border: 0;
	position: absolute;
	background: transparent
	url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='21' fill='none'%3E%3Cpath d='M8 2v15M8 17l-3.5-3.5M8 17l3.5-3.5' stroke='%233B82F6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")
	center / 16px 21px no-repeat;
}
ul.yTree.yTreeDragUL {
	margin: 0;
	padding: 6px 12px;
	position: absolute;
	width: auto;
	height: auto;
	overflow: hidden;
	background: rgba(255, 255, 255, 0.96);
	border: 1.5px dashed var(--yt-blue);
	border-radius: 8px;
	opacity: 0.88;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
	backdrop-filter: blur(4px);
}
.yTreeMask {
	z-index: 10000;
	background: transparent;
	opacity: 0;
	position: absolute;
}

/* ① 叶子节点：折叠空白 switch，宽度归零 */
.yTree li span.button.root_docu,
.yTree li span.button.roots_docu,
.yTree li span.button.center_docu,
.yTree li span.button.bottom_docu,
.yTree li span.button.noline_docu {
	width: 0;
	margin: 0;
	padding: 0;
}
