/* ============================================================
   python-cartoon.css —— ydckcode 青少年 Python 代码编辑器（清新薄荷绿教育风）
   柔和浅灰绿底、大圆角卡片、圆润扁平卡通图标、轻微软阴影、低饱和薄荷绿橙点缀、毛玻璃透明效果。
   仅本页编辑器 UI；代码编辑区保持清晰可读；不修改任何业务逻辑。
   颜色：主薄荷绿 #1FB892 / 活力橙 #FF9F43 / 清新浅灰绿 #F0F7F4 / 半透明白 #FFFFFF
   ============================================================ */
:root{
  --pyc-cream:#F0F7F4;
  --pyc-card:rgba(255,255,255,.85);
  --pyc-blue:#1FB892;
  --pyc-blue-soft:#E6F9F3;
  --pyc-orange:#FF9F43;
  --pyc-orange-soft:#FFF4E6;
  --pyc-green:#2DD4A8;
  --pyc-red:#F5222D;
  --pyc-text:#2D3A3A;
  --pyc-text-2:#4A5C5C;
  --pyc-line:#E0EDE8;
  --pyc-shadow:0 6px 20px rgba(45,212,168,.08);
  --pyc-radius:20px;
  --pyc-radius-sm:14px;
  --pyc-font:"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  --pyc-glass:blur(12px);
}

