/* Telink 社区门户样式（telink_v2 专用，不影响论坛 telink 模板） */
/* ===== 语义变量层：浅色默认值 = 历史硬编码，深色在文件尾部统一重定义；新增板块一律用 var(--cm-*) ===== */
:root{
	--cm-card:#fff;/* 卡片/输入框底 */
	--cm-subcard:#f7f9fc;/* 次级卡片/按钮/胶囊底 */
	--cm-disable:#fafbfc;/* 禁用态底 */
	--cm-tint:#f0f5ff;/* 浅蓝强调底（封面/头像占位） */
	--cm-tint2:#e6eefb;/* 课程封面底 */
	--cm-tint4:#e4ecf7;/* 进度槽/序号圆底 */
	--cm-tint5:#eaf1ff;/* 角标底 */
	--cm-grad-a:#eef3fb;/* 占位封面渐变起 */
	--cm-grad-b:#dfe9f7;/* 占位封面渐变止 */
	--cm-scroll:#e2e8f2;/* 滚动条 */
	--cm-line:#f0f0f0;/* 分隔线 */
	--cm-bd:#eef1f6;/* 常规边框/图标垫底 */
	--cm-bd2:#e5eaf2;/* 次级边框 */
	--cm-bd3:#d9dee7;/* 输入框边框 */
	--cm-brandline:#cfe0ff;/* 品牌悬停边框 */
	--cm-t1:#222;--cm-t2:#333;--cm-t3:#555;--cm-t4:#666;--cm-t5:#777;--cm-t6:#888;--cm-t7:#999;
	--cm-faint:#bbb;
	--cm-statnum:#5a6472;--cm-statlabel:#9aa3af;
	--cm-brand:#0066ff;--cm-brandh:#0052d6;--cm-brand2:#4d94ff;--cm-brandtext:#1a5fd0;
	--cm-deep:#0d2b73;--cm-cvrtext:#7a9cc9;--cm-badgeend:#b9c0cc;--cm-warn:#ff7d00;
	--cm-ok:#00a870;--cm-okh:#008a5e;--cm-oktext:#0a7a4a;--cm-okbg:#eefaf4;
	--cm-danger:#d23f3f;--cm-dangerline:#ff7d7d;--cm-errtext:#c0392b;--cm-errbg:#fdf0ef;
	--cm-noticebg:#eef5ff;
	--cm-hlbg:#fff3e0;/* 搜索关键词高亮底 */
}
.community-wrap{max-width:1200px;margin:0 auto;padding:20px 0 10px;}
.cm-notice{background:var(--cm-noticebg);border:1px solid var(--cm-brandline);color:var(--cm-brandtext);border-radius:8px;padding:10px 16px;margin-bottom:18px;font-size:14px;}
/* Banner */
.cm-banner{position:relative;overflow:hidden;border-radius:10px;margin-bottom:22px;}
.cm-banner-track{display:flex;transition:transform .5s ease;}
.cm-banner-track.cm-banner-jump{transition:none;}
.cm-banner-slide{position:relative;flex:0 0 100%;display:block;}
.cm-banner-slide img{width:100%;height:200px;object-fit:cover;display:block;}
/* 左下局部渐变遮罩：任意背景图下保证白字可读（左深右透明，不遮主体） */
.cm-banner-slide::after{content:'';position:absolute;left:0;top:0;bottom:0;width:62%;background:linear-gradient(90deg,rgba(15,23,42,.66) 0%,rgba(15,23,42,.34) 45%,rgba(15,23,42,0) 100%);pointer-events:none;}
.cm-banner-text{position:absolute;left:72px;bottom:24px;z-index:2;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.45);}
.cm-banner-text h2{font-size:24px;margin:0 0 6px;font-weight:700;}
.cm-banner-text p{font-size:14px;margin:0;opacity:.95;font-weight:600;}
.cm-banner-dots{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);display:flex;gap:8px;}
.cm-banner-dots span{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.55);cursor:pointer;}
.cm-banner-dots span.on{background:var(--cm-card);}
.cm-banner-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:6;width:40px;height:40px;border:0;border-radius:50%;background:rgba(0,0,0,.35);color:#fff;cursor:pointer;opacity:.75;transition:opacity .2s,background .2s;display:flex;align-items:center;justify-content:center;}
.cm-banner-arrow:hover{opacity:1;background:rgba(0,0,0,.55);}
.cm-banner-arrow::before{content:'';width:10px;height:10px;border-top:2px solid #fff;border-left:2px solid #fff;transform:rotate(-45deg);}
.cm-banner-prev{left:16px;}
.cm-banner-next{right:16px;}
.cm-banner-next::before{transform:rotate(135deg);}
/* 区块 */
.cm-section{margin-bottom:26px;background:var(--cm-card);border:1px solid var(--cm-line);border-radius:10px;padding:18px 20px;}
.cm-section-head{display:flex;align-items:center;border-bottom:1px solid var(--cm-line);padding-bottom:12px;margin-bottom:14px;}
.cm-section-head h3{margin:0;font-size:18px;color:var(--cm-t1);border-left:4px solid var(--cm-brand);padding-left:10px;line-height:1.2;}
.cm-more{margin-left:16px;font-size:13px;color:var(--cm-t6);}
.cm-more:hover{color:var(--cm-brand);}
.cm-rss-link{color:#f26522;display:inline-flex;align-items:center;margin-left:12px;text-decoration:none;}
.cm-rss-link:hover{color:#d9520d;}
.cm-article-meta .cm-rss-link{margin-left:auto;}
/* 论坛 + 代码资源/最新活动 左右分栏 */
.cm-split{display:flex;gap:16px;align-items:stretch;margin-bottom:26px;}
.cm-split .cm-section{margin-bottom:0;display:flex;flex-direction:column;}
.cm-split-main{flex:1;min-width:0;display:flex;flex-direction:column;}
.cm-split-side{flex:0 0 300px;display:flex;flex-direction:column;gap:16px;min-width:0;}
.cm-split-side .cm-section{flex:0 0 auto;}
.cm-split-side .cm-act-panel{flex:1;}
.cm-cards{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:14px;flex:1;min-width:0;}
/* 扁长卡（论坛版块） */
.cm-wide{display:flex;align-items:center;gap:14px;min-height:84px;padding:14px 16px;background:var(--cm-subcard);border:1px solid var(--cm-bd);border-radius:10px;text-decoration:none;min-width:0;transition:box-shadow .2s,transform .2s,border-color .2s;}
.cm-wide:hover{box-shadow:0 4px 14px rgba(0,102,255,.14);transform:translateY(-2px);border-color:var(--cm-brandline);}
.cm-wide-ico{width:56px;height:56px;flex:0 0 56px;border-radius:12px;background:var(--cm-bd);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.cm-wide-ico img{width:100%;height:100%;object-fit:contain;padding:8px;box-sizing:border-box;}
.cm-wide-main{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:2px;min-height:56px;}
/* 机翻后板块名变长（如 BTBLE dual mode/low latency/Audio），min-height 允许卡片随内容长高（grid 同行等高，布局不乱），字号保持 16 不压缩 */
.cm-wide-name{font-size:16px;line-height:1.3;color:var(--cm-t2);font-weight:600;overflow:hidden;overflow-wrap:anywhere;}
.cm-wide-sub{font-size:12px;line-height:1.2;color:var(--cm-t7);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* 右侧代码资源 */
.cm-code-stack{display:flex;flex-direction:column;gap:12px;}
.cm-git-link{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--cm-subcard);border:1px solid var(--cm-bd);border-radius:10px;text-decoration:none;transition:box-shadow .2s,transform .2s,border-color .2s;}
.cm-git-link:hover{box-shadow:0 4px 14px rgba(0,102,255,.14);transform:translateY(-2px);border-color:var(--cm-brandline);}
.cm-git-ico{width:56px;height:56px;flex:0 0 56px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;}
.cm-git-gh .cm-git-ico{background:#24292f;}
.cm-git-gt .cm-git-ico{background:#c71d23;}
.cm-buy-link .cm-git-ico{background:#ff5000;}
.cm-git-tx{display:flex;flex-direction:column;line-height:1.35;flex:1;min-width:0;}
.cm-git-tx b{font-size:16px;color:var(--cm-t2);}
.cm-git-tx i{font-style:normal;font-size:12px;color:var(--cm-t7);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cm-git-go{font-size:14px;color:var(--cm-faint);}
.cm-git-link:hover .cm-git-go{color:var(--cm-brand);}
/* 最新活动（右侧栏展示板） */
.cm-act-mini{list-style:none;margin:0;padding:0;}
.cm-act-mini li{padding:4px 0 2px;display:flex;flex-direction:column;gap:12px;border-bottom:0;}
.cm-act-mini-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:16px;line-height:1.5;color:var(--cm-t2);font-weight:600;}
.cm-act-mini-title:hover{color:var(--cm-brand);}
.cm-act-mini-meta{font-size:14px;color:var(--cm-t7);display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.cm-act-mini-meta .cm-act-badge{font-size:12px;padding:2px 10px;}
@media (max-width:900px){
	.cm-split{flex-direction:column;}
	.cm-split-side{flex:auto;width:100%;}
	.cm-split-side .cm-act-panel{flex:0 0 auto;}
}
@media (max-width:760px){
	.cm-cards{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:480px){
	.cm-cards{grid-template-columns:1fr;}
}
.cm-cards-4{grid-template-columns:repeat(4,1fr);}
.cm-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:22px 10px;background:var(--cm-subcard);border:1px solid var(--cm-bd);border-radius:10px;text-align:center;transition:box-shadow .2s,transform .2s;}
.cm-card:hover{box-shadow:0 4px 14px rgba(0,102,255,.14);transform:translateY(-2px);border-color:var(--cm-brandline);}
.cm-card-icon{width:46px;height:46px;border-radius:12px;background:var(--cm-brand);color:#fff;font-size:20px;line-height:46px;font-weight:700;}
.cm-card-icon-img{object-fit:contain;}
.cm-card-icon-ext{background:var(--cm-tint);padding:6px;box-sizing:border-box;}
.cm-card-name{font-size:15px;color:var(--cm-t2);font-weight:600;}
.cm-card-stat{font-size:12px;color:var(--cm-t7);}
/* 主题列表 */
/* minmax(0,1fr)：轨道不受内容 min-content 撑开——英文机翻长标题曾把右列（公司新闻）挤成逐字符竖排 */
.cm-two-col{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:26px;}
.cm-two-col .cm-section{min-width:0;}
/* 桌面端两卡固定等高（grill-me 定案）：超出条目由页尾 JS 整条隐藏，不足自然留白；高度改 --cm-two-h 微调。
	移动端（≤768px 单栏）不套定高，配合 JS 恢复流式 */
@media (min-width:769px){
	.cm-two-col > .cm-section{height:var(--cm-two-h,560px);overflow:hidden;}
}
.cm-threads{list-style:none;margin:0;padding:0;}
.cm-threads li{padding:11px 0;border-bottom:1px dashed var(--cm-bd);display:flex;flex-direction:column;gap:4px;transition:background .15s;}
.cm-threads li:last-child{border-bottom:0;}
/* 带缩略图的条目：左图右文横排（问答/新闻/最新资源）；图高 48 控制在两行文字高度内，不影响两栏定高截断 */
.cm-threads.cm-threads-thumb li{flex-direction:row;gap:10px;align-items:flex-start;}
.cm-thumb{position:relative;flex:0 0 64px;width:64px;height:48px;border-radius:6px;overflow:hidden;background:var(--cm-tint);}
.cm-thumb img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .25s;}
.cm-threads li:hover .cm-thumb img{transform:scale(1.06);}
.cm-li-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
/* 标题自动换行，最多两行截断（英文机翻长标题场景）；overflow-wrap 防长词/URL 撑破 */
.cm-t-title{font-size:15px;font-weight:500;color:var(--cm-t1);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;transition:color .15s;}
.cm-t-title:hover{color:var(--cm-brand);}
.cm-threads li:hover .cm-t-title{color:var(--cm-brand);}
.cm-feat{display:inline-block;margin-right:6px;padding:1px 6px;font-size:11px;line-height:1.6;color:#fff;background:var(--cm-warn);border-radius:3px;vertical-align:1px;}
.cm-t-meta{font-size:12px;color:var(--cm-t7);line-height:1.4;}
.cm-news-date{color:var(--cm-t7);}
.cm-articles{list-style:none;margin:0;padding:0;}
.cm-articles li{padding:11px 0;border-bottom:1px dashed var(--cm-bd);display:flex;flex-direction:column;gap:4px;}
.cm-articles li:last-child{border-bottom:0;}
.cm-empty{color:var(--cm-t7);font-size:14px;padding:10px 0;}
/* 统计：页脚一行式 */
.cm-stats-footer{display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:6px 32px;padding:14px 0 6px;color:var(--cm-statlabel);font-size:12px;}
.cm-stats-footer .cm-stat-item{display:inline-flex;align-items:baseline;white-space:nowrap;}
.cm-stats-footer b{font-size:14px;font-weight:600;color:var(--cm-statnum);margin-right:5px;}
.cm-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;text-align:center;}
.cm-stat b{display:block;font-size:26px;color:var(--cm-deep);line-height:1.2;}
.cm-stat span{font-size:13px;color:var(--cm-t6);}
.cm-placeholder{text-align:center;color:var(--cm-t4);padding:50px 0;font-size:15px;}
/* 发布/编辑表单 */
.cm-form-row{margin-bottom:16px;}
.cm-form-row label{display:block;font-size:14px;color:var(--cm-t3);margin-bottom:6px;font-weight:600;}
.cm-input{width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid var(--cm-bd3);border-radius:6px;font-size:14px;color:var(--cm-t2);background:var(--cm-card);}
.cm-input:focus{outline:none;border-color:var(--cm-brand);box-shadow:0 0 0 2px rgba(0,102,255,.12);}
.cm-inline{display:flex;gap:10px;align-items:center;}
.cm-inline .cm-input{flex:1;}
.cm-btn{display:inline-block;padding:9px 18px;border:1px solid var(--cm-bd3);border-radius:6px;background:var(--cm-subcard);color:var(--cm-t2);font-size:14px;cursor:pointer;line-height:1.4;}
.cm-btn:hover{border-color:var(--cm-brandline);color:var(--cm-brand);}
.cm-btn-primary{background:var(--cm-brand);border-color:var(--cm-brand);color:#fff;}
.cm-btn-primary:hover{background:var(--cm-brandh);color:#fff;}
.cm-btn-danger{background:var(--cm-card);border-color:var(--cm-dangerline);color:var(--cm-danger);}
.cm-btn-danger:hover{background:var(--cm-danger);color:#fff;}
.cm-btn-ghost{background:transparent;border-color:transparent;color:var(--cm-t6);}
.cm-form-actions{display:flex;gap:12px;align-items:center;margin-top:8px;}
.cm-radio{margin-right:14px;font-size:14px;color:var(--cm-t3);cursor:pointer;}
.cm-lesson-edit{margin-left:12px;white-space:nowrap;}
/* 博客详情/评论 */
.cm-article-title{font-size:24px;color:var(--cm-t1);margin:0 0 6px;}
.cm-article-meta{margin-bottom:18px;}
.cm-article-content{font-size:16px;line-height:1.9;color:var(--cm-t2);word-break:break-word;max-width:760px;margin-left:auto;margin-right:auto;}
/* 正文容器同时挂 vditor-reset：vditor.css 在本文件之后加载，其 .vditor-reset{color:#24292e} 同特异性会覆盖上面的文字色（深色下不可读），提权锁定 */
.cm-article-content.vditor-reset{color:var(--cm-t2);}
/* 视频列表 */
.cm-videos{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px;}
.cm-video-card{display:flex;flex-direction:column;gap:8px;text-decoration:none;}
.cm-video-thumb{position:relative;display:block;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:var(--cm-bd);border:1px solid var(--cm-bd);}
.cm-video-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.cm-video-cover-empty{display:block;width:100%;height:100%;}
.cm-video-duration{position:absolute;right:8px;bottom:8px;padding:1px 6px;font-size:11px;font-style:normal;color:#fff;background:rgba(0,0,0,.7);border-radius:4px;}
.cm-video-play{position:absolute;left:50%;top:50%;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:rgba(0,0,0,.45);transition:background .2s;opacity:0;}
.cm-video-play:before{content:"";position:absolute;left:18px;top:13px;border:9px solid transparent;border-left:13px solid #fff;}
.cm-video-card:hover .cm-video-play{opacity:1;background:rgba(0,102,255,.8);}
.cm-video-card:hover .cm-video-thumb{border-color:var(--cm-brandline);}
.cm-video-title{font-size:15px;color:var(--cm-t2);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cm-video-card:hover .cm-video-title{color:var(--cm-brand);}
.cm-video-desc{font-size:12px;color:var(--cm-t7);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* 视频播放 */
.cm-video-view{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:#000;margin-bottom:18px;}
.cm-video-view video,.cm-video-view iframe{width:100%;height:100%;border:0;display:block;}
.cm-article-content img{max-width:100%;height:auto;border-radius:6px;}
.cm-article-content a{color:var(--cm-brand);text-decoration:underline;}
.cm-article-content a:hover{color:var(--cm-brandh);text-decoration:underline;}
.cm-comments{margin-top:6px;}
.cm-comment-item{padding:12px 0;border-bottom:1px dashed var(--cm-line);}
.cm-comment-item:last-child{border-bottom:0;}
.cm-comment-head{display:flex;gap:10px;align-items:center;font-size:13px;color:var(--cm-t4);margin-bottom:4px;}
.cm-comment-body{font-size:14px;color:var(--cm-t2);line-height:1.7;word-break:break-word;}
.cm-comment-form textarea{width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid var(--cm-bd3);border-radius:6px;font-size:14px;color:var(--cm-t2);min-height:70px;resize:vertical;}
.cm-comment-form textarea:focus{outline:none;border-color:var(--cm-brand);}
/* 博客列表项 */
.cm-blog-item{display:flex;gap:14px;padding:14px 0;}
.cm-blog-thumb{flex:0 0 150px;height:90px;overflow:hidden;border-radius:6px;background:var(--cm-tint);}
.cm-blog-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.cm-blog-main{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0;}
.cm-blog-title{white-space:normal;font-size:16px;font-weight:600;}
.cm-blog-summary{font-size:13px;color:var(--cm-t5);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
/* 博客卡片网格（列表页） */
.cm-blog-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;}
.cm-blog-card{background:var(--cm-card);border:1px solid var(--cm-bd);border-radius:10px;overflow:hidden;min-width:0;transition:box-shadow .2s,transform .2s,border-color .2s;}
.cm-blog-card:hover{box-shadow:0 6px 18px rgba(0,102,255,.12);transform:translateY(-3px);border-color:var(--cm-brandline);}
.cm-blog-card>a{display:block;text-decoration:none;height:100%;padding-bottom:12px;}
.cm-blog-card-img{display:block;aspect-ratio:16/9;overflow:hidden;background:var(--cm-tint);}
.cm-blog-card-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s;}
.cm-blog-card:hover .cm-blog-card-img img{transform:scale(1.05);}
.cm-blog-card-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;word-break:break-word;padding:12px 14px 0;font-size:15px;line-height:1.5;color:var(--cm-t1);font-weight:600;}
/* 注意：clamp 元素不能带 padding-bottom——新 Chromium 的 line-clamp 只缩盒高不隐藏超限行，
   padding-bottom 区域会把第 N+1 行"半行"露出再被卡片裁切（2026-10-13 排查结论）；
   底部间距统一移到外层 a 的 padding-bottom */
.cm-blog-card:hover .cm-blog-card-title{color:var(--cm-brand);}
/* 首页博客小卡（不影响博客列表页大卡）：卡宽收窄列数变多，图保持 16:9 随卡宽自然变小 */
.cm-blog-grid.cm-blog-grid-home{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;}
.cm-blog-grid.cm-blog-grid-home .cm-blog-card-title{padding:10px 12px 0;font-size:14px;}
/* 博客分页器 */
.cm-pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:18px;}
.cm-pg{min-width:30px;padding:5px 10px;text-align:center;font-size:13px;color:var(--cm-t3);background:var(--cm-subcard);border:1px solid var(--cm-bd);border-radius:6px;text-decoration:none;}
.cm-pg:hover{color:var(--cm-brand);border-color:var(--cm-brandline);}
.cm-pg-cur{background:var(--cm-brand);border-color:var(--cm-brand);color:#fff;font-weight:600;}
.cm-pg-dis{color:var(--cm-faint);background:var(--cm-disable);cursor:default;}
.cm-pg-total{font-size:12px;color:var(--cm-t7);margin-left:6px;}
/* 博客标签行 */
.cm-blog-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;}
.cm-blog-tag{display:inline-flex;align-items:center;gap:5px;padding:4px 12px;border:1px solid var(--cm-bd3);border-radius:16px;background:var(--cm-subcard);color:var(--cm-t4);font-size:13px;text-decoration:none;line-height:1.4;}
.cm-blog-tag em{font-style:normal;font-size:11px;color:#99a;padding:0 5px;border-radius:8px;background:var(--cm-bd);}
.cm-blog-tag:hover{border-color:var(--cm-brandline);color:var(--cm-brand);}
.cm-blog-tag-cur,.cm-blog-tag-cur:hover{background:var(--cm-brand);border-color:var(--cm-brand);color:#fff;}
.cm-blog-tag-cur em{background:rgba(255,255,255,.25);color:#fff;}
/* 博客卡片作者信息 */
.cm-blog-card{display:flex;flex-direction:column;}
.cm-blog-card-main{display:block;text-decoration:none;flex:1;}
.cm-blog-card-meta{display:flex;align-items:center;gap:8px;padding:0 14px 12px;font-size:12px;color:var(--cm-t7);}
.cm-blog-card-avatar{width:22px;height:22px;border-radius:50%;background:var(--cm-tint);flex-shrink:0;object-fit:cover;}
.cm-blog-card-author{color:var(--cm-t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%;}
.cm-blog-card-date{margin-left:auto;flex-shrink:0;}
/* 博客详情布局 */
.cm-article-main{display:flex;gap:28px;align-items:flex-start;}
.cm-article-body{flex:1;min-width:0;}
.cm-article-meta{display:flex;align-items:center;gap:10px;margin-bottom:18px;}
.cm-article-meta-avatar{width:38px;height:38px;border-radius:50%;background:var(--cm-tint);object-fit:cover;flex-shrink:0;}
.cm-article-meta-info{display:flex;flex-direction:column;gap:2px;}
.cm-article-meta-author{font-size:14px;color:var(--cm-t2);}
.cm-article-meta-sub{font-size:12px;color:var(--cm-t7);}
/* 悬浮目录 TOC */
#cm-article-toc{position:sticky;top:84px;flex-shrink:0;width:190px;max-height:calc(100vh - 160px);overflow-y:auto;border-left:1px solid var(--cm-line);padding-left:14px;margin-top:6px;}
#cm-article-toc::-webkit-scrollbar{width:4px;}
#cm-article-toc::-webkit-scrollbar-thumb{background:var(--cm-scroll);border-radius:2px;}
.cm-toc-title{font-size:13px;font-weight:600;color:var(--cm-t1);margin-bottom:8px;}
#cm-article-toc ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;}
#cm-article-toc a{display:block;font-size:12px;line-height:1.5;color:var(--cm-t6);text-decoration:none;padding:3px 0 3px 8px;border-left:2px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#cm-article-toc a:hover{color:var(--cm-brand);}
#cm-article-toc .cm-toc-cur{color:var(--cm-brand);border-left-color:var(--cm-brand);}
#cm-article-toc .cm-toc-lv2{padding-left:10px;}
#cm-article-toc .cm-toc-lv3{padding-left:20px;}
#cm-article-toc .cm-toc-lv4{padding-left:30px;}
/* 文章头部横幅（封面图模糊为氛围背景，中度虚化承载标题） */
.cm-article-hero{position:relative;border-radius:10px;overflow:hidden;margin-bottom:14px;background:#0b1530;display:flex;align-items:flex-end;min-height:220px;}
.cm-article-hero-bg{position:absolute;inset:-10px;background-position:center;background-size:cover;background-repeat:no-repeat;filter:blur(6px);transform:scale(1.03);}
.cm-article-hero-overlay{position:relative;z-index:1;width:100%;padding:30px 28px 18px;background:linear-gradient(180deg,rgba(0,0,0,.05) 0%,rgba(0,0,0,.35) 45%,rgba(0,0,0,.78) 100%);color:#fff;}
.cm-article-title-hero{color:#fff;font-size:26px;text-shadow:0 2px 10px rgba(0,0,0,.6);margin:0;}
/* 文章标签（白底分支） */
.cm-article-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px;}
/* 正文排版层次 */
.cm-article-content h2{font-size:21px;color:var(--cm-t1);margin:34px 0 14px;padding-bottom:8px;border-bottom:1px solid var(--cm-bd);}
.cm-article-content h3{font-size:18px;color:var(--cm-t1);margin:28px 0 12px;}
.cm-article-content p{margin:14px 0;}
.cm-article-content p.cm-lead{font-size:17px;color:var(--cm-t3);font-weight:500;}
/* 阅读进度条 */
#cm-read-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:9999;pointer-events:none;}
#cm-read-progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cm-brand),var(--cm-brand2));}
/* 相关文章 */
.cm-article-related{margin-top:28px;padding-top:18px;border-top:1px solid var(--cm-line);}
.cm-article-related-title{font-size:15px;font-weight:600;color:var(--cm-t1);margin-bottom:10px;}
.cm-article-related ul{list-style:none;margin:0;padding:0;}
.cm-article-related li{display:flex;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px dashed var(--cm-line);font-size:14px;}
.cm-article-related li:last-child{border-bottom:0;}
.cm-article-related li:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--cm-brand);flex-shrink:0;align-self:center;}
.cm-article-related li a{color:var(--cm-t2);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cm-article-related li a:hover{color:var(--cm-brand);}
.cm-article-related li span{margin-left:auto;flex-shrink:0;font-size:12px;color:var(--cm-t7);}
/* 上下篇导航 */
.cm-article-pager{display:flex;gap:12px;margin-top:28px;padding-top:18px;border-top:1px solid var(--cm-line);}
.cm-article-pager-link{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;padding:10px 14px;border:1px solid var(--cm-bd);border-radius:8px;background:var(--cm-subcard);text-decoration:none;color:var(--cm-t2);}
.cm-article-pager-link:hover{border-color:var(--cm-brandline);color:var(--cm-brand);}
.cm-article-pager-next{text-align:right;}
.cm-article-pager-dis,.cm-article-pager-dis:hover{border-color:var(--cm-bd);background:var(--cm-disable);color:var(--cm-t2);cursor:default;}
.cm-pg-dir{font-size:12px;color:var(--cm-t7);}
.cm-article-pager-link b{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* 邮件订阅 */
.cm-subscribe-btn{display:inline-flex;align-items:center;gap:5px;margin-left:12px;padding:4px 12px;border:1px solid var(--cm-brandline);border-radius:16px;background:var(--cm-card);color:var(--cm-brand);font-size:13px;line-height:1.5;text-decoration:none;white-space:nowrap;}
.cm-subscribe-btn:hover{background:var(--cm-brand);border-color:var(--cm-brand);color:#fff;}
.cm-subscribe-form{display:flex;gap:8px;}
.cm-subscribe-form input[type="email"]{flex:1;min-width:0;padding:9px 12px;border:1px solid var(--cm-bd3);border-radius:6px;font-size:14px;color:var(--cm-t2);box-sizing:border-box;}
.cm-subscribe-form input[type="email"]:focus{outline:none;border-color:var(--cm-brand);}
.cm-subscribe-box{margin-top:24px;padding:18px;background:var(--cm-subcard);border:1px solid var(--cm-bd);border-radius:10px;}
.cm-subscribe-desc{font-size:13px;color:var(--cm-t5);margin:0 0 12px;}
.cm-subscribe-msg{padding:16px;border-radius:8px;font-size:14px;color:var(--cm-t2);background:var(--cm-subcard);margin-bottom:14px;}
.cm-subscribe-msg p{margin:0 0 8px;}
.cm-subscribe-msg p:last-child{margin-bottom:0;}
.cm-subscribe-ok{color:var(--cm-oktext);background:var(--cm-okbg);}
.cm-subscribe-err{color:var(--cm-errtext);background:var(--cm-errbg);}
@media (max-width:480px){
	.cm-blog-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;}
	.cm-blog-card-title{font-size:14px;padding:10px 12px 12px;}
	.cm-article-main{display:block;}
	#cm-article-toc{display:none;}
}
@media (max-width:768px){
	.cm-two-col{grid-template-columns:1fr;}
	.cm-cards-4{grid-template-columns:repeat(2,1fr);}
	.cm-stats{grid-template-columns:repeat(2,1fr);}
	.cm-banner-slide img{height:180px;}
	.cm-banner-text{left:48px;bottom:20px;}
	.cm-banner-text h2{font-size:20px;}
	.cm-article-main{display:block;}
	#cm-article-toc{display:none;}
	.cm-article-hero{min-height:150px;}
	.cm-article-hero-overlay{padding:18px 16px 12px;}
	.cm-article-title-hero{font-size:20px;}
	.cm-article-meta{flex-wrap:wrap;}
	.cm-article-meta .cm-rss-link{margin-left:0;}
}
/* 社区活动 */
.cm-act-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;}
.cm-act-card{background:var(--cm-card);border:1px solid var(--cm-bd);border-radius:10px;overflow:hidden;transition:box-shadow .2s,transform .2s;display:flex;flex-direction:column;}
.cm-act-card:hover{box-shadow:0 4px 14px rgba(0,102,255,.14);transform:translateY(-2px);border-color:var(--cm-brandline);}
.cm-act-cover{display:block;height:150px;background:var(--cm-tint);overflow:hidden;}
.cm-act-cover img{width:100%;height:100%;object-fit:cover;display:block;}
.cm-act-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:6px;flex:1;}
.cm-act-badge{display:inline-block;align-self:flex-start;padding:2px 10px;font-size:12px;color:#fff;background:var(--cm-ok);border-radius:12px;}
.cm-act-badge-end{background:var(--cm-badgeend);}
.cm-act-title{margin:0;font-size:16px;font-weight:600;line-height:1.4;}
.cm-act-title a{color:var(--cm-t1);}
.cm-act-title a:hover{color:var(--cm-brand);}
.cm-btn-signup{display:inline-block;align-self:flex-start;margin-top:6px;padding:6px 18px;font-size:13px;color:#fff;background:var(--cm-brand);border-radius:6px;text-decoration:none;transition:background .2s;}
.cm-btn-signup:hover{background:var(--cm-brandh);color:#fff;}
.cm-btn-lg{padding:10px 30px;font-size:15px;}
.cm-act-detail .cm-article-content{margin:16px 0;}
.cm-act-detail-main{display:flex;gap:24px;align-items:flex-start;}
.cm-act-detail-cover{flex-shrink:0;width:380px;max-width:42%;border-radius:10px;overflow:hidden;background:var(--cm-tint);}
.cm-act-detail-cover img{width:100%;display:block;}
.cm-act-detail-body{flex:1;min-width:0;}
.cm-act-detail-head{margin-bottom:8px;}
.cm-act-signup-bar{text-align:left;margin:20px 0;}
@media (max-width:768px){
	.cm-act-detail-main{flex-direction:column;}
	.cm-act-detail-cover{width:100%;max-width:100%;}
	.cm-act-signup-bar{text-align:center;}
	.cm-act-grid{grid-template-columns:1fr;}
}

/* ===== 培训系统 ===== */
.cm-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;}
.cm-tag{display:inline-block;padding:5px 14px;border:1px solid var(--cm-bd3);border-radius:16px;background:var(--cm-subcard);color:var(--cm-t4);font-size:13px;}
.cm-tag:hover{border-color:var(--cm-brandline);color:var(--cm-brand);}
.cm-tag-on{background:var(--cm-brand);border-color:var(--cm-brand);color:#fff;}
.cm-tag-on:hover{background:var(--cm-brandh);color:#fff;}
.cm-course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;}
.cm-course{display:flex;flex-direction:column;background:var(--cm-subcard);border:1px solid var(--cm-bd);border-radius:12px;overflow:hidden;transition:box-shadow .2s,transform .2s;text-decoration:none;}
.cm-course:hover{box-shadow:0 6px 18px rgba(0,102,255,.14);transform:translateY(-2px);border-color:var(--cm-brandline);}
.cm-course-cover{height:150px;overflow:hidden;background:var(--cm-tint2);display:flex;align-items:center;justify-content:center;}
.cm-course-cover img{width:100%;height:100%;object-fit:cover;display:block;}
.cm-course-cover-empty{color:var(--cm-cvrtext);font-size:22px;font-weight:700;padding:0 16px;text-align:center;}
.cm-course-body{display:flex;flex-direction:column;gap:6px;padding:14px 16px 16px;}
.cm-course-cat{font-size:12px;color:var(--cm-brand);font-weight:600;}
.cm-course-title{font-size:16px;color:var(--cm-t1);font-weight:600;line-height:1.4;}
.cm-course-summary{font-size:13px;color:var(--cm-t6);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.cm-course-meta{font-size:12px;color:var(--cm-t7);}
.cm-progress{display:block;width:100%;height:6px;border-radius:3px;background:var(--cm-tint4);overflow:hidden;}
.cm-progress i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--cm-brand),var(--cm-brand2));}
.cm-progress-lg{height:8px;max-width:360px;}
.cm-course-head{display:flex;gap:20px;margin-bottom:22px;background:var(--cm-subcard);border:1px solid var(--cm-bd);border-radius:12px;padding:18px;}
.cm-course-cover-lg{width:260px;height:150px;object-fit:cover;border-radius:8px;background:var(--cm-tint2);flex-shrink:0;}
.cm-course-head-main{display:flex;flex-direction:column;gap:8px;align-items:flex-start;}
.cm-course-desc{font-size:14px;color:var(--cm-t3);line-height:1.7;margin:0;}
.cm-lessons{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
.cm-lesson-main{display:flex;align-items:center;gap:14px;padding:12px 16px;background:var(--cm-subcard);border:1px solid var(--cm-bd);border-radius:10px;transition:box-shadow .2s;}
.cm-lesson-main:hover{border-color:var(--cm-brandline);box-shadow:0 2px 10px rgba(0,102,255,.1);}
.cm-lesson-idx{width:32px;height:32px;flex-shrink:0;border-radius:50%;background:var(--cm-tint4);color:var(--cm-brand);font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;}
.cm-lesson-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0;}
.cm-lesson-title{font-size:15px;color:var(--cm-t1);font-weight:600;}
.cm-lesson-meta{font-size:12px;color:var(--cm-t7);}
.cm-lesson-state{font-size:12px;color:var(--cm-t7);flex-shrink:0;}
.cm-lesson-done .cm-lesson-idx{background:var(--cm-ok);color:#fff;}
.cm-lesson-done .cm-lesson-state{color:var(--cm-ok);font-weight:600;}
.cm-lesson-view{display:flex;flex-direction:column;gap:18px;}
.cm-lesson-title-lg{margin:0;font-size:20px;color:var(--cm-t1);}
.cm-video-wrap{position:relative;width:100%;padding-top:56.25%;border-radius:10px;overflow:hidden;background:#000;}
.cm-video-wrap iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;}
/* 第三方平台直播回放：无法 iframe 内嵌，展示外链观看卡片 */
.cm-video-ext{text-align:center;padding:36px 20px;border:1px dashed var(--cm-bd3);border-radius:10px;background:var(--cm-subcard);}
.cm-video-ext .cm-empty{padding:0 0 16px;}
.cm-lesson-content{line-height:1.9;}
.cm-lesson-actions{display:flex;justify-content:center;gap:12px;}
.cm-lesson-nav{display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--cm-bd);padding-top:18px;}
.cm-btn-on{background:var(--cm-ok);border-color:var(--cm-ok);color:#fff;}
.cm-btn-on:hover{background:var(--cm-okh);border-color:var(--cm-okh);color:#fff;}
@media (max-width:768px){
	.cm-course-grid{grid-template-columns:1fr;}
	.cm-course-head{flex-direction:column;}
	.cm-course-cover-lg{width:100%;height:auto;}
	.cm-lesson-nav{flex-wrap:wrap;}
}
/* ===== 全站搜索 ===== */
.cm-search-bar{display:flex;gap:10px;margin-bottom:16px;}
.cm-search-input{flex:1;padding:11px 14px;font-size:15px;}
.cm-search-btn{padding:11px 28px;font-size:15px;flex-shrink:0;}
.cm-search-tabs{display:flex;gap:8px;flex-wrap:wrap;border-bottom:1px solid var(--cm-line);padding-bottom:12px;margin-bottom:6px;}
.cm-search-tab{display:inline-block;padding:6px 16px;font-size:13px;color:var(--cm-t3);background:var(--cm-subcard);border:1px solid var(--cm-bd);border-radius:16px;text-decoration:none;}
.cm-search-tab:hover{color:var(--cm-brand);border-color:var(--cm-brandline);}
.cm-search-tab.on{background:var(--cm-brand);border-color:var(--cm-brand);color:#fff;}
.cm-search-list{list-style:none;margin:0;padding:0;}
.cm-search-item{display:flex;align-items:flex-start;gap:12px;padding:14px 2px;border-bottom:1px dashed var(--cm-line);}
.cm-search-item:last-child{border-bottom:0;}
.cm-search-type{flex-shrink:0;margin-top:3px;padding:2px 10px;font-size:12px;color:#fff;background:var(--cm-brand);border-radius:3px;}
.cm-search-type-forum{background:#e0245e;}
.cm-search-type-blog{background:var(--cm-brand);}
.cm-search-type-activity{background:var(--cm-warn);}
.cm-search-type-video{background:#7c3aed;}
.cm-search-type-training{background:var(--cm-ok);}
.cm-search-type-resources{background:#0d2b73;}
.cm-search-type-docs{background:#0ea5e9;}
.cm-search-main{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0;}
.cm-search-title{font-size:15px;color:var(--cm-t1);font-weight:600;line-height:1.5;word-break:break-word;}
.cm-search-title:hover{color:var(--cm-brand);}
.cm-search-desc{font-size:13px;color:var(--cm-t5);line-height:1.65;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.cm-search-meta{font-size:12px;color:var(--cm-t7);}
.cm-hl{font-style:normal;color:var(--cm-danger);background:var(--cm-hlbg);padding:0 2px;border-radius:2px;}

/* ===== 资源中心 ===== */
.cm-res-cats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;}
.cm-res-cat{padding:5px 16px;font-size:13px;color:var(--cm-t3);background:var(--cm-subcard);border:1px solid var(--cm-bd2);border-radius:16px;text-decoration:none;transition:all .2s;}
.cm-res-cat:hover{color:var(--cm-brand);border-color:var(--cm-brandline);}
.cm-res-cat.on{color:#fff;background:var(--cm-brand);border-color:var(--cm-brand);}
.cm-res-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;}
.cm-res-card{display:flex;flex-direction:column;gap:8px;text-decoration:none;background:var(--cm-card);border:1px solid var(--cm-bd);border-radius:10px;overflow:hidden;padding-bottom:12px;transition:box-shadow .2s,transform .2s,border-color .2s;}
.cm-res-card:hover{box-shadow:0 6px 18px rgba(0,102,255,.12);transform:translateY(-3px);border-color:var(--cm-brandline);}
.cm-res-thumb{position:relative;display:block;aspect-ratio:16/8;background:var(--cm-bd);overflow:hidden;}
.cm-res-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.cm-res-cover-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;width:100%;height:100%;background:linear-gradient(135deg,var(--cm-grad-a),var(--cm-grad-b));}
.cm-res-cover-icon{width:44px;height:44px;display:block;}
.cm-res-cover-name{font-size:13px;font-style:normal;color:var(--cm-deep);font-weight:600;letter-spacing:1px;}
.cm-res-cat-tag{display:inline-block;padding:1px 8px;font-size:11px;font-style:normal;color:var(--cm-brand);background:var(--cm-tint5);border-radius:10px;}
.cm-res-thumb .cm-res-cat-tag{position:absolute;left:10px;top:10px;color:#fff;background:rgba(0,102,255,.85);}
.cm-res-title{font-size:15px;color:var(--cm-t2);font-weight:600;padding:0 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cm-res-card:hover .cm-res-title{color:var(--cm-brand);}
.cm-res-meta{font-size:12px;color:var(--cm-t7);padding:0 12px;}
/* 列表（两列行式）：每行两个条目，小缩略图 + 右侧文字 */
.cm-res-grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
.cm-res-li2{display:flex;align-items:center;gap:10px;background:var(--cm-card);border:1px solid var(--cm-bd);border-radius:10px;padding:10px;text-decoration:none;min-width:0;transition:box-shadow .2s,transform .2s,border-color .2s;}
.cm-res-li2:hover{box-shadow:0 6px 18px rgba(0,102,255,.12);transform:translateY(-2px);border-color:var(--cm-brandline);}
.cm-res-li2-thumb{flex:0 0 96px;width:96px;height:60px;border-radius:8px;overflow:hidden;background:var(--cm-grad-a);}
.cm-res-li2-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.cm-res-li2-empty{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:linear-gradient(135deg,var(--cm-grad-a),var(--cm-grad-b));}
.cm-res-li2-empty img{width:30px;height:30px;display:block;}
.cm-res-li2-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;}
.cm-res-li2-title{font-size:14px;color:var(--cm-t2);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cm-res-li2:hover .cm-res-li2-title{color:var(--cm-brand);}
.cm-res-li2-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--cm-t7);overflow:hidden;}
/* 列表封面悬浮放大预览（仅真实封面触发，默认图标不触发） */
.cm-res-zoom{position:fixed;z-index:9999;display:none;pointer-events:none;background:var(--cm-card);border:1px solid #e8edf5;border-radius:10px;padding:6px;box-shadow:0 8px 28px rgba(13,43,115,.18);}
.cm-res-zoom img{display:block;max-width:360px;max-height:280px;border-radius:6px;object-fit:contain;}
@media (max-width: 640px){.cm-res-grid2{grid-template-columns:1fr;}}
/* 列表（信息行式）：小缩略图 + 右侧文字 */
/* 首页「最新资源」：两列栅格 + 限高（单列全宽右侧太空）；min-width:0 防长英文标题撑破列，
	标题本身 line-clamp 2 自动分行；≤768px 单列不限高 */
.cm-res-list{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:26px;max-height:280px;overflow:hidden;}
.cm-res-list > li{min-width:0;}
@media (max-width: 768px){.cm-res-list{grid-template-columns:1fr;max-height:none;}}
.cm-res-li{display:flex;align-items:center;gap:14px;background:var(--cm-card);border:1px solid var(--cm-bd);border-radius:10px;padding:12px 14px;text-decoration:none;transition:box-shadow .2s,transform .2s,border-color .2s;}
.cm-res-li:hover{box-shadow:0 6px 18px rgba(0,102,255,.12);transform:translateY(-2px);border-color:var(--cm-brandline);}
.cm-res-li-thumb{flex:0 0 140px;width:140px;height:78px;border-radius:8px;overflow:hidden;background:var(--cm-grad-a);}
.cm-res-li-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.cm-res-li-empty{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:linear-gradient(135deg,var(--cm-grad-a),var(--cm-grad-b));}
.cm-res-li-empty img{width:38px;height:38px;display:block;}
.cm-res-li-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;}
.cm-res-li-title{font-size:15px;color:var(--cm-t2);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cm-res-li:hover .cm-res-li-title{color:var(--cm-brand);}
.cm-res-li-meta{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--cm-t7);}
/* 详情：视频区 */
.cm-res-videos{margin-bottom:10px;}
.cm-res-video-box{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:#000;margin-bottom:8px;}
.cm-res-video-box video,.cm-res-video-box iframe{width:100%;height:100%;border:0;display:block;}
.cm-res-video-cap{font-size:12px;color:var(--cm-t6);}
/* 详情：下载区 */
.cm-res-dl{margin-top:18px;border:1px solid var(--cm-bd);border-radius:10px;padding:4px 0;}
.cm-res-dl h3{margin:10px 14px;font-size:15px;color:var(--cm-t1);}
.cm-res-dl-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border-top:1px dashed var(--cm-line);}
.cm-res-dl-row:first-of-type{border-top:0;}
.cm-res-dl-name{flex:1;font-size:14px;color:var(--cm-t2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cm-res-ver{font-style:normal;font-size:12px;color:var(--cm-brand);background:var(--cm-tint5);border-radius:4px;padding:1px 6px;margin-left:6px;}
.cm-res-dl-desc{font-size:12px;color:var(--cm-t7);white-space:nowrap;}
/* 发布表单：子项行 */
.cm-res-children{margin-top:6px;}
.cm-res-child{background:#f8fafd;border:1px solid var(--cm-bd2);border-radius:8px;padding:12px;margin-bottom:12px;}
.cm-res-child-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.cm-res-child-head .cm-btn{margin-left:auto;padding:4px 12px;}
.cm-res-child-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.cm-res-child-row label{flex-shrink:0;width:64px;font-size:13px;color:var(--cm-t4);}
.cm-res-child-row .cm-input{flex:1;}
.cm-res-child-row .cm-radio{font-size:13px;color:var(--cm-t2);margin-right:6px;}
.cm-input-sel{width:auto;min-width:140px;}
.cm-input-sm{flex:0 0 160px !important;}
.cm-res-file-name{font-size:12px;color:var(--cm-t6);}
.cm-res-child-del{margin-left:auto;}
/* ===== 深色模式：只重定义变量，全文件自动生效（html[data-theme] 手动 + 跟随系统双通道） ===== */
html[data-theme="dark"]{
	--cm-card:#1a2233;--cm-subcard:#232c42;--cm-disable:#1e2739;
	--cm-tint:#232c42;--cm-tint2:#232c42;--cm-tint4:#2a3450;--cm-tint5:#2a3450;
	--cm-grad-a:#232c42;--cm-grad-b:#2a3450;--cm-scroll:#323d5c;
	--cm-line:#2a3450;--cm-bd:#2a3450;--cm-bd2:#323d5c;--cm-bd3:#3a4560;--cm-brandline:#3a5a9e;
	--cm-t1:#e8edf7;--cm-t2:#e8edf7;--cm-t3:#b8c2d8;--cm-t4:#b8c2d8;--cm-t5:#a8b3cc;--cm-t6:#8a96b2;--cm-t7:#7c88a6;
	--cm-faint:#566080;--cm-statnum:#92b4e0;--cm-statlabel:#7c88a6;
	--cm-brand:#5b8def;--cm-brandh:#7fa8f0;--cm-brand2:#7fa8f0;--cm-brandtext:#8fb0f5;
	--cm-deep:#8fb0f5;--cm-cvrtext:#92b4e0;--cm-badgeend:#3a4560;--cm-warn:#ff9b3d;
	--cm-ok:#34c98e;--cm-okh:#2bab77;--cm-oktext:#34c98e;--cm-okbg:#12301f;
	--cm-danger:#e06a6a;--cm-dangerline:#8a4040;--cm-errtext:#e08a8a;--cm-errbg:#3a2222;
	--cm-noticebg:#1a2a4a;--cm-hlbg:#3a2f1a;
}
@media (prefers-color-scheme: dark){
	html:not([data-theme="light"]){
		--cm-card:#1a2233;--cm-subcard:#232c42;--cm-disable:#1e2739;
		--cm-tint:#232c42;--cm-tint2:#232c42;--cm-tint4:#2a3450;--cm-tint5:#2a3450;
		--cm-grad-a:#232c42;--cm-grad-b:#2a3450;--cm-scroll:#323d5c;
		--cm-line:#2a3450;--cm-bd:#2a3450;--cm-bd2:#323d5c;--cm-bd3:#3a4560;--cm-brandline:#3a5a9e;
		--cm-t1:#e8edf7;--cm-t2:#e8edf7;--cm-t3:#b8c2d8;--cm-t4:#b8c2d8;--cm-t5:#a8b3cc;--cm-t6:#8a96b2;--cm-t7:#7c88a6;
		--cm-faint:#566080;--cm-statnum:#92b4e0;--cm-statlabel:#7c88a6;
		--cm-brand:#5b8def;--cm-brandh:#7fa8f0;--cm-brand2:#7fa8f0;--cm-brandtext:#8fb0f5;
		--cm-deep:#8fb0f5;--cm-cvrtext:#92b4e0;--cm-badgeend:#3a4560;--cm-warn:#ff9b3d;
		--cm-ok:#34c98e;--cm-okh:#2bab77;--cm-oktext:#34c98e;--cm-okbg:#12301f;
		--cm-danger:#e06a6a;--cm-dangerline:#8a4040;--cm-errtext:#e08a8a;--cm-errbg:#3a2222;
		--cm-noticebg:#1a2a4a;--cm-hlbg:#3a2f1a;
	}
}
/* ===== BLE 入门培训 · 课时正文排版补充（h4/列表/表格/代码） ===== */
.cm-lesson-content h4{font-size:16px;color:var(--cm-t1);margin:24px 0 10px;}
.cm-lesson-content ul,.cm-lesson-content ol{margin:12px 0;padding-left:24px;}
.cm-lesson-content li{margin:6px 0;}
.cm-lesson-content table{width:100%;border-collapse:collapse;margin:14px 0;font-size:14px;}
.cm-lesson-content th,.cm-lesson-content td{border:1px solid var(--cm-bd2);padding:8px 10px;text-align:left;line-height:1.6;}
.cm-lesson-content th{background:var(--cm-subcard);color:var(--cm-t1);font-weight:600;white-space:nowrap;}
.cm-lesson-content code{font-family:Consolas,Menlo,monospace;font-size:13px;background:var(--cm-subcard);border:1px solid var(--cm-bd2);border-radius:4px;padding:1px 5px;color:var(--cm-brandtext);}
.cm-lesson-content blockquote{border-left:3px solid var(--cm-brandline);background:var(--cm-subcard);margin:14px 0;padding:8px 14px;color:var(--cm-t4);border-radius:0 6px 6px 0;}
/* ===== 图解组件（cm-dia：cm-layer / cm-pkt / cm-seq / cm-flow） ===== */
.cm-dia{margin:16px 0;border:1px solid var(--cm-bd2);border-radius:10px;background:var(--cm-subcard);padding:14px 16px;}
.cm-layer{display:flex;flex-direction:column;gap:8px;}
.cm-layer-b{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border:1px solid var(--cm-bd2);border-radius:8px;background:var(--cm-card);}
.cm-layer-b b{font-size:14px;color:var(--cm-t1);}
.cm-layer-b span{font-size:12px;color:var(--cm-t6);}
.cm-layer-b.cm-layer-hot{border-color:var(--cm-brandline);background:var(--cm-tint);}
.cm-layer-cap{font-size:12px;color:var(--cm-t7);text-align:center;padding-top:2px;}
.cm-pkt{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch;}
.cm-pkt-b{flex:1 1 160px;min-width:130px;display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--cm-bd2);border-radius:8px;background:var(--cm-card);}
.cm-pkt-b.cm-pkt-mid{border-style:dashed;background:var(--cm-tint);}
.cm-pkt-b b{font-size:13px;color:var(--cm-t1);}
.cm-pkt-b span{font-size:12px;color:var(--cm-t6);}
.cm-seq-steps{margin:0;padding:0 0 0 20px;display:flex;flex-direction:column;gap:8px;}
.cm-seq-steps li{font-size:14px;line-height:1.7;color:var(--cm-t2);}
.cm-seq-steps li b{color:var(--cm-brandtext);}
.cm-flow{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;}
.cm-flow-node{flex:1 1 150px;display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--cm-bd2);border-radius:8px;background:var(--cm-card);text-align:center;}
.cm-flow-node b{font-size:13px;color:var(--cm-t1);}
.cm-flow-node span{font-size:12px;color:var(--cm-t6);}
.cm-flow-arrow{align-self:center;color:var(--cm-brand);font-size:18px;flex-shrink:0;}
/* ===== 随堂关卡（cm-gate） ===== */
.cm-gate{margin:18px 0;border:1px solid var(--cm-brandline);border-radius:10px;background:var(--cm-noticebg);padding:14px 16px;}
.cm-gate-head{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px;}
.cm-gate-flag{flex-shrink:0;font-size:12px;font-weight:600;color:#fff;background:var(--cm-brand);border-radius:4px;padding:2px 8px;margin-top:3px;}
.cm-gate-q{font-size:15px;font-weight:600;color:var(--cm-t1);line-height:1.6;}
.cm-gate-pass{border-color:var(--cm-okh);background:var(--cm-okbg);}
.cm-gate-pass .cm-gate-flag{background:var(--cm-ok);}
.cm-q-opts{display:flex;flex-direction:column;gap:8px;}
.cm-q-opt{display:block;width:100%;text-align:left;padding:9px 14px;border:1px solid var(--cm-bd2);border-radius:8px;background:var(--cm-card);color:var(--cm-t2);font-size:14px;line-height:1.6;cursor:pointer;transition:border-color .15s,background .15s;}
.cm-q-opt:hover{border-color:var(--cm-brandline);}
.cm-q-opt.cm-q-on{border-color:var(--cm-brand);background:var(--cm-tint);color:var(--cm-brandtext);font-weight:600;}
.cm-q-opt:disabled{cursor:not-allowed;opacity:.6;}
.cm-q-fb{margin-top:10px;font-size:13px;line-height:1.7;}
.cm-fb-ok{color:var(--cm-oktext);background:var(--cm-okbg);border:1px solid var(--cm-okh);border-radius:6px;padding:8px 12px;}
.cm-fb-err{color:var(--cm-errtext);background:var(--cm-errbg);border:1px solid var(--cm-dangerline);border-radius:6px;padding:8px 12px;}
.cm-q-fb .cm-q-right-hint{color:var(--cm-t6);}
.cm-gate-submit{margin-top:10px;padding:6px 18px;}
/* ===== 章节测验（cm-quiz） ===== */
.cm-quiz{border:1px solid var(--cm-bd2);border-radius:12px;background:var(--cm-subcard);padding:18px 20px;display:flex;flex-direction:column;gap:14px;}
.cm-quiz-head h4{margin:0 0 4px;font-size:18px;color:var(--cm-t1);}
.cm-quiz-head p{margin:0;font-size:13px;color:var(--cm-t6);}
.cm-q{background:var(--cm-card);border:1px solid var(--cm-bd2);border-radius:10px;padding:14px 16px;}
.cm-q-title{font-size:15px;font-weight:600;color:var(--cm-t1);margin-bottom:10px;line-height:1.6;}
.cm-q-answer{margin-top:10px;font-size:13px;line-height:1.7;border-radius:6px;padding:8px 12px;}
.cm-q-answer.cm-q-right{color:var(--cm-oktext);background:var(--cm-okbg);border:1px solid var(--cm-okh);}
.cm-q-answer.cm-q-wrong{color:var(--cm-errtext);background:var(--cm-errbg);border:1px solid var(--cm-dangerline);}
.cm-quiz-actions{display:flex;justify-content:center;gap:12px;}
.cm-quiz-result{margin-top:4px;border-radius:10px;padding:14px 16px;font-size:14px;line-height:1.7;}
.cm-quiz-result.cm-result-pass{background:var(--cm-okbg);border:1px solid var(--cm-okh);color:var(--cm-t2);}
.cm-quiz-result.cm-result-fail{background:var(--cm-errbg);border:1px solid var(--cm-dangerline);color:var(--cm-t2);}
.cm-quiz-score{font-size:22px;font-weight:700;color:var(--cm-brand);margin:0 0 6px;}
.cm-result-pass .cm-quiz-score{color:var(--cm-oktext);}
.cm-result-fail .cm-quiz-score{color:var(--cm-errtext);}
.cm-quiz-retry{margin-top:10px;display:flex;gap:10px;}
/* ===== 课时完成状态条 / 自动完成哨兵 ===== */
.cm-lesson-actions{gap:12px;flex-direction:column;align-items:center;}
.cm-lesson-state-bar{text-align:center;}
.cm-state{display:inline-block;font-size:13px;color:var(--cm-t6);background:var(--cm-subcard);border:1px solid var(--cm-bd2);border-radius:16px;padding:6px 16px;}
.cm-state-ok{color:var(--cm-oktext);background:var(--cm-okbg);border-color:var(--cm-okh);font-weight:600;}
.cm-lesson-end{height:2px;}
.cm-lesson-end-hint{font-size:13px;color:var(--cm-warn);text-align:center;padding:6px 0;}
/* ===== 结业徽章 / 章节分组 ===== */
.cm-badge{display:inline-block;font-size:12px;font-weight:600;color:#fff;background:var(--cm-ok);border-radius:12px;padding:2px 10px;margin-left:6px;vertical-align:middle;}
.cm-badge-sm{font-style:normal;font-size:11px;padding:1px 8px;margin-left:4px;}
.cm-course-head-tags{display:flex;align-items:center;margin-bottom:8px;}
.cm-chapter{margin-bottom:16px;}
.cm-chapter-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.cm-chapter-head h4{margin:0;font-size:16px;color:var(--cm-t1);border-left:3px solid var(--cm-brand);padding-left:8px;}
.cm-chapter-progress{font-size:12px;color:var(--cm-t7);}
/* ===== 图片容器（cm-fig）/ 对比表（cm-compare）/ 时间轴（cm-timeline） ===== */
.cm-fig{margin:16px auto;max-width:680px;background:var(--cm-card);border:1px solid var(--cm-bd2);border-radius:10px;padding:10px;text-align:center;}
.cm-fig img{max-width:100%;height:auto;border-radius:8px;display:block;margin:0 auto;}
.cm-fig figcaption{font-size:12px;color:var(--cm-t7);padding-top:8px;line-height:1.6;}
.cm-fig-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;}
.cm-fig-row .cm-fig{flex:1 1 300px;margin:0;}
.cm-compare{width:100%;border-collapse:collapse;margin:14px 0;font-size:14px;border-radius:8px;overflow:hidden;border:1px solid var(--cm-bd2);}
.cm-compare th,.cm-compare td{border:1px solid var(--cm-bd2);padding:9px 12px;text-align:left;line-height:1.6;}
.cm-compare thead th{background:var(--cm-tint);color:var(--cm-brandtext);font-weight:600;}
.cm-compare td:first-child{background:var(--cm-subcard);font-weight:600;color:var(--cm-t3);white-space:nowrap;}
.cm-timeline{list-style:none;margin:14px 0;padding:0 0 0 8px;display:flex;flex-direction:column;gap:10px;border-left:2px solid var(--cm-brandline);}
.cm-timeline li{position:relative;padding:2px 0 2px 18px;font-size:14px;color:var(--cm-t2);line-height:1.6;}
.cm-timeline li::before{content:'';position:absolute;left:-7px;top:9px;width:10px;height:10px;border-radius:50%;background:var(--cm-brand);box-shadow:0 0 0 3px var(--cm-tint);}
.cm-timeline li b{color:var(--cm-t1);}
/* ===== 泳道时序图（cm-seq2，支持逐步播放） ===== */
.cm-seq2{background:var(--cm-card);border:1px solid var(--cm-bd2);border-radius:10px;padding:14px 16px;}
.cm-seq2-head{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--cm-bd2);padding-bottom:8px;margin-bottom:10px;}
.cm-seq2-actor{text-align:center;font-weight:600;font-size:14px;color:var(--cm-t1);}
.cm-seq2-actor::before,.cm-seq2-actor::after{content:'──';color:var(--cm-t7);margin:0 4px;}
.cm-seq2-body{display:flex;flex-direction:column;gap:8px;}
.cm-seq2-row{position:relative;min-height:42px;display:flex;align-items:center;justify-content:center;gap:8px;padding:4px 0;
	background-image:linear-gradient(var(--cm-bd3),var(--cm-bd3)),linear-gradient(var(--cm-bd3),var(--cm-bd3));
	background-size:2px 8px,2px 8px;background-position:9% 4px,91% 4px;background-repeat:repeat-y;
	transition:opacity .3s;}
.cm-seq2-row::before{content:'';position:absolute;top:50%;height:2px;background:var(--cm-brand);transform:translateY(-50%);}
.cm-seq2-row::after{content:'';position:absolute;top:50%;transform:translateY(-50%);border:5px solid transparent;}
.cm-seq2-row.cm-seq2-a2b::before{left:9%;right:calc(50% - 2px);}
.cm-seq2-row.cm-seq2-a2b::after{right:calc(50% - 2px);border-left:8px solid var(--cm-brand);}
.cm-seq2-row.cm-seq2-b2a::before{left:calc(50% + 2px);right:9%;}
.cm-seq2-row.cm-seq2-b2a::after{left:calc(50% + 2px);border-right:8px solid var(--cm-brand);}
.cm-seq2-num{position:relative;z-index:2;flex-shrink:0;font-size:11px;font-weight:600;color:var(--cm-brandtext);background:var(--cm-tint);border:1px solid var(--cm-brandline);border-radius:10px;padding:0 7px;}
.cm-seq2-label{position:relative;z-index:2;max-width:70%;text-align:left;background:var(--cm-card);padding:4px 10px;border-radius:6px;font-size:13px;color:var(--cm-t2);border:1px solid var(--cm-bd2);line-height:1.5;}
.cm-seq2-row.cm-seq2-hide{opacity:.14;}
.cm-seq2-row.cm-seq2-cur{opacity:1;}
.cm-seq2-row.cm-seq2-cur .cm-seq2-label{border-color:var(--cm-brand);color:var(--cm-brandtext);font-weight:600;}
.cm-seq2-ctrl{display:flex;align-items:center;gap:10px;margin-top:10px;justify-content:center;}
.cm-seq2-progress{font-size:12px;color:var(--cm-t7);}
/* ===== 知识地图（cm-map，章首用） ===== */
.cm-map{display:flex;align-items:stretch;gap:6px;flex-wrap:wrap;justify-content:center;}
.cm-map-node{flex:1 1 120px;display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--cm-brandline);border-radius:8px;background:var(--cm-tint);text-align:center;}
.cm-map-node b{font-size:12px;color:var(--cm-brandtext);}
.cm-map-node span{font-size:11px;color:var(--cm-t6);line-height:1.5;}
.cm-map-arrow{align-self:center;color:var(--cm-brand);font-size:15px;flex-shrink:0;}
.cm-chapter-intro{margin:0 0 14px;padding:12px 14px;background:var(--cm-subcard);border:1px solid var(--cm-bd2);border-radius:10px;font-size:13px;color:var(--cm-t4);line-height:1.7;}
.cm-chapter-intro b{color:var(--cm-t1);}

/* ===== 课程结构编辑器（trainingpublish / trainingedit）===== */
.cm-editor-head h3{flex-shrink:0;}
.cm-ch-item{border:1px solid var(--cm-bd2);border-radius:10px;margin-bottom:14px;background:var(--cm-subcard);overflow:hidden;}
.cm-ch-head{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--cm-card);border-bottom:1px solid var(--cm-line);}
.cm-ch-title{width:auto;flex:1 1 240px;min-width:0;}
.cm-ch-title-static{margin:0;font-size:15px;color:var(--cm-t4);flex:1;}
.cm-editor-lessons{list-style:none;margin:0;padding:8px 12px;display:flex;flex-direction:column;gap:6px;min-height:36px;}
.cm-editor-lessons.cm-drag-over{outline:2px dashed var(--cm-brand2);outline-offset:-2px;border-radius:6px;}
.cm-lesson-editor-row{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--cm-card);border:1px solid var(--cm-bd2);border-radius:8px;transition:border-color .15s;}
.cm-lesson-editor-row.cm-drag-over{border-color:var(--cm-brand);box-shadow:0 0 0 2px rgba(0,102,255,.12);}
.cm-lesson-editor-row.cm-drag-ghost{opacity:.4;}
.cm-lesson-editor-row .cm-lesson-idx{width:26px;height:26px;font-size:12px;flex-shrink:0;}
.cm-lesson-editor-row .cm-lesson-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;color:var(--cm-t2);}
.cm-lesson-editor-row .cm-lesson-meta{flex-shrink:0;}
.cm-lesson-actions{display:flex;gap:10px;flex-shrink:0;}
.cm-lesson-del{color:var(--cm-danger);}
.cm-lesson-del:hover{color:var(--cm-danger);}
.cm-drag-handle{cursor:grab;color:var(--cm-t6);font-size:14px;letter-spacing:-2px;user-select:none;flex-shrink:0;}
.cm-drag-handle:active{cursor:grabbing;}
.cm-ch-actions{padding:8px 14px 12px;}
.cm-lesson-panel{margin:10px 0 2px;padding:12px 14px;background:var(--cm-subcard);border:1px dashed var(--cm-bd2);border-radius:8px;}
.cm-q-manager{margin-top:6px;}
.cm-q-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.cm-q-head h5{margin:0;font-size:14px;color:var(--cm-t2);}
.cm-q-list{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:6px;}
.cm-q-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--cm-card);border:1px solid var(--cm-bd2);border-radius:6px;font-size:13px;}
.cm-q-type{flex-shrink:0;padding:1px 8px;font-size:11px;color:var(--cm-brand);background:var(--cm-tint4);border-radius:4px;}
.cm-q-text{flex:1;min-width:0;color:var(--cm-t3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cm-q-actions{display:flex;gap:10px;flex-shrink:0;}
.cm-q-form{padding:12px 14px;background:var(--cm-card);border:1px solid var(--cm-bd2);border-radius:8px;margin-bottom:8px;}
.qf-opts{display:flex;flex-direction:column;gap:6px;margin-bottom:8px;}
.qf-opt{display:flex;align-items:center;gap:8px;}
.qf-opt input[type="text"]{padding:6px 10px;border:1px solid var(--cm-bd3);border-radius:5px;font-size:13px;color:var(--cm-t2);background:var(--cm-card);}
.qf-opt label{font-size:13px;color:var(--cm-t3);}
.cm-uncategorized .cm-ch-head{border-bottom-color:var(--cm-line);}
