


*{box-sizing:border-box;margin:0}
body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased}
button{font-family:inherit}
:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px;border-radius:6px}
/* ── 登录 ── */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;padding:var(--s5)}
.aurora{position:absolute;inset:-30% -20% auto;height:70vh;background:
 radial-gradient(46% 46% at 30% 40%,color-mix(in srgb, var(--post) 30%, transparent),transparent 70%),
 radial-gradient(40% 40% at 70% 30%,color-mix(in srgb, var(--accent2) 28%, transparent),transparent 70%),
 radial-gradient(36% 36% at 50% 75%,color-mix(in srgb, var(--ok) 14%, transparent),transparent 70%);
 animation:drift 18s ease-in-out infinite alternate;pointer-events:none}
@keyframes drift{from{transform:translate3d(-3%,0,0) scale(1)}to{transform:translate3d(3%,-2%,0) scale(1.07)}}
@media (prefers-reduced-motion:reduce){.aurora{animation:none}}
.login-card{position:relative;width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);padding:var(--s6) var(--s6);text-align:center}
.login-card .logo{width:52px;height:52px;border-radius:14px;margin:0 auto var(--s4);display:block}
.login-card h1{font-size:var(--fs-lg);font-weight:800;letter-spacing:-.02em}
.login-card p.sub{color:var(--ink2);font-size:var(--fs-sm);margin:var(--s2) 0 var(--s5)}
.login-card input{width:100%;padding:var(--s3) var(--s4);border-radius:12px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:var(--fs-sm);outline:0}
.login-card input:focus{border-color:var(--accent)}
.login-card .go{width:100%;margin-top:var(--s4);padding:var(--s3);border-radius:12px;border:0;background:var(--accent-solid,var(--accent));color:var(--on-accent);font-size:var(--fs-sm);font-weight:650;cursor:pointer;transition:filter .15s}
.login-card .go:hover{filter:brightness(1.08)}
.login-card .err{color:var(--err-ink);font-size:var(--fs-xs);margin-top:var(--s3);min-height:18px}
.mode-chip{display:inline-flex;align-items:center;gap:var(--s2);margin-top:var(--s4);font-size:var(--fs-xs);color:var(--ink2);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:var(--s1) var(--s3)}
.mode-chip .dot{width:7px;height:7px;border-radius:50%;background:var(--warn)}
/* ── 应用骨架 ── */
.shell{display:none;min-height:100vh}
.shell.on{display:grid;grid-template-columns:220px 1fr}
.side-head{display:flex;align-items:center;gap:var(--s2);padding:var(--s4) var(--s3) var(--s3);border-bottom:1px solid var(--line);flex-shrink:0}
.side-head .brand{flex:1;display:flex;align-items:center;gap:var(--s2);font-size:var(--fs-sm);min-width:0;letter-spacing:-.01em}
.side-head .brand img{width:26px;height:26px;border-radius:8px;flex-shrink:0}
.side-head .brand b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:750}
.side-foot{flex-shrink:0;margin-top:auto;padding:var(--s3);border-top:1px solid var(--line);display:flex;flex-direction:column;gap:var(--s2)}
.side-links{display:flex;flex-direction:column;gap:var(--s1)}
.side-links a{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);border-radius:9px;color:var(--ink2);font-size:var(--fs-xs);font-weight:550;text-decoration:none;transition:all .15s;white-space:nowrap}
.side-links a:hover{background:var(--bg);color:var(--accent)}
.side-foot .pill{align-self:flex-start;margin:var(--s1) 0 var(--s1) var(--s3)}
.side-logout{display:flex;align-items:center;gap:var(--s2);width:100%;padding:var(--s2) var(--s3);border-radius:9px;border:0;background:transparent;color:var(--ink2);font-size:var(--fs-xs);font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s;white-space:nowrap}
.side-logout:hover{background:color-mix(in srgb, var(--err) 10%, transparent);color:var(--err-ink)}
.pill{font-size:var(--fs-xs);font-weight:700;padding:var(--s1) var(--s2);border-radius:999px;background:color-mix(in srgb, var(--warn) 15%, transparent);color:var(--warn-ink);border:1px solid color-mix(in srgb, var(--warn) 30%, transparent)}
.pill.live{background:color-mix(in srgb, var(--ok) 13%, transparent);color:var(--ok-ink);border-color:color-mix(in srgb, var(--ok) 30%, transparent)}
.sidebar{border-right:1px solid var(--line);background:var(--card);display:flex;flex-direction:column;align-self:start;position:sticky;top:0;height:100vh;height:100dvh;overflow:hidden} /* P54·U7：侧栏视口固定 —— 主列滚动时导航不动（滚动位置保持的前提） */
#navroot{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--s3) var(--s3) var(--s4)}
.sidebar button[data-tab]{display:flex;align-items:center;gap:var(--s2);width:100%;text-align:left;padding:var(--s2) var(--s3);border-radius:10px;border:0;background:transparent;color:var(--ink2);font-size:var(--fs-sm);font-weight:550;cursor:pointer;white-space:nowrap;transition:all .15s}
.sidebar button[data-tab]:hover{background:var(--bg);color:var(--ink)}
.sidebar button[data-tab].on{background:var(--accent-solid,var(--accent));color:var(--on-accent)}
.nav-group{margin-top:var(--s3)}
.nav-glabel{display:flex;align-items:center;gap:var(--s2);width:100%;padding:var(--s1) var(--s3);border:0;background:transparent;cursor:pointer;color:var(--ink2);font-size:var(--fs-xs);font-weight:700;letter-spacing:.09em;font-family:inherit}
.nav-glabel i{font-style:normal;font-size:var(--fs-xs);letter-spacing:.05em}
.nav-glabel .chev{margin-left:auto;font-size:var(--fs-xs);transition:transform .18s}
.nav-glabel[aria-expanded="false"] .chev{transform:rotate(-90deg)}
.nav-glabel:hover{color:var(--ink)}
.nav-gitems[hidden]{display:none}
.nav-div{font-size:var(--fs-xs);font-weight:700;letter-spacing:.1em;color:var(--ink2);text-transform:uppercase;padding:var(--s4) var(--s3) var(--s1);white-space:nowrap}
a.nav-ext{display:flex;align-items:center;gap:var(--s2);width:100%;padding:var(--s2) var(--s3);border-radius:10px;color:var(--ink2);font-size:var(--fs-sm);font-weight:550;text-decoration:none;white-space:nowrap;transition:all .15s}
a.nav-ext:hover{background:var(--bg);color:var(--accent)}
.side-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;flex-shrink:0}
.side-btn svg{transition:transform .2s}
/* 桌面：折叠为图标栏（对齐 billing data-side=collapsed 范式） */
@media (min-width:861px){
 body[data-side=collapsed] .shell.on{grid-template-columns:60px 1fr}
 body[data-side=collapsed] .sidebar{padding:var(--s3) var(--s2)}
 body[data-side=collapsed] .nav-glabel{display:none}
 body[data-side=collapsed] .nav-group{margin-top:var(--s1);padding-top:var(--s2);border-top:1px solid var(--line)}
 body[data-side=collapsed] .nav-group:first-of-type{border-top:0;padding-top:var(--s1)}
 body[data-side=collapsed] .sidebar button[data-tab]{justify-content:center;padding:0;gap:0;height:44px;margin:var(--s1) 0}
 body[data-side=collapsed] .sidebar button[data-tab] .lb{display:none}
 body[data-side=collapsed] .sidebar button[data-tab] .ic{font-size:var(--fs-md);line-height:1}
 body[data-side=collapsed] .nav-div,body[data-side=collapsed] a.nav-ext{display:none}
 body[data-side=collapsed] .side-btn svg{transform:rotate(180deg)}
 body[data-side=collapsed] .side-head{justify-content:center;padding:var(--s3) var(--s1)}
 body[data-side=collapsed] .side-head .brand{display:none}
 body[data-side=collapsed] .side-foot{padding:var(--s2) var(--s1);align-items:center}
 body[data-side=collapsed] .side-links a span,body[data-side=collapsed] .side-logout span,body[data-side=collapsed] .side-foot .pill{display:none}
 body[data-side=collapsed] .side-links a,body[data-side=collapsed] .side-logout{justify-content:center;padding:var(--s2) 0}
}
/* 移动：off-canvas 抽屉 + 遮罩 + 浮动按钮（对齐 billing member drawer） */
.nav-float{display:none}
.scrim{display:none}
@media (max-width:860px){
 .shell.on{grid-template-columns:1fr}
 .sidebar{position:fixed;inset:0 auto 0 0;width:min(270px,84vw);z-index:1200;transform:translateX(-101%);visibility:hidden;transition:transform .22s ease,visibility .22s;display:flex;flex-direction:column;box-shadow:0 0 60px var(--scrim);min-height:0;height:100dvh}
 body[data-drawer="open"] .sidebar{transform:none;visibility:visible}
 body[data-drawer="open"]{overflow:hidden}
 body[data-drawer="open"] .scrim{display:block;position:fixed;inset:0;z-index:1190;background:color-mix(in srgb, var(--shade-base) 45%, transparent)}
 .nav-float{display:inline-flex;position:fixed;left:14px;bottom:18px;z-index:1100;width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:var(--fs-md);align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow)}
 body[data-drawer="open"] .nav-float{visibility:hidden}
}
.main{padding:var(--s6) var(--s6) var(--s7);overflow-x:hidden;min-width:0}
.main.flush{padding:var(--s3) var(--s4) var(--s4)}
.radar-card{display:flex;flex-direction:column;height:calc(100dvh - 26px);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--bg);box-shadow:var(--shadow)}
.radar-card iframe{flex:1;width:100%;border:0;min-height:0}
.radar-bar{flex-shrink:0;display:flex;align-items:center;gap:var(--s3);padding:var(--s2) var(--s3);border-top:1px solid var(--line);background:var(--card)}
.rb-meta{font-size:var(--fs-xs);color:var(--ink2);display:flex;align-items:center;gap:var(--s1);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rb-meta i{font-style:normal;cursor:help;border-bottom:1px dotted var(--ink2)}
.rb-acts{margin-left:auto;display:flex;gap:var(--s2);flex-shrink:0}
@media (max-width:640px){.main.flush{padding:var(--s2)}.radar-card{height:calc(100dvh - var(--s4));border-radius:12px}.rb-meta i{display:none}}
@media (max-width:640px){.main{padding:var(--s5) var(--s4) var(--s7)}}
.main h2{font-size:var(--fs-lg);font-weight:800;letter-spacing:-.015em;margin-bottom:var(--s1)}
.main .desc{color:var(--ink2);font-size:var(--fs-sm);margin-bottom:var(--s4)}
/* ── 组件 ── */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--s3);margin-bottom:var(--s5)}
.scard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4) var(--s4)}
.scard .n{font-size:var(--fs-xl);font-weight:800;letter-spacing:-.02em}
.scard .l{font-size:var(--fs-xs);color:var(--ink2);margin-top:var(--s1)}
.scard.todo{border-color:color-mix(in srgb,var(--warn) 45%,transparent);background:color-mix(in srgb,var(--warn) 6%,var(--card))}
.scard[data-go]:hover{border-color:var(--accent)}
.toolbar{display:flex;gap:var(--s2);flex-wrap:wrap;margin-bottom:var(--s4);align-items:center}
.toolbar input[type=text],.toolbar select{padding:var(--s2) var(--s3);border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:var(--fs-sm);outline:0}
.toolbar input[type=text]{min-width:180px}
.toolbar input:focus,.toolbar select:focus{border-color:var(--accent)}
.btn{padding:var(--s2) var(--s4);border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.primary{background:var(--accent-solid,var(--accent));border-color:var(--accent-solid,var(--accent));color:var(--on-accent)}
.btn.primary:hover{filter:brightness(1.08);color:var(--on-accent)}
.btn.danger:hover{border-color:var(--err);color:var(--err-ink)}
.btn.sm{padding:var(--s1) var(--s3);font-size:var(--fs-xs);border-radius:8px}
.tbl-wrap{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:var(--fs-sm);min-width:640px}
table.tbl th{text-align:left;padding:var(--s3) var(--s4);color:var(--ink2);font-size:var(--fs-xs);font-weight:650;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line);white-space:nowrap}
table.tbl td{padding:var(--s3) var(--s4);border-bottom:1px solid var(--line);vertical-align:middle}
table.tbl tr:last-child td{border-bottom:0}
table.tbl tr:hover td{background:color-mix(in srgb, var(--accent) 3%, transparent)}
.chip{display:inline-block;font-size:var(--fs-xs);font-weight:650;padding:var(--s1) var(--s2);border-radius:999px}
.chip.pub{background:color-mix(in srgb, var(--ok) 14%, transparent);color:var(--ok-ink)}
.chip.draft{background:color-mix(in srgb, var(--warn) 14%, transparent);color:var(--warn-ink)}
.chip.arch{background:color-mix(in srgb, var(--ink2) 14%, transparent);color:var(--ink)}
.chip.on{background:color-mix(in srgb, var(--ok) 14%, transparent);color:var(--ok-ink)}
.chip.off{background:color-mix(in srgb, var(--err) 12%, transparent);color:var(--err-ink)}
.mono{font-family:var(--mono);font-size:var(--fs-xs)}
.star{color:var(--warn-ink)}
.pager{display:flex;gap:var(--s2);align-items:center;margin-top:var(--s3);font-size:var(--fs-xs);color:var(--ink2)}
/* ── 模态 ── */
.modal-bg{position:fixed;inset:0;z-index:60;display:none;background:color-mix(in srgb, var(--shade-base) 40%, transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);align-items:flex-start;justify-content:center;padding:5vh var(--s4);overflow-y:auto}
.modal-bg.on{display:flex}
.modal{width:100%;max-width:620px;background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:0 24px 80px color-mix(in srgb, var(--shade-base) 30%, transparent);overflow:hidden}
.modal .mhead{display:flex;align-items:center;padding:var(--s4) var(--s5);border-bottom:1px solid var(--line)}
.modal .mhead h3{font-size:var(--fs-md);font-weight:750;flex:1}
.modal .mbody{padding:var(--s4) var(--s5);max-height:66vh;overflow-y:auto}
.modal .mfoot{display:flex;gap:var(--s2);justify-content:flex-end;padding:var(--s4) var(--s5);border-top:1px solid var(--line)}
.field{margin-bottom:var(--s4)}
.field label{display:block;font-size:var(--fs-xs);font-weight:650;color:var(--ink2);margin-bottom:var(--s1)}
.field input,.field select,.field textarea{width:100%;padding:var(--s2) var(--s3);border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:var(--fs-sm);outline:0;font-family:inherit}
.field textarea{min-height:76px;resize:vertical;line-height:1.6}
.field textarea.big{min-height:220px;font-family:var(--mono);font-size:var(--fs-xs)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}
.field .hint{font-size:var(--fs-xs);color:var(--ink2);margin-top:var(--s1)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:0 var(--s4)}
@media (max-width:560px){.row2{grid-template-columns:1fr}}
.scopes{display:flex;flex-wrap:wrap;gap:var(--s2)}
.scopes label{display:inline-flex;align-items:center;gap:var(--s1);font-size:var(--fs-xs);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:var(--s1) var(--s3);cursor:pointer;color:var(--ink)}
.scopes input{accent-color:var(--accent)}
.secret-reveal{background:var(--bg);border:1px dashed var(--accent);border-radius:12px;padding:var(--s4);margin-top:var(--s2)}
.secret-reveal code{font-family:var(--mono);font-size:var(--fs-sm);word-break:break-all;color:var(--accent);font-weight:650}
.secret-reveal p{font-size:var(--fs-xs);color:var(--warn-ink);margin-top:var(--s2)}
/* ── Toast ── */
#toasts{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:99;display:flex;flex-direction:column;gap:var(--s2);align-items:center}
.toast{background:var(--ink);color:var(--bg);font-size:var(--fs-sm);padding:var(--s3) var(--s4);border-radius:999px;box-shadow:var(--shadow);animation:up .22s ease}
.toast.err{background:var(--err-ink);color:var(--bg)}
@keyframes up{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.empty{padding:var(--s7);text-align:center;color:var(--ink2);font-size:var(--fs-sm)}
.spin{padding:var(--s7);text-align:center;color:var(--ink2)}
a.plain{color:var(--accent-ink);text-decoration:underline;text-underline-offset:2px} /* U4：链接不得仅靠颜色区分 */
.cc-dirty.saved{color:var(--ok-ink);background:color-mix(in srgb,var(--ok) 10%,transparent);border-color:color-mix(in srgb,var(--ok) 30%,transparent)}

/* ═══════════════════ P54 · DIRECTIVE-04 U-B 落地（U5/U6/U7/U8）═══════════════════
 * U5：可撤销优于确认 —— undo toast（8s）+ 原生 <dialog> 自建模态（焦点陷阱/Esc/焦点归还由浏览器承担）
 * U6：>8 列表格 → 列显隐 + 首列 sticky（基线 tokens.css 承载 sticky/斑马纹/tabular-nums）
 * U7：页签切换 120ms 淡入（--dur-tab 唯一时长来源；reduced-motion 下关闭）
 * U8：1200/1440 宽屏断点 + 72ch 行长约束 + 最近使用快捷区
 * 迁移：设置中心 cc-* 全部样式从 ccCSS() JS 注入迁入本文件 —— 全 token 化、!important=0、
 *       半像素/9px 字号清零（U1 点名项）、SERP 仿真色收进 --serp-* token（律 13）。
 * ═══════════════════════════════════════════════════════════════════════════════ */

/* ── U7-④ 页签淡入 ── */
@keyframes ax-tab-fade{from{opacity:.35}to{opacity:1}}
#main.tab-fade{animation:ax-tab-fade var(--dur-tab) ease}
@media (prefers-reduced-motion:reduce){#main.tab-fade{animation:none}}

/* ── U5 undo toast ── */
.toast.with-undo{display:flex;align-items:center;gap:var(--s3);padding-right:var(--s2);border-radius:var(--r-md)}
.toast .undo-btn{border:1px solid currentColor;background:transparent;color:inherit;font-size:var(--fs-xs);font-weight:700;border-radius:999px;padding:var(--s1) var(--s3);cursor:pointer;font-family:inherit;min-height:24px}
.toast .undo-btn:hover{background:color-mix(in srgb,var(--bg) 18%,transparent)}
.toast .undo-count{font-family:var(--mono);font-size:var(--fs-xs);opacity:.72;font-variant-numeric:tabular-nums}

/* ── U5 自建模态（真正不可逆操作专用：后果与影响范围文案 + 双按钮）── */
dialog.ax-dlg{border:0;border-radius:var(--r-lg);padding:0;background:var(--card);color:var(--ink);box-shadow:0 24px 80px color-mix(in srgb,var(--shade-base) 30%,transparent);max-width:min(480px,92vw);width:100%}
dialog.ax-dlg::backdrop{background:color-mix(in srgb,var(--shade-base) 45%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
dialog.ax-dlg .dh{padding:var(--s5) var(--s5) var(--s2)}
dialog.ax-dlg .dh h3{font-size:var(--fs-md);font-weight:750;letter-spacing:-.01em}
dialog.ax-dlg .db{padding:0 var(--s5);font-size:var(--fs-sm);color:var(--ink2);line-height:var(--lh-loose)}
dialog.ax-dlg .db .impact{margin-top:var(--s3);padding:var(--s3);border-radius:var(--r-sm);background:color-mix(in srgb,var(--err) 7%,transparent);border:1px solid color-mix(in srgb,var(--err) 25%,transparent);color:var(--ink)}
dialog.ax-dlg .db .impact b{color:var(--err-ink)}
dialog.ax-dlg .df{display:flex;gap:var(--s2);justify-content:flex-end;padding:var(--s4) var(--s5) var(--s5)}
dialog.ax-dlg .btn.danger-solid{background:var(--err-ink);border-color:var(--err-ink);color:var(--on-accent)}
dialog.ax-dlg .btn.danger-solid:hover{filter:brightness(1.08);color:var(--on-accent)}
dialog.ax-dlg .dform .field{margin-top:var(--s3)}

/* ── U6 表格增强（控制台）：separate 边框保住 sticky 表头；宽表横向滚动 ── */
table.tbl{border-collapse:separate;border-spacing:0}
.tbl-wide{min-width:1080px}
.tbl-actions{white-space:nowrap}

/* ── U6-④ 列显隐（>8 列表格必备）── */
.colvis{position:relative;display:inline-flex}
.colvis-menu{position:absolute;right:0;top:calc(100% + var(--s1));z-index:30;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:var(--s2);display:none;min-width:180px;max-height:60vh;overflow:auto}
.colvis-menu.on{display:block}
.colvis-menu label{display:flex;align-items:center;gap:var(--s2);padding:var(--s1) var(--s2);font-size:var(--fs-xs);color:var(--ink);cursor:pointer;border-radius:6px;white-space:nowrap}
.colvis-menu label:hover{background:var(--bg)}
.colvis-menu input{accent-color:var(--accent)}
table.hide-c1 th:nth-child(1),table.hide-c1 td:nth-child(1){display:none}
table.hide-c2 th:nth-child(2),table.hide-c2 td:nth-child(2){display:none}
table.hide-c3 th:nth-child(3),table.hide-c3 td:nth-child(3){display:none}
table.hide-c4 th:nth-child(4),table.hide-c4 td:nth-child(4){display:none}
table.hide-c5 th:nth-child(5),table.hide-c5 td:nth-child(5){display:none}
table.hide-c6 th:nth-child(6),table.hide-c6 td:nth-child(6){display:none}
table.hide-c7 th:nth-child(7),table.hide-c7 td:nth-child(7){display:none}
table.hide-c8 th:nth-child(8),table.hide-c8 td:nth-child(8){display:none}
table.hide-c9 th:nth-child(9),table.hide-c9 td:nth-child(9){display:none}
table.hide-c10 th:nth-child(10),table.hide-c10 td:nth-child(10){display:none}
table.hide-c11 th:nth-child(11),table.hide-c11 td:nth-child(11){display:none}
table.hide-c12 th:nth-child(12),table.hide-c12 td:nth-child(12){display:none}

/* ── U4-4 焦点核对：outline:0 的输入控件补 :focus-visible 替代焦点环 ── */
.login-card input:focus-visible,.toolbar input:focus-visible,.toolbar select:focus-visible,
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible,
.cc-search input:focus-visible,.cc-ctl input:focus-visible,.cc-ctl textarea:focus-visible,.cc-ctl select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}

/* ── U8-2 宽屏断点（1200 / 1440）：留白升级 + 行长 ≤75ch；数据表格区保持全宽 ── */
@media (min-width:1200px){.main{padding:var(--s6) var(--s7) var(--s7)}}
@media (min-width:1440px){
 .main .desc,.main .cc-hint,.main .cc-gd,.main .cc-serp-hint{max-width:72ch}
 .modal{max-width:720px}
}

/* ── U8-1 最近使用快捷区（复用 sidebar 按钮基样式）── */
.nav-recent{margin-bottom:var(--s1)}
.nav-recent button[data-tab] .ic{opacity:.92}

/* ═══ 设置中心 cc-*（自 ccCSS() JS 注入迁移；U1：字号全部收敛 6 级；U2：间距全部 var(--s*)；!important=0）═══ */
.cc{display:grid;grid-template-columns:196px minmax(0,1fr);gap:var(--s4);align-items:start}
.cc-rail{position:sticky;top:var(--s3);display:flex;flex-direction:column;gap:calc(var(--s1) / 2);background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s2);max-height:calc(100vh - 120px);overflow:auto}
.cc-rail button{display:flex;align-items:center;gap:var(--s2);width:100%;text-align:left;padding:var(--s2) var(--s3);border-radius:var(--r-sm);border:0;background:transparent;color:var(--ink2);font-size:var(--fs-xs);font-weight:560;cursor:pointer;font-family:inherit;transition:background .14s,color .14s;line-height:var(--lh-tight)}
.cc-rail button:hover{background:var(--bg);color:var(--ink)}
.cc-rail button.on{background:var(--accent-solid,var(--accent));color:var(--on-accent);font-weight:650}
.cc-rail button .ric{font-size:var(--fs-sm);flex-shrink:0;width:17px;text-align:center}
.cc-rail button .rn{font-size:var(--fs-xs);font-weight:700;letter-spacing:.5px;margin-left:auto;flex-shrink:0}
.cc-rail button .rdot{width:6px;height:6px;border-radius:50%;background:var(--warn);flex-shrink:0;margin-left:var(--s1)}
.cc-rail .rdiv{height:1px;background:var(--line);margin:var(--s1) var(--s1)}
.cc-body{min-width:0}
.cc-bar{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap;margin-bottom:var(--s4);position:sticky;top:0;z-index:20;background:var(--bg);padding:var(--s2) 0;border-bottom:1px solid var(--line)}
.cc-search{flex:1;min-width:170px;display:flex;align-items:center;gap:var(--s2);background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:0 var(--s3)}
.cc-search input{flex:1;border:0;background:transparent;color:var(--ink);font-size:var(--fs-sm);padding:var(--s2) 0;outline:0;font-family:inherit;min-width:0}
.cc-search kbd{font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink2);border:1px solid var(--line);border-radius:5px;padding:0 var(--s1);flex-shrink:0}
.cc-dirty{font-size:var(--fs-xs);font-weight:700;color:var(--warn-ink);background:color-mix(in srgb,var(--warn) 14%,transparent);border:1px solid color-mix(in srgb,var(--warn) 30%,transparent);border-radius:999px;padding:var(--s1) var(--s3);white-space:nowrap}
.cc-sec{margin-bottom:var(--s5);scroll-margin-top:64px}
.cc-sec h3{font-size:var(--fs-sm);font-weight:750;letter-spacing:-.01em;display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s1)}
.cc-sec h3 .en{font-size:var(--fs-xs);font-weight:700;letter-spacing:1.5px;color:var(--ink2)}
.cc-sec .sd{font-size:var(--fs-xs);color:var(--ink2);margin-bottom:var(--s3);line-height:var(--lh-loose)}
.cc-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden}
.cc-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,340px);gap:var(--s4);padding:var(--s3) var(--s4);border-bottom:1px solid var(--line);align-items:start;transition:background .14s}
.cc-row:last-child{border-bottom:0}
.cc-row:hover{background:color-mix(in srgb,var(--accent) 4%,transparent)}
.cc-row.dirty{background:color-mix(in srgb,var(--warn) 7%,transparent);box-shadow:inset 3px 0 0 var(--warn)}
.cc-row.bad{background:color-mix(in srgb,var(--err) 7%,transparent);box-shadow:inset 3px 0 0 var(--err)}
.cc-row.dim{opacity:.42}
.cc-row.pend{background:color-mix(in srgb,var(--ink) 2%,transparent)}
.cc-lab{display:flex;align-items:baseline;gap:var(--s2);flex-wrap:wrap}
.cc-lab b{font-size:var(--fs-sm);font-weight:640;letter-spacing:-.005em}
.cc-lab .en2{font-size:var(--fs-xs);color:var(--ink2);font-weight:550}
.cc-key{font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink2);background:var(--bg);border:1px solid var(--line);border-radius:5px;padding:0 var(--s1);cursor:pointer}
.cc-key:hover{color:var(--accent-ink);border-color:var(--accent)}
.cc-hint{font-size:var(--fs-xs);color:var(--ink2);margin-top:var(--s1);line-height:var(--lh-loose)}
.cc-wire{font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink2);margin-top:var(--s1);word-break:break-all}
.cc-wire b{font-family:inherit;font-weight:700}
.cc-err{font-size:var(--fs-xs);color:var(--err-ink);margin-top:var(--s1);font-weight:600}
.cc-tags{display:flex;gap:var(--s1);flex-wrap:wrap;margin-top:var(--s1)}
.cc-tg{font-size:var(--fs-xs);font-weight:700;letter-spacing:.3px;border-radius:5px;padding:calc(var(--s1) / 2) var(--s2);border:1px solid var(--line);color:var(--ink2);background:var(--bg)}
.cc-tg.db{color:var(--ok-ink);border-color:color-mix(in srgb,var(--ok) 35%,transparent);background:color-mix(in srgb,var(--ok) 10%,transparent)}
.cc-tg.env{color:var(--accent-ink);border-color:color-mix(in srgb,var(--post) 35%,transparent);background:color-mix(in srgb,var(--post) 10%,transparent)}
.cc-tg.def{color:var(--ink2)}
.cc-tg.pend{color:var(--warn-ink);border-color:color-mix(in srgb,var(--warn) 35%,transparent);background:color-mix(in srgb,var(--warn) 10%,transparent)}
.cc-tg.pub{color:var(--accent2-ink);border-color:color-mix(in srgb,var(--accent2) 35%,transparent);background:color-mix(in srgb,var(--accent2) 10%,transparent)}
.cc-tg.risk{color:var(--err-ink);border-color:color-mix(in srgb,var(--err) 35%,transparent);background:color-mix(in srgb,var(--err) 10%,transparent)}
.cc-ctl{display:flex;flex-direction:column;gap:var(--s1);align-items:stretch}
.cc-ctl input[type=text],.cc-ctl input[type=url],.cc-ctl input[type=email],.cc-ctl input[type=date],.cc-ctl input[type=number],.cc-ctl textarea,.cc-ctl select{width:100%;padding:var(--s2) var(--s3);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:var(--fs-xs);font-family:inherit;outline:0;transition:border-color .14s,box-shadow .14s}
.cc-ctl input:focus,.cc-ctl textarea:focus,.cc-ctl select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.cc-ctl input.bad,.cc-ctl textarea.bad{border-color:var(--err)}
.cc-ctl textarea{resize:vertical;min-height:56px;line-height:var(--lh-loose);font-family:var(--mono);font-size:var(--fs-xs)}
.cc-ctl .mono-in{font-family:var(--mono);font-size:var(--fs-xs)}
.cc-num{display:flex;align-items:center;gap:0;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);overflow:hidden}
.cc-ctl .cc-num input[type=number]{border:0;background:transparent;border-radius:0;text-align:center;font-variant-numeric:tabular-nums;padding:var(--s2) var(--s1);box-shadow:none}
.cc-num button{width:32px;height:34px;border:0;background:transparent;color:var(--ink2);font-size:var(--fs-sm);cursor:pointer;flex-shrink:0;transition:background .12s,color .12s;line-height:1}
.cc-num button:hover{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
.cc-num button:active{transform:scale(.92)}
.cc-unit{font-size:var(--fs-xs);color:var(--ink2);padding:0 var(--s2) 0 calc(var(--s1) / 2);white-space:nowrap;flex-shrink:0}
.cc-meter{height:3px;border-radius:99px;background:var(--line);overflow:hidden}
.cc-meter i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:99px;transition:width .3s cubic-bezier(.2,.8,.2,1)}
.cc-range{display:flex;justify-content:space-between;font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink2)}
.cc-sw{position:relative;width:46px;height:27px;border-radius:99px;border:1px solid var(--line);background:var(--bg);cursor:pointer;transition:background .2s cubic-bezier(.3,.7,.3,1),border-color .2s;flex-shrink:0;padding:0;align-self:flex-start}
.cc-sw::after{content:'';position:absolute;top:2px;left:2px;width:21px;height:21px;border-radius:50%;background:var(--shade-inv);box-shadow:0 1px 4px color-mix(in srgb,var(--shade-base) 28%,transparent);transition:transform .24s cubic-bezier(.3,1.35,.4,1)}
.cc-sw[aria-checked=true]{background:var(--ok);border-color:transparent}
.cc-sw[aria-checked=true]::after{transform:translateX(19px)}
.cc-swl{display:flex;align-items:center;gap:var(--s3)}
.cc-swl .st{font-size:var(--fs-xs);color:var(--ink2);font-weight:600}
.cc-seg{display:inline-flex;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:calc(var(--s1) / 2);gap:calc(var(--s1) / 2);flex-wrap:wrap}
.cc-seg button{font-size:var(--fs-xs);font-weight:600;color:var(--ink2);padding:var(--s1) var(--s3);border-radius:7px;border:0;background:transparent;cursor:pointer;font-family:inherit;transition:.14s;white-space:nowrap}
.cc-seg button:hover{color:var(--ink)}
.cc-seg button.on{background:var(--accent-solid,var(--accent));color:var(--on-accent);box-shadow:0 1px 5px color-mix(in srgb,var(--shade-base) 16%,transparent)}
.cc-reset{align-self:flex-start;font-size:var(--fs-xs);font-weight:650;color:var(--ink2);background:transparent;border:1px solid var(--line);border-radius:7px;padding:var(--s1) var(--s2);cursor:pointer;font-family:inherit;transition:.14s}
.cc-reset:hover{color:var(--err-ink);border-color:var(--err)}
.cc-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s4);margin-bottom:var(--s4)}
.cc-panel h4{font-size:var(--fs-xs);font-weight:750;letter-spacing:1.4px;color:var(--ink2);text-transform:uppercase;margin-bottom:var(--s3)}
.cc-hero{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--s2);margin-bottom:var(--s4)}
.cc-stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s3)}
.cc-stat .k{font-size:var(--fs-xs);font-weight:700;letter-spacing:.9px;color:var(--ink2);text-transform:uppercase;margin-bottom:var(--s1)}
.cc-stat .v{font-size:var(--fs-lg);font-weight:760;letter-spacing:-.5px;line-height:1.05;font-variant-numeric:tabular-nums}
.cc-stat .s{font-size:var(--fs-xs);color:var(--ink2);margin-top:var(--s1);line-height:var(--lh)}
.cc-golive{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s4);margin-bottom:var(--s4);background:linear-gradient(135deg,color-mix(in srgb,var(--warn) 9%,transparent),color-mix(in srgb,var(--ok) 6%,transparent))}
.cc-golive.live{background:linear-gradient(135deg,color-mix(in srgb,var(--ok) 13%,transparent),color-mix(in srgb,var(--post) 7%,transparent))}
.cc-golive .gt{font-size:var(--fs-sm);font-weight:760;display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.cc-golive .gd{font-size:var(--fs-xs);color:var(--ink2);margin-top:var(--s1);line-height:var(--lh-loose)}
.cc-golive ul{margin:var(--s2) 0 0 var(--s4);font-size:var(--fs-xs);color:var(--ink2);line-height:1.72}
.cc-serp{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s4);background:var(--serp-bg);font-family:Arial,Helvetica,sans-serif}
.cc-serp .su{font-size:var(--fs-xs);color:var(--serp-ink);display:flex;align-items:center;gap:var(--s1)}
.cc-serp .su .fav{width:17px;height:17px;border-radius:50%;background:var(--serp-fav-bg);flex-shrink:0;display:grid;place-items:center;font-size:var(--fs-xs);color:var(--serp-fav-ink)}
.cc-serp .su .path{color:var(--serp-url);font-size:var(--fs-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cc-serp .st2{font-size:var(--fs-md);color:var(--serp-link);line-height:1.32;margin:var(--s1) 0;font-weight:400;word-break:break-word}
.cc-serp .sd2{font-size:var(--fs-xs);color:var(--serp-url);line-height:var(--lh-loose);word-break:break-word}
.cc-serp .scount{font-size:var(--fs-xs);color:var(--ink2);font-family:var(--mono);margin-top:var(--s2);display:flex;gap:var(--s3);flex-wrap:wrap}
.cc-serp .scount b.over{color:var(--err-ink)}
.cc-serp .scount b.ok{color:var(--ok-ink)}
.cc-pre{font-family:var(--mono);font-size:var(--fs-xs);background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s3);white-space:pre-wrap;word-break:break-all;color:var(--ink);line-height:1.62;max-height:230px;overflow:auto}
.cc-diff{border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;margin-bottom:var(--s3)}
.cc-diff .dh{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);gap:var(--s2);padding:var(--s2) var(--s3);background:var(--bg);font-size:var(--fs-xs);font-weight:750;letter-spacing:.8px;color:var(--ink2);text-transform:uppercase}
.cc-diff .dr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);gap:var(--s2);padding:var(--s2) var(--s3);border-top:1px solid var(--line);font-size:var(--fs-xs);align-items:center}
.cc-diff .dr .kk{font-weight:640}
.cc-diff .dr .kk span{display:block;font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink2);font-weight:400;margin-top:calc(var(--s1) / 2)}
.cc-diff .from{font-family:var(--mono);font-size:var(--fs-xs);color:var(--err-ink);background:color-mix(in srgb,var(--err) 8%,transparent);border-radius:6px;padding:var(--s1) var(--s2);word-break:break-all;text-decoration:line-through;text-decoration-opacity:.42}
.cc-diff .to{font-family:var(--mono);font-size:var(--fs-xs);color:var(--ok-ink);background:color-mix(in srgb,var(--ok) 9%,transparent);border-radius:6px;padding:var(--s1) var(--s2);word-break:break-all;font-weight:600}
.cc-hist{display:flex;flex-direction:column;gap:var(--s2);max-height:52vh;overflow:auto}
.cc-hi{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s3);background:var(--bg)}
.cc-hi .hh{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;font-size:var(--fs-xs)}
.cc-hi .hh b{font-weight:700}
.cc-hi .hh .ts{font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink2);margin-left:auto}
.cc-hi .hc{margin-top:var(--s2);display:flex;flex-direction:column;gap:var(--s1)}
.cc-hi .hc div{font-size:var(--fs-xs);font-family:var(--mono);color:var(--ink2);word-break:break-all}
.cc-hi .hc .a{color:var(--err-ink);text-decoration:line-through;text-decoration-opacity:.4}
.cc-hi .hc .b{color:var(--ok-ink);font-weight:600}
.cc-empty{padding:var(--s5);text-align:center;color:var(--ink2);font-size:var(--fs-xs)}
.cc-inh{font-size:var(--fs-xs);font-weight:700;letter-spacing:.4px;color:var(--ink2);border:1px solid var(--line);border-radius:4px;padding:0 var(--s1);margin-left:var(--s1);vertical-align:1px}
.cc-note{width:100%;padding:var(--s2) var(--s3);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:var(--fs-xs);font-family:inherit;outline:0;margin-bottom:var(--s3)}
.cc-newkey{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center}
.cc-newkey input{flex:1;min-width:170px;padding:var(--s2) var(--s3);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:var(--fs-xs)}
.cc-newkey input.k{font-family:var(--mono)}
.cc-subnote{font-size:var(--fs-xs);opacity:.75}
@media (max-width:900px){.cc{grid-template-columns:1fr}.cc-rail{position:static;flex-direction:row;overflow-x:auto;max-height:none;padding:var(--s1)}.cc-rail button{width:auto;white-space:nowrap;padding:var(--s2) var(--s3)}.cc-rail button .rn,.cc-rail .rdiv{display:none}.cc-row{grid-template-columns:1fr;gap:var(--s2)}.cc-diff .dh,.cc-diff .dr{grid-template-columns:1fr;gap:var(--s1)}.cc-diff .dh{display:none}}
@media (prefers-reduced-motion:reduce){.cc *{transition:none;animation:none}}