/* 页面底色：清新浅灰绿渐变（覆盖玻璃主题渐变，仅本编辑器页；提高特异性压过 glass-theme） */
html body.bodybg, html body{
  background:linear-gradient(135deg,#F0F7F4 0%,#E8F5F0 50%,#F0F7F4 100%) !important;
  font-family:var(--pyc-font);
  margin:0;
  padding:0;
  height:100vh;
  width:100vw;
  overflow:hidden;
  display:flex;
  flex-direction:column;
}

/* ===== 卡通编辑器菜单栏 ===== */
.py-menu{
  flex:none;
  margin:0;
  background:linear-gradient(135deg,#2DD4A8 0%,#1FB892 100%);
  border:none;
  border-radius:0;
  box-shadow:0 4px 16px rgba(31,184,146,.25);
  padding:14px 24px;
  display:flex;
  align-items:center;
  gap:10px;
  min-height:64px;
}
.py-menu-left{ display:flex; align-items:center; gap:6px; }
.py-menu-center{ flex:1; display:flex; justify-content:center; min-width:0; }
.py-menu-right{ display:flex; align-items:center; gap:8px; }

/* 卡通圆润图标按钮 */
.py-icon-btn{
  width:44px; height:44px;
  border:1px solid rgba(255,255,255,.25); border-radius:14px;
  background:rgba(255,255,255,.15);
  color:#fff;
  cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.py-icon-btn:hover{ transform:translateY(-2px); box-shadow:0 6px 14px rgba(0,0,0,.15); background:rgba(255,255,255,.25); }
.py-icon-btn:active{ transform:scale(.94); }
.py-icon-btn svg{ width:24px; height:24px; }

/* 下拉（文件夹） */
.py-dd-wrap{ position:relative; }
.py-dd{
  display:none;
  position:absolute; top:calc(100% + 8px); left:0;
  min-width:190px;
  background:#fff; border:1px solid var(--pyc-line);
  border-radius:var(--pyc-radius-sm);
  box-shadow:0 12px 30px rgba(122,84,32,.14);
  padding:8px; z-index:999;
}
.py-dd-wrap.open .py-dd{ display:block; }
.py-dd a{
  display:flex; align-items:center; gap:10px;
  padding:9px 12px; border-radius:10px;
  color:var(--pyc-text); font-size:14px; text-decoration:none;
  transition:background .15s ease, color .15s ease;
}
.py-dd a:hover{ background:var(--pyc-orange-soft); color:var(--pyc-orange); }

/* 作品名称输入 */
.py-proj-name{
  width:320px; max-width:60vw;
  border:2px solid rgba(255,255,255,.3); border-radius:999px;
  padding:10px 20px; font-size:15px; font-weight:600; color:#fff;
  background:rgba(255,255,255,.15); outline:none; text-align:center;
  transition:border-color .2s ease, box-shadow .2s ease, background .2s ease;
}
.py-proj-name::placeholder{ color:rgba(255,255,255,.6); }
.py-proj-name:focus{ border-color:rgba(255,255,255,.6); box-shadow:0 0 0 4px rgba(255,255,255,.15); background:rgba(255,255,255,.2); }

/* 积木/代码模式切换胶囊按钮 - 柔和3D凹凸效果 */
.py-mode-switch{
  display:inline-flex; align-items:center;
  background:rgba(0,0,0,.06);
  border:1px solid rgba(255,255,255,.12);
  border-radius:999px;
  padding:4px;
  gap:2px;
  box-shadow:inset 0 1px 3px rgba(0,0,0,.08);
}
.py-mode-btn{
  border:none; background:transparent; color:rgba(255,255,255,.7);
  padding:7px 20px; font-size:14px; font-weight:600; cursor:pointer;
  border-radius:999px; transition:all .25s ease;
  display:inline-flex; align-items:center; gap:6px;
}
.py-mode-btn:hover{ color:#fff; }
.py-mode-btn.active{
  background:linear-gradient(180deg,#35DDB5 0%,#1FB892 100%);
  color:#fff;
  box-shadow:0 2px 6px rgba(0,0,0,.15), 0 1px 1px rgba(255,255,255,.25) inset;
  transform:translateY(-1px);
}

/* 菜单按钮（保存/分享） */
.py-btn{
  display:inline-flex; align-items:center; gap:6px;
  border:none; border-radius:999px;
  padding:10px 20px; font-size:14px; font-weight:700; color:#fff; cursor:pointer;
  box-shadow:0 4px 12px rgba(0,0,0,.15);
  transition:transform .18s ease, box-shadow .18s ease, filter .18s ease;
}
.py-btn:hover{ transform:translateY(-2px); filter:brightness(1.05); box-shadow:0 6px 16px rgba(0,0,0,.2); }
.py-btn:active{ transform:scale(.95); }
.py-btn svg{ width:18px; height:18px; }
.py-btn-save{ background:#fff; color:#1FB892; box-shadow:0 4px 12px rgba(0,0,0,.12); }
.py-btn-save:hover{ background:#f0faf7; }
.py-btn-share{ background:linear-gradient(135deg,#FF9F43,#FF8C2A); box-shadow:0 4px 12px rgba(255,159,67,.3); }

/* 登录 / 卡通头像 */
.py-avatar{
  display:inline-flex; align-items:center; gap:6px;
  text-decoration:none;
  background:rgba(255,255,255,.15); color:#fff;
  border:1px solid rgba(255,255,255,.25);
  border-radius:999px; padding:8px 16px; font-size:14px; font-weight:700;
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.py-avatar:hover{ transform:translateY(-2px); box-shadow:0 6px 14px rgba(0,0,0,.15); background:rgba(255,255,255,.25); }
.py-avatar svg{ width:22px; height:22px; border-radius:50%; }
.py-avatar .py-avatar-img{ width:26px; height:26px; border-radius:50%; object-fit:cover; }
.py-avatar .py-avatar-name{ max-width:120px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.py-hidden{ display:none !important; }

/* ===== 工作区：左侧文件管理器 + 右侧编辑/控制台 ===== */
.py-workspace{
  flex:1 1 auto;
  min-height:0;
  display:flex;
  gap:14px;
  padding:0 14px 14px;
  width:100%;
  box-sizing:border-box;
  overflow:hidden;
}

/* 文件管理器 - 紧贴左边和底部，V3风格 */
.py-files{
  flex:0 0 260px;
  margin-left:-24px;
  margin-bottom:-18px;
  background:rgba(255,255,255,.85);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(224,237,232,.6);
  border-left:none;
  border-bottom:none;
  border-radius:0 16px 0 0;
  box-shadow:4px 0 16px rgba(31,184,146,.08);
  display:flex; flex-direction:column;
  overflow:hidden; min-height:0;
}
.py-files-head{
  padding:14px 16px;
  font-size:15px; font-weight:800; color:#2D3A3A;
  background:linear-gradient(135deg,rgba(45,212,168,.12) 0%,rgba(31,184,146,.08) 100%);
  border-bottom:1px solid rgba(224,237,232,.5);
  display:flex; align-items:center; gap:8px;
}
.py-files-head svg{ width:20px; height:20px; }
/* 文件管理工具：四个卡通图标横向一排，只显示图标，文字用 hover tooltip */
.py-files-tools{
  display:flex; flex-direction:row; gap:8px;
  padding:10px 12px;
}
.py-files-tools button{
  flex:1 1 0; min-width:0;
  border:none; border-radius:14px;
  background:var(--pyc-blue-soft); color:var(--pyc-blue);
  height:48px; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:transform .15s ease, background .15s ease, box-shadow .15s ease;
}
.py-files-tools button:hover{ transform:translateY(-2px); background:#D4F5EB; box-shadow:0 5px 12px rgba(31,184,146,.16); }
.py-files-tools button:active{ transform:scale(.92); }
.py-files-tools button svg{ width:24px; height:24px; }
/* 卡通 tooltip（hover 显示按钮说明，平时不显示） */
.py-files-tools button::after{
  content:attr(data-tip);
  position:absolute; left:50%; top:calc(100% + 8px); transform:translateX(-50%) translateY(2px);
  background:#3A4150; color:#fff; font-size:12px; font-weight:600;
  padding:5px 10px; border-radius:8px; white-space:nowrap;
  opacity:0; pointer-events:none; transition:opacity .18s ease, transform .18s ease;
  z-index:20; box-shadow:0 6px 16px rgba(0,0,0,.18);
}
.py-files-tools button{ position:relative; }
.py-files-tools button:hover::after{ opacity:1; transform:translateX(-50%) translateY(0); }
.py-files-tree{
  flex:1; overflow-y:auto; padding:4px 8px 14px;
  font-size:13px;
}
.py-file-item{
  display:flex; align-items:center; gap:8px;
  padding:7px 10px; border-radius:10px; cursor:pointer;
  color:var(--pyc-text-2);
  transition:background .15s ease, color .15s ease;
}
.py-file-item:hover{ background:#F0FAF6; color:var(--pyc-text); }
.py-file-item.active{ background:var(--pyc-blue-soft); color:var(--pyc-blue); font-weight:700; }
.py-file-item svg{ width:18px; height:18px; flex:0 0 auto; }
.py-file-rename-input{ flex:1; min-width:0; font-size:13px; padding:2px 6px; border:1px solid var(--pyc-blue); border-radius:6px; outline:none; background:#fff; color:var(--pyc-text); }
.py-file-folder{ font-weight:700; color:var(--pyc-text); }
/* 文件拖拽交互：py / 素材文件可拖入文件夹，文件夹高亮提示 */
.py-file-item[draggable="true"]{ cursor:grab; }
.py-file-item[draggable="true"]:active{ cursor:grabbing; }
.py-file-item.py-dragging{ opacity:.45; }
.py-file-item.py-drop-target{
  background:linear-gradient(135deg,#DCEBFE,#E6F6FF);
  color:var(--pyc-blue);
  box-shadow:inset 0 0 0 2px var(--pyc-blue);
}
.py-files-empty{ padding:18px 12px; text-align:center; color:#B9A98C; font-size:13px; }

/* 右侧主列 */
.py-main-col{
  flex:1; min-width:0;
  display:flex; flex-direction:column; gap:0; min-height:0;
  overflow:hidden;   /* 防止列内溢出 */
}

/* 代码编辑卡片 - 占满整个高度 */
.editor-card{
  flex:1 1 auto;
  min-height:0;
  min-width:0;
  background:rgba(255,255,255,.85);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(224,237,232,.6);
  border-radius:16px;
  box-shadow:0 4px 16px rgba(45,212,168,.08);
  display:flex;
  flex-direction:column;
  overflow:hidden;
  width:100%;
  box-sizing:border-box;
}
.editor-card .card-head{
  background:rgba(255,255,255,.7);
  border-bottom:1px solid var(--pyc-line);
  color:var(--pyc-text); font-weight:800;
}
.editor-card .card-head .dot{ background:var(--pyc-orange); }

/* 编辑器主体：完全占满卡片高度 */
.editor-body{
  flex:1 1 auto;
  min-height:0;
  display:flex;
  width:100%;
  overflow:hidden;
}

/* 行号区域 */
.line-nums{
  flex:0 0 auto;
  min-width:0;
  overflow:hidden;
}

/* 代码包裹：完全占满剩余宽度和高度 */
.code-wrap{
  flex:1 1 auto;
  min-width:0;
  min-height:0;
  position:relative;
  overflow:hidden;
}

/* 代码编辑区和高亮层：完全占满 */
#code, .highlight{
  width:100%;
  height:100%;
  box-sizing:border-box;
}

/* ===== 编辑区布局加固：隔离插件容器 / 防样式互相污染，保证标题完整、行号与代码对齐、代码不被裁切 ===== */
#arkPluginWrap{ margin:0 !important; }   /* 插件容器（海龟/贪吃蛇面板）不再挤占编辑器列高 */
.editor-card{ min-height:180px; }       /* 编辑器最小高度，防止代码区被压到不可见 */
.editor-card .card-head{ flex:0 0 auto; min-width:0; white-space:nowrap; overflow:visible; }  /* 标题完整显示不残缺 */
.editor-card .card-head .dot{ flex:0 0 auto; }
.line-nums, #code, .highlight{ box-sizing:border-box; }  /* 内边距计入盒模型，行号/代码严格对齐 */
.line-nums{ line-height:1.6; }
#code, .highlight{ line-height:1.6; padding:12px 16px; }

/* ===== 底部悬浮工具栏（专业设计） ===== */
.editor-bottom-toolbar{
  position:fixed;
  right:100px;
  bottom:24px;
  z-index:120;
  display:flex;
  gap:12px;
  align-items:center;
}
.capsule-group{
  display:flex;
  align-items:center;
  background:#f1f3f4;
  border-radius:999px;
  overflow:hidden;
  box-shadow:0 2px 8px rgba(0,0,0,.06);
}
.capsule-divider{
  width:1px;
  height:22px;
  background:#d9dce0;
}
.capsule-btn{
  padding:10px 14px;
  background:transparent;
  border:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#333;
  transition:background .15s ease;
}
.capsule-btn svg{
  width:20px;
  height:20px;
  stroke:currentColor;
}
.capsule-btn:hover{
  background:#e8eaed;
}
.capsule-btn:active{
  background:#dadce0;
}
.capsule-btn:disabled{
  opacity:.4;
  cursor:not-allowed;
}
.text-static{
  padding:0 12px;
  font-size:14px;
  color:#555;
  font-weight:500;
  min-width:48px;
  text-align:center;
  pointer-events:none;
  user-select:none;
}
.btn-outline{
  border:1px solid #22b89c;
  color:#22b89c;
  background:#fff;
  border-radius:999px;
  padding:10px 16px;
  display:flex;
  align-items:center;
  gap:6px;
  cursor:pointer;
  font-size:14px;
  font-weight:500;
  box-shadow:0 2px 8px rgba(34,184,156,.08);
  transition:all .15s ease;
}
.btn-outline:hover{
  background:#f0faf7;
  box-shadow:0 4px 12px rgba(34,184,156,.12);
}
.btn-outline:active{
  transform:scale(.97);
}
.btn-solid{
  background:#22b89c;
  color:#ffffff;
  border:none;
  border-radius:999px;
  padding:10px 16px;
  display:flex;
  align-items:center;
  gap:6px;
  cursor:pointer;
  font-size:14px;
  font-weight:500;
  box-shadow:0 2px 8px rgba(34,184,156,.25);
  transition:all .15s ease;
}
.btn-solid:hover{
  background:#1ca88e;
  box-shadow:0 4px 12px rgba(34,184,156,.35);
}
.btn-solid:active{
  transform:scale(.97);
}
.btn-solid:disabled{
  opacity:.5;
  cursor:not-allowed;
}

/* 右边垂直工具栏 */
.editor-right-toolbar{
  position:fixed;
  right:24px;
  bottom:24px;
  z-index:120;
  display:flex;
  flex-direction:column;
  gap:8px;
  align-items:center;
}
.v-btn{
  width:40px;
  height:40px;
  border-radius:12px;
  background:#f1f3f4;
  border:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:18px;
  color:#555;
  box-shadow:0 2px 8px rgba(0,0,0,.06);
  transition:all .15s ease;
}
.v-btn:hover{
  background:#e8eaed;
  transform:translateY(-1px);
  box-shadow:0 4px 12px rgba(0,0,0,.1);
}
.v-btn:active{
  transform:scale(.95);
}
.v-btn-ai{
  color:#7C3AED;
}
.v-btn-ai:hover{
  background:#F5F3FF;
}
.v-btn-console{
  color:#22b89c;
}
.v-btn-console.active{
  background:#22b89c;
  color:#fff;
}
.v-btn-snake{
  color:#059669;
}
.v-btn-snake.active{
  background:#059669;
  color:#fff;
}
.v-btn-plot{
  color:#4F46E5;
}
.v-btn-plot.active{
  background:#4F46E5;
  color:#fff;
}

/* 响应式 */
@media (max-width:1180px){
  .editor-bottom-toolbar{ right:80px; gap:10px; }
}
@media (max-width:900px){
  .editor-bottom-toolbar{ right:76px; bottom:16px; gap:8px; }
  .btn-solid, .btn-outline{ padding:10px 12px; }
  .text-static{ min-width:40px; padding:0 8px; }
}

/* 面板默认隐藏 */
#arkPluginWrap{
  display:none !important;
}
#arkPluginWrap.show{
  display:flex !important;
}
[id^="arkCanvasCard_"],[id^="arkSvgPanel_"]{
  display:none !important;
}
[id^="arkCanvasCard_"].show,[id^="arkSvgPanel_"].show{
  display:block !important;
}
.py-eb-btn{
  border:none; border-radius:12px;
  background:rgba(45,212,168,.1); color:#1FB892;
  width:38px; height:38px; cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  transition:transform .16s ease, box-shadow .16s ease, background .16s ease;
}
.py-eb-btn:hover{ transform:translateY(-1px); background:rgba(45,212,168,.18); box-shadow:0 4px 10px rgba(31,184,146,.15); }
.py-eb-btn svg{ width:20px; height:20px; }
.py-eb-run{
  background:linear-gradient(135deg,#2DD4A8,#1FB892); color:#fff;
  width:auto; padding:0 20px; font-size:14px; font-weight:800;
  border-radius:999px; gap:6px; display:inline-flex; align-items:center;
  box-shadow:0 2px 8px rgba(31,184,146,.3);
}
.py-eb-run:hover{ background:linear-gradient(135deg,#35DDB5,#25C49E); box-shadow:0 4px 12px rgba(31,184,146,.4); }
.py-eb-font{ background:rgba(255,159,67,.1); color:#FF8C2A; width:auto; padding:0 12px; font-size:13px; font-weight:700; }
.py-eb-font:hover{ background:rgba(255,159,67,.18); }
.py-font-badge{ min-width:36px; text-align:center; padding:4px 8px; font-size:12px; font-weight:800; background:rgba(255,159,67,.12); color:#FF8C2A; border-radius:999px; }
.py-eb-console{
  background:rgba(124,58,237,.1); color:#7c3aed;
}
.py-eb-console:hover{ background:rgba(124,58,237,.18); box-shadow:0 4px 10px rgba(124,58,237,.15); }
.py-eb-console.active{
  background:linear-gradient(135deg,#8B5CF6,#7c3aed); color:#fff;
  box-shadow:0 2px 8px rgba(124,58,237,.3);
}
.py-eb-run svg{ width:20px; height:20px; }
.py-eb-font{
  background:#fff; color:var(--pyc-text-2);
  border:1px solid var(--pyc-line);
  font-weight:800; width:auto; padding:0 12px; border-radius:999px;
}

/* 控制台 */
.console-card{
  flex:0 0 320px; height:320px; max-height:320px; min-height:0;
  background:var(--pyc-card);
  backdrop-filter:var(--pyc-glass);
  -webkit-backdrop-filter:var(--pyc-glass);
  border:1px solid rgba(224,237,232,.6);
  border-left:none;
  border-right:none;
  border-radius:0;
  box-shadow:0 -4px 16px rgba(0,0,0,.08);
  display:flex; flex-direction:column; overflow:hidden;
  position:relative; z-index:1;
  width:100%;
  margin:0;
  box-sizing:border-box;
}
.console-card .card-head{ background:rgba(255,255,255,.7); border-bottom:1px solid var(--pyc-line); color:var(--pyc-text); }
.console-card .card-head .dot{ background:var(--pyc-blue); }
.console{ min-height:0; height:100%; background:rgba(255,255,255,.7); color:var(--pyc-text); }
.console .prompt{ color:#8FA5A5; }
.console .out{ color:var(--pyc-text); }
.console .err{ color:var(--pyc-red); }

/* ===== 库清单 / 设置 弹窗（全局居中正方形） ===== */
.py-mask{
  position:fixed; inset:0;
  background:rgba(255,247,232,.6);
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  z-index:2000;
  display:none;
  align-items:center; justify-content:center;
}
.py-mask.open{ display:flex; }
.py-modal{
  width:640px; max-width:92vw;
  background:var(--pyc-card);
  border:1px solid var(--pyc-line);
  border-radius:24px;
  box-shadow:0 20px 60px rgba(122,84,32,.22);
  padding:18px 20px 20px;
  max-height:82vh; overflow-y:auto;
}
.py-modal-head{
  display:flex; align-items:center; gap:8px;
  padding-bottom:12px; margin-bottom:14px;
  border-bottom:1px solid var(--pyc-line);
}
.py-modal-title{ font-size:18px; font-weight:800; color:var(--pyc-text); flex:1; display:flex; align-items:center; gap:8px; }
.py-modal-title svg{ width:22px; height:22px; }
.py-close{
  width:34px; height:34px; border:none; border-radius:50%;
  background:var(--pyc-orange-soft); color:var(--pyc-orange);
  cursor:pointer; font-size:16px; font-weight:800;
  display:inline-flex; align-items:center; justify-content:center;
  transition:transform .16s ease, background .16s ease;
}
.py-close:hover{ transform:rotate(90deg); background:#D4F5EB; }

/* 插件卡片网格（库清单） */
.py-lib-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
.py-lib-card{
  display:flex; align-items:center; gap:12px;
  background:rgba(255,255,255,.7); border:1px solid var(--pyc-line);
  border-radius:16px; padding:12px;
  transition:transform .18s ease, box-shadow .18s ease;
}
.py-lib-card:hover{ transform:translateY(-2px); box-shadow:0 8px 18px rgba(31,184,146,.12); }
.py-lib-ico{
  width:46px; height:46px; border-radius:14px; flex:0 0 auto;
  display:flex; align-items:center; justify-content:center;
}
.py-lib-ico svg{ width:28px; height:28px; }
.py-lib-info{ flex:1; min-width:0; }
.py-lib-name{ font-size:14px; font-weight:800; color:var(--pyc-text); }
.py-lib-desc{ font-size:12px; color:var(--pyc-text-2); margin-top:2px; line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; }
.py-lib-switch{ flex:0 0 auto; }
/* 卡通开关 */
.py-switch{ position:relative; width:46px; height:26px; border-radius:999px; border:none; cursor:pointer;
  background:#E6DFD0; transition:background .2s ease; }
.py-switch::after{ content:''; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%;
  background:#fff; box-shadow:0 2px 4px rgba(0,0,0,.18); transition:left .2s ease; }
.py-switch.on{ background:var(--pyc-blue); }
.py-switch.on::after{ left:23px; }
.py-lib-soon{ font-size:11px; color:#C4B69A; font-weight:700; white-space:nowrap; }

/* 设置面板 */
.py-settings-row{ display:flex; align-items:center; justify-content:space-between; padding:12px 4px; border-bottom:1px solid var(--pyc-line); }
.py-settings-row:last-child{ border-bottom:none; }
.py-settings-label{ font-size:14px; font-weight:700; color:var(--pyc-text); }
.py-settings-desc{ font-size:12px; color:var(--pyc-text-2); margin-top:2px; }

/* ===== 海龟绘图预览悬浮窗（右侧浮层：更大尺寸 + 可滚动舞台 + 全屏） ===== */
#arkSvgPanel_turtle{
  position:fixed !important;
  top:60px; right:20px;
  width:720px !important; max-width:94vw;
  height:640px !important; max-height:86vh;
  z-index:1500;
  background:var(--pyc-card) !important;
  border:1px solid var(--pyc-line) !important;
  border-radius:20px !important;
  box-shadow:0 16px 48px rgba(122,84,32,.22) !important;
  padding:0 !important;
  display:flex; flex-direction:column !important;
  overflow:hidden !important;
}
#arkSvgPanel_turtle .py-turtle-head{
  flex:none; display:flex; align-items:center; gap:8px;
  padding:10px 14px;
  border-bottom:1px solid var(--pyc-line);
  background:rgba(255,255,255,.7);
  border-radius:20px 20px 0 0;
}
body.pyc-dark #arkSvgPanel_turtle .py-turtle-head{ background:#2B3145 !important; color:#E6E9F2 !important; border-color:#3A4158 !important; }
#arkSvgPanel_turtle .py-turtle-title{ flex:1; font-size:15px; font-weight:800; color:var(--pyc-text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#arkSvgPanel_turtle .py-turtle-btn{
  border:none; border-radius:10px; cursor:pointer;
  background:var(--pyc-blue-soft); color:var(--pyc-blue);
  padding:6px 12px; font-size:13px; font-weight:700;
  pointer-events:auto;
  transition:background .15s ease;
}
#arkSvgPanel_turtle .py-turtle-btn:hover{ background:#D4F5EB; }
#arkSvgPanel_turtle .py-turtle-btn.py-turtle-close{ background:var(--pyc-orange-soft); color:var(--pyc-orange); }
#arkSvgPanel_turtle .py-turtle-btn.py-turtle-close:hover{ background:#FFE8D0; }
#arkSvgStage_turtle{
  flex:1; min-height:0 !important;
  overflow:auto !important;
  margin:12px !important;
  background:rgba(255,255,255,.7) !important;
  border:1px solid var(--pyc-line) !important;
  border-radius:14px !important;
  line-height:0 !important;
  display:flex;
}
/* SVG 自适应容器大小：保持宽高比缩放，完整显示在窗口内 */
#arkSvgStage_turtle > svg{
  max-width:100% !important;
  max-height:100% !important;
  width:auto !important;
  height:auto !important;
  object-fit:contain;
}
#arkSvgStage_turtle::-webkit-scrollbar{ width:10px; height:10px; }
#arkSvgStage_turtle::-webkit-scrollbar-thumb{ background:#d4d8e0; border-radius:5px; }
/* 全屏模式：占满浏览器可视区域，画布居中 */
#arkSvgPanel_turtle.py-turtle-fullscreen{
  top:0 !important; right:0 !important; left:0 !important; bottom:0 !important;
  width:100vw !important; max-width:100vw !important;
  height:100vh !important; max-height:100vh !important;
  border-radius:0 !important;
}
#arkSvgPanel_turtle.py-turtle-fullscreen .py-turtle-head{ border-radius:0 !important; }
#arkSvgPanel_turtle.py-turtle-fullscreen #arkSvgStage_turtle{ margin:16px !important; }
/* 海龟绘图预览打开时：右侧垂直悬浮栏让位（预览窗覆盖该区域）；
   底部悬浮工具条不受影响（预览窗高度已在 JS 中自动避让，保证“运行”可点） */
body.py-turtle-open .editor-right-toolbar{ display:none !important; }
/* 隐藏旧插件市场内嵌面板（库清单改为独立弹窗） */
#arkPluginPanel{ display:none !important; }

/* ===== 黑夜模式（设置面板切换） ===== */
body.pyc-dark{
  background:#23283A !important;
}
body.pyc-dark .py-menu, body.pyc-dark .py-files, body.pyc-dark .editor-card,
body.pyc-dark .console-card, body.pyc-dark .py-modal, body.pyc-dark #arkSvgPanel_turtle{
  background:#2B3145 !important; border-color:#3A4158 !important;
  box-shadow:0 6px 20px rgba(0,0,0,.35) !important;
}
body.pyc-dark .py-proj-name, body.pyc-dark .py-file-item:hover,
body.pyc-dark .py-eb-font{ background:#23283A !important; color:#E6E9F2 !important; border-color:#3A4158 !important; }
body.pyc-dark .card-head, body.pyc-dark .py-editor-bar, body.pyc-dark .console,
body.pyc-dark .py-files-head{ background:#2B3145 !important; color:#E6E9F2 !important; border-color:#3A4158 !important; }
body.pyc-dark #code{ color:#E6E9F2 !important; caret-color:#E6E9F2 !important; -webkit-text-fill-color:#E6E9F2 !important; }
body.pyc-dark .highlight{ color:#E6E9F2 !important; }
body.pyc-dark .line-nums{ background:#23283A !important; color:#6B7286 !important; }
body.pyc-dark .py-lib-card, body.pyc-dark #arkSvgStage_turtle{ background:#23283A !important; border-color:#3A4158 !important; }
body.pyc-dark .console .out{ color:#E6E9F2 !important; }

/* 滚动条 */
.console::-webkit-scrollbar, #code::-webkit-scrollbar, .py-files-tree::-webkit-scrollbar{ width:10px; height:10px; }
.console::-webkit-scrollbar-thumb, #code::-webkit-scrollbar-thumb, .py-files-tree::-webkit-scrollbar-thumb{ background:#C8D8D2; border-radius:6px; }
.console::-webkit-scrollbar-thumb:hover, #code::-webkit-scrollbar-thumb:hover, .py-files-tree::-webkit-scrollbar-thumb:hover{ background:#1FB892; }

/* 移动端：文件管理器折叠到顶部 */
@media (max-width:900px){
  .py-workspace{ flex-direction:column; }
  .py-files{ flex:0 0 auto; max-height:220px; }
  .py-menu{ flex-wrap:wrap; }
  .py-menu-center{ order:3; flex-basis:100%; justify-content:stretch; }
  .py-proj-name{ width:100%; max-width:100%; }
}

/* ===== 素材库弹窗 ===== */
.py-asset-toolbar{ display:flex; gap:8px; margin-bottom:12px; flex-wrap:wrap; }
.py-asset-add, .py-asset-upload{
  border:none; border-radius:999px; padding:9px 16px; font-size:13px; font-weight:700; cursor:pointer;
  display:inline-flex; align-items:center; gap:6px;
  transition:transform .16s ease, box-shadow .16s ease;
}
.py-asset-add{ background:var(--pyc-orange-soft); color:var(--pyc-orange); }
.py-asset-add:hover{ transform:translateY(-1px); box-shadow:0 5px 12px rgba(255,149,56,.2); }
.py-asset-upload{ background:var(--pyc-blue); color:#fff; }
.py-asset-upload:hover{ transform:translateY(-1px); box-shadow:0 5px 12px rgba(31,184,146,.2); }
.py-asset-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; max-height:46vh; overflow-y:auto; }
.py-asset-card{
  display:flex; align-items:center; gap:10px;
  background:rgba(255,255,255,.7); border:1px solid var(--pyc-line); border-radius:14px; padding:10px;
  cursor:pointer; position:relative;
  transition:transform .16s ease, box-shadow .16s ease;
}
.py-asset-card:hover{ transform:translateY(-2px); box-shadow:0 8px 16px rgba(31,184,146,.12); }
.py-asset-ico{
  width:40px; height:40px; border-radius:12px; flex:0 0 auto;
  background:var(--pyc-blue-soft); color:var(--pyc-blue);
  display:flex; align-items:center; justify-content:center;
}
.py-asset-ico svg{ width:24px; height:24px; }
.py-asset-name{ font-size:12px; font-weight:700; color:var(--pyc-text); word-break:break-all; line-height:1.4; }
.py-asset-size{ font-size:11px; color:var(--pyc-text-2); }
.py-asset-temp{
  position:absolute; top:-6px; right:-6px;
  background:var(--pyc-orange); color:#fff; font-size:10px; font-weight:700;
  padding:2px 7px; border-radius:999px; box-shadow:0 0 0 2px #fff;
}
.py-asset-empty{ grid-column:1/-1; text-align:center; color:#8FA5A5; font-size:13px; padding:24px 0; }
.py-asset-tip{ margin-top:12px; font-size:12px; color:var(--pyc-text-2); background:rgba(255,255,255,.7); border:1px dashed var(--pyc-line); border-radius:12px; padding:8px 12px; line-height:1.6; }

.py-font-badge{
  min-width:40px; text-align:center;
  background:var(--pyc-orange-soft); color:var(--pyc-orange);
  border-radius:999px; padding:6px 10px; font-size:12px; font-weight:800;
}

/* 海龟绘图预览窗：面板不拦截下层，但头部按钮与绘图舞台可交互（滚动/全屏/关闭） */
#arkSvgPanel_turtle{ pointer-events:none; }
#arkSvgPanel_turtle .py-turtle-btn,
#arkSvgPanel_turtle #arkSvgStage_turtle{ pointer-events:auto; }

/* ===== 多文件 Tab 标签栏（已移入 .editor-card 内部，与标题栏融为一体） ===== */
.py-tab-bar{
  display:flex; align-items:flex-end; gap:6px;
  padding:8px 14px 0; overflow-x:auto; flex:none;
  min-height:40px;
  background:transparent;
}
.py-tab-bar::-webkit-scrollbar{ height:4px; }
.py-tab-bar::-webkit-scrollbar-thumb{ background:#C8D8D2; border-radius:3px; }
.py-tab{
  display:inline-flex; align-items:center; gap:6px;
  padding:7px 14px; border-radius:10px 10px 0 0;
  background:rgba(255,255,255,.5); border:1px solid rgba(224,237,232,.5); border-bottom:none;
  cursor:pointer; font-size:13px; font-weight:700; color:var(--pyc-text-2);
  max-width:190px; flex:0 0 auto; user-select:none;
  transition:background .15s ease, color .15s ease;
}
.py-tab:hover{ background:rgba(255,255,255,.75); color:var(--pyc-text); }
.py-tab.active{ background:rgba(255,255,255,.9); color:var(--pyc-blue); box-shadow:inset 0 -3px 0 var(--pyc-blue); }
.py-tab-label{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.py-tab-close{
  width:16px; height:16px; border-radius:50%; flex:0 0 auto;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:10px; color:#C4B69A; cursor:pointer;
  transition:background .15s ease, color .15s ease;
}
.py-tab-close:hover{ background:var(--pyc-red); color:#fff; }
.py-tab-empty{ font-size:12px; color:#C4B69A; padding:8px 4px; }
body.pyc-dark .py-tab{ background:#23283A; color:#AEB6C9; border-color:#3A4158; }
body.pyc-dark .py-tab.active{ background:#2B3145; color:#7FB0F5; box-shadow:inset 0 -3px 0 #1677F2; }

/* 确保 A-/A+ 按钮始终可点击：提升层级 + 强制接收指针事件（排查遮挡） */
.py-editor-bar{ position:relative; z-index:50; flex-wrap:wrap; }
.py-eb-btn{ pointer-events:auto !important; position:relative; z-index:70; }
.py-eb-right{ position:relative; z-index:60; }

/* ===== 顶部工具栏 A-/A+ 字号按钮（与工具栏图标按钮统一圆润风格） ===== */
.py-menu-font-group{
  display:inline-flex; align-items:center; gap:5px;
  margin:0 2px; padding:3px 6px;
  background:#F4F8FE; border-radius:14px;
}
.py-font-btn{
  width:40px; height:40px;
  font-size:15px; font-weight:800; color:var(--pyc-blue);
}
.py-menu-font-group .py-font-badge{
  min-width:40px; text-align:center; padding:4px 8px; font-size:12px; font-weight:800;
  background:var(--pyc-orange-soft); color:var(--pyc-orange); border-radius:999px;
}
/* 底部编辑条现仅剩 撤销/调试/运行（左侧） */
.py-editor-bar{ justify-content:space-between; }

/* ===== 工具栏微调：调试/运行与相邻胶囊协调（追加层，颜色沿用青绿 #22b89c） ===== */
.btn-outline,
.btn-solid{
  height:40px;
  box-sizing:border-box;
  border-radius:999px;
  font-size:14px;
  font-weight:600;
  white-space:nowrap;
}
.btn-outline svg,
.btn-solid svg{
  width:18px;
  height:18px;
  flex:0 0 auto;
}
.btn-outline{
  padding:0 18px;
  border:1.5px solid #22b89c;
  color:#0f9d82;
  background:#fff;
  box-shadow:0 2px 8px rgba(34,184,156,.1);
}
.btn-outline:hover{
  background:#eefaf7;
  border-color:#1aa186;
  color:#0c8a72;
  box-shadow:0 4px 12px rgba(34,184,156,.18);
}
.btn-solid{
  padding:0 20px;
  background:linear-gradient(180deg,#2BC4A7 0%,#22b89c 55%,#16a085 100%);
  box-shadow:0 4px 12px rgba(34,184,156,.28), inset 0 1px 0 rgba(255,255,255,.25);
}
.btn-solid:hover{
  background:linear-gradient(180deg,#35CFB2 0%,#22b89c 45%,#0f9d82 100%);
  box-shadow:0 6px 16px rgba(34,184,156,.38), inset 0 1px 0 rgba(255,255,255,.3);
}
.btn-outline:active,
.btn-solid:active{ transform:scale(.97); }
.btn-outline:disabled,
.btn-solid:disabled{ opacity:.45; cursor:not-allowed; box-shadow:none; }

/* ===== 右侧垂直悬浮栏 v2：圆形 48px，与底部胶囊配色统一（AI/查找/控制台） ===== */
.editor-right-toolbar{
  position:fixed;
  right:24px;
  bottom:24px;
  top:auto;
  height:auto;
  transform:none;
  display:flex;
  flex-direction:column;
  gap:12px;
  align-items:center;
  z-index:120;
}
.v-btn{
  width:48px;
  height:48px;
  border-radius:50%;
  background:#f1f3f4;
  border:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:18px;
  font-weight:bold;
  color:#444;
  padding:0;
  box-shadow:0 2px 8px rgba(0,0,0,.06);
  transition:background .18s ease, color .18s ease, transform .12s ease;
}
.v-btn svg{
  width:22px;
  height:22px;
  stroke:#444;
  stroke-width:2.5;
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.v-btn:hover{ background:#e8eaed; }
.v-btn:active{ transform:scale(.95); }
.v-btn.active{
  background:#22b89c;
  color:#fff;
}
.v-btn.active svg{ stroke:#fff; }
.v-btn-ai{ font-size:16px; font-weight:800; letter-spacing:.5px; }
.v-btn-ai:hover{ background:#e8eaed; }
.v-btn-ai.active{ background:#22b89c; }
/* 贪吃蛇 / 数据可视化：当前设计只保留3个（隐藏不删除，功能仍在） */
.v-btn-snake,
.v-btn-plot{ display:none; }


/* ===== 编辑区撑满：去掉工作区留白与文件栏负边距，让主列填满右/下（V3 修复空隙） ===== */
.py-workspace{
  padding:0 !important;
}
.py-files{
  margin-left:0 !important;
  margin-bottom:0 !important;
}
.py-main-col{
  margin:0 !important;
  padding:0 !important;
}

/* 登录弹窗容器若被插到工作区：fixed 全屏覆盖不占 flex；默认不拦截点击，弹窗子层再开启 */
.py-workspace > #loginModalContainer{
  position:fixed !important;
  inset:0;
  z-index:2100;
  pointer-events:none !important;
}
.py-workspace > #loginModalContainer > *{
  pointer-events:auto !important;
}

/* ===== 控制台打开：底部/右侧悬浮按钮同步上移（不被控制台盖住） ===== */
.editor-bottom-toolbar,
.editor-right-toolbar{
  transition: transform .32s cubic-bezier(.22,.8,.36,1);
  will-change: transform;
}
body.console-open .editor-bottom-toolbar{
  transform: translateY(calc(-1 * var(--py-console-h, 320px)));
}
body.console-open .editor-right-toolbar{
  transform: translateY(calc(-1 * var(--py-console-h, 320px)));
}


/* ===== 控制台：全宽贴边、高 320px、无圆角（盖过内联样式） ===== */
.console-card{
  position:fixed !important;
  left:0 !important;
  right:0 !important;
  bottom:0 !important;
  width:100% !important;
  margin:0 !important;
  height:320px !important;
  max-height:320px !important;
  min-height:0 !important;
  border:none !important;
  border-radius:0 !important;
  box-shadow:0 -6px 24px rgba(0,0,0,.10) !important;
  z-index:90 !important;
}


/* ===== AI 助手面板（从右边滑出） ===== */
.ai-assistant-panel{
  position:absolute;
  top:16px;
  right:0;
  width:380px;
  height:calc(100% - 100px);
  max-height:700px;
  background:rgba(255,255,255,.95);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(224,237,232,.6);
  border-right:none;
  border-radius:14px 0 0 14px;
  box-shadow:-4px 0 20px rgba(45,212,168,.1);
  display:flex;
  flex-direction:column;
  z-index:100;
  transform:translateX(100%);
  transition:transform .3s ease, box-shadow .3s ease;
  overflow:hidden;
}
.ai-assistant-panel.open{
  transform:translateX(0);
  box-shadow:-8px 0 30px rgba(45,212,168,.15);
}

/* 面板头部 */
.ai-panel-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 16px;
  border-bottom:1px solid rgba(224,237,232,.5);
  background:rgba(255,255,255,.6);
  flex:none;
}
.ai-panel-title{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:15px;
  font-weight:700;
  color:#2D3A3A;
}
.ai-panel-icon{
  font-size:20px;
}
.ai-panel-close{
  width:28px;
  height:28px;
  border:none;
  border-radius:50%;
  background:rgba(224,237,232,.5);
  color:#6B7C7C;
  font-size:12px;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:all .15s ease;
}
.ai-panel-close:hover{
  background:rgba(229,72,77,.15);
  color:#e5484d;
}

/* 面板主体（聊天区域） */
.ai-panel-body{
  flex:1;
  overflow-y:auto;
  padding:16px;
  display:flex;
  flex-direction:column;
  gap:12px;
}
.ai-panel-body::-webkit-scrollbar{
  width:6px;
}
.ai-panel-body::-webkit-scrollbar-thumb{
  background:#C8D8D2;
  border-radius:3px;
}
.ai-panel-body::-webkit-scrollbar-track{
  background:transparent;
}

/* 欢迎消息 */
.ai-welcome{
  text-align:center;
  padding:20px 10px;
}
.ai-welcome-icon{
  font-size:48px;
  margin-bottom:12px;
}
.ai-welcome-title{
  font-size:16px;
  font-weight:700;
  color:#2D3A3A;
  margin-bottom:8px;
}
.ai-welcome-desc{
  font-size:13px;
  color:#6B7C7C;
  line-height:1.6;
}

/* 聊天消息 */
.ai-msg{
  display:flex;
  gap:8px;
  max-width:85%;
  animation:aiMsgIn .25s ease;
}
@keyframes aiMsgIn{
  from{ opacity:0; transform:translateY(8px); }
  to{ opacity:1; transform:translateY(0); }
}
.ai-msg.user{
  align-self:flex-end;
  flex-direction:row-reverse;
}
.ai-msg-avatar{
  width:32px;
  height:32px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:16px;
  flex:none;
}
.ai-msg.user .ai-msg-avatar{
  background:linear-gradient(135deg,#2DD4A8,#1FB892);
}
.ai-msg.ai .ai-msg-avatar{
  background:linear-gradient(135deg,#7c3aed,#5b21b6);
}
.ai-msg-bubble{
  padding:10px 14px;
  border-radius:12px;
  font-size:13px;
  line-height:1.6;
  word-break:break-word;
}
.ai-msg.user .ai-msg-bubble{
  background:linear-gradient(135deg,#2DD4A8,#1FB892);
  color:#fff;
  border-radius:12px 12px 4px 12px;
}
.ai-msg.ai .ai-msg-bubble{
  background:rgba(255,255,255,.8);
  color:#2D3A3A;
  border:1px solid rgba(224,237,232,.5);
  border-radius:12px 12px 12px 4px;
}
.ai-msg.ai .ai-msg-bubble pre{
  background:#1e1e1e;
  color:#d4d4d4;
  padding:10px 12px;
  border-radius:8px;
  margin:8px 0;
  overflow-x:auto;
  font-size:12px;
  line-height:1.5;
  position:relative;
}
.ai-msg.ai .ai-msg-bubble code{
  font-family:Consolas, Menlo, monospace;
}
.ai-msg.ai .ai-msg-bubble p{
  margin:4px 0;
}

/* 代码块复制按钮 */
.ai-code-copy{
  position:absolute;
  top:6px;
  right:6px;
  padding:4px 8px;
  background:rgba(255,255,255,.1);
  color:#aaa;
  border:none;
  border-radius:4px;
  font-size:11px;
  cursor:pointer;
  transition:all .15s ease;
}
.ai-code-copy:hover{
  background:rgba(255,255,255,.2);
  color:#fff;
}

/* 正在输入动画 */
.ai-typing{
  display:flex;
  gap:4px;
  padding:12px 14px;
}
.ai-typing span{
  width:8px;
  height:8px;
  border-radius:50%;
  background:#1FB892;
  animation:aiTyping 1.4s infinite ease-in-out;
}
.ai-typing span:nth-child(1){ animation-delay:0s; }
.ai-typing span:nth-child(2){ animation-delay:.2s; }
.ai-typing span:nth-child(3){ animation-delay:.4s; }
@keyframes aiTyping{
  0%, 60%, 100%{ transform:translateY(0); opacity:.4; }
  30%{ transform:translateY(-6px); opacity:1; }
}

/* 快捷功能按钮 */
.ai-panel-quick{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  padding:12px 16px;
  border-top:1px solid rgba(224,237,232,.4);
  background:rgba(255,255,255,.4);
  flex:none;
}
.ai-quick-btn{
  padding:8px 10px;
  border:1px solid rgba(224,237,232,.6);
  background:rgba(255,255,255,.7);
  border-radius:10px;
  font-size:12px;
  font-weight:600;
  color:#4A5C5C;
  cursor:pointer;
  transition:all .15s ease;
  white-space:nowrap;
}
.ai-quick-btn:hover{
  background:rgba(45,212,168,.1);
  border-color:#1FB892;
  color:#1FB892;
  transform:translateY(-1px);
}
.ai-quick-btn:active{
  transform:translateY(0);
}

/* 输入区域 */
.ai-panel-input{
  display:flex;
  gap:8px;
  padding:12px 16px;
  border-top:1px solid rgba(224,237,232,.5);
  background:rgba(255,255,255,.6);
  flex:none;
}
.ai-input{
  flex:1;
  border:1px solid rgba(224,237,232,.6);
  background:rgba(255,255,255,.8);
  border-radius:10px;
  padding:8px 12px;
  font-size:13px;
  font-family:inherit;
  color:#2D3A3A;
  resize:none;
  outline:none;
  transition:border-color .15s ease, box-shadow .15s ease;
  line-height:1.5;
}
.ai-input:focus{
  border-color:#1FB892;
  box-shadow:0 0 0 3px rgba(31,184,146,.12);
}
.ai-input::placeholder{
  color:#9AA8A8;
}
.ai-send-btn{
  width:40px;
  height:40px;
  border:none;
  border-radius:10px;
  background:linear-gradient(135deg,#2DD4A8,#1FB892);
  color:#fff;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:all .15s ease;
  flex:none;
  align-self:flex-end;
}
.ai-send-btn:hover{
  filter:brightness(1.08);
  transform:translateY(-1px);
  box-shadow:0 4px 10px rgba(31,184,146,.3);
}
.ai-send-btn:active{
  transform:translateY(0);
}
.ai-send-btn svg{
  width:18px;
  height:18px;
}

/* 面板打开时，编辑器卡片宽度调整 */
.py-main-col{
  position:relative;
}
