/* ── Design Tokens（极简扁平黑灰 · 2026-11-06 全站收敛） ─────────── */
:root{
  /* 底色与墨色 · 中性黑灰（ChatGPT 式：浅灰侧栏 + 白主区） */
  --bg:#FAFAFA; --surface:#FFFFFF; --surface-2:#F4F4F4; --line:#E6E6E6;
  --ink:#1A1A1A; --ink-2:#636363; --ink-3:#9B9B9B;
  /* 语义色（仅状态用，低饱和） */
  --ok:#3D8B5F; --warn:#B45309; --err:#C23335; --info:#5B8BD4;
  /* 模块色已全部收敛为中性灰：保留变量名仅为兼容旧引用，勿再引入彩色 */
  --c-radar:#1A1A1A;    --c-radar-bg:#F0F0F0;
  --c-break:#1A1A1A;    --c-break-bg:#F0F0F0;
  --c-compose:#1A1A1A;  --c-compose-bg:#F0F0F0;
  --c-media:#1A1A1A;    --c-media-bg:#F0F0F0;
  --c-dist:#1A1A1A;     --c-dist-bg:#F0F0F0;
  --c-kb:#1A1A1A;       --c-kb-bg:#F0F0F0;
  --c-config:#1A1A1A;   --c-config-bg:#F0F0F0;
  --c-monitor:#1A1A1A;  --c-monitor-bg:#F0F0F0;
  /* 唯一强调色 = 墨色（操作链接 / 主按钮 / 选中态） */
  --c-action:#1A1A1A;
  /* 形状 / 阴影 / 动效 */
  --r-sm:10px; --r-md:16px; --r-lg:24px; --r-pill:999px;
  --r-field:14px;   /* 输入框统一圆角：text/number/select/textarea 共用 */
  --sh-1:0 1px 2px rgba(32,30,27,.06);
  --sh-2:0 8px 24px rgba(32,30,27,.10);
  --t-fast:120ms cubic-bezier(.2,.8,.3,1);
  --t-med:200ms cubic-bezier(.2,.8,.3,1);
  /* 旧变量别名（JS 内联样式兼容，勿删） */
  --bg2:var(--surface); --bg3:var(--surface-2);
  --fg:var(--ink); --fg2:var(--ink-2); --fg3:var(--ink-3);
  --acc:var(--ink); --r:var(--r-sm);
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{
  background:var(--bg);color:var(--ink);
  font:300 14px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
b,strong{font-weight:500}
::selection{background:#E6E6E6}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--ink);text-decoration:underline}
:focus-visible{outline:2px solid var(--ink);outline-offset:1px;border-radius:var(--r-sm)}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#D8D8D8;border-radius:var(--r-pill)}
::-webkit-scrollbar-track{background:transparent}

/* layout */
#app{display:flex;height:100vh;overflow:hidden}
#side{
  width:224px;flex:0 0 224px;background:var(--bg);border-right:1px solid var(--line);
  display:flex;flex-direction:column;padding:16px 10px;gap:4px;
}
.brand{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:4px 8px 16px}
.brand .brand-logo{display:block;height:27px;width:auto;max-width:100%;object-fit:contain}
.brand .dot{
  width:26px;height:26px;border:0;border-radius:9px;display:grid;place-items:center;
  font-size:13px;color:#fff;background:var(--ink);
}
.brand:hover .dot{animation:rot .9s cubic-bezier(.4,0,.2,1)}
.brand b{font-size:14px;letter-spacing:.2px}
.brand small{display:block;color:var(--ink-2);font-size:12px;font-weight:300}
.nav{display:flex;flex-direction:column;gap:1px;overflow-y:auto}
/* 导航分组：弱化小字 + 右侧分割线（2026-11-06 分组轮） */
.nav-grp{display:flex;align-items:center;gap:8px;margin:12px 6px 4px;padding:0 5px}
.nav-grp:first-child{margin-top:2px}
.nav-grp-t{font-size:11px;color:var(--ink-3);letter-spacing:.5px;white-space:nowrap}
.nav-grp::after{content:'';flex:1;height:1px;background:var(--line)}
.nav button{
  display:flex;align-items:center;gap:8px;width:100%;text-align:left;
  background:none;border:0;border-radius:10px;padding:6px 10px;color:var(--ink-2);
  cursor:pointer;font-size:13px;font-weight:400;
  transition:background var(--t-fast),color var(--t-fast);
}
.nav button:hover{background:var(--surface-2);color:var(--ink)}
.nav button .ic svg{transition:transform var(--t-fast)}
.nav button:hover .ic svg{transform:rotate(-8deg) scale(1.1)}
.nav button.on{background:var(--surface-2);color:var(--ink);font-weight:500}
.nav .ic{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex:0 0 16px}
.nav .ic svg{display:block;width:100%;height:100%;overflow:visible}
.nav .badge{margin-left:auto;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-pill);padding:0 6px;font-size:12px;color:var(--ink-2)}
#side .foot{margin-top:auto;padding:10px 8px;color:var(--ink-2);font-size:13px;line-height:1.5}
#main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface)}
#topbar{
  height:54px;flex:0 0 54px;display:flex;align-items:center;
  gap:12px;padding:0 18px;background:var(--surface)
}
#topbar .tt{display:flex;align-items:baseline;gap:10px;min-width:0}
#topbar h1{font-size:16px;margin:0;font-weight:500;white-space:nowrap}
#topbar .sub{color:var(--ink-3);font-size:13px;font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#topbar .right{margin-left:auto;display:flex;gap:8px;align-items:center}
#view{flex:1;overflow:auto;padding:20px;background:var(--surface)}
@media(min-width:1280px){#view>*{max-width:1100px;margin-left:auto;margin-right:auto}}

/* components */
.card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:20px;
}
.card+.card{margin-top:14px}
.card h3{margin:0 0 10px;font-size:13px;color:var(--ink-2);font-weight:500;letter-spacing:.3px;
  display:flex;align-items:center;gap:8px}
.card h3 .r{margin-left:auto;font-weight:300}
.grid{display:grid;gap:12px}
.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.tight{gap:6px}
.sp{margin-left:auto}
.mut{color:var(--ink-2)}
.mut2{color:var(--ink-2)}
.small{font-size:13px}
.tiny{font-size:13px}
.hr{height:1px;background:var(--line);margin:12px 0;border:0}

label.f{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--ink-2)}
input[type=text],input[type=number],input[type=password],select,textarea{
  background:var(--surface-2);border:1px solid transparent;border-radius:var(--r-field);
  padding:8px 12px;outline:none;width:100%;
  transition:border-color var(--t-fast),background var(--t-fast);
}
input:focus,select:focus,textarea:focus{border-color:var(--ink);background:var(--surface)}
textarea{resize:vertical;line-height:1.65}
input[type=range]{width:100%;accent-color:var(--ink)}
input[type=checkbox],input[type=radio]{accent-color:var(--ink);width:15px;height:15px}
button.btn,a.btn{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-pill);
  padding:8px 16px;cursor:pointer;white-space:nowrap;
  transition:background var(--t-fast),border-color var(--t-fast),transform var(--t-fast);
}
a.btn{display:inline-flex;align-items:center;text-decoration:none;color:inherit;font-size:13px}
button.btn:hover,a.btn:hover{background:var(--surface-2)}
button.btn:active,a.btn:active{transform:scale(.98)}
button.btn.pri,a.btn.pri{background:var(--ink);border:1px solid var(--ink);color:#fff;font-weight:500}
button.btn.pri:hover,a.btn.pri:hover{background:#3B3835;border-color:#3B3835}
button.btn.gho,a.btn.gho{background:transparent;border-color:transparent}
button.btn.gho:hover,a.btn.gho:hover{background:var(--surface-2)}
button.btn.dan,a.btn.dan{color:var(--ink);border-color:var(--err)}
button.btn.dan:hover,a.btn.dan:hover{background:#DC444614}
button.btn.dan-pri,a.btn.dan-pri{background:var(--err);border-color:var(--err);color:#fff}
button.btn.dan-pri:hover,a.btn.dan-pri:hover{background:#C23335;border-color:#C23335}
button.btn:disabled,a.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
button.btn.sm,a.btn.sm{padding:4px 12px;font-size:13px}
.chip{
  display:inline-flex;align-items:center;gap:5px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-pill);padding:4px 12px;font-size:13px;cursor:pointer;color:var(--ink-2);
  transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast);
}
.chip:hover{background:var(--surface-2);color:var(--ink)}
.chip.on{background:var(--surface-2);border-color:var(--ink);color:var(--ink);font-weight:500}
/* 雷达设置：采集平台与代理方式的选中标签文字压到 300（2026-11-06） */
#rd-collect .chip.on,#rd-source .chip.on{font-weight:300}
.tag{display:inline-block;background:var(--surface-2);border:1px solid transparent;
  border-radius:var(--r-pill);padding:1px 8px;font-size:13px;color:var(--ink-2);margin:2px 3px 2px 0}
.pill{padding:1px 9px;font-size:13px;font-weight:500;border:1px solid transparent;border-radius:var(--r-pill)}
.pill.ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 45%,transparent);background:color-mix(in srgb,var(--ok) 9%,transparent)}
.pill.warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,transparent);background:color-mix(in srgb,var(--warn) 9%,transparent)}
.pill.err{color:var(--err);border-color:color-mix(in srgb,var(--err) 45%,transparent);background:color-mix(in srgb,var(--err) 9%,transparent)}
.pill.info{color:var(--ink-2);border-color:var(--line);background:var(--surface-2)}

/* note cards */
.notes{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(255px,1fr))}
.note{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;
  display:flex;flex-direction:column;position:relative;
  transition:border-color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast)}
.note:hover{border-color:#C9C9C9;box-shadow:var(--sh-1);transform:translateY(-1px)}
.note.sel{border-color:var(--ink);background:var(--surface-2)}
.note .cov{height:150px;background:var(--surface-2) center/cover no-repeat;position:relative;flex:0 0 auto}
.note .cov .plat{position:absolute;left:8px;top:8px;background:rgba(255,255,255,.92);
  border-radius:var(--r-pill);padding:2px 8px;font-size:13px}
.note .cov .pick{position:absolute;right:8px;top:8px;background:rgba(255,255,255,.92);
  border-radius:var(--r-pill);padding:2px 8px}
.note .bd{padding:12px;display:flex;flex-direction:column;gap:6px;flex:1}
.note .tt{font-size:13px;line-height:1.45;font-weight:500;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden}
.note .mt{display:flex;gap:9px;flex-wrap:wrap;font-size:13px;color:var(--ink-2)}
.note .mt b{color:var(--ink-2);font-weight:500;font-variant-numeric:tabular-nums}
.note .au{font-size:13px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.note .ops{display:flex;gap:6px;align-items:center;margin-top:auto;padding-top:4px}
.src{cursor:pointer}
.src .nm{font-weight:500;font-size:13px;margin-bottom:3px}
.src .ds{font-size:13px;color:var(--ink-2);line-height:1.45}

/* table */
table.tb{width:100%;border-collapse:collapse;font-size:13px}
table.tb th{text-align:left;color:var(--ink-2);font-weight:500;padding:7px 9px;border-bottom:1px solid var(--line);
  position:sticky;top:0;background:var(--surface);z-index:1}
table.tb td{padding:7px 9px;border-bottom:1px solid var(--line);vertical-align:top}
table.tb tr:hover td{background:var(--surface-2)}
table.tb td.n,table.tb th.n{text-align:right;font-variant-numeric:tabular-nums}
.bar{height:5px;background:var(--surface-2);border-radius:var(--r-pill);overflow:hidden;min-width:44px}
.bar i{display:block;height:100%;background:var(--ink);border-radius:var(--r-pill)}
.sc{display:flex;align-items:center;gap:7px;min-width:96px}
.sc b{width:26px;text-align:right;font-variant-numeric:tabular-nums;font-size:13px}

/* misc */
.empty{text-align:center;color:var(--ink-2);padding:44px 20px;font-size:13px}
.empty .big{font-size:20px;margin-bottom:10px}
.spin{
  display:inline-block;width:12px;height:12px;margin-right:2px;vertical-align:-2px;
  border:2px solid currentColor;border-top-color:transparent;border-radius:50%;
  animation:rot .7s linear infinite;
}
@keyframes rot{to{transform:rotate(360deg)}}
#toast{position:fixed;right:20px;top:16px;display:flex;flex-direction:column;gap:8px;z-index:99}
#toast div{
  display:flex;align-items:center;gap:9px;background:var(--ink);color:#fff;border:0;
  border-radius:var(--r-pill);padding:10px 16px;font-size:13px;max-width:390px;
  box-shadow:var(--sh-2);animation:tin var(--t-med);
  transition:opacity var(--t-med),transform var(--t-med);
}
.tst-x{background:none;border:0;color:#fff;cursor:pointer;font-size:13px;opacity:.7;padding:0 0 0 4px}
.tst-x:hover{opacity:1}
.tst-a{background:rgba(255,255,255,.16);border:0;color:#fff;cursor:pointer;font:inherit;font-size:12.5px;
  line-height:1;padding:7px 12px;border-radius:999px;white-space:nowrap;flex:0 0 auto;
  transition:background var(--t-fast, .12s)}
.tst-a:hover{background:rgba(255,255,255,.28)}
.tst-a:focus-visible{outline:2px solid #fff;outline-offset:2px}
#toast div::before{content:'';width:8px;height:8px;border-radius:50%;background:#fff;flex:0 0 auto}
#toast div.ok::before{background:var(--ok)}
#toast div.err::before{background:var(--err)}
#toast div.warn::before{background:var(--warn)}
@keyframes tin{from{opacity:0;transform:translateY(-6px)}}
.modal{position:fixed;inset:0;background:rgba(32,30,27,.40);display:grid;place-items:center;z-index:80;padding:24px}
.modal .box{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  max-width:900px;width:100%;max-height:88vh;overflow:auto;padding:22px;
  box-shadow:var(--sh-2);animation:pop var(--t-med)}
@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.99)}}
.kv{display:grid;grid-template-columns:88px 1fr;gap:6px 10px;font-size:13px}
.kv .k{color:var(--ink-2)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}
.code{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:10px 12px;white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.62;
  max-height:340px;overflow:auto}
.split{display:grid;grid-template-columns:1fr 340px;gap:14px;align-items:start}
@media(max-width:1080px){.split{grid-template-columns:1fr}}
/* 保存成品弹窗（004）：左侧成品预览 + 右侧保存设置，底部「取消 / 立即保存」 */
.save-dlg-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.save-dlg{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:stretch}
.save-dlg-pv{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-field);
  padding:14px;display:flex;flex-direction:column;gap:10px;align-items:center;min-width:0;
  justify-content:center}
.save-dlg-pv img{max-width:100%;max-height:60vh;display:block;object-fit:contain;
  border-radius:10px;box-shadow:var(--sh-1)}
.save-dlg-info{display:flex;flex-wrap:wrap;gap:6px;font-size:13px;color:var(--ink-2)}
.save-dlg-info b{font-weight:500;color:var(--ink)}
.save-dot{opacity:.5}
.save-dlg-form{display:flex;flex-direction:column;gap:14px;min-width:0}
.save-dlg-dir{display:flex;gap:8px;align-items:center}
.save-dlg-dir input{flex:1;min-width:0}
.save-dlg-dir .btn{flex:0 0 auto}
.save-dlg-fmt .ed-chiprow{margin-top:2px}
.save-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:auto;padding-top:4px}
.save-actions .btn{min-height:36px;padding:0 18px}
/* 视频导出弹窗复用保存成品双栏：左侧播放器 + 信息，右侧档位 / 文件名 / 目录 */
.save-dlg-pv video{max-width:100%;max-height:60vh;display:block;border-radius:10px;
  background:#000;box-shadow:var(--sh-1)}
.ed-exp-wait{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;min-height:240px;padding:40px 12px;text-align:center;color:var(--ink-2);
  font-size:13px;line-height:1.55}
.ed-exp-t{font-size:14px;font-weight:500;color:var(--ink);
  font-variant-numeric:tabular-nums}
.ed-exp-err{font-size:14px;font-weight:500;color:var(--err)}
.ed-exp-spin{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);
  border-top-color:var(--ink);animation:ed-exp-spin .9s linear infinite}
@keyframes ed-exp-spin{to{transform:rotate(360deg)}}
.ed-exp-path{font-size:11.5px;color:var(--ink-3);word-break:break-all;line-height:1.45;
  text-align:center}
@media(max-width:900px){.save-dlg{grid-template-columns:1fr}.save-dlg-pv img,
  .save-dlg-pv video{max-height:38vh}}
.hint{border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 12px;font-size:13px;color:var(--ink-2)}
.warnbox{border:1px solid color-mix(in srgb,var(--warn) 40%,transparent);border-radius:var(--r-sm);
  background:color-mix(in srgb,var(--warn) 8%,transparent);padding:9px 12px;font-size:13px;color:var(--ink-2)}
.errbox{border:1px solid color-mix(in srgb,var(--err) 40%,transparent);border-radius:var(--r-sm);
  background:color-mix(in srgb,var(--err) 8%,transparent);padding:9px 12px;font-size:13px;color:var(--ink-2)}
.okbox{border:1px solid color-mix(in srgb,var(--ok) 40%,transparent);border-radius:var(--r-sm);
  background:color-mix(in srgb,var(--ok) 8%,transparent);padding:9px 12px;font-size:13px;color:var(--ink-2)}

/* image lab */
.lab{display:grid;grid-template-columns:190px 1fr 320px;gap:14px;align-items:start}
@media(max-width:1280px){.lab{grid-template-columns:170px 1fr 290px}}
@media(max-width:1000px){.lab{grid-template-columns:1fr}}
.thumbs{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-height:520px;overflow:auto}
.thumb{position:relative;aspect-ratio:1;overflow:hidden;border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--surface-2) center/cover no-repeat;cursor:pointer;transition:border-color var(--t-fast)}
.thumb.on{border-color:var(--ink)}
.thumb .x{position:absolute;right:3px;top:3px;background:rgba(255,255,255,.92);border-radius:var(--r-pill);
  width:18px;height:18px;display:grid;place-items:center;font-size:13px}
.stage{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);
  min-height:460px;display:grid;place-items:center;padding:14px;overflow:auto}
.stage canvas{max-width:100%;max-height:640px;border:1px solid var(--line);border-radius:var(--r-sm)}
.tools section{border-top:1px solid var(--line);padding:11px 0}
.tools section:first-child{border-top:0;padding-top:0}
.tools h4{margin:0 0 9px;font-size:13px;color:var(--ink-2);letter-spacing:.3px}
.sl{display:grid;grid-template-columns:62px 1fr 34px;gap:8px;align-items:center;font-size:13px;color:var(--ink-2);margin-bottom:5px}
.sl b{text-align:right;color:var(--ink-2);font-variant-numeric:tabular-nums}
.styles{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.styles .chip{justify-content:center;padding:5px 4px;font-size:13px}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:9px}
.gallery .gi{border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:var(--surface)}
.gallery .gi img{width:100%;height:92px;object-fit:cover;display:block;cursor:pointer}
.gallery .gi .m{padding:4px 6px;font-size:13px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sec-title{font-size:16px;font-weight:500;margin:0 0 4px}
.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:14px;flex-wrap:wrap}
.tabs button{background:none;border:0;padding:8px 13px;color:var(--ink-2);cursor:pointer;
  border-bottom:2px solid transparent;font-size:13px;transition:color var(--t-fast),border-color var(--t-fast)}
.tabs button:hover{color:var(--ink)}
.tabs button.on{color:var(--ink);border-bottom-color:var(--ink);font-weight:500}
.dlg{display:grid;gap:8px}
.cardlist{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.pcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:12px;cursor:pointer;
  transition:border-color var(--t-fast),background var(--t-fast)}