/* ── R7-A11Y 审计修复批 ── */
.chip.linked{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent-ink)}
.tb-ipt{padding:var(--s2) var(--s3);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--card);color:var(--ink);font-family:inherit;font-size:var(--fs-sm);outline:0}
.tb-ipt:focus{border-color:var(--accent)}
.m-count{align-self:center;font-size:var(--fs-xs);color:var(--ink2)}
.m360-grid{display:grid;gap:var(--s3);font-size:var(--fs-sm);text-align:left}
.m360-sec{border-top:1px solid var(--line);padding-top:var(--s2)}
@media (prefers-reduced-motion:reduce){.toast{animation:none}.tab-fade{animation:none}}

/* ── R7-SCALE 会员分段 chips ── */
.mem-seg{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;margin:var(--s2) 0 var(--s3)}
.seg-btn{padding:var(--s1) var(--s3);border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink2);font-size:var(--fs-xs);font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s}
.seg-btn:hover{color:var(--ink);border-color:var(--line2)}
.seg-btn.on{background:var(--accent-solid,var(--accent));border-color:var(--accent-solid,var(--accent));color:var(--on-accent)}

/* ── R7-DENSITY 行高审计批：密集数据表（.compact 挂到任意 .tbl 即生效，全站可复用）── */
.tbl.compact{line-height:1.35;font-size:var(--fs-sm)}
.tbl.compact th{padding:var(--s1) var(--s3)}
.tbl.compact td{padding:5px var(--s3)}
.tbl.compact .chip{padding:1px var(--s2);font-size:var(--fs-xs)}
.btn.xs{padding:3px 9px;font-size:var(--fs-xs);border-radius:6px;min-height:24px}
.tbl.compact .tbl-actions .btn+.btn{margin-left:2px}

