:root{
  --bg:#1c1e22; --panel:#26292e; --panel2:#2e3238; --line:#3a3f46;
  --text:#d8dde3; --dim:#8b939c; --accent:#e8eaec; --accent2:#aab2ba; --sel:#3a3f46;
  --tree-w:240px;   /* 场景树宽度：拖分隔条时实时更新，左侧覆盖面板(.addflyout/#assetPanel)统一读它 → 任意时刻打开都与树同宽 */
}
*{box-sizing:border-box;}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);
  font:13px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;
  user-select:none;overflow:hidden;}
/* 2026-07-14: 默认按 80% 呈现——把作者浏览器80%缩放下的最佳视角设为100%缩放的默认。用 zoom(非transform:scale)会重排填满视口且校正指针坐标 */
html{zoom:.8;}

/* ---- toolbar ---- */
#toolbar{height:46px;display:flex;align-items:center;gap:6px;padding:0 10px;
  background:linear-gradient(180deg,#2d3137,#24272c);border-bottom:1px solid var(--line);}
.logo{font-weight:700;color:var(--accent);margin-right:8px;letter-spacing:.3px;}
.tb-btn{background:var(--panel2);border:1px solid var(--line);color:var(--text);
  padding:6px 10px;border-radius:6px;cursor:pointer;font-size:12px;white-space:nowrap;}
.tb-btn:hover{background:#363b42;}
.tb-btn.tb-icon{padding:6px 9px;display:inline-flex;align-items:center;justify-content:center;}
.tb-btn.active{background:var(--accent2);border-color:var(--accent2);color:#fff;}
.tb-btn.primary{background:var(--accent);border-color:var(--accent);color:#000;font-weight:600;}
.tb-btn.primary:hover{filter:brightness(1.08);}
.tb-select{background:var(--panel2);border:1px solid var(--line);color:var(--text);
  padding:6px 8px;border-radius:6px;cursor:pointer;font-size:12px;}
.tb-sep{width:1px;height:22px;background:var(--line);margin:0 4px;}
/* 视图工具折叠组：向左收起/展开（max-width 动画营造「往左收回」） */
.tb-collapsible{display:inline-flex;align-items:center;gap:6px;overflow:hidden;max-width:1200px;opacity:1;transition:max-width .28s ease,opacity .18s ease,gap .28s ease;}
.tb-collapsible.collapsed{max-width:0;opacity:0;gap:0;pointer-events:none;}
.tb-collapse-btn{padding:6px 8px;font-size:15px;line-height:1;font-weight:700;color:var(--dim);}

/* ---- layout ---- */
#main{position:absolute;top:46px;left:0;right:0;bottom:0;display:flex;}
/* 两侧面板内侧边框统一近黑实线（属性栏左缘原用 --line 中灰夹在深色分隔条+深色面板间对比太弱看不出黑边）→ 与场景树严格对称 */
#left{width:var(--tree-w,240px);background:var(--panel);border-right:1px solid #0c0d10;display:flex;flex-direction:column;}
#right{width:280px;background:var(--panel);border-left:1px solid #0c0d10;display:flex;flex-direction:column;}
#viewport{flex:1;position:relative;min-width:0;}
/* 可拖拽分隔条 */
.resizer{width:6px;flex:none;cursor:col-resize;background:transparent;z-index:20;transition:background .12s;}
.resizer:hover{background:var(--accent2);}
#viewport canvas{display:block;}
.panel-title{padding:8px 10px;font-size:11px;text-transform:uppercase;letter-spacing:1px;
  color:var(--dim);border-bottom:1px solid var(--line);background:var(--panel2);}

/* ---- 左侧分类导航栏 (AddPanel) ---- */
#addrail{width:62px;flex:none;background:#1a1c20;border-right:1px solid var(--line);
  display:flex;flex-direction:column;padding:6px 0;overflow-y:auto;z-index:30;}
.rail-btn{background:none;border:none;color:var(--dim);cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 2px;font-size:10px;border-radius:8px;margin:1px 5px;}
.rail-btn:hover{background:#262a30;color:var(--text);}
.rail-btn.active{background:#393939;color:#fff;box-shadow:inset 2px 0 0 var(--accent2);}
.rail-ico{width:22px;height:22px;display:block;}
.rail-ico svg{width:22px;height:22px;display:block;}
.rail-lbl{line-height:1;}
.addflyout{position:absolute;left:62px;top:0;bottom:0;width:var(--tree-w,240px);z-index:25;
  background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;
  box-shadow:8px 0 24px rgba(0,0,0,.35);}
.addflyout.hidden{display:none;}
.addflyout-head{display:flex;align-items:center;justify-content:space-between;
  padding:9px 12px;border-bottom:1px solid var(--line);background:var(--panel2);}
.aft-title{font-size:13px;font-weight:600;color:var(--text);}
.aft-close{background:none;border:none;color:var(--dim);font-size:18px;cursor:pointer;line-height:1;padding:0 4px;}
.aft-close:hover{color:#fff;}
.add-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:108px;gap:10px;padding:12px;align-content:start;}
.add-card{background:#15171a;border:1px solid transparent;border-radius:10px;cursor:pointer;box-sizing:border-box;height:108px;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 6px;color:var(--text);}
.add-card:hover{border-color:var(--accent2);background:#1d2128;}
.add-thumb{width:56px;height:56px;flex:0 0 56px;display:flex;align-items:center;justify-content:center;}
.add-thumb svg{width:56px;height:56px;}
.add-name{font-size:11px;text-align:center;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;max-width:100%;}
/* 模型库卡片：缩略图 + 悬停删除 */
.add-thumb .mc-thumb{width:56px;height:56px;object-fit:cover;border-radius:7px;display:block;}
/* ---- Model 视图：图片铺满整张卡、无大黑边（对标 AframeNewEngine）---- */
.add-grid.model-grid{grid-auto-rows:auto;}
.add-grid.model-grid .add-card{height:auto;min-height:0;padding:0;gap:0;overflow:hidden;justify-content:flex-start;}
.add-grid.model-grid .add-thumb{width:100%;height:auto;aspect-ratio:1/1;flex:none;border-radius:0;background:#15171a;}
.add-grid.model-grid .add-card:not(.model-card) .add-thumb{background:linear-gradient(135deg,#16181d,#0c0c0c);}  /* Import 卡：保持深色底 + 居中图标 */
.add-grid.model-grid .add-thumb .mc-thumb{width:100%;height:100%;object-fit:contain;border-radius:0;background:#15171a;}
.add-grid.model-grid .add-thumb svg{width:44px;height:44px;}
.add-grid.model-grid .add-name{padding:6px 8px 8px;width:100%;box-sizing:border-box;}
/* Media 卡：图片铺满（object-fit:cover），视频/音频用居中图标 */
.add-grid.model-grid .media-card .add-thumb img{width:100%;height:100%;object-fit:cover;border-radius:0;display:block;}
.add-grid.model-grid .media-card .micon{font-size:34px;line-height:1;color:var(--dim);}
.add-card.model-card{position:relative;}
.mc-del{position:absolute;top:5px;right:6px;width:18px;height:18px;line-height:16px;text-align:center;
  border-radius:50%;background:rgba(0,0,0,.55);color:#ddd;font-size:11px;opacity:0;transition:opacity .12s;}
.add-card.model-card:hover .mc-del{opacity:1;}
.mc-del:hover{background:#646464;color:#fff;}
/* 卡片右上角信息按钮（ⓘ Properties，替代 ✕；点开属性弹窗可重命名/下载/删除，对标 ManifestEngine）*/
.add-card.media-card{position:relative;}
.mc-info{position:absolute;top:5px;right:6px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:rgba(0,0,0,.55);color:#e6e6e6;opacity:0;transition:opacity .12s,background .12s;cursor:pointer;padding:0;}
.mc-info svg{width:13px;height:13px;}
.add-card.model-card:hover .mc-info,.add-card.media-card:hover .mc-info{opacity:1;}
.mc-info:hover{background:#919191;color:#fff;opacity:1;}

/* ---- outliner ---- */
.outliner{flex:1;overflow:auto;padding:4px 0;}
.tree-row{display:flex;align-items:center;gap:6px;padding:3px 8px;cursor:pointer;font-size:12.5px;white-space:nowrap;}
.tree-row:hover{background:#30353c;}
.tree-row.selected{background:var(--sel);}
.tree-icon{width:14px;text-align:center;color:var(--dim);}
.tree-name{overflow:hidden;text-overflow:ellipsis;flex:1;}
/* 行内眼睛/锁：默认淡、悬停行时显现，点击不触发选择 */
/* 行内操作（复制/删除/隐藏）——与 AframeNewEngine 场景树原版一致：hover/选中时显现的小 SVG 按钮 */
.tree-acts{display:none;align-items:center;gap:1px;flex:0 0 auto;}
.tree-row:hover .tree-acts,.tree-row.selected .tree-acts{display:flex;}
.tree-act{background:none;border:0;color:var(--dim);cursor:pointer;padding:1px;display:flex;align-items:center;border-radius:4px;line-height:0;}
.tree-act:hover{color:#fff;background:rgba(255,255,255,.14);}
.tree-act svg{width:12px;height:12px;}
.tree-row.hidden .tree-icon,.tree-row.hidden .tree-name{opacity:.38;font-style:italic;}
/* 拖拽落点指示 */
.tree-row.drop-inside{background:#4a4a4a;box-shadow:inset 0 0 0 1px #adadad;}
.tree-row.drop-before{box-shadow:inset 0 2px 0 0 #a4a4a4;}
.tree-row.drop-after{box-shadow:inset 0 -2px 0 0 #a4a4a4;}
/* 工具栏切换按钮关闭态（如网格隐藏） */
.tb-btn.toggled-off{opacity:.45;}

/* ---- inspector ---- */
.inspector{flex:1;overflow:auto;padding:6px 0 30px;}
.inspector .empty{color:var(--dim);text-align:center;padding:40px 10px;line-height:2;}
.inspector .empty span{font-size:11px;}
.section{padding:8px 10px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.6px;
  color:var(--accent);border-top:1px solid var(--line);margin-top:6px;}
.prop-row{display:flex;align-items:center;gap:8px;padding:3px 10px;}
/* 英文标签比中文长：列宽 54→84px + 单行省略（超长标签悬停看 title 全文），根除 Background 压色块/Enable Fog 折行 */
.prop-row>label{width:84px;flex:none;color:var(--dim);font-size:11.5px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.prop-row select.tb-select{flex:1;min-width:0;}
.prop-row input[type=color]{flex:none;}
.prop-row input[type=checkbox]{flex:none;}
.vec3{display:flex;gap:4px;flex:1;}
.ui-number{width:100%;min-width:0;background:var(--panel2);border:1px solid var(--line);color:var(--text);
  border-radius:4px;padding:4px 5px;font-size:12px;cursor:ew-resize;text-align:center;font-variant-numeric:tabular-nums;}
.ui-number:focus{cursor:text;outline:1px solid var(--accent2);}
.ui-number[data-axis="x"]{border-bottom:2px solid #8d8d8d33;}
.ui-number[data-axis="y"]{border-bottom:2px solid #a6a6a633;}
.ui-number[data-axis="z"]{border-bottom:2px solid #92929233;}
.ui-text{flex:1;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:4px;padding:4px 6px;}
.ui-range{flex:1;}
.range-val{width:42px;text-align:right;color:var(--dim);font-variant-numeric:tabular-nums;}
input[type=color]{width:36px;height:24px;border:1px solid var(--line);border-radius:4px;background:none;cursor:pointer;padding:0;}
input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;cursor:pointer;}

/* ---- test overlay ---- */
.test-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:1000;}
.test-window{width:82%;height:82%;background:#000;border-radius:10px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.6);}
.test-bar{height:40px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;background:#2d3137;color:var(--text);font-size:12.5px;}
.test-close{background:#444;border:none;color:#fff;padding:5px 12px;border-radius:6px;cursor:pointer;}
.test-close:hover{background:#595959;}
.test-iframe{flex:1;border:none;width:100%;background:#222428;}

/* ---- 分享弹窗（顶栏链接条 + iframe 预览，参考 AI2DEngine）---- */
.share-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1200;}
.share-window{width:90%;height:90%;background:#0c0d10;border-radius:10px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 24px 70px rgba(0,0,0,.65);}
.share-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#16181c;border-bottom:1px solid var(--line);}
.share-title{font-size:13px;color:var(--text);font-weight:600;white-space:nowrap;display:flex;align-items:center;gap:5px;}
.share-url{flex:1;min-width:0;background:#0c0d10;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:7px 10px;font-size:12.5px;font-family:ui-monospace,monospace;}
.share-url:focus{outline:none;border-color:var(--accent2);}
.share-copy,.share-close{background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:6px;padding:7px 12px;font-size:12.5px;cursor:pointer;white-space:nowrap;}
.share-copy{background:var(--accent);border-color:var(--accent);color:#000;font-weight:600;}
.share-copy:hover{filter:brightness(1.08);}
.share-copy:disabled{opacity:.55;cursor:default;}
.share-close:hover{background:#595959;color:#fff;border-color:#595959;}
.share-body{flex:1;display:flex;align-items:center;justify-content:center;background:#000;}
.share-iframe{flex:1;border:none;width:100%;height:100%;background:#000;}
.share-loading{color:var(--dim);font-size:13px;}

/* ---- T3 代码往返面板（挂在 #viewport 内 → 居中在「场景正下方」，不与左右面板重叠）---- */
#t3panel{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);
  width:min(560px,86%);max-height:42%;z-index:60;
  background:#21242a;border:1px solid var(--line);border-radius:10px;overflow:auto;
  box-shadow:0 12px 40px rgba(0,0,0,.5);font-size:12px;}
.t3-head{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;
  background:#2d3137;border-bottom:1px solid var(--line);font-weight:600;color:var(--accent);position:sticky;top:0;}
.t3-close{background:#444;border:none;color:#fff;width:22px;height:22px;border-radius:5px;cursor:pointer;}
.t3-body{padding:8px 12px;line-height:1.7;}
.t3-line{color:var(--dim);}
.t3-ok{color:var(--accent);}
.t3-err{color:#aaaaaa;}
.t3-warn{color:#cdcdcd;}
.t3-note{color:#bebebe;}
.t3-toggle{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line);color:#cdd3da;cursor:pointer;font-size:11.5px;}
.t3-toggle input{accent-color:var(--accent);}

/* ---- AI Coding Assistant（右侧抽屉式停靠面板，对标 AframeNewEngine）---- */
.rail-btn.ai-railbtn{border-top:1px solid var(--line);margin-top:5px;padding-top:11px;color:var(--accent);}
.rail-btn.ai-railbtn:hover{color:#d3d3d3;background:#262a30;}
.rail-btn.ai-railbtn.active{background:#243a32;color:#fff;box-shadow:inset 2px 0 0 var(--accent);}
/* 右侧停靠、工具栏下方到底部全高。固定边界 + overflow:hidden + .ai-body flex/min-height:0/overflow-y:auto → 滚动 100% 稳 */
#aiPanel{position:fixed;top:46px;right:0;bottom:0;width:420px;max-width:94vw;z-index:950;
  background:var(--panel);border-left:1px solid var(--line);box-shadow:-14px 0 40px rgba(0,0,0,.45);
  display:none;flex-direction:column;overflow:hidden;}
#aiPanel.open{display:flex;}
.ai-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line);flex:none;}
.ai-title{display:flex;align-items:center;gap:8px;color:var(--text);font-size:14px;font-weight:600;}
.ai-title svg{width:17px;height:17px;color:var(--accent);}
#aiClose{margin-left:auto;background:var(--panel2);border:1px solid var(--line);color:var(--dim);width:28px;height:28px;border-radius:6px;cursor:pointer;flex:none;font-size:14px;}
#aiClose:hover{color:#fff;background:#3a2d2d;}
.ai-subrow{padding:8px 14px;font-size:10.5px;color:var(--dim);border-bottom:1px solid var(--line);flex:none;line-height:1.5;}
.ai-modelrow{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid var(--line);flex:none;}
.ai-modelrow>span{font-size:11px;color:var(--dim);flex:none;}
.ai-modelrow select{flex:1;}
.ai-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:14px;display:flex;flex-direction:column;gap:10px;}
/* ⚠️ 关键：对话区每个子项永不被纵向压缩。带 overflow:hidden 的 flex 子项（如 .diff-wrap）自动最小高度=0，
   内容超高时会被 flex 压扁并裁掉代码 → 必须 flex-shrink:0，保持完整高度，改由 .ai-body 自身滚动 */
.ai-body>*{flex-shrink:0;}
.ai-empty{color:var(--dim);font-size:12px;text-align:center;padding:24px 14px;line-height:1.9;}
.ai-inputbar{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--line);flex:none;align-items:flex-end;}
.ai-inputbar textarea{flex:1;resize:none;background:#15171a;border:1px solid var(--line);color:var(--text);border-radius:6px;
  padding:8px 10px;font:inherit;font-size:12.5px;line-height:1.5;min-height:74px;max-height:150px;}
.ai-inputbar textarea:focus{outline:none;border-color:var(--accent2);}
.msg{font-size:12.5px;line-height:1.6;border-radius:10px;padding:9px 11px;max-width:100%;word-break:break-word;white-space:pre-wrap;}
.msg.user{align-self:flex-end;background:#1d2733;color:#ebebeb;border:1px solid rgba(120,170,255,.25);max-width:88%;}
.msg.ai{align-self:flex-start;background:var(--panel2);color:var(--text);border:1px solid var(--line);max-width:100%;}
.msg.sys{align-self:center;background:transparent;color:var(--dim);font-size:11px;padding:2px;}
.msg.ai.streaming::after{content:'▌';color:var(--accent);animation:tjneBlink 1s steps(2) infinite;}
.msg.ai.streamcode{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;color:#dddddd;max-height:200px;overflow:auto;}
@keyframes tjneBlink{50%{opacity:0;}}
.ai-histbar{display:flex;align-items:center;gap:7px;padding:7px 10px;margin-top:8px;border:1px solid var(--line);border-radius:6px;background:var(--panel2);}
.ai-histbar .tb-btn{padding:4px 10px;font-size:11px;}
.ai-histpos{margin-left:auto;font-family:ui-monospace,monospace;font-size:10.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:58%;}
.diff-wrap{margin-top:9px;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#15171a;min-width:0;max-width:100%;align-self:stretch;}
.diff-summary{padding:6px 10px;font-size:11px;color:var(--text);border-bottom:1px solid var(--line);background:var(--panel2);}
.diff-item{border-bottom:1px solid var(--line);min-width:0;max-width:100%;}
.diff-header{padding:4px 10px;font-size:11px;color:var(--dim);display:flex;gap:6px;align-items:center;}
.diff-header .ok{color:var(--accent);} .diff-header .warn{color:#cdcdcd;}
/* 强制换行：确定宽度约束(max-width:100%) + pre-wrap + 任意处可断，避免红绿 diff 被截成一行（对标 AframeNewEngine） */
.diff-old,.diff-new{padding:3px 10px 3px 22px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;
  white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;max-width:100%;box-sizing:border-box;position:relative;
  /* 完整显示红绿修改内容：超长块在块内纵向滚动，避免单条 diff 撑爆对话区 */
  max-height:360px;overflow-y:auto;}
.diff-old{background:rgba(248,81,73,.10);color:#e3e3e3;}
.diff-old::before{content:'\2212';position:absolute;left:8px;color:#999999;font-weight:700;}
.diff-new{background:rgba(63,185,80,.10);color:#dddddd;}
.diff-new::before{content:'+';position:absolute;left:8px;color:#959595;font-weight:700;}
/* 应用/取消按钮：sticky 吸底，无论 diff 多长都固定在对话区底部可见（直接挂在 .ai-body 下，避开 .diff-wrap 的 overflow:hidden） */
.diff-actions{position:sticky;bottom:0;z-index:3;display:flex;gap:8px;padding:10px 0 4px;margin-top:-4px;
  background:linear-gradient(to top,var(--panel) 80%,rgba(38,41,46,0));}
.diff-actions .tb-btn{padding:10px 14px;font-size:13px;flex:none;}
.diff-actions .tb-btn.primary{flex:1;}
.smoke-panel{margin-top:8px;padding:7px 10px;border-radius:6px;font-size:11.5px;border:1px solid var(--line);display:flex;flex-direction:column;gap:5px;}
.smoke-panel.pending{color:var(--dim);}
.smoke-panel.pass{color:var(--accent);border-color:rgba(91,191,154,.3);background:rgba(91,191,154,.07);}
.smoke-panel.fail{color:#e3e3e3;border-color:rgba(248,81,73,.3);background:rgba(248,81,73,.07);}
.smoke-err{font-family:ui-monospace,monospace;font-size:10.5px;color:#e3e3e3;white-space:pre-wrap;word-break:break-all;padding-left:8px;}
.smoke-panel .tb-btn{align-self:flex-start;padding:4px 10px;font-size:11px;margin-top:3px;}
.ai-spin{width:13px;height:13px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;display:inline-block;animation:tjnespin .8s linear infinite;vertical-align:-2px;}
@keyframes tjnespin{to{transform:rotate(360deg);}}

/* ---- My Projects 项目管理弹窗 ---- */
.tb-btn.danger{background:#3a2627;border-color:#444444;color:#dcdcdc;}
.tb-btn.danger:hover{background:#3b3b3b;color:#fff;}
#pmOverlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:1200;display:none;align-items:center;justify-content:center;padding:24px;}
#pmOverlay.open{display:flex;}
.pm-modal{width:min(880px,94vw);height:min(620px,86vh);background:var(--panel);border:1px solid var(--line);border-radius:12px;
  box-shadow:0 24px 70px rgba(0,0,0,.55);display:flex;flex-direction:column;overflow:hidden;}
.pm-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--panel2);}
.pm-title{font-size:14px;font-weight:600;color:var(--text);}
.pm-title b{color:var(--accent);}
.pm-toolbar{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--line);}
.pm-search{flex:1;display:flex;align-items:center;gap:7px;background:#15171a;border:1px solid var(--line);border-radius:7px;padding:6px 10px;}
.pm-search svg{width:15px;height:15px;color:var(--dim);flex:none;}
.pm-search input{flex:1;background:none;border:none;outline:none;color:var(--text);font:inherit;font-size:13px;}
.pm-grid{flex:1;overflow:auto;padding:16px;display:flex;flex-wrap:wrap;gap:14px;align-content:flex-start;}
.pcard{flex:1 1 200px;max-width:320px;background:#1a1c20;border:1px solid var(--line);border-radius:10px;overflow:hidden;cursor:pointer;display:block;transition:border-color .15s,transform .15s;}
.pcard:hover{border-color:var(--accent2);transform:translateY(-2px);}
.pcard-current{border-color:#fff;box-shadow:0 0 0 2px #fff;}
.pcard .thumb{position:relative;width:calc(100% - 20px);margin:10px auto 4px;padding-bottom:calc(100% - 20px);flex-shrink:0;background:linear-gradient(135deg,#22262c,#15171a);overflow:hidden;border-radius:12px;}
.pcard .thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.pcard .thumb .thumb-ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:30px;}
.pcard .pinfo{padding:10px 12px 6px;display:flex;flex-direction:column;gap:3px;}
.pcard .pname{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pcard .pcur{color:var(--accent);font-weight:400;}
.pcard .pmeta{font-size:11px;color:var(--dim);}
.pcard .pacts{display:flex;gap:6px;padding:0 12px 12px;}
.pcard .pacts .tb-btn{flex:1;padding:5px 4px;font-size:11px;}
.pm-new{background:var(--panel2);border:1px dashed #4a525c;border-radius:10px;min-height:180px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--dim);cursor:pointer;transition:color .15s,border-color .15s;}
.pm-new:hover{color:var(--text);border-color:var(--accent);}
.pm-new svg{width:28px;height:28px;}
.pm-empty{width:100%;text-align:center;color:var(--dim);padding:50px 0;font-size:13px;}

/* ---- 代码往返历史记录弹窗 ---- */
.tb-badge{background:var(--accent);color:#000;border-radius:9px;padding:0 5px;font-size:10px;font-weight:700;vertical-align:1px;line-height:1.5;}
#t3histOverlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:1200;display:none;align-items:center;justify-content:center;padding:24px;}
#t3histOverlay.open{display:flex;}
.t3h-modal{width:min(760px,94vw);height:min(640px,86vh);background:var(--panel);border:1px solid var(--line);border-radius:12px;
  box-shadow:0 24px 70px rgba(0,0,0,.55);display:flex;flex-direction:column;overflow:hidden;}
.t3h-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--panel2);}
.t3h-title{font-size:14px;font-weight:600;color:var(--text);}
.t3h-title b{color:var(--accent);}
.t3h-proj{color:var(--dim);font-weight:400;font-size:12px;}
.t3h-list{flex:1;overflow:auto;padding:12px 14px;display:flex;flex-direction:column;gap:8px;}
.t3h-empty{color:var(--dim);text-align:center;padding:50px 16px;line-height:2;font-size:13px;}
.t3h-card{border:1px solid var(--line);border-radius:8px;background:#1a1c20;overflow:hidden;}
.t3h-cardhead{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;background:var(--panel2);}
.t3h-cardhead:hover{background:#30353c;}
.t3h-arrow{color:var(--dim);width:12px;flex:none;text-align:center;}
.t3h-fname{font-size:12.5px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.t3h-meta{margin-left:auto;font-size:11px;color:var(--dim);flex:none;font-variant-numeric:tabular-nums;}
.t3h-cardbody{padding:8px 14px;line-height:1.7;border-top:1px solid var(--line);font-size:12px;
  font-family:ui-monospace,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-word;}
.t3h-cardbody>div{padding:1px 0;}

/* ---- C2 水合徽标（载入可编辑场景时短暂提示）---- */
#m3dHydrateBadge{position:fixed;top:56px;left:50%;transform:translateX(-50%);z-index:1500;
  display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:20px;font-size:12.5px;
  background:#2d3137;color:var(--text);border:1px solid var(--line);box-shadow:0 8px 26px rgba(0,0,0,.45);}

/* ---- 恢复横幅 ---- */
.restore-banner{position:fixed;top:56px;left:50%;transform:translateX(-50%);z-index:1500;
  display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;font-size:13px;
  background:#2d3137;color:var(--text);border:1px solid var(--line);box-shadow:0 10px 30px rgba(0,0,0,.5);}
.restore-banner button{border:none;border-radius:6px;padding:5px 12px;cursor:pointer;font-size:12px;}
.restore-banner .rb-yes{background:var(--accent);color:#000;font-weight:600;}
.restore-banner .rb-no{background:#444;color:#fff;}


/* ===== Text to 3D / AI 3D 面板（忠实复刻 AframeNewEngine t3dPanel：420px 右抽屉单列）===== */
.rail-btn.ai3d-railbtn{color:#e0e0e0;}
.rail-btn.ai3d-railbtn:hover{color:#ebebeb;background:#262a30;}
.rail-btn.ai3d-railbtn.active{background:#2e2e2e;color:#fff;box-shadow:inset 2px 0 0 #a4a4a4;}

#ai3dPanel{position:fixed;top:46px;right:0;bottom:0;width:420px;max-width:94vw;z-index:960;
  background:var(--panel);border-left:1px solid var(--line);display:none;flex-direction:column;
  box-shadow:-12px 0 40px rgba(0,0,0,.45);}
#ai3dPanel.open{display:flex;}
.t3d-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;
  border-bottom:1px solid var(--line);flex:none;background:var(--panel2);}
.t3d-htitle{font-size:14px;color:var(--text);}
.t3d-htitle .t3d-3d{font-family:ui-monospace,monospace;color:#e0e0e0;}
.t3d-badge{font-size:10px;padding:2px 8px;border-radius:10px;border:1px solid var(--line);color:var(--dim);}
.t3d-hright{display:flex;align-items:center;gap:8px;}
.t3d-balance{font-size:11px;color:var(--dim);padding:3px 9px;border:1px solid var(--line);border-radius:10px;}
.t3d-close{background:none;border:none;color:var(--dim);font-size:15px;cursor:pointer;padding:3px 7px;border-radius:6px;}
.t3d-close:hover{background:#363b42;color:#fff;}

.t3d-body{flex:1;overflow-y:auto;padding:14px;}
.t3d-sectitle{font-size:14px;font-weight:600;color:var(--accent);margin-bottom:10px;}
.t3d-label{font-size:12px;color:var(--text);font-weight:500;margin:12px 0 7px;display:flex;justify-content:space-between;}
.t3d-texval{color:#fff;font-family:ui-monospace,monospace;}
.t3d-res{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.t3d-res-btn{background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:10px 4px;
  display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;color:var(--dim);
  transition:border-color .12s,background .12s;}
.t3d-res-btn .ic{font-size:18px;}
.t3d-res-btn .ai3d-res-icon{display:block;margin:2px auto 4px;}
.t3d-res-btn b{font-size:12px;color:var(--text);}
.t3d-res-btn small{font-size:10px;color:var(--dim);}
.t3d-res-btn:hover{border-color:#4a505a;}
.t3d-res-btn.active{border-color:#fff;background:#30353c;}
.t3d-hint{font-size:11px;color:var(--dim);margin-top:6px;line-height:1.5;}
.t3d-tex{width:100%;accent-color:var(--accent);}
.t3d-check{display:flex;gap:9px;align-items:flex-start;background:var(--panel2);border:1px solid var(--line);
  border-radius:7px;padding:10px;margin-top:14px;cursor:pointer;font-size:12px;color:var(--dim);line-height:1.5;}
.t3d-check input{margin-top:2px;flex:none;}
.t3d-check b{color:var(--text);}
.t3d-adv{margin-top:12px;}
.t3d-adv summary{cursor:pointer;text-align:center;font-size:12px;color:var(--dim);padding:6px;list-style:none;}
.t3d-adv summary::-webkit-details-marker{display:none;}
.t3d-adv summary:hover{color:var(--text);}
.t3d-advrow{display:flex;align-items:center;gap:8px;margin:8px 0;}
.t3d-advrow label{width:48px;font-size:11px;color:var(--dim);}
.t3d-advrow select{flex:1;background:#16181c;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:6px 8px;font-size:12px;cursor:pointer;}
.t3d-advtoggles{display:flex;gap:14px;font-size:12px;color:var(--dim);padding:4px 0;}
.t3d-advtoggles label{display:flex;align-items:center;gap:5px;cursor:pointer;}
.t3d-prompt{width:100%;margin-top:14px;background:#16181c;border:1px solid var(--line);color:var(--text);
  border-radius:7px;padding:10px;font-family:inherit;font-size:12.5px;resize:none;}
.t3d-prompt:focus{outline:none;border-color:var(--accent2);}
.t3d-actions{display:flex;gap:8px;margin-top:10px;}
.t3d-actions button{flex:1;padding:10px;justify-content:center;background:var(--panel2);border:1px solid var(--line);
  color:var(--text);border-radius:6px;cursor:pointer;font-size:12.5px;}
.t3d-actions button:hover{background:#363b42;}
.t3d-actions button.primary{background:var(--accent);border-color:var(--accent);color:#000;font-weight:600;}
.t3d-actions button.primary:hover{filter:brightness(1.08);}
.t3d-actions button:disabled{opacity:.55;cursor:default;}
.t3d-imgnote{font-size:11px;color:var(--dim);margin-top:8px;line-height:1.5;}
/* Upload Picture 后的小预览框 */
.t3d-imgprev{display:flex;align-items:center;gap:8px;margin-top:6px;}
.t3d-imgprev img{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:#0c0c0c;display:block;}
.t3d-imgclear{flex:none;width:24px;height:24px;background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:6px;cursor:pointer;font-size:12px;line-height:1;}
.t3d-imgclear:hover{color:#fff;background:#646464;border-color:#646464;}
.t3d-preview{height:240px;margin-top:12px;border:1px solid var(--line);border-radius:7px;background:#0c0c0c;
  overflow:hidden;display:flex;align-items:center;justify-content:center;}
.t3d-noprev{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--dim);}
.t3d-noprev b{font-size:42px;color:#2a2d33;font-family:ui-monospace,monospace;}
.t3d-noprev span{font-size:13px;}
.t3d-noprev small{font-size:11px;color:#555;}
.t3d-addscene{margin-top:10px;width:100%;padding:10px;background:var(--accent);border:1px solid var(--accent);
  color:#000;font-weight:600;border-radius:6px;cursor:pointer;font-size:12.5px;}
.t3d-addscene:hover{filter:brightness(1.08);}
.t3d-tabs{display:flex;gap:6px;margin-top:12px;}
.t3d-tab{background:rgba(255,255,255,.04);border:1px solid var(--line);color:var(--dim);
  border-radius:6px;padding:4px 12px;font-size:11px;cursor:pointer;}
.t3d-tab.active{background:#30353c;color:#fff;border-color:#4a505a;}
.t3d-log{margin-top:8px;background:#0c0c0c;border:1px solid var(--line);border-radius:7px;padding:8px;
  font-family:ui-monospace,monospace;font-size:10.5px;color:var(--dim);max-height:150px;overflow:auto;
  white-space:pre-wrap;line-height:1.6;}
.t3d-history{margin-top:8px;display:flex;flex-direction:column;gap:5px;}
.t3d-hist-item{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:7px 9px;
  font-size:11px;color:var(--dim);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.t3d-hist-item:hover{border-color:#4a505a;color:#fff;}
.t3d-histempty{color:var(--dim);font-size:11px;text-align:center;padding:18px;}

/* ===== AI Agent 升级批次 (2026-07-03): next-action 芯片 / 开关行 / 自愈倒计时 ===== */
.ai-chips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 2px}
.ai-chip{background:rgba(124,58,237,.10);border:1px solid rgba(124,58,237,.45);color:inherit;border-radius:14px;padding:4px 12px;font-size:12px;cursor:pointer;transition:background .15s,transform .1s}
.ai-chip:hover{background:rgba(124,58,237,.26);transform:translateY(-1px)}
.ai-chip:disabled{opacity:.45;cursor:default;transform:none}
.ai-subrow label{cursor:pointer;user-select:none;white-space:nowrap;opacity:.9}
.ai-subrow label:hover{opacity:1}
.ai-subrow input[type=checkbox]{vertical-align:-2px;margin:0 3px 0 6px;accent-color:#7c3aed}

/* ===== Ask-first questionnaire (Claude-Design style clarify drawer) ===== */
.aicq-overlay{position:fixed;inset:0;z-index:100002;background:rgba(0,0,0,.45);}
.aicq-drawer{position:fixed;top:0;right:0;bottom:0;width:min(780px,94vw);z-index:100003;background:#17181c;border-left:1px solid #2c2e34;display:flex;flex-direction:column;box-shadow:-24px 0 60px rgba(0,0,0,.5);color:#e8e8ea;font-size:13px;animation:aicq-in .22s ease;}
@keyframes aicq-in{from{transform:translateX(40px);opacity:0}to{transform:none;opacity:1}}
.aicq-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 24px;border-bottom:1px solid #2c2e34;flex:none;}
.aicq-title{font-size:19px;font-weight:700;line-height:1.3;}
.aicq-x{background:none;border:none;color:#9aa0a8;font-size:18px;cursor:pointer;line-height:1;padding:4px 6px;border-radius:6px;}
.aicq-x:hover{color:#fff;background:#26282e;}
.aicq-body{flex:1;min-height:0;overflow-y:auto;padding:18px 26px 30px;}
.aicq-analysis{color:#9aa0a8;line-height:1.55;margin-bottom:20px;font-size:12.5px;border-left:2px solid #34373d;padding-left:12px;}
.aicq-q{margin:0 0 26px;}
.aicq-qt{font-size:15px;font-weight:650;margin-bottom:2px;line-height:1.4;}
.aicq-qs{font-size:12px;color:#8a8f98;margin-bottom:10px;}
.aicq-opts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.aicq-chip{background:#1f2126;border:1px solid #34373d;color:#d7dadf;border-radius:9px;padding:9px 14px;cursor:pointer;font-size:12.5px;line-height:1;transition:border-color .12s,background .12s;}
.aicq-chip:hover{border-color:#4a4e57;}
.aicq-chip.on{background:#2a3038;border-color:#aab2ba;color:#fff;box-shadow:0 0 0 1px #aab2ba inset;}
.aicq-chip.decide{border-style:dashed;color:#b9c0c9;}
.aicq-other{background:#111317;border:1px solid #34373d;border-radius:9px;color:#dfe3e8;padding:9px 12px;font-size:12.5px;min-width:150px;flex:1 0 150px;max-width:280px;}
.aicq-other:focus{outline:none;border-color:#5a5f68;}
.aicq-ta{width:100%;background:#111317;border:1px solid #34373d;border-radius:9px;color:#dfe3e8;padding:10px 12px;font-size:12.5px;min-height:64px;resize:vertical;font-family:inherit;box-sizing:border-box;}
.aicq-ta:focus{outline:none;border-color:#5a5f68;}
.aicq-foot{display:flex;gap:10px;justify-content:flex-end;align-items:center;padding:14px 22px;border-top:1px solid #2c2e34;background:#141519;flex:none;}
.aicq-foot .hint{margin-right:auto;color:#8a8f98;font-size:12px;}

/* ===== Ask-first UI polish v2: colorful toggle label + dim unselected chips ===== */
.ai-lbl-clarify{opacity:1 !important;}
.ai-lbl-clarify span{background:linear-gradient(90deg,#a78bfa,#f472b6,#fbbf24);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700;}
.ai-lbl-clarify:hover span{background:linear-gradient(90deg,#c4b5fd,#f9a8d4,#fde68a);-webkit-background-clip:text;background-clip:text;color:transparent;}
.aicq-chip.on{background:#32294a;border-color:#b48cff;color:#fff;box-shadow:0 0 0 1px #b48cff inset;}
.aicq-chip.dim{filter:brightness(.7);}
.aicq-chip.dim:hover{filter:none;}
/* ---- AI Terminal（本机 Claude Code 桥接，右侧停靠面板；壳复用 .ai-head/.ai-body/.ai-inputbar）---- */
#aiTermPanel{position:fixed;top:46px;right:0;bottom:0;width:420px;max-width:94vw;z-index:950;
  background:var(--panel);border-left:1px solid var(--line);box-shadow:-14px 0 40px rgba(0,0,0,.45);
  display:none;flex-direction:column;overflow:hidden;}
#aiTermPanel.open{display:flex;}
#aiTermClose{margin-left:auto;background:var(--panel2);border:1px solid var(--line);color:var(--dim);width:28px;height:28px;border-radius:6px;cursor:pointer;flex:none;font-size:14px;}
#aiTermClose:hover{color:#fff;background:#3a2d2d;}
#aiTermPanel .ai-subrow{display:flex;flex-wrap:wrap;align-items:center;gap:4px;}
/* 控件区：整块换到状态行下方并纵向排列——每个 checkbox / 按钮各占一行（原来挤在一行会溢出） */
.aiterm-sub-r{flex-basis:100%;margin-left:0;margin-top:6px;display:flex;flex-direction:column;gap:6px;align-items:flex-start;}
.aiterm-sub-r label{cursor:pointer;user-select:none;white-space:nowrap;}
.aiterm-sub-r input[type=checkbox]{vertical-align:-2px;margin:0 3px 0 0;accent-color:#fff;}
.aiterm-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#666;margin-right:4px;flex:none;}
.aiterm-dot.on{background:#3fb27f;box-shadow:0 0 6px #3fb27f;}
.aiterm-dot.off{background:#b3413a;}
.aiterm-chip{font-size:11px;color:var(--dim);background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:3px 8px;align-self:flex-start;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.aiterm-chip.err{color:#f0a0a0;border-color:#5a3030;}
.aiterm-note{color:var(--dim);font-size:11px;text-align:center;padding:2px 8px;}
.aiterm-msg{max-width:92%;padding:8px 11px;border-radius:10px;font-size:12.5px;line-height:1.55;white-space:pre-wrap;word-break:break-word;}
.aiterm-msg.user{align-self:flex-end;background:#243a32;color:#dfe7e3;border:1px solid #2f5145;}
.aiterm-msg.ai{align-self:flex-start;background:var(--panel2);color:var(--text);border:1px solid var(--line);}
.aiterm-msg pre{background:#101214;border:1px solid var(--line);border-radius:6px;padding:8px;overflow-x:auto;font-size:11px;line-height:1.45;margin:6px 0 2px;white-space:pre;}
.aiterm-file{display:flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12px;color:var(--text);align-self:stretch;}
.aiterm-file button{margin-left:auto;flex:none;}
.aiterm-paircard{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:14px;font-size:12px;color:var(--text);line-height:1.7;}
.aiterm-cmdbox{display:block;background:#101214;border:1px solid var(--line);border-radius:6px;padding:8px;font-size:11px;line-height:1.5;word-break:break-all;white-space:pre-wrap;user-select:all;margin:8px 0;color:#c9d4dd;font-family:ui-monospace,monospace;}
/* ---- AI Terminal v4：附图上传/粘贴预览 + 📎引用弹层 ---- */
.aiterm-btncol{display:flex;flex-direction:column;gap:5px;flex:none;align-items:stretch;}
.aiterm-btncol>button{background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:6px;padding:5px 10px;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;}
.aiterm-btncol>button:hover{color:#fff;border-color:rgba(255,255,255,.3);}
.aiterm-attachrow{display:flex;flex-wrap:wrap;gap:6px;padding:8px 14px 0;flex:none;align-items:center;}
.aiterm-thumb{position:relative;width:88px;height:88px;flex:none;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#101214;}
.aiterm-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.aiterm-thumb button{position:absolute;top:0;right:0;width:15px;height:15px;line-height:13px;font-size:11px;text-align:center;padding:0;border:none;border-radius:0 0 0 6px;background:rgba(0,0,0,.65);color:#fff;cursor:pointer;}
.aiterm-citechip{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text);background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:3px 6px 3px 8px;max-width:190px;}
.aiterm-citechip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.aiterm-citechip button{border:none;background:none;color:var(--dim);cursor:pointer;font-size:12px;padding:0 2px;}
.aiterm-citechip button:hover{color:#fff;}
.aiterm-pop{position:absolute;left:10px;right:10px;bottom:120px;z-index:5;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 -8px 30px rgba(0,0,0,.5);display:flex;flex-direction:column;max-height:340px;}
.aiterm-pop-head{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:12px;color:var(--text);border-bottom:1px solid var(--line);flex:none;font-weight:600;}
.aiterm-pop-head button{background:none;border:none;color:var(--dim);cursor:pointer;font-size:13px;}
.aiterm-pop-head button:hover{color:#fff;}
.aiterm-pop-body{flex:1;min-height:0;overflow-y:auto;padding:6px 8px;}
.aiterm-pop-sec{font-size:11px;color:#7cc5ae;padding:8px 6px 3px;font-weight:600;}
.aiterm-pop-row{display:flex;align-items:center;gap:7px;padding:4px 6px;border-radius:6px;cursor:pointer;font-size:12px;color:var(--text);}
.aiterm-pop-row:hover{background:var(--panel2);}
.aiterm-pop-row input{accent-color:#7c3aed;flex:none;margin:0;}
.aiterm-pop-row .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.aiterm-pop-row .s{margin-left:auto;color:var(--dim);font-size:10.5px;flex:none;max-width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.aiterm-pop-foot{display:flex;gap:8px;justify-content:flex-end;padding:8px 12px;border-top:1px solid var(--line);flex:none;}
/* ---- AI Terminal v5：引用全屏网格弹窗（对标 Compress Models）---- */
.aiterm-cite-ov{position:fixed;inset:0;z-index:100001;background:rgba(0,0,0,.62);display:flex;align-items:center;justify-content:center;padding:3vh 3vw;}
.aiterm-cite-modal{width:min(1180px,94vw);height:min(88vh,900px);background:var(--panel,#1d2025);border:1px solid var(--line);border-radius:14px;box-shadow:0 20px 70px rgba(0,0,0,.6);display:flex;flex-direction:column;overflow:hidden;}
.aiterm-cite-head{display:flex;align-items:center;gap:14px;padding:14px 18px;border-bottom:1px solid var(--line);flex:none;flex-wrap:wrap;}
.aiterm-cite-head>b{font-size:15px;color:var(--text);white-space:nowrap;}
.aiterm-cite-tabs{display:flex;gap:6px;flex-wrap:wrap;flex:1;min-width:0;}
.aiterm-cite-tab{background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:16px;padding:4px 12px;font-size:12px;cursor:pointer;white-space:nowrap;}
.aiterm-cite-tab:hover{color:#fff;}
.aiterm-cite-tab.on{background:#243a32;color:#fff;border-color:#3fb27f;}
.aiterm-cite-hacts{display:flex;gap:8px;flex:none;}
.aiterm-cite-hacts button{background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:7px;padding:5px 11px;font-size:12px;cursor:pointer;}
.aiterm-cite-hacts button:hover{color:#fff;border-color:rgba(255,255,255,.3);}
.aiterm-cite-grid{flex:1;min-height:0;overflow-y:auto;padding:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));grid-auto-rows:max-content;gap:14px;align-content:start;}
.aiterm-cite-empty{grid-column:1/-1;color:var(--dim);font-size:13px;text-align:center;padding:60px 8px;}
.aiterm-cite-card{border:2px solid transparent;border-radius:10px;background:var(--panel2);cursor:pointer;overflow:hidden;transition:border-color .12s;}
.aiterm-cite-card:hover{border-color:rgba(255,255,255,.18);}
.aiterm-cite-card.on{border-color:#7c3aed;}
.cite-thumb{position:relative;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;background:#fff;overflow:hidden;}
.cite-thumb img{width:100%;height:100%;object-fit:contain;display:block;}
.cite-thumb .cite-emoji{font-size:52px;line-height:1;}
.cite-check{position:absolute;top:8px;right:8px;width:22px;height:22px;border-radius:50%;background:rgba(20,22,26,.5);border:2px solid rgba(255,255,255,.6);color:transparent;font-size:13px;line-height:19px;text-align:center;}
.aiterm-cite-card.on .cite-check{background:#7c3aed;border-color:#7c3aed;color:#fff;}
.cite-name{padding:8px 10px 0;font-size:12.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cite-sub{padding:2px 10px 10px;font-size:10.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.aiterm-cite-foot{display:flex;align-items:center;gap:12px;padding:12px 18px;border-top:1px solid var(--line);flex:none;}
.aiterm-cite-foot #citeSel{font-size:12px;color:var(--dim);margin-right:auto;}

.aiterm-imgrow{display:flex;gap:6px;flex-wrap:wrap;align-self:flex-start;max-width:100%;}
.aiterm-imgrow img{width:88px;height:88px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block;cursor:zoom-in;}
.aiterm-lightbox{position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.82);display:flex;align-items:center;justify-content:center;cursor:zoom-out;}
.aiterm-lightbox img{max-width:92vw;max-height:92vh;border-radius:10px;box-shadow:0 8px 40px rgba(0,0,0,.6);}

/* 打字机流式光标 (2026-07-12) */
.aiterm-caret{display:inline-block;width:7px;height:13px;margin-left:2px;background:#55bb99;vertical-align:-2px;animation:aitermBlink .8s steps(1) infinite;}
@keyframes aitermBlink{50%{opacity:0}}

/* ── 顶栏 credits 徽标 + 充值弹窗（2026-07-17，参照 NewEngine）── */
.tb-credits{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;color:var(--dim);background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:6px 10px;cursor:pointer;white-space:nowrap;margin-left:2px;transition:color .2s,border-color .2s;}
.tb-credits.warn{color:#eab308;border-color:rgba(234,179,8,.45);}
.tb-credits.low{color:#ef4444;border-color:rgba(239,68,68,.5);}
.tu-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:none;align-items:center;justify-content:center;z-index:1300;padding:24px;}
.tu-overlay.open{display:flex;}
.tu-window{width:min(560px,94vw);max-height:88vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 24px 70px rgba(0,0,0,.6);}
.tu-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);}
.tu-head b{font-size:14px;color:var(--text);}
.tu-head .tu-x{background:none;border:0;color:var(--dim);font-size:17px;cursor:pointer;line-height:1;padding:0 4px;}
.tu-body{padding:18px;}
.tu-sub{font-size:12.5px;color:var(--dim);margin-bottom:14px;}
.tu-tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:12px;}
.tu-tier{display:flex;flex-direction:column;align-items:flex-start;gap:4px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:14px 16px;color:var(--text);cursor:pointer;font-family:inherit;transition:border-color .15s,transform .15s;}
.tu-tier:hover{border-color:var(--accent2);transform:translateY(-2px);}
.tu-tier b{font-size:20px;font-weight:700;}
.tu-tier span{font-size:12px;color:var(--dim);}
.tu-tier[disabled]{opacity:.5;pointer-events:none;}
.tu-custom{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;}
.tu-field{display:flex;align-items:center;gap:6px;flex:1 1 180px;min-width:150px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:8px 12px;}
.tu-field:focus-within{border-color:var(--accent2);}
.tu-field .tu-pound{font-weight:700;font-size:16px;color:var(--dim);}
.tu-field input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--text);font-size:14px;font-family:inherit;}
.tu-field input::-webkit-outer-spin-button,.tu-field input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.tu-hint{font-size:12px;color:var(--dim);}
.tu-note{font-size:11.5px;color:var(--dim);margin-top:14px;line-height:1.5;}
.tu-cnbtn{display:block;width:100%;margin-top:16px;background:#1aad19;border:none;border-radius:10px;color:#fff;font-size:15px;font-weight:700;padding:12px;cursor:pointer;font-family:inherit;transition:filter .15s;}
.tu-cnbtn:hover{filter:brightness(1.08);}
.tu-cnnote{font-size:11.5px;color:var(--dim);margin-top:8px;text-align:center;}

/* ── 录制 & 截图（2026-07-17）── */
.tb-btn.recording{background:#e5484d !important;border-color:#e5484d !important;color:#fff !important;animation:recPulse 1.4s ease-in-out infinite;}
@keyframes recPulse{50%{box-shadow:0 0 0 3px rgba(229,72,77,.35);}}
.rec-dot{color:#e5484d;font-size:10px;vertical-align:1px;}
.tb-btn.recording .rec-dot,.rec-start.on .rec-dot{color:#fff;}
.rec-panel{position:fixed;top:48px;right:8px;width:344px;max-height:74vh;z-index:1250;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 18px 50px rgba(0,0,0,.55);display:none;flex-direction:column;overflow:hidden;}
.rec-panel.open{display:flex;}
.rec-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--line);}
.rec-head b{font-size:13px;color:var(--text);}
.rec-x{background:none;border:0;color:var(--dim);font-size:16px;cursor:pointer;line-height:1;padding:0 2px;}
.rec-actions{display:flex;gap:8px;padding:12px 14px 4px;}
.rec-actions button{flex:1;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:9px 6px;font-size:12.5px;cursor:pointer;font-family:inherit;transition:border-color .15s,background .15s;}
.rec-actions button:hover{border-color:var(--accent2);}
.rec-start.on{background:#e5484d;border-color:#e5484d;color:#fff;}
.rec-hint{font-size:11px;color:var(--dim);padding:6px 14px 10px;line-height:1.55;}
.rec-hint b{color:var(--text);}
.rec-list{flex:1;min-height:60px;overflow:auto;padding:6px 10px 12px;display:flex;flex-direction:column;gap:6px;}
.rec-empty{color:var(--dim);text-align:center;font-size:12px;padding:26px 0;}
.rec-item{display:flex;align-items:center;gap:7px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:6px 8px;}
.rec-ico{font-size:15px;cursor:pointer;flex-shrink:0;line-height:1;}
.rec-name{flex:1;min-width:0;background:transparent;border:1px solid transparent;border-radius:5px;color:var(--text);font-size:12px;padding:3px 5px;font-family:inherit;}
.rec-name:hover{border-color:var(--line);}
.rec-name:focus{outline:none;border-color:var(--accent2);background:var(--bg);}
.rec-size{font-size:10.5px;color:var(--dim);flex-shrink:0;font-variant-numeric:tabular-nums;}
.rec-dl,.rec-del{background:none;border:0;color:var(--dim);cursor:pointer;font-size:13px;padding:2px 3px;flex-shrink:0;border-radius:4px;line-height:1;}
.rec-dl:hover{color:#7ec699;}
.rec-del:hover{color:#e5675b;}
.rec-countdown{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;font-size:clamp(90px,22vw,240px);font-weight:800;color:#fff;text-shadow:0 6px 30px rgba(0,0,0,.6);pointer-events:none;font-family:var(--font,inherit);}
@keyframes recCd{0%{transform:scale(.4);opacity:0;}30%{transform:scale(1);opacity:1;}100%{transform:scale(1.25);opacity:0;}}
.rec-flash{position:fixed;inset:0;z-index:100001;background:#fff;pointer-events:none;animation:recFlash .4s ease;}
@keyframes recFlash{0%{opacity:.85;}100%{opacity:0;}}
.rec-toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:100002;background:#1b1d21;border:1px solid var(--line);color:var(--text);padding:9px 16px;border-radius:8px;font-size:12.5px;box-shadow:0 8px 30px rgba(0,0,0,.5);}