.pcard:hover{border-color:#C9C9C9}
.pcard.on{border-color:var(--ink);background:var(--surface-2)}
.pcard b{display:block;font-size:14px;margin-bottom:3px}
.pcard .meta{font-size:13px;color:var(--ink-2);display:flex;gap:8px;flex-wrap:wrap}

/* 003 内容撰写试点：透明内容区、字重与间距分块、三方案横向比较 */
.compose-page{position:relative;isolation:isolate;max-width:100%;min-width:0;padding:0 4px 40px}
.compose-page>*:not(.cp-decor){position:relative;z-index:1}
.cp-decor{position:absolute;right:0;top:44px;width:210px;height:132px;pointer-events:none;z-index:0}
.cp-decor svg{display:block;width:100%;height:100%}
.cp-tabs{display:flex;gap:26px;margin:0 0 20px}
.cp-tabs button{position:relative;background:none;border:0;padding:5px 0 9px;color:var(--ink-2);cursor:pointer;font-size:13px}
.cp-tabs button:hover{color:var(--ink)}
.cp-tabs button.on{color:var(--ink);font-weight:500}
.cp-tabs button.on::after{content:'';position:absolute;left:0;bottom:0;width:22px;height:2px;background:var(--ink);border-radius:2px}
.cp-panel[hidden]{display:none}
.cp-loading{padding:26px 0;color:var(--ink-2);font-size:13px}
.cp-inputs{display:grid;gap:14px;min-width:0}
.cp-section{min-width:0}
.cp-section-head{display:flex;align-items:baseline;gap:9px;min-height:20px;margin-bottom:5px}
.cp-section-head h3,.cp-history-head h3,.cp-result-head h3,.cp-result-empty h3{margin:0;font-size:14px;font-weight:500;letter-spacing:.15px}
.cp-hint{color:var(--ink-2);font-size:13px;font-weight:300;line-height:1.5}
.cp-section-head .cp-hint{margin-left:4px}
.cp-settings{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.compose-page input[type=text],.compose-page select,.compose-page textarea{
  background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:5px 0;
}
.compose-page input[type=text]:focus,.compose-page select:focus,.compose-page textarea:focus{
  background:transparent;border-bottom-color:var(--ink);outline:none;
}
.compose-page select{cursor:pointer;padding-right:22px}
/* 撰写页自定义下拉（2026-11-06）：触发器与原生 select 同款下划线；
   浮出框与触发器左右两端对齐（同宽）、顶部贴触发器底部横线 */
.cp-sel{position:relative;display:flex;align-items:center;gap:8px;width:100%;min-height:32px;
  background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;
  padding:5px 0;cursor:pointer;color:var(--ink)}
.cp-sel:focus{outline:none;border-bottom-color:var(--ink)}
.cp-sel-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.cp-sel-arrow{flex:0 0 auto;width:12px;height:12px;color:var(--ink-3)}
.cp-sel-pop{position:absolute;left:0;right:0;top:calc(100% + 1px);z-index:40;margin:0;padding:4px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);
  box-shadow:0 8px 24px rgba(0,0,0,.10);max-height:260px;overflow:auto}
.cp-sel-pop[hidden]{display:none}
.cp-sel-opt{display:block;width:100%;text-align:left;border:0;background:none;
  padding:6px 8px;font-size:13px;color:var(--ink);border-radius:var(--r-sm);
  cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-sel-opt:hover{background:var(--surface-2)}
.cp-sel-opt.on{font-weight:500}
.cp-viewpoint-input{display:block;min-height:72px;font-size:13px;line-height:1.65;resize:vertical}
.cp-reference-warning{margin-top:10px;color:var(--ink-2);font-size:13px;line-height:1.7}
.cp-platforms{display:flex;gap:6px;flex-wrap:wrap}
.cp-platform{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:3px 10px;background:transparent;
  border:1px solid var(--line);border-radius:var(--r-pill);color:var(--ink-2);cursor:pointer;font-size:13px;
  transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}
.cp-platform:hover{border-color:var(--ink-2);color:var(--ink)}
.cp-platform.on{background:var(--c-compose-bg);border-color:color-mix(in srgb,var(--c-compose) 42%,transparent);color:var(--ink);font-weight:500}
.cp-guide{margin-top:6px;padding:0;background:transparent;border:0}
.cp-guide summary{display:inline-flex;align-items:center;gap:4px;cursor:pointer;color:var(--ink-2);font-size:13px;list-style:none}
.cp-guide summary::-webkit-details-marker{display:none}
.cp-guide-arrow{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--t-fast)}
.cp-guide[open] .cp-guide-arrow{transform:rotate(180deg)}
.cp-guide[open] summary{margin-bottom:7px;color:var(--ink-2)}
.cp-guide-body{display:flex;gap:5px 18px;flex-wrap:wrap;max-width:820px;color:var(--ink-2);font-size:13px;line-height:1.6;overflow-wrap:anywhere}
.cp-guide-body span:first-child,.cp-guide-body span:nth-child(2){color:var(--ink-2)}
.cp-generate-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:0}
.cp-generate{min-width:136px}
.cp-generation-status{color:var(--ink-2);font-size:13px}
.cp-generation-status:empty{display:none}
.cp-out{margin-top:26px;padding-top:22px;border-top:1px solid var(--ink);min-width:0}
.cp-result-empty{padding:4px 0 10px;color:var(--ink-2)}
.cp-result-empty h3{margin:0}
.cp-result-empty .cp-hint{margin:6px 0 0}
.cp-result-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px}
.cp-result-head>div{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.cp-note{margin:-8px 0 18px;color:var(--ink-2);font-size:13px}
.cp-schemes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:start;min-width:0;max-width:100%}
.cp-scheme{min-width:0;padding:16px;background:#FAFAFA;border-radius:var(--r-md)}
.cp-scheme-head{display:flex;align-items:center;gap:10px;min-height:30px}
.cp-save{margin-left:0;color:var(--ink-2);font-size:13px;font-weight:300;white-space:nowrap}
.cp-copy,.cp-text-btn{background:transparent;border:0;padding:2px 0;color:var(--ink-2);cursor:pointer;font-size:13px;
  text-decoration:none;transition:color var(--t-fast)}
.cp-copy:hover,.cp-text-btn:hover{color:var(--ink)}
.cp-copy-all{margin-left:auto;white-space:nowrap}
.cp-field{margin-top:22px;min-width:0}
.cp-field-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:3px}
.cp-field-head label{color:var(--ink-2);font-size:13px;font-weight:500}
.cp-title{display:block;width:100%;min-height:46px;font-size:14px;font-weight:500;line-height:1.6;resize:none;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.cp-body{min-height:250px;font-size:14px;line-height:1.8;resize:vertical}
.cp-tags{font-size:13px}
.cp-scheme-foot{display:flex;align-items:center;gap:10px;margin-top:16px}
.cp-risks{margin-top:10px;font-size:13px;line-height:1.7;color:var(--ink-2)}
.cp-risk-group{margin-top:10px}
.cp-risk-title{font-weight:500}
.cp-risk-list span{display:block;overflow-wrap:anywhere}
.cp-risk-group .cp-text-btn{margin-top:3px;color:var(--ink-2)}
.cp-risk-clean{color:var(--ink-2)}
.cp-history-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.cp-history-head>div{display:flex;align-items:baseline;gap:9px}
.cp-history-list{margin-top:18px}
.cp-history-row{display:grid;grid-template-columns:minmax(0,1fr) 90px 100px;gap:16px;align-items:center;width:100%;
  padding:15px 0;background:transparent;border:0;color:var(--ink);text-align:left;cursor:pointer;border-radius:0}
.cp-history-row:hover .cp-history-title{color:var(--c-compose)}
.cp-history-row:disabled{opacity:.5;cursor:wait}
.cp-history-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;transition:color var(--t-fast)}
.cp-history-meta{color:var(--ink-2);font-size:13px;white-space:nowrap}
.cp-history-empty{padding:38px 0;color:var(--ink-2);font-size:13px}
.cp-history-empty p{max-width:480px;margin:0 0 16px;line-height:1.8}
.cp-sr{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
  overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

@media(max-width:1100px){
  .cp-schemes{display:flex;gap:28px;overflow-x:auto;padding-bottom:12px;scroll-snap-type:x proximity;overscroll-behavior-x:contain}
  .cp-scheme{flex:0 0 min(78vw,340px);scroll-snap-align:start}
  .cp-result-head{align-items:flex-start;flex-direction:column;gap:5px}
}
@media(max-width:768px){
  .compose-page{padding:0 0 26px}
  .cp-decor{top:36px;width:140px;height:88px;opacity:.7}
  .cp-tabs{margin-bottom:20px}
  .cp-inputs{gap:20px}
  .cp-settings{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
  .cp-section-head{flex-wrap:wrap}
  .cp-section-head .cp-hint{flex-basis:100%;margin-left:25px}
  .cp-out{margin-top:26px}
  .cp-scheme{flex-basis:min(82vw,340px)}
  .cp-history-head{align-items:flex-start;flex-direction:column;gap:5px}
  .cp-history-row{grid-template-columns:minmax(0,1fr) auto;gap:4px 12px}
  .cp-history-title{grid-column:1/-1}
}

/* 005 一键分发：左栏全局编辑，右栏平台 tab 逐个预览 */
.dp-page{max-width:100%;--surface-2:#F7F7F7;--field-bg:#F4F4F4;--line:#E6E6E6;--c-dist-bg:#F4F4F4}
.dp-panel{min-width:0}
.dp-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start}
.dp-left{display:grid;gap:16px;min-width:0;padding:16px 18px;background:var(--surface-2);border-radius:var(--r-md)}
/* 分发页只保留页面一根纵向滚动条：右栏随文档流走，不再单独开一个滚动容器
   （此前 sticky + max-height + overflow-y:auto 与页面滚动条并排出现，滚起来分不清哪个在动）。 */
.dp-right{display:grid;gap:14px;min-width:0}
.dp-fake-banner{margin:0 0 14px;padding:8px 12px;border-radius:var(--r-md);background:var(--surface-2);color:var(--ink-2);font-size:13px}
.dp-source-line{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--ink-2);font-size:12px;line-height:18px}
.dp-source-head{align-items:center}
/* 操作链接：深绿图文、不加粗，与主/次按钮（媒体创作同款胶囊）区分开。
   这里必须用 .dp-btn.dp-link-btn 提高权重，否则会被后面的 .dp-btn 墨色覆盖；
   font-weight 同理，写在复合选择器上才压得住 .dp-btn. */
.dp-link-btn,.dp-btn.dp-link-btn:hover:not(:disabled){color:var(--c-action)}
.dp-btn.dp-link-btn{background:transparent;border-color:transparent;padding-left:2px;padding-right:2px;
  color:var(--c-action);font-weight:300}
.dp-btn.dp-link-btn:hover:not(:disabled){background:color-mix(in srgb,var(--c-action) 9%,transparent);border-color:transparent}
.dp-global-fields{display:grid;gap:10px;min-width:0}
.dp-source-label{min-width:0;overflow-wrap:anywhere}
.dp-save{color:var(--ink-2);font-size:13px;white-space:nowrap}
.dp-save:empty{display:none}
.dp-source-note{margin-top:5px;color:var(--ink-2);font-size:12px;line-height:18px}
.dp-source-note.is-deleted{color:var(--err)}
.dp-field{display:grid;gap:2px;min-width:0}
.dp-field>span{color:var(--ink-2);font-size:13px;font-weight:500}
.dp-right-empty{padding:38px 20px;border:1px dashed var(--line);border-radius:var(--r-md);color:var(--ink-2);font-size:13px;text-align:center}
.dp-right-empty p{margin:0}
/* 主/次按钮：与「媒体创作」一致——次级白底描边胶囊，主按钮墨色胶囊 */
.dp-btn{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:4px 12px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);font:inherit;font-size:13px;line-height:1.2;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}
.dp-btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--ink-3);color:var(--ink)}
.dp-btn.pri{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:500}
.dp-btn.pri:hover:not(:disabled){background:#3B3835;border-color:#3B3835;color:#fff}
.dp-btn.dan{color:var(--err);border-color:color-mix(in srgb,var(--err) 40%,transparent)}
.dp-btn.dan:hover:not(:disabled){background:color-mix(in srgb,var(--err) 8%,transparent);border-color:var(--err);color:var(--err)}
.dp-btn:disabled{opacity:.45;cursor:not-allowed}
.dp-btn .wb-ico{width:16px;height:16px;flex:0 0 16px}
.dp-btn-label{white-space:nowrap}
.dp-page .cp-title{font-size:13px;min-height:28px;line-height:1.55}
/* 左栏正文同样按内容撑开：分发页任何输入框都不在框内自己滚（单滚动条口径）。 */
.dp-page .cp-body{font-size:13px;min-height:220px;line-height:1.7;overflow-y:hidden}
.dp-page .cp-tags{font-size:13px}
.dp-page .dp-title-input{font-size:13px}
/* 右栏标题/标签：单行起、自动增高换行；正文同样只纵向滚动，不出横向滚动条。 */
.dp-page .dp-title-input,.dp-page .dp-tags-input,.dp-page .dp-textarea{
  display:block;width:100%;min-width:0;line-height:1.6;resize:none;
  overflow-x:hidden;overflow-y:hidden;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.dp-page .dp-title-input,.dp-page .dp-tags-input{min-height:30px}
.dp-cards{display:grid;gap:14px;min-width:0}
/* 扁平卡片：无边框、无阴影；左栏浅灰面板内保持透明 */
.dp-card,.dp-platform-card{min-width:0;padding:15px 16px;background:transparent;border:0;border-radius:var(--r-md)}
/* 当前选中平台的标题行贴近卡片顶部：顶部留白 15px → 9px（-40%）。 */
.dp-platform-card{padding-top:9px}
/* 平台标题行不换行：账号始终和平台名同排，档位说明让位省略。 */
.dp-card-head{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}
.dp-card-head h3{flex:0 0 auto;margin:0;font-size:14px;font-weight:500}
/* 档位说明：弱化的直白小字，不再用标签胶囊；宽度不够时省略，完整文案看 title。 */
.dp-tier-note{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2);font-size:12px;line-height:18px;font-weight:300}
/* 账号与平台标题同排：靠右、单行，不单独占行。 */
.dp-card-head .dp-card-account{flex:0 0 auto;margin-left:auto;gap:6px;flex-wrap:nowrap}
.dp-card-account .dp-account-select{min-width:0;max-width:130px;font-size:13px;padding:3px 7px}
.dp-stale{margin-left:auto;color:var(--warn);font-size:12px;line-height:18px;white-space:nowrap}
/* 未适配提示与「生成平台适配」图文链接同一行，链接靠右。 */
.dp-card-placeholder{display:flex;align-items:center;justify-content:space-between;gap:12px;
  flex-wrap:wrap;color:var(--ink-2);font-size:13px;line-height:1.7}
.dp-card-placeholder p{margin:0;min-width:0}
/* 平台勾选：与媒体创作的 chip 选择态一致（白底 + 墨色描边） */
.dp-page .cp-platform.on{background:var(--surface);border-color:var(--ink);color:var(--ink);font-weight:500}
/* 右栏平台卡：统一模块骨架，模块之间一条细分割线，内容左对齐同一起点 */
.dp-mod{display:grid;gap:8px;min-width:0;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
/* 文案模块顶部留白压缩 40%（43px → 26px），标题更贴近卡片顶部。 */
.dp-mod-editor{margin-top:10px;padding-top:10px}
.dp-mod:empty,.dp-card-task:empty{display:none}
.dp-mod-title{margin:0;color:var(--ink-2);font-size:12px;line-height:18px;font-weight:500}
.dp-suggest-list{display:grid;gap:2px;color:var(--ink-2);font-size:12px;line-height:18px}
.dp-suggest-list:empty{display:none}
/* 分析建议为空时整块隐藏（.dp-mod 的 display:grid 会盖掉 hidden 的默认样式）。 */
.dp-suggest[hidden]{display:none}
.dp-issue{display:flex;align-items:center;gap:10px;padding:2px 0;overflow-wrap:anywhere;font-size:12px;line-height:18px}
.dp-issue-text{flex:1 1 auto;min-width:0}
.dp-issue.is-block{color:var(--err)}
.dp-issue.is-warn{color:var(--warn)}
.dp-issue.is-ok{color:var(--ok)}
/* 建议后的操作：纯文字、无边框，深绿；与建议文案垂直居中 */
.dp-suggest-act{flex:0 0 auto;padding:0;border:0;background:none;color:var(--c-action);
  font:inherit;font-size:12px;line-height:18px;font-weight:500;white-space:nowrap;cursor:pointer}
.dp-suggest-act:hover{text-decoration:underline;text-underline-offset:2px}
.dp-source-picker{display:grid;gap:0;min-width:0}
.dp-source-empty{padding:34px 0;color:var(--ink-2);font-size:12px;line-height:18px}
.dp-audit{display:grid;gap:14px;min-width:0}
.dp-audit-head p{margin:0;line-height:1.8;font-size:13px}
.dp-audit-filters{display:grid;gap:8px}
.dp-audit-filter-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.dp-audit-filter-label{min-width:34px;color:var(--ink-2);font-size:13px}
.dp-audit-date-chips{display:inline-flex;gap:7px;flex-wrap:wrap}
.dp-audit-date-range{display:inline-flex;align-items:center;gap:6px;color:var(--ink-2);
  font-size:13px;white-space:nowrap}
.dp-audit-date{font:inherit;font-size:13px;color:var(--ink);background:var(--field-bg);
  border:1px solid transparent;border-radius:var(--r-field);padding:4px 8px}
.dp-audit-date:focus{background:var(--surface);border-color:var(--ink);outline:none}
.dp-audit-filters .chip.is-zero{opacity:.45}
.dp-audit-list{display:grid;gap:0;border-top:1px solid #000}
.dp-audit-item{border-bottom:1px solid var(--line)}
.dp-audit-row{padding:11px 2px;grid-template-columns:minmax(0,1fr) 90px 160px}
.dp-audit-row .dp-history-meta,.dp-audit-row .cp-history-meta{font-variant-numeric:tabular-nums}
.dp-audit-state.is-success{color:var(--ok)}
.dp-audit-state.is-uncertain,.dp-audit-state.is-blocked,
.dp-audit-state.is-not_logged_in,.dp-audit-state.is-deduped{color:var(--warn)}
.dp-audit-state.is-failed{color:var(--err)}
.dp-audit-state.is-cancelled{color:var(--ink-2)}
.dp-audit-detail{padding:2px 2px 12px}
.dp-audit-kv{display:grid;gap:5px;margin:0;font-size:13px}
.dp-audit-kv>div{display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px}
.dp-audit-kv dt{color:var(--ink-2);margin:0}
.dp-audit-kv dd{margin:0;overflow-wrap:anywhere;line-height:1.6}
.dp-audit-more{display:flex;justify-content:center;padding-top:4px}
.dp-card-head h3,.dp-task-title,.dp-media-name,.dp-source-name,
.dp-login-acct,.dp-audit-row .cp-history-title{min-width:0;overflow-wrap:anywhere;white-space:normal}
.dp-audit-row{min-width:0}
@media(max-width:560px){
  .dp-audit-row{grid-template-columns:minmax(0,1fr);gap:2px}
  .dp-audit-row .cp-history-title{grid-column:1/-1}
}

/* 共享媒体池 */
.dp-platforms{padding-top:16px;border-top:1px solid #000}
.dp-media-head{display:flex;align-items:center;min-height:28px}
.dp-media-empty{padding:18px 0 6px}
.dp-media-empty p{margin:0 0 10px}
.dp-media-empty-acts{display:flex;gap:8px;flex-wrap:wrap}
.dp-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;margin-top:8px}
/* 右栏按平台规则带入的素材：只读复制，略紧凑。 */
.dp-mod-media .dp-media-grid{margin-top:0}
/* 右栏带入的素材与左栏同款缩略图尺寸（沿用 .dp-media-grid 的列宽与间距）。 */
.dp-media-copy-note{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dp-media-copy-empty,.dp-media-copy-note{color:var(--ink-2);font-size:12px;line-height:18px;overflow-wrap:anywhere}
.dp-media-copy-note{color:var(--ink-3)}
.dp-media-item{position:relative;display:grid;gap:3px;padding:5px;background:transparent;border:0;border-radius:var(--r-sm);min-width:0;font-size:13px}
.dp-media-item.is-invalid{background:color-mix(in srgb,var(--err) 6%,transparent)}
.dp-media-item.is-invalid .dp-media-name{color:var(--err)}
.dp-media-thumb{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:8px;background:var(--surface);display:flex;align-items:center;justify-content:center;cursor:zoom-in}
.dp-media-thumb:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.dp-media-thumb img,.dp-media-thumb video{width:100%;height:100%;object-fit:cover;display:block}
/* 素材名 + 格式同一行：名称占满剩余宽度并省略，格式始终看得见。 */
.dp-media-meta{display:flex;align-items:baseline;gap:4px;min-width:0}
.dp-media-name{flex:0 1 auto;display:block;font-size:11px;line-height:16px;font-weight:300;color:var(--ink-2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dp-media-sub{flex:0 0 auto;display:block;color:var(--ink-3);font-size:11px;line-height:16px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dp-media-sub::before{content:'· '}
.dp-media-invalid{display:grid;gap:2px;color:var(--err);font-size:12px;line-height:18px}
.dp-media-invalid .dp-btn{justify-self:start;color:var(--err)}
.dp-media-acts{position:absolute;top:3px;right:3px;display:flex;z-index:1}
.dp-media-acts .dp-btn{min-height:20px;padding:1px 5px;background:rgba(255,255,255,.92);border:0;border-radius:var(--r-pill);box-shadow:var(--sh-1);font-size:13px}
.dp-media-acts .dp-btn .wb-ico{width:13px;height:13px;flex:0 0 13px}
.dp-media-acts .dp-btn-label{display:none}
.dp-text-btn.is-danger{color:var(--err)}
/* 素材全屏预览：点击缩略图浮层查看原图 / 播放视频，右上角关闭 */
.modal.dp-viewer-modal{display:block;padding:0;background:rgba(24,23,21,.92)}
.dp-viewer{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:14px;padding:28px}
.dp-viewer-stage{display:flex;align-items:center;justify-content:center;flex:1 1 auto;
  min-height:0;width:100%}
.dp-viewer-stage img,.dp-viewer-stage video{display:block;max-width:100%;max-height:100%;
  object-fit:contain;border-radius:10px;background:#000;box-shadow:0 10px 36px rgba(0,0,0,.45)}
.dp-viewer-ph{padding:40px 24px;color:rgba(255,255,255,.72);font-size:13px}
.dp-viewer-cap{max-width:min(900px,92vw);color:rgba(255,255,255,.8);font-size:12px;line-height:18px;
  text-align:center;overflow-wrap:anywhere}
.dp-viewer-x{position:absolute;top:16px;right:16px;z-index:2;display:grid;place-items:center;
  width:34px;height:34px;padding:0;border:0;border-radius:50%;cursor:pointer;
  background:rgba(255,255,255,.16);color:#fff;font-size:17px;line-height:1}
.dp-viewer-x:hover{background:rgba(255,255,255,.3)}
.dp-viewer-x:focus-visible{outline:2px solid #fff;outline-offset:2px}
.dp-media-picker{min-width:0}
.dp-picker-tabs{margin:0 0 14px;border-bottom:1px solid var(--line)}
.dp-upload{display:grid;gap:10px;padding:22px 0;justify-items:start}
.dp-upload-hint{color:var(--ink-2);font-size:13px}
.dp-upload-status{color:var(--ink-2);font-size:12px;line-height:18px;overflow-wrap:anywhere}
.dp-source-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px}
.dp-source-tile{display:grid;gap:4px;padding:7px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);min-width:0;cursor:pointer;transition:border-color var(--t-fast)}
.dp-source-tile:hover:not(:disabled){border-color:var(--ink-2)}
.dp-source-tile.is-draft{opacity:.55;cursor:not-allowed}
.dp-source-thumb{aspect-ratio:4/3;overflow:hidden;border-radius:8px;background:#F4F4F4;display:flex;align-items:center;justify-content:center;color:var(--ink-3);font-size:13px}
.dp-source-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.dp-source-name{font-size:13px;min-width:0;overflow-wrap:anywhere;white-space:normal}
.dp-source-kind{color:var(--ink-2);font-size:13px}

/* 目标平台 tab：一次预览一个平台，悬停 tab 可移除 */
.dp-right-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.dp-right-head h3{margin:0;font-size:14px;font-weight:500}
/* 平台 tab 随页面滚到顶部后吸附：右栏不再独立滚动，也不必为切平台往回翻。
   top 取负的 #view 内边距，让吸附条正好贴住滚动口顶边（否则上方会漏出一条被裁的文字）。 */
.dp-plat-tabs{position:sticky;top:-20px;z-index:2;background:var(--surface);
  display:flex;gap:2px;flex-wrap:wrap;margin-top:-6px;border-bottom:1px solid var(--line)}
.dp-plat-tab{position:relative;display:inline-flex;align-items:center;gap:4px;padding:6px 10px 8px;
  background:transparent;color:var(--ink-2);font-size:13px;line-height:1.4;cursor:pointer;user-select:none}
.dp-plat-tab:hover{color:var(--ink)}
.dp-plat-tab.on{color:var(--ink);font-weight:500}
.dp-plat-tab.on::after{content:'';position:absolute;left:10px;right:10px;bottom:-1px;height:2px;
  background:var(--ink);border-radius:2px}
.dp-plat-tab-name{white-space:nowrap}
.dp-plat-tab-x{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;
  border-radius:50%;color:var(--ink-3);font-size:13px;line-height:1;opacity:0;
  transition:opacity var(--t-fast),background var(--t-fast),color var(--t-fast)}
.dp-plat-tab:hover .dp-plat-tab-x,.dp-plat-tab:focus-within .dp-plat-tab-x{opacity:1}
.dp-plat-tab-x:hover{background:color-mix(in srgb,var(--err) 12%,transparent);color:var(--err)}
@media(hover:none){.dp-plat-tab-x{opacity:1}}
.dp-stale-row{display:flex;align-items:center;gap:9px;margin-top:9px;padding:6px 9px;background:color-mix(in srgb,var(--warn) 8%,var(--surface));border-radius:var(--r-sm);font-size:12px;line-height:18px}
.dp-stale-row .dp-stale{margin-left:0}
.dp-draft{display:grid;gap:10px;margin-top:6px}
.dp-field-label{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.dp-count{color:var(--ink-2);font-size:12px;line-height:18px;font-weight:300;font-variant-numeric:tabular-nums}
.dp-count.is-over{color:var(--err)}
.dp-page .dp-draft .dp-input,.dp-page .dp-draft .dp-textarea{font-size:13px;background:var(--field-bg);border:1px solid transparent;border-radius:var(--r-field);padding:7px 10px}
.dp-page .dp-draft .dp-input:focus,.dp-page .dp-draft .dp-textarea:focus{background:var(--surface);border-color:var(--ink)}
.dp-draft .dp-textarea{min-height:120px;line-height:1.7}
.dp-field-note{color:var(--ink-2);font-size:12px;line-height:18px}
/* 操作行：始终一行，上方一条明显分割线；主按钮用媒体创作同款墨色胶囊 */
.dp-card-foot{display:flex;gap:8px;flex-wrap:nowrap;align-items:center;justify-content:flex-end;
  margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.dp-card-foot .dp-btn{flex:0 0 auto}
.dp-btn.dp-main{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:500;
  min-height:32px;padding:5px 14px}
.dp-btn.dp-main:hover:not(:disabled){background:#3B3835;border-color:#3B3835;color:#fff}

/* 账号 / 登录态（005 US4） */
.dp-account{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;min-width:0}
.dp-account-label{color:var(--ink-2);font-weight:500}
.dp-account-select{max-width:100%;min-width:0;font-size:13px;padding:4px 8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--ink)}
.dp-account-state{color:var(--ink-2);white-space:nowrap}
.dp-account-state.is-ok{color:var(--ok)}
.dp-account-state.is-warn{color:var(--warn)}
.dp-account-empty,.dp-account-hint{color:var(--ink-2);font-size:12px;line-height:18px}
.dp-btn.dp-login-btn{color:var(--c-action);border-color:color-mix(in srgb,var(--c-action) 38%,transparent);background:transparent;font-weight:500}
.dp-btn.dp-login-btn:hover:not(:disabled){background:color-mix(in srgb,var(--c-action) 8%,transparent);border-color:var(--c-action)}
.dp-runtime{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding:6px 9px;background:color-mix(in srgb,var(--warn) 8%,var(--surface));border-radius:var(--r-sm);color:var(--warn);font-size:12px;line-height:18px}
.dp-runtime code{padding:1px 6px;background:var(--surface);border-radius:6px;color:var(--ink);font-size:12px;line-height:18px}
.dp-runtime-hint{color:var(--ink-2)}

/* 扫码 / 短信登录浮层 */
.dp-login{display:grid;gap:14px;justify-items:center;min-width:0;text-align:center}
.dp-login-head{display:flex;align-items:baseline;gap:9px;justify-self:stretch;justify-content:space-between;font-size:13px}
.dp-login-acct{color:var(--ink-2);font-size:13px;min-width:0;overflow-wrap:anywhere;white-space:normal}
.dp-login-qr{display:grid;place-items:center;width:236px;height:236px;background:#F4F4F4;border-radius:var(--r-md);overflow:hidden}
.dp-login-qr[hidden]{display:none}
.dp-login-qr img{display:block;width:220px;height:220px;image-rendering:pixelated}
.dp-login-ph{color:var(--ink-2);font-size:12px;line-height:18px}
/* 浏览器登录：没有二维码可看，给一块和二维码同尺寸的操作指引，抽屉高度不跳 */
.dp-login-browser{display:grid;gap:8px;justify-items:center;align-content:center;
  width:236px;height:236px;padding:18px;background:#F4F4F4;border-radius:var(--r-md)}
.dp-login-browser[hidden]{display:none}
.dp-login-browser-ico{color:var(--ink-3);display:flex}
.dp-login-browser-t{font-size:13px;font-weight:600;color:var(--ink)}
.dp-login-browser-d{font-size:12px;line-height:18px;color:var(--ink-2);text-align:center}
.dp-login-msg{font-size:12px;color:var(--ink-2);line-height:18px;min-height:22px}
.dp-login-msg.is-qr_ready,.dp-login-msg.is-scanned,.dp-login-msg.is-browser_login{color:var(--ink)}
.dp-login-msg.is-success{color:var(--ok);font-weight:500}
.dp-login-msg.is-expired,.dp-login-msg.is-error{color:var(--err)}
.dp-login-sms{display:flex;gap:8px;justify-self:stretch;align-items:center}
.dp-login-sms input{flex:1;min-width:0}
.dp-login-foot{display:flex;gap:8px;justify-content:center}
.dp-login-foot [hidden],.dp-login-sms[hidden]{display:none}

/* 发布任务状态（11 状态） */
.dp-card-task{display:grid;gap:4px}
.dp-task{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-top:9px;padding:7px 10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);font-size:13px;min-width:0}
.dp-task-status{font-weight:500;color:var(--ink-2);white-space:nowrap}
.dp-task.is-success .dp-task-status{color:var(--ok)}
.dp-task.is-failed .dp-task-status,.dp-task.is-blocked .dp-task-status,.dp-task.is-not_logged_in .dp-task-status{color:var(--err)}
.dp-task.is-uncertain .dp-task-status,.dp-task.is-deduped .dp-task-status,.dp-task.is-cancelled .dp-task-status{color:var(--warn)}
.dp-task.is-queued .dp-task-status,.dp-task.is-publishing .dp-task-status,.dp-task.is-verifying .dp-task-status,.dp-task.is-verifying_readback .dp-task-status,.dp-task.is-precheck .dp-task-status{color:var(--c-dist)}
.dp-task-title{flex:1;min-width:0;color:var(--ink);overflow-wrap:anywhere;white-space:normal}
.dp-task-time{color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.dp-task-msg{font-size:12px;color:var(--ink-2);line-height:18px;overflow-wrap:anywhere;padding:0 9px}
.dp-task-acts{display:flex;gap:10px;flex-wrap:wrap;padding:0 9px 2px}
.dp-task-acts .dp-text-btn.is-danger{color:var(--err)}
.dp-task-hint{color:var(--ink-2);font-size:13px}

/* 发布确认弹窗 */
.dp-pub-modal{width:min(440px,92vw);display:grid;gap:14px}
.dp-pub-sum{display:grid;gap:8px;margin:0}
.dp-pub-sum>div{display:grid;grid-template-columns:44px minmax(0,1fr);gap:10px;align-items:baseline;min-width:0}
.dp-pub-sum dt{color:var(--ink-2);font-size:13px}
.dp-pub-sum dd{margin:0;font-size:13px;overflow-wrap:anywhere}
.dp-pub-sum .dp-pub-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dp-pub-check{display:grid;gap:3px;padding:9px 11px;background:#F4F4F4;border-radius:var(--r-sm);font-size:12px;line-height:18px}
.dp-pub-foot{justify-content:flex-end;margin-top:2px}

/* 差异抽屉 */
.dp-diff{display:grid;gap:14px;min-width:0}
.dp-diff-field{display:grid;gap:6px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.dp-diff-check{display:flex;align-items:center;gap:7px;font-size:13px}
.dp-diff-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;min-width:0}
.dp-diff-pair>div{min-width:0}
.dp-diff-tag{display:inline-block;margin-bottom:4px;color:var(--ink-2);font-size:13px}
.dp-diff-tag.is-new{color:var(--ok)}
/* 差异对比整段展示，框内不再自滚（抽屉本身一根滚动条）。 */
.dp-diff-pair pre{margin:0;padding:8px 10px;background:#F4F4F4;border-radius:var(--r-sm);font-size:13px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}
.dp-diff-foot{display:flex;justify-content:flex-end;gap:10px}

@media(max-width:960px){
  .dp-split{grid-template-columns:minmax(0,1fr);gap:30px}
}
@media(max-width:768px){
  .dp-left{gap:24px}
  .dp-source-line{align-items:flex-start;flex-direction:column;gap:2px}
  .dp-media-grid,.dp-source-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}
  .dp-diff-pair{grid-template-columns:minmax(0,1fr)}
}

/* ── Step2 组件：抽屉 / 确认弹窗 / 骨架屏 / 空状态 ─────────────── */
.drawer-ov{position:fixed;inset:0;background:rgba(32,30,27,.40);z-index:70;animation:fade var(--t-med)}
.drawer{position:absolute;right:0;top:0;bottom:0;width:min(460px,100vw);background:var(--surface);
  box-shadow:var(--sh-2);display:flex;flex-direction:column;animation:din var(--t-med)}
.dr-h{display:flex;align-items:center;gap:10px;padding:15px 20px;border-bottom:1px solid var(--line);flex:0 0 auto}
.dr-h b{font-size:16px}
.dr-h .dr-x{margin-left:auto}
.dr-b{flex:1;overflow:auto;padding:18px 20px}
.dr-b .card+.card{margin-top:14px}
@keyframes din{from{transform:translateX(24px);opacity:0}}
@keyframes fade{from{opacity:0}}

.cfm{max-width:420px}
/* 加宽确认框：与发布预览模态框同宽（如「替换待发布内容」确认） */
.box.cfm.hm-cfm-wide{width:min(640px,94vw);max-width:min(640px,94vw)}
.cfm-t{margin:0 0 6px;font-size:16px}

.skel.cards{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(255px,1fr))}
.skel.cards .sk-b{height:236px;border-radius:var(--r-md)}
.skel.rows .sk-b{height:46px;border-radius:var(--r-sm);margin-bottom:10px}
.sk-b{background:linear-gradient(90deg,var(--surface-2) 25%,#ECECEC 50%,var(--surface-2) 75%);
  background-size:200% 100%;animation:skbreath 1.2s ease-in-out infinite}
@keyframes skbreath{0%{background-position:200% 0}100%{background-position:-200% 0}}

.est{padding:52px 20px}
.est-i{width:120px;margin:0 auto 14px;animation:est-float 3.4s ease-in-out infinite}
@keyframes est-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.est-i svg{width:100%;height:auto;display:block}
.est-t{font-size:14px;font-weight:500;color:var(--ink-2);margin-bottom:4px}
.est-d{max-width:380px;margin:0 auto;line-height:1.7}

/* ── Step3 组件：开关 / 技能中心 / 抽屉分节 ─────────────────── */
/* 开关（启停技能等）；结构：<label class="tgl"><input type="checkbox"><span class="tk"></span></label> */
.tgl{position:relative;display:inline-flex;align-items:center;cursor:pointer;flex:0 0 auto}
.tgl input{position:absolute;opacity:0;width:0;height:0}
.tgl .tk{width:36px;height:20px;border-radius:var(--r-pill);background:var(--surface-2);
  border:1px solid var(--line);position:relative;transition:background var(--t-fast),border-color var(--t-fast)}
.tgl .tk::after{content:'';position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;
  background:#fff;box-shadow:0 1px 2px rgba(32,30,27,.3);transition:transform var(--t-fast)}
.tgl input:checked+.tk{background:var(--ok);border-color:var(--ok)}
.tgl input:checked+.tk::after{transform:translateX(15px)}
.tgl input:focus-visible+.tk{outline:2px solid var(--ink);outline-offset:2px}

/* 技能中心卡片：与产品知识同套 .kb-list/.kb-card（浅灰底 + 悬停黑边），
   标签用 .tag 纯展示，操作用 .sk-acts 图文链接，二者视觉严格区分 */
.sk-top{display:flex;align-items:center;gap:8px;width:100%}
.sk-top .tgl{margin-left:auto;flex:0 0 auto}
.sk-tags{display:flex;flex-wrap:wrap;margin:0 -3px}
.tag.sk-off{color:var(--ink-3)}
.sk-acts{display:flex;align-items:center;gap:16px;width:100%;
  border-top:1px solid var(--line);padding-top:9px;margin-top:4px}
.sk-acts .cp-text-btn{font-size:13px}

/* 人设库卡片（007 人设库优化轮）：与技能中心同套 .kb-list/.kb-card，
   头像是按 uid 确定性生成的极简扁平 SVG 小人（浅色随机彩底） */
.ps-avatar{display:inline-flex;flex:0 0 auto;border-radius:12px;overflow:hidden;line-height:0}
.ps-head{display:flex;align-items:center;gap:10px;width:100%}
.ps-title{display:grid;gap:4px;min-width:0}
.ps-catch{font-size:13px;color:var(--ink);line-height:1.5;overflow-wrap:anywhere;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.ps-detail-head{display:flex;align-items:center;gap:14px}
.ps-detail-head .ps-avatar{border-radius:16px}
.ps-detail-name{font-size:18px;font-weight:500;overflow-wrap:anywhere}
.ps-kv{display:flex;gap:12px;padding:7px 0;border-bottom:1px solid var(--line)}
.ps-kv:last-child{border-bottom:0}
.ps-k{flex:0 0 64px;font-size:12px;color:var(--ink-3);padding-top:1px}
.ps-v{flex:1;min-width:0;font-size:13px;overflow-wrap:anywhere}

/* 抽屉内分节标题 */
.dr-sec{margin-top:20px;padding-top:14px;border-top:1px solid var(--line)}
.dr-sec-t{font-size:13px;font-weight:500;margin-bottom:10px;display:flex;align-items:center;gap:8px}

/* 提示词编辑：等宽字体文本域 */
.ta-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.65}

/* 变量标签（{{var}} 占位符提示） */
.varchip{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}

/* ── Step4 组件：数字 / 状态卡 / 已选条 ───────────────────── */
/* 重点数据：等宽数字（§8.1 热度、§8.8 关键数字条） */
.num{font-variant-numeric:tabular-nums}

/* 监控 · 今日关键数字条 */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:14px 16px;display:flex;flex-direction:column;gap:2px;box-shadow:var(--sh-1)}
.stat .st-v{font-size:20px;font-weight:500;line-height:1.2;display:flex;align-items:center;gap:8px}
.stat .st-l{font-size:13px;color:var(--ink-2)}
.stat .st-s{font-size:13px;color:var(--ink-2)}

/* 配置概览 · 连通性状态卡（故障第一入口） */
.stcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  padding:13px 15px;box-shadow:var(--sh-1);display:flex;flex-direction:column;gap:6px}
.stcard .stc-h{display:flex;align-items:center;gap:8px;font-weight:500;font-size:13px}
.stcard .stc-d{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.stcard .stc-m{font-size:13px;color:var(--ink-2);line-height:1.6;min-height:36px}

/* 拆解 · 已选样本横排缩略条（可移除） */
.selstrip{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.selstrip .selchip{display:inline-flex;align-items:center;gap:6px;max-width:240px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-pill);
  padding:5px 6px 5px 12px;font-size:13px}
.selstrip .selchip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selstrip .selchip button{background:none;border:0;color:var(--ink-2);cursor:pointer;
  width:20px;height:20px;border-radius:50%;font-size:13px;line-height:1;flex:0 0 auto}
.selstrip .selchip button:hover{background:var(--err);color:#fff}

/* 拆解 · 链接输入与手动补录 */
.bd-link{flex:1;min-width:260px}
.bd-manual{margin-top:10px}
.bd-manual .dlg{display:grid;gap:8px}
.bd-manual textarea{resize:vertical}

/* ═══ 002 优化轮：爆款拆解黑灰扁平（与 #radar-pane 同源 token，cfgSec 黑线分节） ═══ */
/* 作用域用 .bd-scope 类：主页面 #break-pane 与拆解详情抽屉共用同一套黑灰中性 token */
.bd-scope{--ink:#1A1A1A;--ink-2:#636363;--ink-3:#9B9B9B;--surface-2:#F4F4F4;--line:#E6E6E6}
.bd-scope .hint{border:0;background:transparent;padding:2px 0}
.bd-scope .pill.warn{color:var(--ink-2);border-color:var(--line);background:var(--surface-2)}
.bd-scope input,.bd-scope select,.bd-scope textarea{background:#fff;border-color:var(--line)}
/* 操作链接：默认灰，主操作深绿（与雷达 rd-collect 同语义） */
.bd-scope .cp-text-btn{color:var(--ink-2)}
.bd-scope .cp-text-btn:hover:not(:disabled){color:var(--ink)}
.bd-scope .cp-text-btn.bd-act{color:var(--c-action)}
.bd-scope .cp-text-btn.bd-act:hover:not(:disabled){color:var(--ink)}
/* 结果头部：结论名称 + 元信息 + 复制拆解参考入口 */
.bd-res-head{display:flex;align-items:flex-start;gap:12px;padding:2px}
.bd-res-name{font-size:15px;font-weight:500;color:var(--ink)}
/* 配方：浅灰模块，无框无阴影 */
.bd-frow{background:#F7F7F7;border-radius:10px;padding:12px 14px}
.bd-frow + .bd-frow{margin-top:10px}
.bd-fsk{font-size:13px;font-weight:500;color:var(--ink)}
/* 历史拆解：弱化行式 */
.bd-hrow{display:flex;align-items:center;gap:14px;padding:10px 2px;border-bottom:1px solid var(--line)}
.bd-hrow:first-child{border-top:1px solid var(--line)}
.bd-hmain{flex:1;min-width:0}
.bd-hname{font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bd-hmeta{font-size:12px;color:var(--ink-3);margin-top:2px}
.bd-hacts{flex:0 0 auto;display:flex;gap:14px}
/* 共性概览：小标签 + 值的分组行（易读口径，无背景色块） */
.bd-lb{flex:0 0 56px;font-size:12px;color:var(--ink-3)}
.bd-crow{display:flex;gap:10px;align-items:baseline;padding:5px 0}
.bd-cval{flex:1;min-width:0;display:flex;gap:6px;flex-wrap:wrap;align-items:center;
  font-size:13px;color:var(--ink-2)}
.bd-advice{font-size:13px;color:var(--ink-2);padding:3px 0}
/* 照着写：句式用等宽感的浅灰块，开头原文用引号引用，正文步骤按行排 */
.bd-gformula{font-size:13px;color:var(--ink);background:#F7F7F7;border-radius:8px;
  padding:7px 10px;line-height:1.5;word-break:break-word}
.bd-gquote{font-size:13px;color:var(--ink-2);line-height:1.55;
  border-left:2px solid var(--line);padding-left:8px;margin-bottom:4px;word-break:break-word}
.bd-gstep{font-size:13px;color:var(--ink-2);line-height:1.6}

/* 产品编辑抽屉 · 分组折叠 */
details.pfg{border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 14px;margin-top:12px;background:var(--surface)}
details.pfg>summary{cursor:pointer;font-weight:500;font-size:13px;list-style:none;display:flex;align-items:center;gap:8px}
details.pfg>summary::before{content:'▸';color:var(--ink-2);transition:transform var(--t-fast)}
details.pfg[open]>summary::before{transform:rotate(90deg)}
details.pfg>summary .mut{font-weight:300}

/* 无障碍：尊重系统减弱动效设置 */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* ── Step5 响应式（设计规范 §10）────────────────────────────── */
/* 数据表横向滚动容器（仅数据表允许横向滚动） */
.tbwrap{overflow-x:auto}

/* 768–1024px：导航收为纯图标栏（64px），hover 出名称 tooltip（title 属性） */
@media(max-width:1024px){
  #side{width:64px;flex:0 0 64px;padding:14px 8px}
  .brand{display:none}
  #side .foot{display:none}
  .nav{gap:4px}
  .nav button{justify-content:center;padding:11px 0;min-height:40px}
  .nav .ic{display:inline-flex;width:22px;height:22px;flex-basis:22px}
  .nav button .nm,.nav .badge{display:none}
}

/* <768px：底部 Tab 栏 + 抽屉全屏 + 触控目标 ≥36px */
@media(max-width:768px){
  #app{flex-direction:column}
  #main{order:1;min-height:0}
  #side{
    order:2;width:100%;flex:0 0 auto;flex-direction:row;
    border-right:0;border-top:1px solid var(--line);
    padding:6px 4px calc(6px + env(safe-area-inset-bottom,0));background:var(--surface);
  }
  .brand,#side .foot{display:none}
  .nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;width:100%}
  .nav button{
    min-width:0;flex-direction:column;justify-content:center;gap:3px;
    padding:6px 2px 5px;min-height:44px;border-radius:10px;
  }
  .nav .ic{display:inline-flex;width:20px;height:20px;flex-basis:20px;line-height:1.2}
  .nav button .nm{
    display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    font-size:13px;line-height:1.2;
  }
  .nav .badge{display:none}
  #topbar{padding:0 12px;height:48px;flex-basis:48px}
  #topbar .sub{display:none}
  #view{padding:14px 12px}
  .drawer{width:100vw!important}
  .card{padding:16px 14px}
  /* 触控目标 ≥36px（§10 无障碍） */
  button.btn,a.btn{min-height:36px;display:inline-flex;align-items:center}
  button.btn.sm,a.btn.sm{min-height:36px;padding:6px 14px}
  .tgl .tk{width:46px;height:26px}
  .tgl .tk::after{width:20px;height:20px}
  .tgl input:checked+.tk::after{transform:translateX(19px)}
  #toast{right:12px;left:12px;align-items:center}
  #toast div{max-width:none}
}

/* ═══ 媒体创作（004）：图文 / 视频编辑台 ═══ */
/* 全屏工作台：主视图不滚动，三栏各自管理高度 */
#view.view-media{padding:0;overflow:hidden;background:var(--surface)}
#view.view-media>*{max-width:none;margin:0}
.media-page{height:100%;min-height:0;display:flex;flex-direction:column;background:var(--surface)}

.media-head{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:10px 20px 8px;min-width:0}
.media-tabs{flex:0 0 auto;margin:0}
.media-title{flex:0 1 240px;min-width:110px;width:auto;background:transparent;border:1px solid transparent;
  border-radius:var(--r-field);padding:3px 10px;font-size:13px;font-weight:300;line-height:1.5;color:var(--ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.media-title:hover{background:var(--surface-2)}
.media-title:focus{background:var(--surface-2);border-color:transparent;color:var(--ink)}
.ed-status{font-size:12px;color:var(--ink-3);white-space:nowrap;max-width:160px;
  overflow:hidden;text-overflow:ellipsis}
.media-format{margin-left:auto;display:flex;align-items:center;gap:6px;flex:0 0 auto;
  font-size:12px;color:var(--ink-3);white-space:nowrap}
.media-format select{width:auto;min-width:104px;padding:4px 26px 4px 10px;font-size:12px;
  color:var(--ink-2);background:var(--surface-2);border-color:transparent;border-radius:var(--r-field)}
.media-format select:hover{background:#ECECEC}

.media-lab{flex:1;min-height:0;display:grid;grid-template-columns:200px minmax(0,1fr) 306px;min-width:0}

/* 左栏素材：无边框，纯列表 */
.media-rail{display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:2px 8px 12px 20px}
.ed-rail-head{display:flex;align-items:baseline;gap:7px;padding:4px 2px 8px;font-size:13px;font-weight:500}
.ed-rail-count{font-size:12px;color:var(--ink-3);font-weight:300;font-variant-numeric:tabular-nums}
.ed-rail-actions{display:flex;gap:6px;margin-bottom:10px}
.ed-rail-actions .btn.sm{min-height:30px;padding:4px 10px}
.media-rail .thumbs{flex:1;min-height:0;max-height:none;overflow-y:auto;align-content:start;
  grid-template-columns:1fr 1fr;gap:6px;padding:2px}
.media-rail .thumb{border:0;border-radius:9px;background-size:cover;background-position:center}
.media-rail .thumb.on{box-shadow:0 0 0 2px var(--ink)}
.ed-thumb-num{position:absolute;left:4px;bottom:3px;background:rgba(32,30,27,.66);color:#fff;
  font-size:11px;border-radius:var(--r-pill);padding:0 7px;line-height:16px}
/* 2026-11-07：四周各留 2px 内边距——选中态描边（box-shadow 外扩环）不再被滚动口边缘裁掉 */
.media-rail .seglist{flex:1;min-height:0;overflow-y:auto;padding:2px}

/* 中栏舞台：浅灰点阵画布区 */
.media-stage{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;
  margin:0 4px;border-radius:16px;background-color:#F4F4F4;
  background-image:radial-gradient(rgba(32,30,27,.13) 1px,transparent 1.1px);
  background-size:17px 17px;background-position:2px 2px}
.ed-stage-area{flex:1;min-height:0;display:grid;place-items:center;padding:20px;overflow:hidden}
.ed-stage-wrap{position:relative;display:block;line-height:0;border-radius:7px;background:#fff;
  box-shadow:0 14px 38px rgba(32,30,27,.16)}
.ed-stage-wrap>canvas:first-child{display:block;width:100%!important;height:100%!important;
  border:0;border-radius:7px;background:#fff}
.ed-overlay{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair}
.ed-floatedit{position:absolute;left:50%;top:10%;transform:translateX(-50%);width:min(92%,420px);
  z-index:5;font:16px/1.5 inherit;border:1px solid transparent;border-radius:var(--r-field);
  background:rgba(255,255,255,.97);box-shadow:var(--sh-2);padding:8px 10px;resize:vertical}
.ed-stage-tools{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:6px 16px 10px;min-height:34px}
.ed-stage-info{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ed-addtext{margin-left:auto;flex:0 0 auto;background:var(--surface);border:1px solid transparent;
  border-radius:var(--r-pill);padding:5px 14px;font-size:13px;color:var(--ink);cursor:pointer;
  box-shadow:var(--sh-1);transition:background var(--t-fast)}
.ed-addtext:hover{background:var(--surface-2)}

/* 右栏属性：可折叠分区 + 区域内滚动 + 常驻底部操作 */
.media-panel{display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:2px 20px 0 4px}
.ed-panel-scroll{flex:1;min-height:0;overflow-y:auto;padding:0 2px 6px;scrollbar-gutter:stable}
.ed-panel-foot{flex:0 0 auto;display:flex;gap:6px;padding:9px 0 12px;background:var(--surface)}
.ed-panel-foot .btn.sm{min-height:32px;padding:5px 12px;flex:0 0 auto}
/* 视频底栏三项（草稿 / 高质量 / 快速）：等分收缩，窄面板也不溢出 */
.ed-panel-foot .btn.sm.ed-foot-mini{flex:1 1 0;min-width:0;padding:5px 6px;font-size:12.5px;
  overflow:hidden;text-overflow:ellipsis}
.ed-panel-top{display:flex;justify-content:flex-end;gap:2px;padding:0 0 2px}
.ed-iconbtn{width:28px;height:28px;display:grid;place-items:center;border:0;background:transparent;
  border-radius:8px;color:var(--ink-2);cursor:pointer;font-size:15px;line-height:1}
.ed-iconbtn:hover{background:var(--surface-2);color:var(--ink)}

.ed-fold{border:0;padding:0;margin:0}
.ed-fold+.ed-fold{border-top:1px solid var(--line)}
.ed-fold>summary{display:flex;align-items:center;gap:6px;padding:12px 2px;cursor:pointer;
  list-style:none;font-size:13px;font-weight:500;color:var(--ink);user-select:none;
  transition:color var(--t-fast)}
.ed-fold>summary::-webkit-details-marker{display:none}
.ed-fold>summary:hover{color:var(--ink-2)}
.ed-fold>summary .chev{display:inline-flex;color:var(--ink-3);transition:transform var(--t-fast)}
.ed-fold[open]>summary .chev{transform:rotate(90deg)}
.ed-fold-body{padding:2px 2px 18px;min-width:0;display:flex;flex-direction:column;gap:10px}

/* 标签行：字体族 / 图片样式 / 拼图组合共用同一套风格与间距 */
.ed-chiprow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ed-chiprow .chip{font-size:12px}

.media-panel .chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.media-panel .chip{padding:4px 11px;font-size:12px;background:var(--surface-2);border-color:transparent}
.media-panel .chip:hover{background:#ECECEC}
.media-panel .chip.on{background:var(--surface);border-color:var(--ink)}
.media-panel .sl{grid-template-columns:40px minmax(0,1fr) 32px;gap:8px;font-size:12px;margin:0}
.media-panel .sl b{font-size:12px}

.ed-meta{font-size:12px;color:var(--ink-3);line-height:1.5;overflow-wrap:anywhere}
.ed-inline{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.ed-inline .sp{flex:1}
.ed-textbtn{background:none;border:0;padding:2px 0;color:var(--ink-3);font-size:12px;cursor:pointer}
.ed-textbtn:hover{color:var(--err)}
.ed-color{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2);white-space:nowrap}
.ed-color input[type=color]{-webkit-appearance:none;appearance:none;width:24px;height:24px;padding:0;
  border:1px solid var(--line);border-radius:7px;background:none;cursor:pointer;flex:0 0 auto}
.ed-color input[type=color]::-webkit-color-swatch-wrapper{padding:2px}
.ed-color input[type=color]::-webkit-color-swatch{border:0;border-radius:5px}
.ed-check{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-2);
  cursor:pointer;white-space:nowrap}
.ed-text-input{font-size:13px;min-height:58px;margin:0;line-height:1.6;
  font-family:"PingFang SC","Hiragino Sans GB","Apple Color Emoji","Segoe UI Emoji",sans-serif}
/* 常用表情：一键插入到光标处，输入框与画布都按系统彩色 emoji 渲染 */
.ed-emojirow{display:flex;flex-wrap:wrap;gap:4px;margin-top:-2px}
.ed-emojirow button{border:0;background:transparent;border-radius:8px;padding:1px 5px;font-size:17px;
  line-height:1.35;cursor:pointer;transition:background var(--t-fast),transform var(--t-fast)}
.ed-emojirow button:hover{background:var(--surface-2);transform:translateY(-1px)}
.ed-emojirow button:active{transform:scale(.94)}
.ed-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ed-field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--ink-2);min-width:0}
.ed-field input,.ed-field select{padding:6px 8px;font-size:12px}

/* 花字墙：分组筛选 + 深色示例瓦片，所见即所得 */
.ed-stylewall{display:flex;flex-direction:column;gap:9px}
.ed-stylegroups{position:sticky;top:0;z-index:1;background:var(--surface);padding:2px 0}
.ed-swatches{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}
.ed-swatch{display:flex;flex-direction:column;gap:3px;padding:0;border:0;background:none;
  cursor:pointer;text-align:left;min-width:0}
.ed-swatch img{display:block;width:100%;height:auto;border-radius:9px;
  box-shadow:0 0 0 1px rgba(32,30,27,.08);
  transition:box-shadow var(--t-fast),transform var(--t-fast)}
.ed-swatch:hover img{transform:translateY(-1px);
  box-shadow:0 0 0 1px rgba(32,30,27,.16),0 5px 14px rgba(32,30,27,.14)}
.ed-swatch.on img{box-shadow:0 0 0 2px var(--ink)}
.ed-swatch-label{font-size:11.5px;line-height:1.4;color:var(--ink-2);padding:0 2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ed-swatch.on .ed-swatch-label{color:var(--ink);font-weight:500}

/* 视频舞台：外壳按画幅自适应、视频 contain、透明字幕层覆盖、自绘 transport */
.ed-video-empty{display:grid;gap:7px;place-items:center;text-align:center;font-size:13px;
  color:var(--ink-2)}
.ed-video-empty-ico{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;
  background:var(--surface);color:var(--ink-3);font-size:17px;box-shadow:var(--sh-1)}
.ed-video-empty-t{font-size:15px;font-weight:500;color:var(--ink)}
.ed-video-shell{position:relative;flex:0 0 auto;background:#000;border-radius:14px;overflow:hidden;
  box-shadow:0 14px 38px rgba(32,30,27,.22);isolation:isolate}
.ed-video-el{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;
  background:#000;display:block}
.ed-video-fallback{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000}
.ed-video-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.ed-video-warn{position:absolute;left:10px;right:10px;bottom:10px;padding:7px 10px;border-radius:10px;
  background:rgba(20,18,16,.72);color:#fff;font-size:12px;line-height:1.45;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.ed-video-transport{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:8px 18px 0;min-width:0}
.ed-vbtn{flex:0 0 auto;width:34px;height:34px;border-radius:50%;border:1px solid transparent;
  background:var(--surface);color:var(--ink);font-size:12px;line-height:1;cursor:pointer;
  box-shadow:var(--sh-1);display:grid;place-items:center;transition:background var(--t-fast)}
.ed-vbtn:hover{background:var(--surface-2)}
.ed-vbar{position:relative;flex:1;min-width:80px;height:22px;cursor:pointer;touch-action:none;
  display:flex;align-items:center;user-select:none}
.ed-vbar-track{position:absolute;left:0;right:0;height:4px;border-radius:2px;
  background:rgba(32,30,27,.16)}
.ed-vbar-fill{position:absolute;left:0;height:4px;border-radius:2px;background:var(--ink);width:0}
.ed-vbar-ticks{position:absolute;left:0;right:0;top:5px;height:12px;pointer-events:none}
.ed-vbar-ticks i{position:absolute;top:0;width:1px;height:12px;background:rgba(32,30,27,.30)}
.ed-vbar-knob{position:absolute;left:0;top:50%;width:12px;height:12px;margin-left:-6px;
  margin-top:-6px;border-radius:50%;background:var(--surface);border:1.5px solid var(--ink);
  pointer-events:none}
.ed-vbar:focus-visible{outline:2px solid var(--ink);outline-offset:4px;border-radius:6px}
.ed-vtime{flex:0 0 auto;font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ed-vseg{flex:0 0 auto;font-size:12px;color:var(--ink-3)}
.ed-seg{border:0;border-radius:10px;padding:7px;margin-bottom:6px;cursor:pointer;
  background:var(--surface-2);transition:background var(--t-fast),box-shadow var(--t-fast)}
.ed-seg:hover{background:#ECECEC}
.ed-seg.on{background:var(--surface);box-shadow:0 0 0 1.5px var(--ink)}
.ed-seg img{display:block}
.ed-seg-noimg{height:72px;border-radius:8px;background:#000;display:grid;place-items:center;
  color:rgba(255,255,255,.55);font-size:11px}
/* 段落卡：标题与操作同排、起止时间固定窄输入，保证单卡紧凑且时间行不折行 */
.ed-seg-head{display:flex;align-items:center;gap:6px;margin-bottom:5px;min-width:0}
.ed-seg-title{font-size:12px;font-weight:500;white-space:nowrap}
.ed-seg-name{font-size:11.5px;color:var(--ink-3);min-width:0;flex:1;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ed-seg-ops{margin-left:auto;display:flex;gap:1px;flex:0 0 auto}
.ed-seg-op{width:20px;height:20px;display:grid;place-items:center;padding:0;border:0;
  border-radius:5px;background:transparent;color:var(--ink-3);font-size:12px;line-height:1;
  cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}
.ed-seg-op:hover{background:rgba(32,30,27,.08);color:var(--ink)}
.ed-seg-op.del:hover{color:var(--err)}
.ed-seg-time{display:flex;align-items:center;flex-wrap:nowrap;gap:5px;margin-top:6px;
  font-size:12px;min-width:0}
.ed-seg-time-i{width:52px;flex:0 0 52px;padding:2px 5px;font-size:12px;text-align:center;
  -moz-appearance:textfield;appearance:textfield}
.ed-seg-time-i::-webkit-outer-spin-button,
.ed-seg-time-i::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* 视频右栏：上传提示、字幕列表、字体+颜色同排、背景音乐 */
.ed-hint{font-size:11.5px;line-height:1.5;color:var(--ink-3);margin-top:4px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 按钮右侧的弱化说明：与左栏上传提示同字号同色，和按钮同一基线 */
.ed-hint-inline{font-size:11.5px;line-height:1.5;color:var(--ink-3);white-space:nowrap}
.ed-sublist{display:grid;gap:4px}
.ed-subrow{display:flex;align-items:center;gap:7px;padding:5px 8px;border-radius:8px;
  background:var(--surface-2);font-size:12px;cursor:pointer;min-width:0;
  transition:background var(--t-fast),box-shadow var(--t-fast)}
.ed-subrow:hover{background:#ECECEC}
.ed-subrow.on{background:var(--surface);box-shadow:0 0 0 1.5px var(--ink)}
.ed-subnum{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;
  background:var(--surface);font-size:11px;color:var(--ink-2);flex:0 0 auto}
.ed-subtext{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--ink)}
.ed-subtime{flex:0 0 auto;color:var(--ink-3);font-size:11.5px;font-variant-numeric:tabular-nums}
.ed-subedit{border-top:1px dashed var(--line);margin-top:9px;padding-top:9px;display:grid;gap:8px}
.ed-subedit-head{display:flex;align-items:center;gap:8px}
.ed-subedit-head .sp{flex:1}
.ed-subedit-t{font-size:12px;color:var(--ink-2)}
.ed-fontrow{display:flex;align-items:center;gap:8px;min-width:0}
.ed-fontrow .ed-fontsel{flex:1;min-width:0;padding:6px 8px;font-size:12px}
.ed-music-list{display:grid;gap:4px;max-height:216px;overflow:auto;margin:2px 0;
  padding-right:2px;overscroll-behavior:contain}
.ed-music-row{display:flex;align-items:center;gap:7px;padding:5px 7px;border-radius:8px;
  background:var(--surface-2);font-size:12px;cursor:pointer;min-width:0;
  transition:background var(--t-fast),box-shadow var(--t-fast)}
.ed-music-row:hover{background:#ECECEC}
.ed-music-row.on{background:var(--surface);box-shadow:0 0 0 1.5px var(--ink)}
.ed-music-play{flex:0 0 auto;width:22px;height:22px;border-radius:50%;border:0;padding:0;
  background:var(--surface);color:var(--ink);font-size:9px;line-height:1;cursor:pointer;
  display:grid;place-items:center;box-shadow:0 0 0 1px rgba(32,30,27,.07)}
.ed-music-play:hover{background:var(--ink);color:var(--surface)}
.ed-music-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ed-music-tag{flex:0 0 auto;color:var(--ink-3);font-size:11px}
.ed-music-custom{flex:0 0 auto;font-size:10px;color:var(--ink-2);background:var(--surface);
  border-radius:4px;padding:1px 4px}
.ed-music-dur{flex:0 0 auto;color:var(--ink-3);font-size:11px;font-variant-numeric:tabular-nums}
.ed-music-set{display:grid;gap:7px;margin:7px 0 2px}
.ed-music-vol{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-2)}
.ed-music-vol input[type=range]{flex:1;min-width:0;accent-color:var(--ink)}
.ed-music-pct{width:36px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-3)}
.ed-music-import{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:3px}
.ed-filebtn{display:inline-flex;align-items:center;padding:5px 11px;border-radius:999px;
  background:var(--surface-2);font-size:12px;cursor:pointer;transition:background var(--t-fast)}
.ed-filebtn:hover{background:#ECECEC}

@media(max-width:1180px){
  .media-lab{grid-template-columns:168px minmax(0,1fr) 278px}
  .media-rail{padding-left:14px}
  .media-panel{padding-right:14px}
}
@media(max-width:900px){
  #view.view-media{overflow:auto}
  .media-page{height:auto;min-height:100%}
  .media-lab{grid-template-columns:1fr;grid-auto-rows:min-content}
  .media-rail{max-height:190px;padding:0 14px 8px}
  .media-stage{min-height:56vh;margin:0 12px}
  .media-panel{min-height:0;padding:0 14px 20px}
  .ed-panel-scroll{overflow:visible}
}

/* ---------- 监控（008） ---------- */
.mon-fake-banner{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-sm);
  background:var(--c-monitor-bg);color:var(--ink);font-size:13px}
.mon-fake-banner[hidden]{display:none}
.mon-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.mon-head h3{margin:0;font-size:14px;font-weight:500}
.mon-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mon-tools select,.mon-search{font-size:13px}
.mon-run{display:flex;align-items:center;gap:8px;min-height:22px;margin:12px 0 0;
  font-size:13px;color:var(--ink-2);flex-wrap:wrap}
.mon-run[data-status="success"]{color:var(--ink)}
.mon-run[data-status="warn"],.mon-run[data-status="login_required"],
.mon-run[data-status="runtime_missing"]{color:var(--c-dist)}
.mon-run[data-status="err"],.mon-run[data-status="failed"],
.mon-run[data-status="network_error"]{color:var(--c-radar)}
.mon-run[data-status="idle"],.mon-run[data-status="queued"],
.mon-run[data-status="rate_limited"],.mon-run[data-status="interrupted"],
.mon-run[data-status="unsupported"]{color:var(--ink-3)}
.mon-run code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:13px;padding:1px 6px;border-radius:var(--r-sm);background:var(--surface-2)}
.mon-text-link{border:0;background:none;padding:0;color:var(--c-dist);font-size:13px;
  cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.mon-text-link:hover{color:var(--ink)}
.mon-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;
  background:var(--c-monitor);animation:mon-pulse 1s ease-in-out infinite}
@keyframes mon-pulse{0%,100%{opacity:.35}50%{opacity:1}}
.mon-account{max-width:260px}
.mon-dash{margin-top:12px}
.mon-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0}
.mon-chart{min-height:180px}
.mon-works{display:flex;flex-direction:column}
.mon-work{display:grid;grid-template-columns:minmax(0,1fr) 76px 150px 92px;gap:12px;
  align-items:center;padding:14px 2px;border-bottom:1px solid var(--line);
  font-size:13px;cursor:pointer}
.mon-works .mon-work:first-child{border-top:1px solid var(--line)}
.mon-work-main{display:flex;align-items:center;gap:8px;min-width:0}
.mon-work-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mon-task{flex:0 0 auto;font-size:13px;color:var(--ink-3)}
.mon-sample{flex:0 0 auto;font-size:12px;line-height:1;color:var(--ink-2);border:1px solid var(--line);
  border-radius:999px;padding:2px 7px}
.mon-plat,.mon-metric,.mon-time{color:var(--ink-2);font-variant-numeric:tabular-nums}
.mon-time{text-align:right}
.mon-empty{padding:14px 0;color:var(--ink-2);font-size:13px}
.mon-days{display:flex;gap:6px;flex-wrap:wrap}
.mon-days button{border:1px solid var(--line);background:none;border-radius:999px;
  padding:3px 13px;font-size:13px;color:var(--ink-2);cursor:pointer}
.mon-days button:hover{color:var(--ink)}
.mon-days button.on{color:var(--ink);border-color:var(--ink);font-weight:500}
.mon-platform{font-size:13px;max-width:180px}
.mon-chart{margin:4px 0 10px}
.mon-chart svg{display:block;width:100%;height:180px}
.mon-work:hover{background:var(--surface-2)}
.mon-delta{color:var(--ink-3);font-variant-numeric:tabular-nums}
.mon-delta.up{color:var(--c-kb)}
.mon-delta.down{color:var(--c-radar)}
.mon-work-detail{margin:-2px 0 6px;padding:10px 12px;border:1px solid var(--line);
  border-radius:var(--r-sm);background:var(--surface);font-size:13px}
.mon-detail-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.mon-detail-cell{display:flex;flex-direction:column;gap:2px}
.mon-detail-k{color:var(--ink-3)}
.mon-detail-v{font-weight:500;font-variant-numeric:tabular-nums}
.mon-detail-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin-top:8px;color:var(--ink-2)}
.mon-detail-meta code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:13px}
.mon-log-tools{margin:0 0 8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* 2026-11-02 日志筛选收敛：级别/来源改 monSelect 自定义下拉（箭头内移、选项框对齐，
   与作品表现同款），搜索框扁平浅灰、无边框装饰 */
.mon-log-tools .mon-level,.mon-log-tools .mon-source{width:112px}
.mon-log-tools .mon-search{flex:1;min-width:160px;max-width:360px;font-size:13px;
  width:auto;background:var(--surface-2);border:0;border-radius:var(--r-field);
  padding:6px 10px;outline:none;-webkit-appearance:none;appearance:none}
.mon-log-tools .mon-search:focus{background:var(--surface-2);border:0}
.mon-log-more{margin-top:10px}
.mon-log-more .dp-btn[hidden]{display:none}
/* 008 收敛轮：系统日志行式列表（卡片 → 列表） */
.mon-logrow{display:grid;grid-template-columns:44px minmax(64px,auto) 96px minmax(0,1fr);
  gap:12px;align-items:baseline;padding:8px 2px;border-bottom:1px solid var(--line);font-size:13px}
.mon-logrow:first-child{border-top:1px solid var(--line)}
.mon-logrow .pill{white-space:nowrap}
.mon-logrow .mon-log-src{color:var(--ink-3);font-size:12px;white-space:nowrap}
.mon-logrow .mon-log-time{color:var(--ink-3);font-size:12px;white-space:nowrap}
.mon-logrow .mon-log-msg{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.mon-trend-note{font-size:12px;color:var(--ink-3);margin:8px 0 22px}
/* 008 数据统计页二次收敛（2026-10-23）：极简扁平指标块、单行工具条、渐变趋势曲线 */
#mon-pane .cfg-sec.mon-first{border-top:0;padding-top:4px}
#mon-pane .stat-grid .stat{background:var(--surface-2);border:0;box-shadow:none}
/* 今日关键数字：24px 数值在左、文字说明在右，去 SVG 图标 */
#mon-pane .stat-grid .stat{display:flex;flex-direction:row;align-items:center;gap:12px}
#mon-pane .stat-grid .st-v{font-size:24px}
#mon-pane .stat-grid .st-t{min-width:0;display:flex;flex-direction:column;gap:2px}
.mon-perf-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* 账号/平台自定义下拉：箭头内移 5px（right:15px），选项框贴牢底部且左右对齐 */
.mon-sel{position:relative;display:inline-flex;align-items:center;min-width:0;
  font-size:13px;padding:6px 30px 6px 10px;background:var(--surface-2);
  border:1px solid transparent;border-radius:var(--r-field);color:var(--ink);
  cursor:pointer;user-select:none}
.mon-sel:focus{border-color:var(--ink);background:var(--surface)}
.mon-sel[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
.mon-sel .mon-sel-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mon-sel .mon-sel-arrow{position:absolute;right:15px;width:12px;height:12px;
  color:var(--ink-3);pointer-events:none}
.mon-sel-pop{position:absolute;left:-1px;right:-1px;top:calc(100% + 1px);z-index:40;
  margin:0;padding:4px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);
  box-shadow:0 8px 24px rgba(0,0,0,.10);max-height:260px;overflow:auto}
.mon-sel-group{padding:6px 8px 2px;font-size:13px;color:var(--ink-3)}
.mon-sel-opt{display:block;width:100%;text-align:left;border:0;background:none;
  padding:6px 8px;font-size:13px;color:var(--ink);border-radius:var(--r-sm);
  cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mon-sel-opt:hover{background:var(--surface-2)}
.mon-sel-opt.on{font-weight:500}
.mon-perf-tools .mon-account{max-width:200px}
.mon-perf-tools .mon-platform{max-width:150px}
.mon-perf-tools .dp-btn{margin-left:auto}
.mon-run[hidden]{display:none}
.mon-summary .stat{background:none;border:0;box-shadow:none;border-radius:0;
  padding:2px 0 2px 18px}
.mon-summary .stat:first-child{padding-left:0}
.mon-summary .stat + .stat{border-left:1px solid #8C8C8C}
.mon-metric{display:inline-flex;align-items:center;gap:10px;min-width:0}
.mon-metric-item{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.mon-metric-item .wb-ico{width:13px;height:13px;color:var(--ink-3)}
.mon-chart{position:relative;background:var(--surface-2);border-radius:var(--r-md)}
.mon-chart-tip{position:absolute;z-index:2;pointer-events:none;transform:translate(-50%,-100%);
  background:var(--ink);color:#fff;font-size:12px;line-height:1.5;padding:3px 9px;
  border-radius:6px;white-space:nowrap}
.mon-chart-tip-day{color:#C9C9C9}
/* 账号卡（P1-1）：作品区之上，账号自己的粉丝/涨粉/小指标；
   没有账号级能力的平台如实写「这个平台没有给账号级指标」，不画 0 */
.mon-accounts{display:grid;grid-template-columns:repeat(auto-fill,minmax(224px,1fr));
  gap:10px;margin:4px 0 16px}
.mon-acc{display:flex;flex-direction:column;gap:6px;min-width:0;
  background:var(--surface-2);border-radius:var(--r-md);padding:10px 14px;font-size:13px}
.mon-acc-top{display:flex;align-items:baseline;gap:8px;min-width:0}
.mon-acc-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.mon-acc-plat{flex:0 0 auto;margin-left:auto;font-size:12px;color:var(--ink-3)}
.mon-acc-nums{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}
.mon-acc-num{display:inline-flex;align-items:baseline;gap:4px}
.mon-acc-v{font-size:14px;font-weight:500;font-variant-numeric:tabular-nums}
.mon-acc-k{font-size:12px;color:var(--ink-3)}
.mon-acc-growth{font-size:12px;color:var(--c-kb)}
.mon-acc-growth.down{color:var(--c-radar)}
.mon-acc-pm{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2)}
.mon-acc-pm-i{display:inline-flex;align-items:baseline;gap:4px}
.mon-acc-vs{color:var(--ink-3)}
.mon-acc-note{font-size:12px;color:var(--ink-3)}
.mon-acc-empty{grid-column:1/-1;padding:8px 0;font-size:13px;color:var(--ink-2)}
.mon-task-weak{font-size:12px;border:1px solid var(--line);border-radius:999px;padding:2px 7px}
.mon-stale{color:var(--ink-2)}
.mon-unsupported{font-size:12px;color:var(--ink-3);margin:10px 0 24px}

@media(max-width:960px){
  .mon-tools{width:100%}
  .mon-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mon-summary .stat{padding-left:0}
  .mon-summary .stat + .stat{border-left:0}
}

@media(max-width:720px){
  .mon-logrow{grid-template-columns:44px minmax(0,1fr)}
  .mon-logrow .mon-log-src,.mon-logrow .mon-log-time{display:none}
}
@media(max-width:720px){
  .mon-work{grid-template-columns:minmax(0,1fr) 72px}
  .mon-work .mon-metric,.mon-work .mon-time{display:none}
  .mon-detail-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* 006 产品知识库（第二轮）：卡片列表 + 780px 抽屉（状态只用克制色） */
/* 产品知识（006）：抽屉与列表页只用黑/灰中性色（去暖黄），操作链接统一深绿不加粗 */
.kb-page,.kb-editor{--ink:#1A1A1A;--ink-2:#636363;--ink-3:#9B9B9B;--surface-2:#F4F4F4;--line:#E6E6E6}
.kb-editor .cp-text-btn{color:var(--c-action);font-weight:300}
.kb-editor .cp-text-btn:hover:not(:disabled){color:var(--ink)}
.kb-editor .cp-text-btn:disabled{color:var(--ink-3);cursor:not-allowed}
.kb-link-btn{display:inline-flex;align-items:center;gap:5px}
.kb-link-btn .wb-ico{flex:0 0 auto}
.kb-editor .cp-text-btn.kb-disclosure{color:var(--ink-2)}
.kb-editor .cp-text-btn.kb-disclosure:hover:not(:disabled){color:var(--ink)}
.kb-page{max-width:100%;padding:0 4px 40px}
.kb-list{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.kb-card{border:1px solid transparent;display:grid;gap:6px;justify-items:start;text-align:left;
  background:#FAFAFA;border-radius:var(--r-md);padding:16px 18px;cursor:pointer;
  transition:border-color .15s;font-family:inherit}
.kb-card:hover,.kb-card:focus-visible{border-color:var(--ink);outline:none}
.kb-card-name{font-size:14px;font-weight:500;color:var(--ink);max-width:100%;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kb-card-desc{font-size:13px;color:var(--ink-2);line-height:1.5;overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:39px}
.kb-card-meta{font-size:13px;color:var(--ink-2);line-height:1.5}
.kb-empty{padding:48px 0;color:var(--ink-2);font-size:13px;text-align:center}
.kb-hint{color:var(--ink-2);font-size:12px;line-height:1.55}
.kb-ai-reason{font-size:13px;color:var(--ink-2)}
.kb-src{margin-left:6px;font-size:12px;color:var(--ink-2)}
.kb-pending{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:12px;color:var(--ink-2)}
.kb-pending[hidden]{display:none}
.kb-divider{border-top:1px solid var(--ink);margin:22px 0 18px}
.kb-panel{margin-top:4px;padding:12px 16px 14px;background:var(--surface-2);border-radius:var(--r-md)}
.kb-panel .cp-section-head h3{margin:0}
.kb-panel textarea,.kb-panel input[type=text],.kb-panel select{background:var(--surface)}
.kb-panel .kb-parse-preview{border-top-color:#D8D8D8}
.kb-adopt{display:grid;gap:2px;margin:2px 0 6px;padding:10px 12px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-sm)}
.kb-adopt-head{display:flex;align-items:center;justify-content:space-between;gap:10px;
  font-size:12px;color:var(--ink-2);margin-bottom:4px}
.kb-adopt-row{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:10px;
  align-items:baseline;padding:4px 0;border-top:1px dashed var(--line)}
.kb-adopt-label{font-size:12px;color:var(--ink-2);white-space:nowrap}
.kb-adopt-val{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kb-profile{margin-top:20px}
.kb-profile .kb-fields{margin-top:10px}
.kb-head{display:grid;gap:4px;margin-bottom:18px}
.kb-name{width:100%;font-size:28px;font-weight:500;line-height:1.25;letter-spacing:-.3px;resize:none;overflow:hidden;
  background:transparent;border:0;border-bottom:1px solid transparent;padding:0 0 2px;font-family:inherit}
.kb-name:focus{border-bottom-color:var(--ink);background:transparent;outline:none}
.kb-head-sub{color:var(--ink-2);font-size:12px;overflow-wrap:anywhere}
.kb-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}
.kb-field-wide{grid-column:1/-1}
.kb-type-pills{margin:6px 0 12px}
.kb-type-pills .cp-platform.is-zero{opacity:.55;cursor:default}
.kb-editor .cp-platform.on{background:var(--surface);border-color:var(--ink);color:var(--ink);font-weight:500}
.kb-entry-list{display:grid;gap:2px}
.kb-entry{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);min-width:0}
.kb-entry.is-off{opacity:.5}
.kb-entry-badge{flex:0 0 auto;min-width:38px;text-align:center;padding:1px 6px;border-radius:var(--r-pill);
  background:var(--surface-2);color:var(--ink-2);font-size:12px;line-height:18px}
.kb-entry-main{flex:1 1 auto;min-width:0}
.kb-entry-title{font-size:13px;font-weight:500;overflow-wrap:anywhere}
.kb-entry-body{font-size:12px;color:var(--ink-2);line-height:1.6;margin-top:2px;overflow-wrap:anywhere}
.kb-switch{flex:0 0 auto;position:relative;width:30px;height:17px;padding:0;border-radius:9px;cursor:pointer;
  border:1px solid var(--line);background:var(--surface-2)}
.kb-switch::after{content:'';position:absolute;top:1px;left:1px;width:13px;height:13px;border-radius:50%;
  background:var(--ink-2);transition:transform var(--t-fast),background var(--t-fast)}
.kb-switch[aria-checked=true]{background:#ECECEC;border-color:#9B9B9B}
.kb-switch[aria-checked=true]::after{transform:translateX(13px);background:var(--c-action)}
.kb-entry-more{flex:0 0 auto;border:0;background:none;color:var(--ink-2);cursor:pointer;font-size:15px;
  line-height:1;padding:2px 4px;border-radius:var(--r-sm)}
.kb-entry-more:hover{background:var(--surface-2);color:var(--ink)}
.kb-menu{position:fixed;z-index:90;display:grid;min-width:104px;padding:4px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:0 8px 24px rgba(32,30,27,.14)}
.kb-menu-item{border:0;background:none;text-align:left;padding:7px 10px;font-size:13px;cursor:pointer;
  color:var(--ink);border-radius:6px}
.kb-menu-item:hover{background:var(--surface-2)}
.kb-form{display:grid;gap:8px;margin:8px 0;padding:10px 12px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-sm)}
.kb-form-row{display:grid;grid-template-columns:104px minmax(0,1fr);gap:8px}
.kb-form-kind{padding:5px 8px;font-size:13px}
.kb-form-actions{display:flex;align-items:center;gap:8px}
.kb-tabs{margin-bottom:14px}
.kb-tabs .kb-ai-btn{white-space:nowrap}
.kb-tabs .cp-text-btn:disabled{color:var(--ink-2);opacity:.6;cursor:not-allowed}
.kb-import-panel textarea{min-height:104px;font-size:13px}
.kb-import-actions{display:flex;align-items:center;gap:12px;margin-top:8px}
/* 上传文档区：与粘贴文字输入框同款底色（面板内 var(--surface)），选择按钮/文件名/说明都收进框里 */
.kb-import-file{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:44px;
  background:var(--surface);border:1px solid transparent;border-radius:var(--r-field);
  padding:8px 12px;transition:border-color var(--t-fast),background var(--t-fast)}
.kb-import-file:focus-within{border-color:var(--ink)}
.kb-file{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;pointer-events:none}
.kb-file-name{min-width:0;font-size:13px;color:var(--ink);overflow-wrap:anywhere}
.kb-file-name.is-empty{color:var(--ink-3)}
.kb-file-tip{margin-left:auto}
/* 字段标题行：限制说明（如 ≤200 字）跟在标题后面，与标题同一基线 */
.kb-field-title{display:flex;align-items:baseline;gap:6px}
.kb-parse-preview{display:grid;gap:6px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.kb-parse-preview[hidden],.kb-import-panel[hidden]{display:none}
.kb-preview-row{display:grid;grid-template-columns:auto 96px minmax(0,1fr) auto;gap:8px;align-items:start;
  padding:6px 0;border-bottom:1px solid var(--line)}
.kb-preview-kind{padding:3px 6px;font-size:12px}
.kb-preview-text{min-width:0}
.kb-preview-title{font-size:13px;font-weight:500;overflow-wrap:anywhere}
.kb-preview-body{font-size:12px;color:var(--ink-2);line-height:1.6;margin-top:2px;overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kb-preview-body.open{display:block;-webkit-line-clamp:unset}
.kb-preview-foot{display:flex;align-items:center;gap:12px;margin-top:8px}
.kb-preview-actions{justify-content:flex-end}
.kb-empty-note{padding:16px 0;color:var(--ink-2);font-size:13px;line-height:1.7}
.kb-actions{display:flex;align-items:center;gap:10px;margin-top:22px;padding-top:14px;border-top:1px solid var(--line)}
@media (max-width:768px){
  .kb-list{grid-template-columns:minmax(0,1fr)}
  .kb-card{padding:14px 16px}
  .kb-fields{grid-template-columns:minmax(0,1fr)}
  .kb-name{font-size:22px}
  .kb-entry{flex-wrap:wrap}
  .kb-entry-badge{order:1}
  .kb-switch{order:2;margin-left:auto}
  .kb-entry-more{order:3}
  .kb-entry-main{flex:1 1 100%;order:4}
  .kb-preview-row{grid-template-columns:auto minmax(0,1fr) auto}
  .kb-preview-kind{grid-column:2;grid-row:2}
  .kb-form-row{grid-template-columns:minmax(0,1fr)}
}

/* ═══ 007 配置域：黑灰中性色 + 扁平化（与 .kb-page 同源；覆盖配置管理/社媒账号/用户昵称三页） ═══ */
.cfg-page{--ink:#1A1A1A;--ink-2:#636363;--ink-3:#9B9B9B;--surface-2:#F4F4F4;--line:#E6E6E6}
/* 卡片扁平化：浅灰底、细灰线、无阴影（对齐 005 分发页 / 006 知识页） */
.cfg-page .card{background:#FAFAFA;border:1px solid var(--line);box-shadow:none}
.cfg-page .stcard{background:#FAFAFA;border-color:var(--line)}
/* 黄色系 warn 徽章中性化（状态 ok/err 保留语义色） */
.cfg-page .pill.warn{color:var(--ink-2);border-color:var(--line);background:var(--surface-2)}
/* 操作链接统一深绿图文；披露控件保持灰色纯文字 */
.cfg-page .cp-text-btn{color:var(--c-action);font-weight:300}
.cfg-page .cp-text-btn:hover:not(:disabled){color:var(--ink)}
/* 输入框在中性色域内保持一致 */
.cfg-page input,.cfg-page select,.cfg-page textarea{background:#fff;border-color:var(--line)}

/* ═══ 001 极简收敛轮：热点雷达三页黑灰中性 + 扁平（与 .cfg-page/.kb-page 同源 token） ═══ */
#radar-pane{--ink:#1A1A1A;--ink-2:#636363;--ink-3:#9B9B9B;--surface-2:#F4F4F4;--line:#E6E6E6}
#radar-pane .card{background:#FAFAFA;border:1px solid var(--line);box-shadow:none}
#radar-pane .pill.warn{color:var(--ink-2);border-color:var(--line);background:var(--surface-2)}
#radar-pane .note:hover{border-color:var(--line)}
#radar-pane .sk-b{background:linear-gradient(90deg,var(--surface-2) 25%,#EFEFEF 50%,var(--surface-2) 75%)}
#radar-pane input,#radar-pane select,#radar-pane textarea{background:#fff;border-color:var(--line)}
/* 首页头部一行：弱化说明 + 操作链接 */
.rd-head{display:flex;align-items:baseline;gap:8px;margin:2px 2px 14px}
.rd-head .sp{flex:1}
.rd-collect{color:var(--c-action)}
.rd-collect:hover:not(:disabled){color:var(--ink)}
.rd-collect:disabled{color:var(--ink-3);cursor:not-allowed}
/* 001 调用限制（2026-11-09）：今日额度 + 平台最多 4 个 */
.rd-quota{white-space:nowrap;color:var(--ink-3)}
.rd-quota.spent{color:var(--ink-2)}
.rd-chips-meta{margin-top:8px;color:var(--ink-3);font-size:12px}
.rd-quota-line{margin:6px 0 0}
#radar-pane .chip.dis{opacity:.42;cursor:not-allowed}
#radar-pane .chip.dis:hover{background:var(--surface);color:var(--ink-2)}
/* 平台模块：2 列网格，每平台一个浅灰模块（行式热点，不再每条一个背景） */
.rd-sec{margin:0 0 18px}
.rd-sec-head{display:flex;align-items:baseline;gap:8px;margin:0 2px 8px}
.rd-sec-head h3{margin:0;font-size:14px;font-weight:500;color:var(--ink)}
.rd-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
#radar-pane .rd-mod{background:#F7F7F7;border-radius:10px;padding:12px 14px}
.rd-mod-head{display:flex;align-items:baseline;gap:8px;margin:0 2px 4px}
.rd-mod-head h3{margin:0;font-size:14px;font-weight:500;color:var(--ink)}
.rd-item{padding:7px 2px;cursor:pointer;display:flex;align-items:baseline;gap:10px}
.rd-item + .rd-item{border-top:1px solid #ECECEC}
.rd-item-tt{flex:1;min-width:0;font-size:13px;color:var(--ink);line-height:1.5;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rd-item:hover .rd-item-tt{color:var(--c-action)}
.rd-item-mt{flex:0 0 auto;font-size:12px;color:var(--ink-3)}
/* 跨平台行：徽章与平台清单独占一行 */
.rd-item-x{display:block}
.rd-item-x .rd-item-mt{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:3px}
/* 跨平台同热：整组一个白底差异化模块独占一行，内部 3 列网格（一行 2-3 条）压低模块高度 */
#radar-pane .rd-mod-x{background:#fff;border:1px solid var(--line)}
.rd-xgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:18px}
.rd-xgrid .rd-item{border-top:1px solid #ECECEC}
.rd-xgrid .rd-item:nth-child(-n+3){border-top:0}
.rd-xbadge{flex:0 0 auto;background:var(--c-action);color:#fff;border-radius:999px;
  padding:1px 8px;font-size:11px;line-height:1.6}
/* 浮层笔记列表 */
.rd-drill-title{font-size:16px;font-weight:500;color:var(--ink);line-height:1.5}
.rd-note{display:flex;align-items:flex-start;gap:8px;padding:11px 2px;
  border-bottom:1px solid var(--line);cursor:pointer}
.rd-note.no-link{cursor:default;opacity:.72}
.rd-note:hover .rd-note-tt{color:var(--c-action)}
.rd-note.no-link:hover .rd-note-tt{color:var(--ink)}
.rd-note-main{flex:1;min-width:0}
.rd-note-tt{color:var(--ink);font-size:13px;line-height:1.5;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rd-note-mt{color:var(--ink-3);font-size:12px;margin-top:5px}
.rd-star{border:0;background:transparent;font-size:16px;color:var(--ink-3);
  cursor:pointer;padding:2px 4px;flex:0 0 auto}
.rd-star.on{color:var(--ink)}
.rd-star:hover{color:var(--ink)}
@media (max-width:720px){
  .rd-grid{grid-template-columns:minmax(0,1fr)}
  .rd-xgrid{grid-template-columns:minmax(0,1fr)}
  .rd-xgrid .rd-item:nth-child(-n+3){border-top:1px solid #ECECEC}
  .rd-xgrid .rd-item:first-child{border-top:0}
}

/* ── 社媒账号页：极简扁平 + 产品知识同款卡片（无大色块，靠对齐分割） ── */.ac-page{max-width:100%;padding:0 4px 40px}
.ac-head{display:grid;gap:4px;margin:2px 0 16px}
.ac-title{font-size:20px;font-weight:500;color:var(--ink)}
.ac-sub{font-size:13px;color:var(--ink-2)}
.ac-card{cursor:default;align-content:start}
.ac-top{display:flex;align-items:center;gap:8px;width:100%;min-width:0}
.ac-logo{flex:0 0 auto;width:26px;height:26px;border-radius:7px;display:inline-flex}
.ac-logo svg{width:100%;height:100%;display:block}
/* 绑定状态三色：圆点 + 文字，不铺底色 */
.ac-status{margin-left:auto;display:inline-flex;align-items:center;gap:5px;
  font-size:12px;white-space:nowrap}
.ac-status::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.ac-status.ok{color:var(--ok)}
.ac-status.warn{color:#B45309}
.ac-status.mut{color:var(--ink-3)}
.ac-nick{font-size:13px;font-weight:500;color:var(--ink);max-width:100%;overflow-wrap:anywhere}
/* 悬停/聚焦浮现操作；常驻占位避免卡片高度跳动 */
.ac-acts{display:flex;align-items:center;gap:14px;min-height:22px;margin-top:2px;
  opacity:0;visibility:hidden;transform:translateY(2px);
  transition:opacity .15s,transform .15s,visibility .15s}
.ac-card:hover .ac-acts,.ac-card:focus-within .ac-acts{opacity:1;visibility:visible;transform:none}
.ac-acts .cp-text-btn{font-size:13px}
.ac-acts .cp-text-btn.ac-del{color:#B42318}
.ac-acts .cp-text-btn.ac-del:hover:not(:disabled){color:#8A1C13}
/* 添加卡：固定首位，与账号卡同底同悬停，内容居中 */
.ac-add{justify-items:center;align-content:center;text-align:center;gap:10px;min-height:150px}
.ac-add-ico{width:36px;height:36px;border-radius:50%;background:#fff;color:var(--ink-2);
  display:inline-flex;align-items:center;justify-content:center}
.ac-add:hover .ac-add-ico{color:var(--ink)}
.ac-modal{min-width:340px}
.ac-modal select,.ac-modal input{width:100%}

/* 侧边栏底部用户名入口（007 FR-011） */
#side .foot{display:flex;flex-direction:column;gap:8px}
#foot-user{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;
  border:1px solid transparent;border-radius:var(--r-sm);padding:6px 8px;cursor:pointer;
  color:var(--ink);font-size:13px;font-weight:500}
#foot-user:hover{background:var(--surface);border-color:var(--line)}
#foot-user .wb-ico{flex:0 0 auto;color:var(--ink-2)}
#foot-user .fu-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ═══ 007 优化轮：配置管理四个 tab 极简扁平（#cfg-pane 作用域） ═══
   对齐媒体创作：模块间一条黑色分割线 + 内容对齐，无大色块/边框/阴影；
   文字只留黑与灰（状态点保留语义色），操作链接墨色。 */
/* 热点雷达、配置管理与数据监控的内容区均与 tab 标题行同宽（全宽），不再限宽 */
.cfg-sec{padding:26px 2px;border-top:1px solid var(--ink)}
.cfg-sec:first-child{border-top:0;padding-top:4px}
.cfg-sec-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.cfg-sec-head h3{margin:0;font-size:15px;font-weight:500;color:var(--ink);letter-spacing:.2px}
.cfg-sec-head .cfg-side{margin-left:auto;display:flex;align-items:center;gap:10px}
.cfg-hint{font-size:12px;color:var(--ink-3);line-height:1.6;font-weight:300}
.cfg-sec-body{margin-top:16px;min-width:0}
/* 提示块去边框去底色，降级为灰色纯文字 */
#cfg-pane .hint,#mon-pane .hint,#radar-pane .hint{border:0;background:transparent;padding:2px 0}
#cfg-pane .warnbox,#mon-pane .warnbox,#radar-pane .warnbox{border:0;background:var(--surface-2);color:var(--ink-2)}
/* 操作链接墨色化（本页文字只有黑与灰，不再用深绿） */
#cfg-pane .cp-text-btn{color:var(--ink)}
#cfg-pane .cp-text-btn:hover:not(:disabled){color:var(--ink-2)}
#cfg-pane .cp-text-btn.is-danger{color:var(--err)}
/* 状态卡去边框/底色/阴影：靠栅格对齐与间距分割 */
#cfg-pane .stcard{background:transparent;border:0;box-shadow:none;border-radius:0;padding:2px 2px 10px}
#cfg-pane .stcard .stc-m{min-height:0}
/* 大模型列表行 */
.llm-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 16px;
  align-items:center;padding:13px 2px;border-bottom:1px solid var(--line)}
.llm-row:first-child{border-top:1px solid var(--line)}
.llm-row-main{display:flex;align-items:baseline;gap:9px;min-width:0;flex-wrap:wrap}
.llm-row-name{font-size:14px;font-weight:500;color:var(--ink);overflow-wrap:anywhere}
.llm-row-meta{font-size:12px;color:var(--ink-3);overflow-wrap:anywhere;min-width:0}
.llm-row-acts{display:flex;align-items:center;gap:14px;white-space:nowrap;font-size:13px}
.llm-dft{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink);
  background:var(--surface-2);border-radius:999px;padding:2px 9px}
.llm-dft::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--ink)}
/* 调用日志列表：整行可点，浮出框看全文 */
.llm-log-row{display:grid;grid-template-columns:140px minmax(0,1fr) minmax(0,140px) 64px 48px;
  gap:12px;align-items:baseline;width:100%;padding:10px 2px;background:transparent;border:0;
  border-bottom:1px solid var(--line);cursor:pointer;text-align:left;font:inherit;font-size:13px;
  color:var(--ink)}
.llm-log-row:first-child{border-top:1px solid var(--line)}
.llm-log-row:hover .llm-log-src{color:var(--ink)}
.llm-log-time{color:var(--ink-3);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}
.llm-log-src{color:var(--ink-2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.llm-log-model{color:var(--ink-3);font-size:12px;min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.llm-log-ms{color:var(--ink-3);font-size:12px;text-align:right;font-variant-numeric:tabular-nums}
.llm-log-st{font-size:12px;text-align:right}
.llm-log-st.ok{color:var(--ink-2)}
.llm-log-st.bad{color:var(--err)}
@media(max-width:720px){
  .llm-log-row{grid-template-columns:minmax(0,1fr) 64px 48px}
  .llm-log-time,.llm-log-model{display:none}
}
/* 日志详情浮出框 */
.llm-log-modal{width:min(680px,92vw);display:grid;gap:12px}
.llm-log-modal .code{max-height:240px}
.llm-log-kv{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:12px;color:var(--ink-3)}
.llm-log-kv b{color:var(--ink-2);font-weight:500}
.llm-log-lbl{font-size:12px;font-weight:500;color:var(--ink-2)}
/* 拉取到的可选模型：平铺胶囊，点选一个生效（黑灰中性色） */
.llm-mdlrow{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.llm-mdl{padding:5px 12px;border-radius:999px;border:1px solid var(--line);background:transparent;
  font-size:12px;color:var(--ink-2);cursor:pointer;font-family:inherit}
.llm-mdl:hover{border-color:var(--ink);color:var(--ink)}
.llm-mdl.on{background:var(--ink);border-color:var(--ink);color:#fff}
/* 自动代理：扫描出的可用代理胶囊（第一个为当前自动使用） */
.llm-pxrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.llm-px{padding:4px 10px;border-radius:999px;background:#F4F4F4;font-size:12px;color:var(--ink-2)}
.llm-px.on{background:var(--ink);color:#fff}
/* 窄抽屉里的日志行：隐藏模型列（抽屉已按模型过滤）、压缩时间列，给来源留出空间 */
.llm-logs-drawer .llm-log-row{grid-template-columns:88px minmax(0,1fr) 64px 48px}
.llm-logs-drawer .llm-log-model{display:none}

/* ── 000-home：首页「拍照成稿」（移动优先；小程序同源布局预留） ─────────── */
/* 底部 Tab：桌面隐藏；≤720px 显示并隐藏侧边栏（721–768px 仍沿用旧底栏过渡） */
.mtab{display:none}
@media(max-width:720px){
  #side{display:none}
  .mtab{
    order:2;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;
    width:100%;flex:0 0 auto;border-top:1px solid var(--line);background:var(--surface);
    padding:6px 4px calc(6px + env(safe-area-inset-bottom,0));
  }
  .mtab button{
    min-width:0;min-height:44px;display:flex;flex-direction:column;align-items:center;
    justify-content:center;gap:3px;padding:6px 2px 5px;border:0;border-radius:10px;
    background:transparent;color:var(--ink-2);font-family:inherit;cursor:pointer;
  }
  .mtab button .ic{display:inline-flex;width:20px;height:20px;line-height:1.2}
  .mtab button .nm{
    max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    font-size:13px;line-height:1.2;
  }
  .mtab button.on{color:var(--ink);background:var(--surface-2)}
}
/* 「更多」抽屉行 */
.mtab-more{display:grid;gap:2px}
.mtab-more-row{
  display:flex;align-items:center;gap:10px;width:100%;padding:11px 8px;border:0;
  border-radius:10px;background:transparent;font-family:inherit;text-align:left;cursor:pointer;
}
.mtab-more-row:hover{background:var(--surface-2)}
.mtab-more-row.on{background:var(--surface-2)}
.mtab-more-row .ic{display:inline-flex;width:22px;height:22px;flex:0 0 22px}
.mtab-more-row .nm{font-size:14px;color:var(--ink);flex:0 0 auto}
.mtab-more-row .sub{font-size:12px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 首页主面板：虚拟输入框（素材区 + 弱分割线 + 写观点 + 框内底部设置行/「生成」）→ 文案预览 → 一键发布，
   桌面 640px 居中；黑灰扁平 token 作用域，与内容撰写页同风格（去暖黄、无卡片底色）。
   默认空态（无素材无成稿）输入框垂直居中于屏幕；有内容后恢复顶部顺排。
   三模块（内容设置 / 文案预览 / 一键发布）之间间距加大（gap 40px + 预览分割线上方留白） */
#home-pane{display:flex;flex-direction:column;gap:40px;padding-bottom:8px;
  --ink:#1A1A1A;--ink-2:#636363;--ink-3:#9B9B9B;--surface-2:#F4F4F4;--line:#E6E6E6}
/* 无成稿时：输入框垂直居中（#view 有确定高度，min-height:100% 撑满可视区；底 padding 归零保证精确居中） */
#home-pane.hm-empty{min-height:100%;justify-content:center;padding-bottom:0}
#home-pane.hm-empty>*:empty{display:none}
#home-pane .btn.pri:hover{background:#333;border-color:#333}
@media(min-width:721px){#home-pane{max-width:640px;margin-left:auto;margin-right:auto}}
/* 覆盖 #view>* 的 1100px 限宽（min-width:1280px 媒体查询，同 specificity 后置生效） */
@media(min-width:1280px){#view>#home-pane{max-width:640px}}
/* 极速发布默认进入页：内容区从页面中心向四周扩散的暖色径向渐变（浅黄 → 白）。
   中心淡黄吸住视线、四周退成纯白，让默认空态不只是一块白布；输入框内部保持纯白
   （见 .hm-composer 的 padding-box），白色输入框像一片纸浮在暖光上。 */
#view.view-home{background:radial-gradient(ellipse 78% 66% at 50% 42%,
  #FFF6DC 0%, #FFFAEA 30%, #FFFDF7 58%, #FFFFFF 82%)}
.hm-sec{display:flex;flex-direction:column;gap:10px}
.hm-sec-h{display:flex;align-items:baseline;gap:8px}
.hm-sec-h b{font-size:15px;font-weight:500;color:var(--ink)}
.hm-sec-h .hm-hint{font-size:12px;color:var(--ink-3)}

/* 虚拟输入框：上部素材区（占位符/缩略图）+ 弱分割线 + 下部写观点，默认即输入框形态。
   2026-11-07：边框改 logo 双色渐变（墨 #323232 → 橙 #F15A24，2px 整像素对齐，输入区域更醒目有指向性）；
   双层背景实现渐变描边（padding-box 铺白底、border-box 铺渐变），圆角不受影响；
   repeating-linear-gradient 周期 520px + 整周期位移动画 = 无缝循环的动态光影（亮橙高光沿边框流动） */
.hm-composer{display:flex;flex-direction:column;gap:10px;padding:12px 14px;
  border:2px solid transparent;border-radius:16px;
  background:linear-gradient(#FFFFFF,#FFFFFF) padding-box,
    repeating-linear-gradient(120deg,#323232 0px,#F15A24 160px,#FF8A4C 260px,#F15A24 360px,#323232 520px) border-box;
  animation:hm-edge-flow 5s linear infinite}
.hm-composer:focus-within{background:linear-gradient(#FFFFFF,#FFFFFF) padding-box,
  repeating-linear-gradient(120deg,#1A1A1A 0px,#F15A24 160px,#FFC09A 260px,#F15A24 360px,#1A1A1A 520px) border-box}
@keyframes hm-edge-flow{to{background-position:0 0,520px 0}}
@media (prefers-reduced-motion: reduce){.hm-composer{animation:none}}
.hm-composer-line{height:1px;background:var(--line)}
/* 口号（仅默认空态展示）：输入框正上方一行，与输入框左边对齐，深黑色 */
.hm-hero{display:flex;flex-direction:column;gap:12px}
.hm-tagline{text-align:left;font-size:14px;font-weight:500;color:var(--ink);letter-spacing:.2px}
#home-pane:not(.hm-empty) .hm-tagline{display:none}

/* 传图素材条：缩略图横排（点击进编辑弹窗）+ 正方形虚线上传占位符（与缩略图同尺寸） */
.hm-strip{display:flex;flex-wrap:wrap;gap:10px}
.hm-thumb{position:relative;width:72px;height:72px;border-radius:12px;overflow:hidden;
  background:var(--surface-2);cursor:pointer}
.hm-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.hm-main-badge{position:absolute;left:4px;top:4px;padding:1px 6px;border-radius:999px;
  background:rgba(26,26,26,.82);color:#fff;font-size:11px;line-height:1.5}
.hm-enh-badge{position:absolute;left:4px;bottom:4px;padding:1px 6px;border-radius:999px;
  background:var(--c-action);color:#fff;font-size:11px;line-height:1.5}
.hm-thumb-x{position:absolute;right:3px;top:3px;width:22px;height:22px;border:0;border-radius:50%;
  background:rgba(26,26,26,.6);color:#fff;font-size:13px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center}
.hm-add{position:relative;width:72px;height:72px;flex:0 0 auto;border:1.5px dashed var(--line);
  border-radius:12px;background:transparent;color:var(--ink-3);cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  font-family:inherit;padding:6px}
.hm-add:hover{border-color:var(--ink-3);color:var(--ink-2)}
.hm-add:disabled{opacity:.5;cursor:default}
.hm-add-plus{font-size:20px;line-height:1}
.hm-add-t{font-size:11px}
.hm-add-hint{font-size:12px;align-self:center}
.hm-note{font-size:12px}
/* 识别降级状态行（识别结果直接进「写观点」，无独立结果卡） */
.hm-deg-line{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:12px}

/* 写观点：虚拟输入框下部，无边框（与素材区之间为弱分割线） */
.hm-viewpoint{width:100%;min-height:72px;padding:4px 0;border:0;border-radius:0;
  background:transparent;font-family:inherit;font-size:13px;line-height:1.65;
  color:var(--ink);resize:vertical}
.hm-viewpoint:focus{outline:none}
/* 输入框内底部设置行：人设 / 模式 / 平台下拉（去标题，浅灰圆角背景，宽度按内容最小化）
   + 右侧「生成」图文按钮，与写观点同处一框（视觉一体） */
.hm-compose-foot{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.hm-settings{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
/* 三个下拉共用同一组件与同一套样式（箭头 wbIcon('down')，浮出层与触发器左/右对齐贴底，
   选项文字不裁切（width:max-content 优先于 right，宽度随最长选项取最小可读宽度）） */
.hm-platsel{position:relative;display:inline-flex;align-items:center;gap:4px;min-height:32px;
  max-width:200px;padding:5px 10px 5px 12px;border-radius:999px;background:var(--surface-2);
  font-size:13px;color:var(--ink);cursor:pointer;user-select:none}
.hm-platsel:focus{outline:none;background:var(--line)}
.hm-platsel-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hm-platsel-arrow{flex:0 0 auto;color:var(--ink-3)}
.hm-platsel-pop{position:absolute;left:0;right:0;top:calc(100% + 2px);z-index:40;
  width:max-content;min-width:100%;max-width:240px;
  max-height:280px;overflow:auto;padding:4px;display:flex;flex-direction:column;
  background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-2)}
.hm-platsel-pop[hidden]{display:none}
.hm-platsel-opt{display:flex;align-items:center;gap:6px;width:100%;padding:7px 8px;border:0;
  border-radius:8px;background:transparent;font-family:inherit;font-size:13px;color:var(--ink);
  cursor:pointer;text-align:left}
.hm-platsel-opt:hover{background:var(--surface-2)}
.hm-platsel-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hm-platsel-check{flex:0 0 auto;color:var(--ink);font-size:13px}
/* 「生成」图文按钮：下拉选择项右侧（提示在左），高度与浅灰圆角下拉项一致
   （button. 前缀压过 button.btn 基类的 8px 纵向 padding） */
.hm-gen-side{margin-left:auto;display:flex;align-items:center;gap:12px}
.hm-gen-note{font-size:12px}
button.hm-gen-btn{display:inline-flex;align-items:center;gap:6px;min-height:32px;
  padding:0 16px;border-radius:var(--r-pill);font-size:13px}
.hm-gen-btn .wb-ico{width:16px;height:16px}
/* 生成中动态效果：前图标（缺口圆环）匀速旋转 + 后省略号逐个点亮，明确“还在跑” */
button.hm-gen-btn.is-busy{cursor:progress}
button.hm-gen-btn.is-busy .wb-ico{animation:hm-spin .9s linear infinite}
@keyframes hm-spin{to{transform:rotate(360deg)}}
.hm-gen-dots{display:inline-flex;align-items:center;gap:3px;margin-left:-1px}
.hm-gen-dots i{width:3px;height:3px;border-radius:50%;background:currentColor;
  animation:hm-dot 1.2s ease-in-out infinite}
.hm-gen-dots i:nth-child(2){animation-delay:.2s}
.hm-gen-dots i:nth-child(3){animation-delay:.4s}
@keyframes hm-dot{0%,60%,100%{opacity:.25;transform:translateY(0)}
  30%{opacity:1;transform:translateY(-2px)}}
@media (prefers-reduced-motion: reduce){
  button.hm-gen-btn.is-busy .wb-ico,.hm-gen-dots i{animation:none}
}

/* 文案预览：浅灰圆角背景容器，有成稿后面板撑满屏高、成稿区随屏幕高度伸展
   （自适应，尽量减少上下滚动看全内容）；顶部「生成内容」节头（与一键发布同格式），
   内部 版本行 + 就地编辑字段——标题/正文/标签统一扁平横向分割线（无字段背景色） */
#home-pane:not(.hm-empty){min-height:100%}
#hm-compose{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0}
#hm-compose:empty{display:none}
.hm-draft{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;
  padding:14px 16px;border-radius:16px;background:var(--surface-2)}
/* 生成中骨架占位：无文字（按钮已表明「生成中…」），与成稿区同款浅灰圆角 */
.hm-skel{padding:14px 16px;border-radius:16px;background:var(--surface-2)}
.hm-skel i{display:block;height:13px;border-radius:7px;margin:12px 0;
  background:linear-gradient(90deg,#E9E9E9 25%,#F7F7F7 50%,#E9E9E9 75%);
  background-size:200% 100%;animation:hm-skel 1.2s linear infinite}
.hm-skel i:first-child{width:58%;margin-top:4px}
.hm-skel i:nth-child(2){width:94%}
.hm-skel i:last-child{width:76%;margin-bottom:4px}
@keyframes hm-skel{0%{background-position:200% 0}100%{background-position:-200% 0}}
.hm-ver-head{display:flex;align-items:center;gap:10px;font-size:12px}
/* 「换一版」胶囊描边：提高存在感（新手要能看到有 3 版可挑） */
.hm-ver-switch{border:1px solid var(--c-action);border-radius:999px;padding:2px 10px;
  color:var(--c-action)}
.hm-title{min-height:40px;padding:8px 0;border:0;border-bottom:1px solid #DCDCDC;
  border-radius:0;background:transparent;font-family:inherit;font-size:14px;font-weight:500;
  color:var(--ink);resize:vertical}
.hm-body{flex:1;min-height:140px;padding:8px 0;border:0;border-bottom:1px solid #DCDCDC;
  border-radius:0;background:transparent;font-family:inherit;font-size:13px;line-height:1.7;
  color:var(--ink);resize:vertical}
/* input.hm-tags 复合选择器：压过 input[type=text] 基类的浅灰底与聚焦白底
   （标签字段与标题/正文同为扁平横向分割线，无背景色） */
input.hm-tags{min-height:36px;padding:6px 0;border:0;border-bottom:1px solid #DCDCDC;
  border-radius:0;background:transparent;font-family:inherit;font-size:12px;color:var(--ink-2)}
.hm-title:focus,.hm-body:focus,input.hm-tags:focus{outline:none;border-bottom-color:var(--ink);
  background:transparent}

/* 首页「编辑」弹窗宿主：004 编辑器挂载进浮出弹窗（桌面 >720px），移动端 go('media') 新开页 */
.modal.hm-edmodal{padding:18px}
.box.hm-edbox{width:min(1080px,96vw);max-width:1080px;height:86vh;max-height:86vh;
  display:flex;flex-direction:column;padding:0;overflow:hidden}
.hm-edbox-h{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:10px 14px;border-bottom:1px solid var(--line)}
.hm-edbox-h b{font-size:14px;color:var(--ink)}
.hm-edhost{flex:1;min-height:0;display:flex;flex-direction:column}
.hm-edhost.view-media{background:var(--surface)}
.hm-edhost .media-page{height:100%;min-height:0}
.hm-edhost .media-head{padding:8px 12px 6px}
.hm-edhost .media-lab{grid-template-columns:148px minmax(0,1fr) 258px}
.hm-edhost .media-rail{padding-left:12px}
.hm-edhost .media-panel{padding-right:12px}

/* 发布面板：节头（右侧 高级编辑 + 一键发布）+ 渠道标签行（默认只展示平台标签：
   点标签勾选/取消；账号状态看标签底色——可用浅灰底，不可用警示底 + 验证图标；
   选中标签带预览图标，点击弹出发布预览模态框；无批量入口）。
   标签等宽：宽度由 JS 按「最宽情况」一次测量写入 --hm-ptag-w（全部标签同一固定宽度）；
   整体收窄（padding 10px / gap 4px）：640px 内容区默认一行展示 3 个平台标签 */
.hm-pub-side{margin-left:auto;display:flex;align-items:center;gap:12px}
.hm-ptags{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0}
.hm-ptag{display:inline-flex;align-items:center;gap:4px;width:var(--hm-ptag-w,auto);
  min-height:32px;padding:4px 10px;overflow:hidden;
  border:1px solid transparent;border-radius:999px;background:var(--surface-2);
  font-family:inherit;font-size:13px;color:var(--ink);cursor:pointer;user-select:none}
.hm-ptag:hover{border-color:var(--ink-3)}
.hm-ptag.on{background:#fff;border-color:var(--ink)}
.hm-ptag:disabled{opacity:.6;cursor:default}
.hm-ptag.bad{background:color-mix(in srgb,var(--warn) 10%,transparent)}
.hm-ptag.bad:hover{border-color:var(--warn)}
.hm-ptag.bad.on{border-color:var(--warn)}
.hm-ptag-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hm-ptag-check{width:14px;height:14px;flex:0 0 auto}
.hm-ptag-state{font-size:12px;color:var(--ink-3)}
.hm-ptag-state.ok{color:var(--ok)}
.hm-ptag-state.warn{color:var(--warn)}
.hm-ptag-state.err{color:var(--err)}
.hm-ptag-verify,.hm-ptag-pv{display:inline-flex;align-items:center;border:0;padding:1px;
  background:transparent;cursor:pointer;color:var(--warn)}
.hm-ptag-pv{color:var(--ink-3)}
.hm-ptag-pv.on{color:var(--c-action)}
.hm-ptag-verify .wb-ico,.hm-ptag-pv .wb-ico{width:14px;height:14px;display:block}
.hm-pr-pub{font-size:13px}
.hm-stale{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--warn);
  padding:6px 2px}
/* 发布预览模态框（取代行内展开预览）：适配快照就地编辑（标题/正文/话题）+
   绑定账号昵称（用户明确「用哪个账号发到哪个平台」，账号操作就近放名称后）+ 平台动作行 */
.modal.hm-pvmodal{padding:18px}
/* 三段式：标题行固定 → 内容区独立滚动 → 底部动作条固定
   （正文再长也不用滚到底找发布按钮，按钮始终在浮出框底部可见） */
.box.hm-pvbox{width:min(640px,94vw);max-height:86vh;overflow:hidden;padding:16px 18px;
  display:flex;flex-direction:column;gap:12px}
.hm-pvm-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  display:flex;flex-direction:column;gap:10px;padding-right:2px}
.hm-pvm-h{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.hm-pvm-h b{font-size:15px;font-weight:500;color:var(--ink)}
.hm-pvm-engine{font-size:11px}
.hm-pvm-x{margin-left:auto;border:0;background:transparent;font-size:18px;line-height:1;
  color:var(--ink-3);cursor:pointer;padding:2px 6px}
.hm-pvm-acc{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2)}
.hm-pvm-acc b{color:var(--ink);font-weight:500}
/* 账号操作按钮：图文结合（极简扁平线框 SVG 图标 + 文字），就近放在账号名称之后 */
.hm-pvm-accbtn{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;
  padding:2px 0;font-family:inherit;font-size:13px;color:var(--c-action);cursor:pointer}
.hm-pvm-accbtn:hover{text-decoration:underline}
.hm-pvm-accbtn .wb-ico{width:14px;height:14px;display:block}
.hm-pvm-issue{font-size:12px;color:var(--warn)}
.hm-pvm-issue:empty{display:none}
.hm-pvm-fields{display:flex;flex-direction:column;gap:8px}
/* 单滚动条（FR-050）：正文/标题按内容完整展开、自身不滚也不可拖拽改高，
   整框只保留内容区（.hm-pvm-body）这一根滚动条——不再出现两根并排的滚动条 */
.hm-pvm-body textarea{resize:none;overflow-y:hidden}
/* 最后一格（标签行）不再画底部横线：它正下方就是 .hm-pv-bottom 的 border-top，
   也就是发布按钮上方那条分割线，两条贴在一起会看成重复的分割线（聚焦态同样不画，
   光标与选中态已足够指示焦点） */
.hm-pvm-fields > :last-child,
.hm-pvm-fields > :last-child:focus{border-bottom:0}
.hm-pv-media{display:flex;flex-wrap:wrap;gap:6px}
.hm-pv-thumb{width:56px;height:56px;object-fit:cover;border-radius:8px;background:var(--surface-2)}
/* 底部固定条：异常原因 + 动作按钮（有内容才显示分割线，空态整条隐藏） */
.hm-pv-bottom{flex:0 0 auto;display:flex;flex-direction:column;gap:8px;
  border-top:1px solid var(--line);padding-top:10px}
.hm-pv-bottom[hidden]{display:none}
.hm-pv-acts{display:flex;align-items:center;gap:10px}
.hm-pv-acts:empty{display:none}
/* 主操作 = 黑底白字按钮（固定在底部，内容超一屏也一眼可见、一步点到） */
.hm-pv-acts .pri{margin-left:auto;background:var(--ink);border-color:var(--ink);
  color:#fff;font-weight:500}
.hm-pv-acts .pri:hover{background:#333;border-color:#333}
.hm-pv-btn{border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);
  padding:8px 18px;font-family:inherit;font-size:13px;color:var(--ink);cursor:pointer;
  transition:background var(--t-fast),border-color var(--t-fast),transform var(--t-fast)}
.hm-pv-btn:hover{background:var(--surface-2)}
.hm-pv-btn:active{transform:scale(.98)}

/* ═══ 全站动态点缀（2026-11-08）═══════════════════════════════════
   目标：在不改动布局与信息层级的前提下，给每个页面、浮出框一点「活气」。
   原则：只给可交互 / 可点击处加反馈；幅度小（≤3px、≤1.12 倍）、时长短（≈.3s）；
   暖橙 #F15A24 与首页输入框流光同源，作为全站唯一点缀色（不做大面积铺色）。
   系统「减弱动效」时由已有的全局规则统一关闭。 */

/* 切页入场：内容区轻微上浮淡入（媒体工作台全屏编辑不参与，避免干扰画布定位） */
#view.wb-view-in{animation:wb-view-in .36s cubic-bezier(.22,.8,.3,1)}
@keyframes wb-view-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* 页头：标题与随机小尾巴换页时轻弹；标题后的暖橙小点缓慢呼吸，
   像这台机器的心跳，也让一眼扫过时知道「页面是活的」 */
#topbar .tt.wb-tt-pop h1{animation:wb-tt-in .4s cubic-bezier(.22,.8,.3,1)}
#topbar .tt.wb-tt-pop .sub{animation:wb-sub-in .46s .04s both cubic-bezier(.22,.8,.3,1)}
@keyframes wb-tt-in{from{opacity:.35;transform:translateY(5px)}to{opacity:1;transform:none}}
@keyframes wb-sub-in{from{opacity:0;transform:translateX(-5px)}to{opacity:1;transform:none}}
#topbar h1::after{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;
  margin-left:7px;vertical-align:3px;background:#F15A24;
  animation:wb-heartbeat 3.4s ease-in-out infinite}
@keyframes wb-heartbeat{0%,100%{opacity:.3;transform:scale(.75)}50%{opacity:1;transform:scale(1.1)}}

/* 按钮 / 链接：悬停轻抬，图标轻轻歪头；关闭 × 悬停转 90° */
button.btn:not(:disabled):hover,a.btn:hover{transform:translateY(-1px)}
button.btn:not(:disabled):active,a.btn:active{transform:translateY(0) scale(.97)}
.wb-ico{transition:transform var(--t-fast),opacity var(--t-fast)}
button:hover>.wb-ico,a:hover>.wb-ico{transform:rotate(-6deg) scale(1.08)}
.dr-x,.hm-pvm-x{transition:transform var(--t-fast),color var(--t-fast)}
.dr-x:hover,.hm-pvm-x:hover{transform:rotate(90deg)}

/* 侧栏品牌：logo 悬停轻点头，口号由灰转墨 */
.brand-logo{transition:transform var(--t-med),filter var(--t-med)}
.brand:hover .brand-logo{transform:translateY(-1px) rotate(-1.4deg)}
.brand small{transition:color var(--t-med)}
.brand:hover small{color:var(--ink)}

/* 侧栏导航：选中项左侧小竖条弹入（仅桌面侧栏；窄屏与移动端另有底部 Tab） */
.nav button{position:relative}
@media(min-width:1025px){
  .nav button.on::before{content:'';position:absolute;left:1px;top:50%;width:3px;height:15px;
    margin-top:-7.5px;border-radius:2px;background:var(--ink);
    animation:wb-nav-bar .28s cubic-bezier(.34,1.56,.64,1)}
}
@keyframes wb-nav-bar{from{transform:scaleY(.2);opacity:0}to{transform:none;opacity:1}}

/* 移动端底部 Tab：选中图标轻弹一下 */
@media(max-width:720px){
  .mtab button.on .ic{animation:wb-tab-bounce .44s cubic-bezier(.34,1.56,.64,1)}
}
@keyframes wb-tab-bounce{0%{transform:translateY(0)}35%{transform:translateY(-3px)}
  70%{transform:translateY(1px)}100%{transform:translateY(0)}}

/* 标签页：选中项淡入，撰写页选中下划线从左侧长出 */
.tabs button.on{animation:wb-tab-in .26s ease}
.cp-tabs button.on::after{animation:wb-underline .26s cubic-bezier(.34,1.56,.64,1)}
@keyframes wb-tab-in{from{opacity:.45;transform:translateY(1px)}to{opacity:1;transform:none}}
@keyframes wb-underline{from{width:0}to{width:22px}}

/* 可点击卡片悬停轻抬；雷达热点行悬停轻移、平台模块浮起一层很浅的影 */
.kb-card{transition:border-color var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast)}
.kb-card:hover,.kb-card:focus-visible{transform:translateY(-2px);box-shadow:var(--sh-1)}
.rd-item{transition:transform var(--t-fast)}
.rd-item:hover{transform:translateX(3px)}
#radar-pane .rd-mod{transition:box-shadow var(--t-fast)}
#radar-pane .rd-mod:hover{box-shadow:0 10px 26px -20px rgba(26,26,26,.35)}

/* 分数条：出现时从左往右长出来（比直接出现更像「量出来的」） */
.bar i{transform-origin:left center;animation:wb-bar-grow .62s cubic-bezier(.22,.8,.3,1)}
@keyframes wb-bar-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* 数据卡：悬停轻抬；指标图标跟着点一下头 */
.stat{transition:transform var(--t-fast),box-shadow var(--t-fast)}
#mon-pane .stat-grid .stat:hover{transform:translateY(-2px);box-shadow:var(--sh-1)}
.mon-metric-item:hover .wb-ico{transform:scale(1.12)}

/* 撰写页右上角线稿装饰：缓慢浮动，像在呼吸 */
.cp-decor{animation:wb-decor-float 7s ease-in-out infinite}
@keyframes wb-decor-float{0%,100%{transform:translateY(0) rotate(0)}
  50%{transform:translateY(-5px) rotate(1deg)}}

/* 首页素材区：上传「＋」悬停转一下，缩略图悬停轻放大 */
.hm-add-plus{transition:transform var(--t-med)}
.hm-add:hover .hm-add-plus{transform:rotate(90deg) scale(1.12)}
.hm-thumb img{transition:transform var(--t-med)}
.hm-thumb:hover img{transform:scale(1.06)}

/* 浮出框 / 抽屉：标题前的暖橙小点与页头心跳呼应，让弹窗也有「人味」 */
.cfm-t{position:relative;padding-left:14px}
.cfm-t::before{content:'';position:absolute;left:0;top:50%;width:6px;height:6px;margin-top:-3px;
  border-radius:50%;background:#F15A24;animation:wb-heartbeat 3.4s ease-in-out infinite}
.dr-h b{position:relative;padding-left:13px}
.dr-h b::before{content:'';position:absolute;left:0;top:50%;width:5px;height:5px;margin-top:-2.5px;
  border-radius:50%;background:#F15A24;animation:wb-heartbeat 3.4s ease-in-out infinite}

/* ═══════════ 009 登录判断：预览徽章 / 独占焦点登录框 / 预览页壳 ═══════════
   与全站黑灰扁平同源：只有墨色、灰阶与一条分割线；登录框是唯一样式特例
   （全屏遮罩 + 居中白卡），因为它是「独占焦点」的那一个。 */
/* 右上角一组：懒人模式 → 预览模式 → 登录（未登录）/ 懒人模式 → 退出（已登录），
   间隔统一 10px；三个胶囊高度统一 26px（border-box，含描边） */
#topbar .tb-auth{display:flex;align-items:center;gap:10px;margin-left:-2px}
  /* -2 + topbar 的 gap 12 = 与懒人模式间隔 10px */
#topbar .tb-auth+.right{margin-left:10px}
.tb-preview{font-size:12px;line-height:1;color:var(--ink-2);background:var(--surface-2);
  border-radius:var(--r-pill);height:26px;padding:0 10px;display:inline-flex;
  align-items:center;white-space:nowrap}
/* 懒人模式（010）：排在右上角最前（登录前在「预览模式」之前，登录后在「退出」之前），
   暖橙底 + 呼吸星点，比预览徽章显眼但不抢主操作；悬停 / 聚焦浮出 BigBang 入口 */
.tb-lazy{position:relative;display:flex;align-items:center;margin-left:auto}
.tb-lazy-tag{display:inline-flex;align-items:center;gap:5px;cursor:pointer;outline:none;
  color:var(--ink);background:#FFF3ED;border:1px solid #FBD9C9}
.tb-lazy-tag:hover{background:#FFE9DE;border-color:#F6C4AC}
.tb-lazy-tag:focus-visible{box-shadow:0 0 0 3px rgba(241,90,36,.16)}
.tb-lazy-ico{width:13px;height:13px;flex:0 0 auto;color:#F15A24;
  animation:tb-lazy-spark 2.2s ease-in-out infinite}
.tb-lazy-ico path{fill:currentColor}
@keyframes tb-lazy-spark{0%,100%{transform:scale(.72);opacity:.5}
  50%{transform:scale(1.1);opacity:1}}
.tb-lazy-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:60;
  width:max-content;max-width:300px;padding:9px 12px;  /* 一句读完不折行 */
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);
  box-shadow:0 6px 20px rgba(26,26,26,.08);
  font-size:12px;line-height:1.6;color:var(--ink-2);
  opacity:0;visibility:hidden;transform:translateY(-2px);
  transition:opacity .14s ease,transform .14s ease,visibility .14s}
.tb-lazy-pop p{margin:0}
.tb-lazy-pop a{color:var(--ink);text-decoration:underline;text-underline-offset:2px;
  white-space:nowrap}
.tb-lazy-pop a:hover,.tb-lazy-pop a:focus-visible{text-decoration-thickness:2px}
.tb-lazy:hover .tb-lazy-pop,.tb-lazy:focus-within .tb-lazy-pop{
  opacity:1;visibility:visible;transform:none}
@media (prefers-reduced-motion: reduce){
  .tb-lazy-pop{transition:none}
  .tb-lazy-ico{animation:none;opacity:1;transform:none}
}
.tb-login{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:13px;
  line-height:1;height:26px;color:var(--ink);background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-pill);padding:0 12px;cursor:pointer}
.tb-login:hover{border-color:var(--ink)}
.tb-login .wb-ico{color:var(--ink-2)}
/* 登录后顶栏只留「退出」（账号名 / 角色常驻侧边栏底部，不再重复摆一遍） */
.tb-logout{color:var(--ink-2)}
.tb-logout:hover{color:var(--ink)}
#foot-user .fu-role{margin-left:auto;font-size:11px;font-weight:400;color:var(--ink-3)}

/* 遮罩 + 白卡：独占焦点，背后内容 inert */
.auth-mask{position:fixed;inset:0;z-index:1000;background:rgba(14,16,22,.5);
  display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden;
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:auth-mask-in .16s ease-out}
@keyframes auth-mask-in{from{opacity:0}to{opacity:1}}
/* 登录框的动态点缀：网格 / 光球 / 扫光 / 星点。纯装饰层，不参与内容与交互 */
.auth-fx{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.auth-fx i{position:absolute;display:block;pointer-events:none}
.auth-grid{inset:-70px;background-image:
    linear-gradient(rgba(126,160,255,.18) 1px,transparent 1px),
    linear-gradient(90deg,rgba(126,160,255,.18) 1px,transparent 1px);
  background-size:34px 34px;
  -webkit-mask-image:radial-gradient(circle at 50% 46%,#000 0,transparent 68%);
  mask-image:radial-gradient(circle at 50% 46%,#000 0,transparent 68%);
  animation:auth-grid-drift 16s linear infinite}
@keyframes auth-grid-drift{to{transform:translate3d(34px,34px,0)}}
.auth-orb{width:300px;height:300px;border-radius:50%;filter:blur(46px);opacity:.55}
.auth-orb.a{left:-80px;top:4%;background:radial-gradient(circle,#F15A24 0,transparent 68%);
  animation:auth-orb-a 12s ease-in-out infinite}
.auth-orb.b{right:-90px;top:14%;background:radial-gradient(circle,#4F7BFF 0,transparent 68%);
  animation:auth-orb-b 15s ease-in-out infinite}
.auth-orb.c{left:34%;bottom:-120px;background:radial-gradient(circle,#2F6B46 0,transparent 68%);
  animation:auth-orb-c 18s ease-in-out infinite}
@keyframes auth-orb-a{0%,100%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(30px,-22px,0) scale(1.1)}}
@keyframes auth-orb-b{0%,100%{transform:translate3d(0,0,0) scale(1.06)}
  50%{transform:translate3d(-26px,26px,0) scale(.94)}}
@keyframes auth-orb-c{0%,100%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(-20px,-26px,0) scale(1.12)}}
.auth-scan{left:-30%;top:0;width:24%;height:100%;transform:skewX(-12deg);
  background:linear-gradient(100deg,transparent,rgba(126,160,255,.16),transparent);
  animation:auth-scan 9s ease-in-out infinite}
@keyframes auth-scan{0%{left:-30%;opacity:0}12%{opacity:1}
  55%{left:110%;opacity:.9}68%,100%{left:110%;opacity:0}}
/* 卡片外圈的雷达环：一圈虚线慢转 + 一圈光晕呼吸 */
.auth-ring{left:50%;top:50%;width:min(560px,86vw);height:min(560px,86vw);
  transform:translate(-50%,-50%);border-radius:50%;
  border:1px dashed rgba(126,160,255,.38);animation:auth-ring-spin 40s linear infinite}
.auth-ring.r2{width:min(660px,96vw);height:min(660px,96vw);border-style:solid;
  border-color:rgba(241,90,36,.16);animation:auth-ring-pulse 6s ease-in-out infinite}
@keyframes auth-ring-spin{to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes auth-ring-pulse{0%,100%{opacity:.35;transform:translate(-50%,-50%) scale(1)}
  50%{opacity:.85;transform:translate(-50%,-50%) scale(1.04)}}
.auth-spark{width:6px;height:6px;border-radius:50%;background:#FF9A62;opacity:0;
  box-shadow:0 0 14px 2px rgba(241,90,36,.65);animation:auth-spark 5.2s ease-in-out infinite}
.auth-spark.s1{left:16%;top:24%;animation-delay:.3s}
.auth-spark.s2{right:17%;top:62%;animation-delay:1.5s;background:#9DB7FF;
  box-shadow:0 0 14px 2px rgba(79,123,255,.7)}
.auth-spark.s3{right:24%;top:20%;animation-delay:2.8s}
.auth-spark.s4{left:22%;bottom:16%;animation-delay:4s;background:#9DB7FF;
  box-shadow:0 0 14px 2px rgba(79,123,255,.7)}
@keyframes auth-spark{0%,100%{opacity:0;transform:translateY(8px) scale(.5)}
  35%{opacity:1;transform:translateY(0) scale(1)}
  60%{opacity:.2;transform:translateY(-6px) scale(.8)}}
.auth-modal{position:relative;z-index:1;width:min(420px,100%);box-sizing:border-box;background:var(--surface);
  border-radius:var(--r-md);padding:26px 26px 22px;box-shadow:0 18px 50px rgba(0,0,0,.18);
  animation:auth-box-in .2s cubic-bezier(.2,.8,.3,1),auth-glow 5s ease-in-out .2s infinite}
@keyframes auth-box-in{from{opacity:0;transform:translateY(8px) scale(.985)}
  to{opacity:1;transform:none}}
@keyframes auth-glow{0%,100%{box-shadow:0 18px 50px rgba(0,0,0,.18)}
  50%{box-shadow:0 18px 50px rgba(0,0,0,.18),0 0 30px 2px rgba(241,90,36,.16),
    0 0 12px rgba(79,123,255,.18)}}
/* 卡片顶沿一条缓慢流动的光带（两端用 mask 渐变没入背景，避免硬切边） */
.auth-modal::before{content:'';position:absolute;left:24px;right:24px;top:0;height:2px;
  border-radius:2px;pointer-events:none;opacity:.85;background-size:220% 100%;
  background-image:linear-gradient(90deg,transparent,#F15A24,#4F7BFF,#2F6B46,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 24%,#000 76%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0,#000 24%,#000 76%,transparent 100%);
  animation:auth-topline 5s linear infinite}
@keyframes auth-topline{from{background-position:120% 0}to{background-position:-120% 0}}
.auth-modal:focus{outline:none}
.auth-x{position:absolute;top:10px;right:12px;width:28px;height:28px;border:0;background:none;
  color:var(--ink-3);font-size:15px;line-height:1;cursor:pointer;border-radius:50%}
.auth-x:hover{background:var(--surface-2);color:var(--ink)}
.auth-title{margin:0;font-size:17px;font-weight:600;color:var(--ink);letter-spacing:.2px}
/* 标题前的呼吸光点：像刚连上线 */
.auth-title::before{content:'';display:inline-block;width:7px;height:7px;margin-right:9px;
  border-radius:50%;background:#F15A24;vertical-align:2px;pointer-events:none;
  animation:auth-live 2.4s ease-out infinite}
@keyframes auth-live{0%{box-shadow:0 0 0 0 rgba(241,90,36,.5)}
  70%{box-shadow:0 0 0 8px rgba(241,90,36,0)}100%{box-shadow:0 0 0 0 rgba(241,90,36,0)}}
.auth-desc{margin-top:8px;font-size:13px;color:var(--ink-2);line-height:1.6}
.auth-form{margin-top:18px;display:flex;flex-direction:column;gap:12px}
.auth-field{display:flex;flex-direction:column;gap:6px}
.auth-lb{font-size:12px;color:var(--ink-2)}
.auth-field input{width:100%;box-sizing:border-box;font:inherit;font-size:14px;color:var(--ink);
  background:var(--surface-2);border:1px solid transparent;border-radius:var(--r-field);
  padding:10px 12px;outline:none}
.auth-field input:focus{background:var(--surface);border-color:var(--ink)}
.auth-err{display:none;font-size:12px;color:var(--err);line-height:1.5}
.auth-err.on{display:block}
.auth-submit{width:100%;margin-top:2px;min-height:40px}
.auth-submit:disabled{opacity:.55;cursor:not-allowed}
.auth-foot{margin-top:14px;font-size:12px;color:var(--ink-3);line-height:1.6}
body.auth-lock{overflow:hidden}

/* 登录后续做：写入类动作只高亮原按钮，不代替用户执行 */
.auth-flash{animation:auth-flash 1.1s ease-in-out 2;outline:2px solid var(--ink);outline-offset:2px}
@keyframes auth-flash{0%,100%{box-shadow:0 0 0 0 rgba(26,26,26,0)}
  50%{box-shadow:0 0 0 6px rgba(26,26,26,.12)}}

/* 预览页壳：页面说明 + 里面有什么 + 登录入口，一个真实数据都不渲染 */
.pv-page{max-width:720px}
.pv-head{display:flex;flex-direction:column;gap:8px}
.pv-badge{align-self:flex-start;font-size:11px;color:var(--ink-2);
  border:1px solid var(--line);border-radius:var(--r-pill);padding:2px 9px}
.pv-t{margin:0;font-size:22px;font-weight:600;color:var(--ink)}
.pv-lead{margin:0;font-size:14px;color:var(--ink-2);line-height:1.7}
.pv-list{margin:20px 0 0;padding:0;list-style:none;border-top:1px solid var(--ink)}
.pv-list li{padding:12px 2px;border-bottom:1px solid var(--line);font-size:14px;
  color:var(--ink);display:flex;gap:10px;line-height:1.6}
.pv-list li::before{content:'—';color:var(--ink-3);flex:0 0 auto}
/* 登录入口左对齐：按钮与上方标题、说明、清单共用同一条左基线（未登录内容区整体左对齐） */
.pv-foot{margin-top:24px;display:flex;align-items:center;gap:10px;text-align:left}
.pv-foot .btn{display:inline-flex;align-items:center;gap:6px}

/* 个人中心（009 T100–T103）：改密表单 / 安全记录 / 成员账号列表。
   与配置页同一套黑灰分割线，只多这几行布局。 */
.acct-form{display:flex;flex-direction:column;gap:10px;max-width:340px}
.acct-form label{display:flex;flex-direction:column;gap:6px}
.acct-form input{width:100%;box-sizing:border-box;font:inherit;font-size:14px;color:var(--ink);
  background:var(--surface-2);border:1px solid transparent;border-radius:var(--r-field);
  padding:9px 12px;outline:none}
.acct-form input:focus{background:var(--surface);border-color:var(--ink)}
.acct-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.acct-log{display:flex;flex-direction:column}
.acct-logrow{display:grid;grid-template-columns:126px 92px 56px 1fr;gap:10px;
  align-items:baseline;padding:9px 2px;border-bottom:1px solid var(--line);font-size:13px}
.acct-logrow .t{color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.acct-logrow .d{color:var(--ink-3);font-size:12px}
.acct-users{display:flex;flex-direction:column}
.acct-urow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:12px 2px;border-bottom:1px solid var(--line)}
.acct-urow .who{display:flex;flex-direction:column;gap:3px;flex:1 1 190px;min-width:160px}
.acct-urow .nm{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--ink)}
.acct-urow .sub{font-size:12px;color:var(--ink-3);line-height:1.6}
.acct-urow .use{flex:0 1 250px;font-size:12px;color:var(--ink-2);line-height:1.7}
.acct-urow .acts{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-left:auto}
.acct-urow.is-off .nm,.acct-urow.is-off .use{color:var(--ink-3)}
.acct-temp{margin:12px 0 0;padding:12px 14px;background:var(--surface-2);
  border-radius:var(--r-field);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:15px;letter-spacing:.6px;color:var(--ink);word-break:break-all}

@media(max-width:720px){
  /* 移动端：登录框整屏，像原生登录页（键盘弹起也不挤） */
  .auth-mask{align-items:stretch;padding:0}
  .auth-modal{width:100%;max-width:none;border-radius:0;min-height:100%;
    display:flex;flex-direction:column;justify-content:center;padding:28px 20px}
  #topbar .tb-preview{display:none}
  /* 懒人模式在窄屏也保留：点一下标签聚焦即浮出（触摸没有 hover） */
  #topbar .tb-lazy .tb-preview{display:inline-flex}
  /* 窄屏浮出卡改贴顶栏右边缘：宽度随视口收，右对齐标签也不越出左边界 */
  #topbar{position:relative}
  .tb-lazy{position:static}
  .tb-lazy-pop{right:12px;top:calc(100% - 3px);max-width:calc(100vw - 24px)}
  .pv-page{padding-bottom:24px}
  /* 个人中心：窄屏把日志四列压成两行、成员行纵向排列 */
  .acct-logrow{grid-template-columns:1fr auto;gap:4px 10px}
  .acct-logrow .t{grid-column:1/-1}
  .acct-urow .use{flex:1 1 100%}
  .acct-urow .acts{margin-left:0}
}
@media (prefers-reduced-motion: reduce){
  .auth-mask,.auth-modal,.auth-flash{animation:none}
  .auth-fx i,.auth-title::before,.auth-modal::before{animation:none}
}
