/* ===== 科普内容采集系统 · 浅蓝主题（主色不超过3种：#3B82F6 主蓝 / #EAF3FD 浅蓝 / #1F3A5F 深蓝文字） ===== */
:root{
  --primary:#3B82F6;   /* 主蓝 */
  --primary2:#6AA5FF;  /* 主蓝浅 */
  --light:#EAF3FD;     /* 浅蓝强调 */
  --bg:#F2F7FE;        /* 页面浅蓝背景 */
  --panel:#FFFFFF;     /* 白色卡片 */
  --line:#DCE9F9;      /* 浅边框 */
  --text:#1F3A5F;      /* 深蓝文字 */
  --text2:#6B8CB0;     /* 次要文字 */
  --radius:14px;
  --shadow:0 6px 24px rgba(59,130,246,.10);
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:"PingFang SC","Microsoft YaHei",system-ui;background:linear-gradient(160deg,#F7FBFF 0%,var(--bg) 55%,#EDF5FD 100%);color:var(--text);font-size:14px;min-height:100vh}
#app{display:flex;min-height:100vh}

/* ---------- 侧边栏 ---------- */
.side{width:232px;background:var(--panel);border-right:1px solid var(--line);padding:22px 14px;display:flex;flex-direction:column;position:fixed;top:0;bottom:0;z-index:50;box-shadow:2px 0 18px rgba(59,130,246,.06)}
.brand{display:flex;align-items:center;gap:12px;padding:0 8px 20px;border-bottom:1px solid var(--line)}
.brand-mark{width:44px;height:44px;border-radius:13px;background:linear-gradient(135deg,#3B82F6,#7FB5FF);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(59,130,246,.35)}
.brand b{display:block;font-size:16px;color:var(--text);font-weight:700}
.brand span{font-size:11px;color:var(--text2)}
.nav-item{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:11px;color:var(--text2);text-decoration:none;margin-bottom:3px;transition:.18s;font-size:14px;position:relative;font-weight:500}
.nav-item .ic{width:22px;text-align:center;font-size:13px}
.nav-item:hover{background:var(--light);color:var(--primary)}
.nav-item.active{background:var(--light);color:var(--primary);font-weight:700}
.nav-item.active::before{content:"";position:absolute;left:0;top:22%;bottom:22%;width:3px;border-radius:3px;background:var(--primary)}
.side-foot{padding:14px 10px;font-size:11px;color:var(--text2);border-top:1px solid var(--line);display:flex;align-items:center;gap:8px;margin-top:auto}
.pulse{width:8px;height:8px;border-radius:50%;background:var(--primary);box-shadow:0 0 8px rgba(59,130,246,.6);animation:pulse 1.6s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}

/* ---------- 主区（自适应，无固定宽度上限） ---------- */
.main{margin-left:232px;flex:1;padding:24px 28px;width:calc(100vw - 232px);min-width:0}
.view{display:none}
.view.active{display:block;animation:fade .25s}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.view-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:14px;flex-wrap:wrap}
.head-actions{display:flex;align-items:center;gap:10px;flex-wrap:nowrap;flex-shrink:0}
.dash-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}
.dash-grid-2 .panel{display:flex;flex-direction:column;min-height:260px}
.dash-grid-2 #trendChart,.dash-grid-2 #recentTasks,.dash-grid-2 #repTrend,.dash-grid-2 #repTop{flex:1}
.dash-grid-2 #repTrend,.dash-grid-2 #repTop{min-height:260px}
#recentTasks{overflow-y:auto;max-height:240px}
#trendChart{min-height:240px}
@media (max-width:1100px){.dash-grid-2{grid-template-columns:1fr}}
.view-head h1{font-size:22px;color:var(--text);font-weight:700}
.sub{color:var(--text2);font-size:12px;margin-top:4px}
h3{font-size:15px;margin-bottom:14px;color:var(--text)}
.note{color:var(--text2);font-size:12px;margin-bottom:14px;line-height:1.7;background:var(--light);border-radius:10px;padding:12px 14px}

/* ---------- 面板 / 卡片 ---------- */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:18px;box-shadow:var(--shadow)}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;position:relative;overflow:hidden;box-shadow:var(--shadow)}
.stat::after{content:"";position:absolute;right:-26px;top:-26px;width:84px;height:84px;border-radius:50%;background:radial-gradient(circle,rgba(59,130,246,.18),transparent 70%)}
.stat .num{font-size:30px;font-weight:700;color:var(--primary)}
.stat .lbl{color:var(--text2);font-size:12px;margin-top:6px}
.stat .glow{position:absolute;left:0;top:0;height:3px;width:100%;background:linear-gradient(90deg,var(--primary),var(--primary2))}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:13px;cursor:pointer;transition:.16s;font-weight:500;white-space:nowrap}
.btn:hover{border-color:var(--primary);color:var(--primary)}
.btn.primary{background:linear-gradient(135deg,#3B82F6,#6AA5FF);border:none;color:#fff;font-weight:600;box-shadow:0 4px 14px rgba(59,130,246,.28)}
.btn.primary:hover{box-shadow:0 8px 22px rgba(59,130,246,.4);transform:translateY(-1px);color:#fff}
.btn.ghost{background:transparent;border-color:var(--line)}
.btn.danger{color:#E25C5C;border-color:#F3D6D6}
.btn.danger:hover{background:#FDF1F1;border-color:#E25C5C;color:#E25C5C}
.btn.sm{padding:6px 12px;font-size:12px;border-radius:8px}
.btn.mini{padding:6px 10px;font-size:12px;border-radius:7px}
.btn.big-tiny{padding:6px 10px;font-size:12px}

/* ---------- 快捷入口 ---------- */
.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.quick{text-align:left;padding:18px;border-radius:12px;border:1px solid var(--line);background:linear-gradient(150deg,#F8FBFF,var(--light));cursor:pointer;transition:.18s;color:var(--text)}
.quick:hover{border-color:var(--primary);box-shadow:0 6px 18px rgba(59,130,246,.14);transform:translateY(-2px)}
.quick b{display:block;font-size:14px;color:var(--primary);margin-bottom:6px}
.quick span{font-size:12px;color:var(--text2)}

/* ---------- 表单 ---------- */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:flex;flex-direction:column;gap:6px}
.field.span2{grid-column:span 2}
.field label{font-size:12px;color:var(--text2);font-weight:500}
.field input,.field select,.field textarea{padding:9px 12px;border:1px solid var(--line);border-radius:9px;font-size:13px;background:#FBFDFF;color:var(--text);outline:none;transition:.15s}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(59,130,246,.12)}
.inline-form{display:flex;gap:10px;align-items:center;margin-bottom:12px}
.inline-form input{flex:1;padding:9px 12px;border:1px solid var(--line);border-radius:9px;font-size:13px;background:#FBFDFF}

/* ---------- 筛选条 ---------- */
.filter-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:var(--shadow)}
.filter-bar select,.filter-bar input{padding:8px 12px;border:1px solid var(--line);border-radius:9px;font-size:13px;background:#FBFDFF;color:var(--text);outline:none}
.filter-bar select:focus,.filter-bar input:focus{border-color:var(--primary)}

/* ---------- 标签选项卡 ---------- */
.tabs{display:flex;gap:6px;margin-bottom:18px;flex-wrap:wrap}
.tab{padding:9px 18px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--text2);cursor:pointer;font-size:13px;font-weight:500;transition:.15s}
.tab.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 4px 12px rgba(59,130,246,.28)}
.tab-pane{display:none}
.tab-pane.active{display:block;animation:fade .2s}

/* ---------- 首页最近任务完成率进度条 ---------- */
.list-item .tc-bar{height:6px;border-radius:6px;background:var(--light);margin-top:8px;overflow:hidden}
.list-item .tc-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--primary),var(--primary2));border-radius:6px;transition:.3s}

/* ---------- 固定高度文本域 ---------- */
.fixed-150{height:150px!important;resize:none!important}
.fixed-200{height:200px!important;resize:none!important}
.ai-row{display:flex;justify-content:flex-end;margin-top:6px}
.cover-row{display:flex;gap:6px;align-items:center}
.cover-row input{flex:1}
.cover-preview{width:84px;height:84px;object-fit:cover;border-radius:10px;border:1px solid var(--line);margin-top:8px}
.api-pre{background:#F7FAFE;border:1px solid var(--line);border-radius:10px;padding:14px;font-size:12px;overflow:auto;margin:12px 0}

/* AI 生成中：输入框变灰 + 流光动画 */
.ai-loading{background:linear-gradient(90deg,#EFF4FB 25%,#E0EBFA 50%,#EFF4FB 75%)!important;background-size:200% 100%!important;animation:aiShimmer 1.2s linear infinite!important;color:#8FA9C9!important}
@keyframes aiShimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* wangEditor 全屏不被顶部标题栏遮挡 */
.w-e-full-screen-container{z-index:10000!important}

/* 内容弹窗深色整页主题 */
.modal-box.page-dark{background:#16294A;border:1px solid #2A4268}
.modal-box.page-dark .modal-head{border-bottom-color:#2A4268}
.modal-box.page-dark .modal-head h3{color:#EAF3FD}
.modal-box.page-dark .modal-body{color:#DCE9F9}
.modal-box.page-dark label{color:#8FA9C9}
.modal-box.page-dark .field input,.modal-box.page-dark .field select,.modal-box.page-dark .field textarea{background:#1A2C4E;border-color:#2A4268;color:#EAF3FD}
.modal-box.page-dark .tag-edit{background:#1A2C4E;border-color:#2A4268}
.modal-box.page-dark .tag-edit h4{color:#EAF3FD}
.modal-box.page-dark .sel-search .sel-box,.modal-box.page-dark .sel-search .sel-drop{background:#1A2C4E;border-color:#2A4268;color:#EAF3FD}
.modal-box.page-dark .sel-drop .sel-opt{color:#EAF3FD}
.modal-box.page-dark .sel-drop .sel-opt:hover{background:#24406B}

/* ---------- 内容列表（多列区） ---------- */
#contentList{overflow-x:auto}
.c-table{width:100%;display:block;min-width:1060px}
.c-table tbody{width:100%;display:block}
.c-table tr{display:flex;align-items:stretch;height:150px;margin-bottom:10px;width:100%}
.c-table td{background:var(--panel);border:1px solid var(--line);padding:8px 10px;vertical-align:top;height:150px;flex:none;min-width:0;overflow:hidden}
.c-table td:nth-child(1){width:130px}
.c-table td:nth-child(2){flex:1 1 auto;width:auto;min-width:0}
.c-table td:nth-child(3){width:200px}
.c-table td:nth-child(4){width:200px}
.c-table td:nth-child(5){width:200px}
.c-table td:nth-child(6){width:200px}
.c-table td:nth-child(7){width:90px}
.c-table td>*{max-height:134px;overflow:hidden}
.c-table td + td{border-left:none}
.c-table tr td:first-child{border-radius:12px 0 0 12px}
.c-table tr td:last-child{border-radius:0 12px 12px 0}
.cc-cover{width:110px;height:130px;border-radius:10px;object-fit:cover;border:1px solid var(--line);display:block;cursor:zoom-in}
.cc-coverwrap{display:inline-block;line-height:0}
.cc-cover.ph{display:flex;align-items:center;justify-content:center;background:var(--light);color:var(--text2);font-size:10px;width:110px;height:130px;border-radius:10px}
/* 标签列：最多4行，每行2-3个，超限截断显示 .... */
.cc-tags{display:flex;flex-wrap:wrap;gap:4px;width:100%;max-height:104px;overflow:hidden;align-content:flex-start}
.cc-tags .badge{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 媒体区：查看图片/视频封面卡并排、高度适中 */
.media-cards{display:flex;flex-wrap:wrap;gap:6px;align-content:space-between;height:100%}
.cc-srcarea,.media-cards,.btn-col{height:100%}
.media-card{width:calc(50% - 3px);display:flex;flex-direction:column;align-items:center;gap:3px;background:var(--light);border:1px solid var(--line);border-radius:10px;padding:6px 4px;cursor:pointer;transition:.2s}
.media-card:hover{border-color:var(--primary)}
.media-card img{width:100%;height:52px;object-fit:cover;border-radius:8px}
.media-card span{font-size:10px;color:var(--text2)}
.mc-btns{display:flex;gap:4px;width:100%;margin-top:auto}
.mc-btns .btn{flex:1;font-size:11px;padding:6px 4px;min-height:30px;justify-content:center}
.ct2-title{font-size:13px;font-weight:600;color:var(--text);line-height:1.45;margin-bottom:5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ct2-desc{font-size:12px;color:var(--text2);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ct2-meta{font-size:11px;color:var(--text2);margin-top:6px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ct2-idline{display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden}
.ct2-id{color:var(--primary);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1}
.cc-date{color:var(--text2);flex-shrink:0}
.cc-tags{display:flex;flex-wrap:wrap;gap:4px;width:100%}
.cc-tags .more-dot{color:var(--text2);font-size:12px}
/* 第5列：标识在内容前方水平排布，来源与预览用分隔线隔开 */
.cc-srcarea{display:flex;flex-direction:column;height:100%}
.cc-srcarea .cc-zone{flex:1;margin-bottom:0}
.cc-zone{display:flex;align-items:stretch;gap:6px}
.cc-zone:last-child{margin-bottom:0}
.cc-zone-label{writing-mode:vertical-rl;letter-spacing:2px;display:flex;align-items:center;justify-content:center;background:var(--light);color:var(--text2);font-size:10px;border-radius:6px;padding:0 5px;flex-shrink:0}
.cc-divider{height:1px;background:var(--line);margin:7px 0}
.cc-src{flex:1;font-size:12px;color:var(--text2);line-height:1.6;min-width:0;display:flex;flex-direction:column;gap:2px}
.cc-src a{display:block;color:var(--primary);text-decoration:none;word-break:break-all;line-height:1.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.cc-date{color:var(--text2)}
.cc-data{font-size:11px;color:var(--text);line-height:2}
.cc-data .dv{font-weight:600;color:var(--primary)}
.cc-data .dl{color:var(--text2);margin-left:4px}
.cc-data .dr{background:var(--light);border:1px solid var(--line);border-radius:10px;padding:8px;cursor:pointer;display:grid;grid-template-columns:1fr 1fr;gap:6px}
.cc-data .dr:hover{border-color:var(--primary)}
.cc-data .dc{background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 4px;text-align:center;line-height:1.5}
.cc-data .dc .dv{display:block;font-weight:700;color:var(--primary);font-size:14px}
.cc-data .dc .dl{display:block;color:var(--text2);font-size:10px;margin-left:0}
.btn-col{display:flex;flex-direction:column;gap:4px;height:100%;justify-content:flex-end}
.btn-col .bc-row{display:flex;gap:6px}
.btn-col .btn{flex:0 0 auto;justify-content:center;padding:6px 4px;font-size:11px;border-radius:7px;min-height:30px}
.cc-zone .bc-row{display:flex;gap:4px;flex-wrap:nowrap;height:100%;align-items:stretch}
.cc-zone .bc-row .btn{flex:none;width:40px;white-space:nowrap;padding:6px 2px;font-size:11px;height:100%;min-height:30px;min-width:0;justify-content:center;align-items:center}
.btn.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}
.btn.tiny{padding:3px 6px;font-size:11px}

/* ---------- 内容列表 ---------- */
.content-row{display:flex;align-items:center;gap:14px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:12px;box-shadow:var(--shadow)}
.content-cover{width:64px;height:64px;border-radius:10px;object-fit:cover;border:1px solid var(--line);flex-shrink:0;background:var(--light)}
.content-cover.placeholder{display:flex;align-items:center;justify-content:center;color:var(--text2);font-size:11px}
.content-main{flex:1;min-width:0}
.content-main .ct-title{font-size:14px;font-weight:600;color:var(--text);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.content-main .ct-desc{font-size:12px;color:var(--text2);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.content-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;flex-shrink:0}
.content-tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:20px;font-size:11px;background:var(--light);color:var(--primary);border:1px solid #D4E7FE}
.badge.blue{background:var(--light);color:var(--primary)}
.badge.green{background:#E7F8EF;color:#2E9E63;border-color:#CDEDDB}
.badge.red{background:#FDF1F1;color:#E25C5C;border-color:#F3D6D6}
.badge.gray{background:#F2F5F9;color:var(--text2);border-color:var(--line)}

/* ---------- 任务卡片 ---------- */
.task-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 18px;margin-bottom:12px;box-shadow:var(--shadow)}
.task-card .tc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.task-card .tc-name{font-size:14px;font-weight:600}
.task-card .tc-meta{font-size:12px;color:var(--text2);line-height:1.8}
.task-card .tc-bar{height:6px;border-radius:6px;background:var(--light);margin-top:10px;overflow:hidden}
.task-card .tc-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--primary),var(--primary2));border-radius:6px;transition:.3s}

/* ---------- 标签选择器 ---------- */
.tag-edit{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#FBFDFF;margin-top:12px}
.tag-edit h4{font-size:13px;color:var(--text);margin-bottom:10px}
.tag-group{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;align-items:center}
.tag-group .tg-label{font-size:12px;color:var(--text2);min-width:70px;font-weight:500}
.tag-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:20px;border:1px solid var(--line);background:#fff;color:var(--text2);font-size:12px;cursor:pointer;transition:.13s}
.tag-chip:hover{border-color:var(--primary);color:var(--primary)}
.tag-chip.sel{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 2px 8px rgba(59,130,246,.3)}
.tag-chip.remove{background:#FDF1F1;color:#E25C5C;border-color:#F3D6D6;text-decoration:line-through}
.tag-edit .cat-label{font-size:12px;color:var(--primary);font-weight:600;margin:10px 0 6px}
.tag-edit .cat-label:first-child{margin-top:0}

/* ---------- 下拉搜索多选 ---------- */
.sel-search{position:relative;min-width:200px}
.sel-search .sel-box{padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;cursor:pointer;font-size:13px;color:var(--text2);display:flex;align-items:center;justify-content:space-between}
.sel-search .sel-box:hover{border-color:var(--primary)}
.sel-search .sel-drop{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(59,130,246,.16);z-index:60;max-height:260px;overflow:auto;display:none}
.sel-search.open .sel-drop{display:block}
.sel-drop .sel-search-input{width:100%;padding:9px 12px;border:none;border-bottom:1px solid var(--line);outline:none;font-size:13px;position:sticky;top:0;background:#fff}
.sel-drop .sel-opt{padding:8px 12px;font-size:13px;cursor:pointer;color:var(--text);display:flex;align-items:center;gap:8px}
.sel-drop .sel-opt:hover{background:var(--light)}
.sel-drop .sel-opt.sel{color:var(--primary);font-weight:600;background:var(--light)}
.sel-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}

/* ---------- 弹窗 ---------- */
.modal{display:none;position:fixed;inset:0;background:rgba(31,58,95,.35);backdrop-filter:blur(3px);z-index:100;align-items:flex-start;justify-content:center;padding:4vh 20px;overflow:auto}
.modal.show{display:flex}
.modal-box{background:var(--panel);border-radius:16px;width:560px;max-width:100%;box-shadow:0 24px 60px rgba(31,58,95,.3);animation:pop .22s}
.modal-box.wide{width:720px}
.modal-box.xwide{width:920px}
@keyframes pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}
.modal-head h3{font-size:16px;margin:0}
.modal-body{padding:20px 22px}
.close{border:none;background:none;font-size:22px;color:var(--text2);cursor:pointer;line-height:1}
.close:hover{color:var(--text)}
.editor-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}

/* ---------- 表格 ---------- */
table.tbl{width:100%;border-collapse:collapse;background:var(--panel);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}
table.tbl th,table.tbl td{padding:11px 14px;text-align:left;font-size:13px;border-bottom:1px solid var(--line)}
table.tbl th{background:var(--light);color:var(--primary);font-weight:600;font-size:12px}
table.tbl tr:hover td{background:#FAFDFF}
table.tbl .ops{display:flex;gap:6px}

/* ---------- 分页 / 列表 ---------- */
.pager{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:16px;flex-wrap:wrap}
.pager span{color:var(--text2);font-size:13px}
.list-item{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.list-item .li-main{flex:1;min-width:0}
.list-item .li-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:4px}
.list-item .li-sub{font-size:12px;color:var(--text2)}

/* ---------- 日志 ---------- */
.log-item{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:8px;font-size:12px;color:var(--text)}
.log-item .lg-time{color:var(--text2);margin-right:10px}

/* ---------- 通用 ---------- */
.muted{color:var(--text2)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#C9DEF8;border-radius:8px}
::-webkit-scrollbar-track{background:transparent}

/* ---------- 模板卡片 ---------- */
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.tpl-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px;transition:.18s}
.tpl-card:hover{border-color:var(--primary);transform:translateY(-2px)}
.tpl-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.tpl-name{font-weight:600;font-size:14px;color:var(--text)}
.tpl-actions{display:flex;gap:6px;flex-wrap:wrap}

/* ---------- AI 生成覆盖层 ---------- */
.ai-overlay{display:flex;align-items:center;justify-content:center;gap:8px;background:rgba(240,246,253,.92);border:1px dashed var(--primary);border-radius:8px;font-size:12px;color:var(--primary);font-weight:500;backdrop-filter:blur(2px)}
.ai-spin{width:14px;height:14px;border:2px solid #C9DEF8;border-top-color:var(--primary);border-radius:50%;animation:aiRotate .8s linear infinite}
@keyframes aiRotate{to{transform:rotate(360deg)}}

/* ---------- 编辑页多来源输入 ---------- */
.src-row{display:flex;gap:6px;margin-bottom:6px;align-items:center}
.src-row input{flex:1;min-width:0;padding:8px 12px;border:1px solid var(--line);border-radius:8px;font-size:13px}
.src-row .src-name{max-width:240px}