/* R7-BUGFIX：会员页专用空态/链接钮（避开 axEmptyCheck 的 .empty 劫持）*/
.mem-notice{margin-top:var(--s4);padding:var(--s5);border:1px dashed var(--line2);border-radius:var(--r-md);color:var(--ink2);font-size:var(--fs-sm);text-align:center;line-height:1.7}
.lnk-btn{background:none;border:0;color:var(--accent-ink);cursor:pointer;font:inherit;font-size:var(--fs-xs);padding:0;margin-right:10px;text-decoration:underline dotted}
.lnk-btn:hover{color:var(--accent)}

/* ── R7-TYPE 字体/颜色/透明批 ── */
::placeholder{color:var(--ink2);opacity:1} /* R7-INK：ink3 仅装饰/禁用；placeholder=真实文本 → ink2（浅5.07/暗5.93）*/
.tb-ipt option{background:var(--card);color:var(--ink)}
.toast{max-width:min(92vw,640px)}

/* R7-NEXT 跨面一致性健康条 */
.mem-health{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;font-size:var(--fs-xs);color:var(--ink2);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s2) var(--s3);margin-bottom:var(--s3)}
.mem-health b{color:var(--ink)}
.mem-health.bad{border-color:var(--warn);color:var(--warn-ink)}
.mem-health.bad b{color:var(--warn-ink)}
