/* =====================================================================
 * MAST Growth OS · 模块页共享壳样式
 * 设计语言与 growth.html 完全一致(米灰底/白卡/lime 点缀/深色选中态)。
 * 侧栏与顶栏由 js/shell.js 渲染;本文件只关心样式。
 * ===================================================================== */
/* ---------------------------------------------------------------------
 * 设计 token(2026-08-12 重订)
 * 变量名全部沿用旧名,只换值 —— 17 个页面无需改动即可继承新系统。
 * 旧值是暖米灰(#f3f3f0/#141414),问题是底色与卡片太接近、标题与正文
 * 对比不足,整页发糊。新值转为冷中性灰并拉开层级。
 * ------------------------------------------------------------------- */
:root{
  /* 表面 —— shadcn/ui 的 zinc 中性阶,原样采用而非自创。
     Twenty / Dub / Midday 用的都是同一族中性色,所以这一层换掉之后,
     后面抄它们的组件模式不会出现色温打架。 */
  --bg:#fafafa;        /* zinc-50  页面底 */
  --panel:#ffffff;     /* 卡片 */
  --muted:#f4f4f5;     /* zinc-100 次级表面 */
  --line:#e4e4e7;      /* zinc-200 边框 */
  --line2:#f4f4f5;     /* zinc-100 分隔线 */
  --chip:#f4f4f5;
  /* 文字:zinc-950 / zinc-500 / zinc-400,对比度 18.7:1 / 4.8:1 / 3.0:1 */
  --ink:#09090b; --soft:#71717a; --faint:#a1a1aa;
  /* 语义色。绿=证据/通过,琥珀=未知/待确认,红=反证/阻塞,蓝=少量信息强调 */
  --green:#16a34a; --green-deep:#15803d; --green-soft:#e9f7ee;
  --gold:#d97706; --gold-deep:#a35a05; --gold-soft:#fdf3e3;
  --amber:#d97706; --amber-soft:#fdf3e3;
  --red:#dc2626; --red-deep:#b01c1c; --red-soft:#fdecec;
  --blue:#2563eb; --blue-deep:#1d4ed8; --blue-soft:#e8eeff;
  --purple:#7c5cf6; --purple-deep:#6338e6; --purple-soft:#f0ebfe;
  --lime:#c9f24c; --dark:#111418;

  /* 字阶:标题必须像标题。旧系统卡片标题 13.5px、正文 12.5px,
     两者几乎同重,这是「所有东西看起来一样重要」的直接原因。 */
  --fs-page:28px;  --lh-page:32px;
  --fs-sec:18px;   --lh-sec:24px;
  --fs-card:15px;  --lh-card:22px;
  --fs-body:14px;  --lh-body:22px;
  --fs-meta:12px;  --lh-meta:18px;
  --fs-badge:11px; --lh-badge:16px;

  /* 8pt 间距 */
  --s1:8px; --s2:12px; --s3:16px; --s4:20px; --s5:24px; --s6:32px;

  /* 圆角与阴影:阴影极轻,悬停才略增 —— 重阴影是后台风的来源 */
  --r-card:12px; --r-sm:8px; --r-xs:6px;   /* shadcn --radius:.5rem 体系 */
  --sh:0 1px 2px rgba(9,9,11,.04);
  --sh-hover:0 2px 8px -2px rgba(9,9,11,.10);
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;}
body{font-family:'Inter','PingFang SC','Microsoft YaHei',-apple-system,'Helvetica Neue',sans-serif;
  background:var(--bg);min-height:100vh;color:var(--ink);-webkit-font-smoothing:antialiased;}
.num{font-family:'JetBrains Mono','Inter',monospace;font-feature-settings:"tnum";letter-spacing:-.3px;}
svg{display:inline-block;}

/* ===== 侧栏(shell.js 渲染进 #gcSide)===== */
.gc-side{position:fixed;left:0;top:0;width:232px;height:100vh;background:#fff;border-right:1px solid var(--line);
  display:flex;flex-direction:column;padding:18px 14px;overflow-y:auto;overflow-x:hidden;z-index:30;
  transition:width .2s ease,padding .2s ease;}
.gc-side__logo{display:flex;align-items:center;gap:10px;padding:0 6px 18px;border-bottom:1px solid var(--line2);margin-bottom:12px;}
.gc-side__mk{width:32px;height:32px;border-radius:9px;background:var(--green-soft);border:1px solid #cfe9d9;
  color:var(--green-deep);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex:none;}
.gc-side__brand b{font-size:13.5px;font-weight:700;letter-spacing:-.2px;display:block;line-height:1.15;}
.gc-side__brand span{font-size:10.5px;color:var(--soft);}
.gc-side__grp{font-size:10px;color:var(--faint);text-transform:uppercase;letter-spacing:.5px;font-weight:600;padding:14px 10px 7px;}
.gc-nav{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;color:var(--soft);cursor:pointer;
  font-size:13px;font-weight:500;text-decoration:none;}
.gc-nav:hover{background:var(--muted);}
.gc-nav svg{width:16px;height:16px;flex:none;color:var(--faint);fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.gc-nav.on{background:var(--muted);color:var(--ink);font-weight:600;box-shadow:inset 2px 0 0 var(--green);}
.gc-nav.on svg{color:var(--green-deep);}
.gc-nav .badge{margin-left:auto;background:var(--chip);color:var(--soft);font-size:9.5px;font-weight:700;border-radius:5px;padding:1px 6px;}
.gc-nav.on .badge{background:#fff;color:var(--soft);}
.gc-side__account{margin-top:auto;padding-top:12px;border-top:1px solid var(--line2);}
.gc-tenant{padding:0 2px 8px;margin-bottom:2px;border-bottom:1px solid var(--line2);}
.gc-tenant__head{display:flex;align-items:center;justify-content:space-between;padding:0 6px 6px;color:var(--faint);}
.gc-tenant__head span{font-size:9px;font-weight:650;letter-spacing:.3px;}.gc-tenant__head small{font-size:8px;font-weight:750;background:var(--chip);border-radius:5px;padding:2px 5px;}
.gc-tenant__picker{position:relative;height:39px;display:flex;align-items:center;gap:8px;padding:4px 7px;border-radius:10px;background:var(--muted);border:1px solid var(--line2);transition:.18s;}
.gc-tenant__picker:hover{background:var(--chip);border-color:var(--line);}.gc-tenant__avatar{width:27px;height:27px;display:grid;place-items:center;flex:none;border-radius:8px;background:#e7f6ec;color:var(--green-deep);font-size:10px;font-weight:750;}
.gc-tenant__label{font-size:11px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.gc-tenant__picker svg{width:12px;height:12px;margin-left:auto;fill:none;stroke:var(--faint);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;}
.gc-tenant__picker select{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;}
.gc-account{width:100%;display:flex;align-items:center;gap:9px;border:1px solid transparent;background:transparent;
  color:var(--ink);font-family:inherit;text-align:left;border-radius:11px;padding:8px;cursor:pointer;transition:.18s;}
.gc-account:hover,.gc-account[aria-expanded="true"]{background:var(--muted);border-color:var(--line);}
.gc-account__avatar{width:31px;height:31px;display:grid;place-items:center;flex:none;border-radius:9px;
  background:var(--muted);border:1px solid var(--line);color:var(--ink);font-size:12px;font-weight:700;}
.gc-account__meta{display:flex;flex-direction:column;min-width:0;line-height:1.2;}
.gc-account__meta b{font-size:11.5px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gc-account__meta small{font-size:9.5px;color:var(--soft);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gc-account__chev{width:13px;height:13px;margin-left:auto;fill:none;stroke:var(--faint);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}

/* ===== 主区 + 顶栏 ===== */
/* ===== 侧栏收起态(body.side-collapsed,状态存 localStorage)===== */
.gc-side__toggle{margin-left:auto;width:26px;height:26px;flex:none;border:1px solid var(--line);background:#fff;
  border-radius:8px;color:var(--soft);display:grid;place-items:center;cursor:pointer;padding:0;}
.gc-side__toggle:hover{background:var(--muted);color:var(--ink);}
.gc-side__toggle svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;
  stroke-linejoin:round;transition:transform .2s ease;}
body.side-collapsed .gc-side{width:64px;padding:18px 9px;}
body.side-collapsed .gc-side__logo{flex-direction:column;gap:9px;padding:0 0 12px;}
body.side-collapsed .gc-side__brand,
body.side-collapsed .gc-side__grp,
body.side-collapsed .gc-nav .label,
body.side-collapsed .gc-nav .badge,
body.side-collapsed .gc-account__meta,
body.side-collapsed .gc-account__chev{display:none;}
body.side-collapsed .gc-side__toggle{margin:0;}
body.side-collapsed .gc-side__toggle svg{transform:rotate(180deg);}
body.side-collapsed .gc-nav{justify-content:center;padding:9px 0;gap:0;}
body.side-collapsed .gc-side__account{padding-top:10px;}
body.side-collapsed .gc-tenant{padding:0 0 7px;}body.side-collapsed .gc-tenant__head,body.side-collapsed .gc-tenant__label,body.side-collapsed .gc-tenant__picker svg{display:none;}
body.side-collapsed .gc-tenant__picker{width:39px;margin:auto;padding:5px;justify-content:center;}body.side-collapsed .gc-tenant__avatar{width:27px;height:27px;}
body.side-collapsed .gc-account{justify-content:center;padding:7px 0;}
body.side-collapsed .main{margin-left:64px;}

/* ===== 主区 + 顶栏 ===== */
.main{margin-left:232px;min-height:100vh;display:flex;flex-direction:column;transition:margin-left .2s ease;}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 30px 0;
  max-width:1760px;width:100%;margin:0 auto;}
.topbar h1{font-size:21px;font-weight:700;letter-spacing:-.4px;}
.crumb{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--faint);margin-top:3px;}
.crumb b{color:var(--soft);font-weight:600;}
.crumb .sep{color:#d4d4cf;}
.dsrc{display:inline-flex;align-items:center;margin-left:8px;padding:2px 9px;border-radius:999px;
  font-size:10.5px;font-weight:600;background:#eef1ec;color:#6a746c;cursor:default;}
.dsrc.gw{background:#e7f6ec;color:#17924c;}
.dsrc.deg{background:var(--amber-soft);color:#8a5a04;}
.dsrc:empty{display:none;}
.dsrc{white-space:nowrap;}
/* 手机上顶部已有横滑导航,「回驾驶舱」不再需要 */
@media(max-width:860px){.topbar__right a.tbtn[href="growth.html"]{display:none;}}
.topbar__right{display:flex;align-items:center;gap:9px;}
.tbtn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;color:var(--soft);
  font-size:12.5px;font-weight:600;font-family:inherit;border-radius:9px;padding:8px 14px;cursor:pointer;}
.tbtn:hover{background:var(--muted);}
.tbtn.solid{background:var(--green-soft);border-color:#cfe9d9;color:var(--green-deep);}
.tbtn.solid:hover{filter:brightness(1.03);}
.tbtn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;}

/* ===== 页面容器 ===== */
/* 顶栏与内容区必须同宽同居中,否则右侧会出现一条空档、按钮和卡片对不齐 */
.page{flex:1;padding:16px 30px 48px;max-width:1760px;width:100%;margin:0 auto;}
.grid{display:grid;gap:var(--s3);}
.g2{grid-template-columns:repeat(2,minmax(0,1fr));}
.g3{grid-template-columns:repeat(3,minmax(0,1fr));}
.g4{grid-template-columns:repeat(4,minmax(0,1fr));}
.g5{grid-template-columns:repeat(5,minmax(0,1fr));}
.g6{grid-template-columns:repeat(6,minmax(0,1fr));}
.span2{grid-column:span 2;}

/* ===== 卡片 ===== */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);
  padding:var(--s4) var(--s4);min-width:0;overflow-x:auto;box-shadow:var(--sh);
  transition:box-shadow .18s ease,border-color .18s ease;}
.card__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:var(--s3);}
.card__h{display:flex;align-items:center;gap:8px;font-size:var(--fs-card);line-height:var(--lh-card);
  font-weight:600;letter-spacing:-.2px;color:var(--ink);}
.card__h svg{width:15px;height:15px;color:var(--soft);fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.card__more{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--faint);
  text-decoration:none;cursor:pointer;}
.card__more:hover{color:var(--ink);}

/* ===== 指标条 / KPI ===== */
.stats{display:flex;flex-wrap:wrap;gap:10px;}
.stat{flex:1;min-width:130px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 15px;}
.stat span{font-size:var(--fs-meta);color:var(--soft);display:block;margin-bottom:5px;}
.stat b{font-size:19px;font-weight:700;letter-spacing:-.4px;}
.kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;min-width:0;}
.kpi span{font-size:11px;color:var(--soft);display:block;margin-bottom:5px;white-space:nowrap;}
.kpi b{font-size:18px;font-weight:700;letter-spacing:-.4px;white-space:nowrap;}
.kpi.hl{border-color:#cfe9d9;background:linear-gradient(160deg,#fff,#f4fbf6);}

/* ===== 表格 ===== */
.tbl{width:100%;border-collapse:collapse;font-size:13px;}
.tbl th{text-align:left;font-size:var(--fs-badge);color:var(--faint);font-weight:600;text-transform:uppercase;letter-spacing:.4px;
  padding:0 10px 8px;border-bottom:1px solid var(--line);white-space:nowrap;}
.tbl td{padding:10px;border-bottom:1px solid var(--line2);white-space:nowrap;vertical-align:middle;}
.tbl tr:last-child td{border-bottom:none;}
.tbl tr:hover td{background:#fafaf7;}
.tbl .r{text-align:right;}
.tbl td b{font-weight:600;}

/* ===== 徽标 / 状态 ===== */
.pill{display:inline-flex;align-items:center;font-size:var(--fs-badge);line-height:var(--lh-badge);
  font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap;}
.pill.ok{background:var(--green-soft);color:var(--green-deep);}
.pill.warn{background:var(--amber-soft);color:#9a6403;}
.pill.risk{background:var(--red-soft);color:#c03538;}
.pill.ai{background:var(--purple-soft);color:var(--purple-deep);}
.pill.soft{background:var(--chip);color:var(--soft);}
.pill.on{background:var(--green-soft);color:var(--green-deep);}
.pill.learn{background:var(--gold-soft);color:var(--gold-deep);}
.pill.off{background:var(--chip);color:var(--soft);}

/* ===== 进度条 ===== */
.bar{height:6px;background:#efeee9;border-radius:3px;overflow:hidden;}
.bar i{display:block;height:100%;border-radius:3px;background:var(--green);}
.bar i.warn{background:var(--amber);} .bar i.risk{background:var(--red);} .bar i.ai{background:var(--purple);}

/* ===== 看板列(闭环/行动中心)===== */
.cols{display:grid;gap:12px;align-items:start;}
.col{background:#f8f8f5;border:1px solid var(--line2);border-radius:13px;padding:11px;min-width:0;}
.col__hd{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;padding:2px 4px 10px;}
.col__hd .cnt{margin-left:auto;font-size:10.5px;font-weight:700;color:var(--soft);background:#fff;border:1px solid var(--line);border-radius:999px;padding:1px 8px;}
.tcard{background:#fff;border:1px solid var(--line);border-radius:11px;padding:11px 12px;margin-bottom:9px;}
.tcard:last-child{margin-bottom:0;}
.tcard__t{font-size:13.5px;font-weight:600;line-height:1.45;}
.tcard__s{font-size:var(--fs-meta);color:var(--soft);margin-top:4px;line-height:1.5;}
.tcard__ft{display:flex;align-items:center;gap:6px;margin-top:9px;flex-wrap:wrap;}
.tcard__ft .spacer{flex:1;}
.mini{font-size:var(--fs-meta);color:var(--soft);}

/* ===== 小按钮 ===== */
.mbtn{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:#fff;color:var(--soft);
  font-size:12px;font-weight:600;font-family:inherit;border-radius:7px;padding:4px 10px;cursor:pointer;}
.mbtn:hover{background:var(--muted);}
.mbtn.solid,.mbtn.lime{background:var(--green-soft);border-color:#cfe9d9;color:var(--green-deep);}
.mbtn.danger{color:#c03538;border-color:#f2c9ca;}
.mbtn.danger:hover{background:var(--red-soft);}

/* ===== 列表行(来源/健康度式)===== */
.lrow{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid var(--line2);font-size:13px;}
.lrow:last-child{border-bottom:none;}
.lrow .grow{flex:1;min-width:0;}
.lrow b{font-weight:600;}

/* ===== 未接入(真实数据下取不到数的块 / 没接上的写动作)===== */
.nc{display:flex;flex-direction:column;gap:4px;padding:16px;border:1px dashed var(--line);border-radius:10px;
  background:var(--muted);color:var(--soft);font-size:var(--fs-meta);line-height:var(--lh-meta);}
.nc b{font-size:13px;font-weight:600;color:var(--soft);}
.stats.is-nc,.cols.is-nc{display:block;}
.nc-tag{margin-left:6px;font-size:10.5px;font-weight:600;color:var(--soft);background:var(--chip);border-radius:999px;padding:0 7px;}
button.is-nc{opacity:.6;cursor:not-allowed;}
html[data-src="gateway"] [data-demo]{display:none!important;}

/* ===== 未登录提示(真实数据)===== */
.auth-bn{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 14px;padding:14px 16px;
  border:1px solid var(--line);border-radius:12px;background:var(--panel);}
.auth-bn b{display:block;font-size:var(--fs-card);line-height:var(--lh-card);font-weight:600;}
.auth-bn span{display:block;font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--soft);margin-top:2px;}
.auth-bn .tbtn{text-decoration:none;}

/* ===== 写原因弹框(驳回 / 退回)===== */
.rsn{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:16px;}
.rsn__mask{position:absolute;inset:0;background:rgba(9,9,11,.28);}
.rsn__panel{position:relative;width:min(440px,100%);background:#fff;border:1px solid var(--line);border-radius:14px;
  padding:18px;box-shadow:0 24px 60px -20px rgba(0,0,0,.3);display:flex;flex-direction:column;gap:10px;}
.rsn__hd b{display:block;font-size:var(--fs-card);line-height:var(--lh-card);font-weight:600;}
.rsn__hd span{display:block;font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--soft);margin-top:2px;}
.rsn__in{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit;font-size:var(--fs-body);
  line-height:var(--lh-body);resize:vertical;color:var(--ink);}
.rsn__in:focus{outline:2px solid #cfe9d9;border-color:var(--green);}
.rsn__err{font-size:var(--fs-meta);color:var(--red-deep);}
.rsn__ft{display:flex;justify-content:flex-end;gap:8px;}

/* ===== 页脚说明 ===== */
.note{display:flex;gap:8px;align-items:flex-start;font-size:var(--fs-meta);color:var(--soft);line-height:1.6;
  background:#f8f8f5;border:1px solid var(--line2);border-radius:10px;padding:10px 12px;margin-top:12px;}
.note svg{width:13px;height:13px;flex:none;margin-top:2px;fill:none;stroke:currentColor;stroke-width:2;}

/* ===== toast ===== */
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,16px);display:flex;align-items:center;gap:8px;
  background:#fff;color:var(--ink);border:1px solid var(--line);font-size:13px;font-weight:500;border-radius:11px;padding:11px 17px;
  max-width:calc(100vw - 32px);opacity:0;pointer-events:none;transition:.25s;z-index:99;box-shadow:0 14px 36px -14px rgba(0,0,0,.22);}
.toast.show{opacity:1;transform:translate(-50%,0);}
.toast svg{width:14px;height:14px;flex:none;color:var(--green);fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;}

/* ===== 全局账户入口与设置中心 ===== */
.mast-account-menu{position:fixed;left:14px;bottom:76px;width:204px;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:8px;z-index:80;box-shadow:0 18px 50px -18px rgba(0,0,0,.32);animation:mastMenuIn .16s ease both;}
.mast-account-menu[hidden],.mast-settings[hidden]{display:none!important;}
@keyframes mastMenuIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.mast-account-menu__head{display:flex;align-items:center;gap:9px;padding:7px 7px 10px;border-bottom:1px solid var(--line2);}
.mast-account-menu__head div{display:flex;flex-direction:column;min-width:0;}
.mast-account-menu__head b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mast-account-menu__head small{font-size:9.5px;color:var(--soft);margin-top:3px;}
.mast-account-menu__workspace{display:flex;align-items:center;gap:6px;margin:7px 4px;padding:7px 8px;background:var(--muted);border-radius:8px;font-size:10px;color:#555;}
.mast-account-menu__workspace i{width:6px;height:6px;border-radius:50%;background:var(--green);}
.mast-account-menu__workspace code{margin-left:auto;font-size:8.5px;color:var(--faint);font-family:'JetBrains Mono',monospace;}
.mast-account-menu>button{width:100%;display:flex;align-items:center;justify-content:space-between;border:0;background:transparent;
  border-radius:8px;padding:8px 9px;color:#383835;font:500 11px inherit;cursor:pointer;}
.mast-account-menu>button:hover{background:var(--muted);}.mast-account-menu>button span{color:var(--faint);}
.mast-account-menu__foot{display:flex;align-items:center;justify-content:space-between;margin-top:5px;padding:7px 6px 2px;border-top:1px solid var(--line2);}
.mast-account-menu__foot button{border:0;background:transparent;color:var(--soft);font:500 9.5px inherit;cursor:pointer;}
.mast-account-menu__foot button:hover{color:var(--red);}.mast-account-menu__foot span{font-size:8.5px;color:var(--faint);}
body.side-collapsed .mast-account-menu{left:70px;bottom:18px;}
body.settings-open{overflow:hidden;}
.mast-settings{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;}
.mast-settings__backdrop{position:absolute;inset:0;background:rgba(18,18,16,.42);backdrop-filter:blur(3px);}
.mast-settings__dialog{position:relative;width:min(760px,calc(100vw - 40px));height:min(590px,calc(100vh - 48px));background:#fff;
  border:1px solid rgba(255,255,255,.65);border-radius:18px;overflow:hidden;box-shadow:0 30px 100px -28px rgba(0,0,0,.5);animation:mastDialogIn .2s ease both;}
@keyframes mastDialogIn{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
.mast-settings__dialog>header{height:70px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid var(--line);}
.mast-settings__dialog>header span{display:block;font-size:9px;color:var(--green);font-weight:750;letter-spacing:1.1px;margin-bottom:3px;}
.mast-settings__dialog>header h2{font-size:18px;letter-spacing:-.3px;}.mast-settings__dialog>header button{width:30px;height:30px;border:1px solid var(--line);background:#fff;border-radius:9px;font:400 20px/1 inherit;color:var(--soft);cursor:pointer;}
.mast-settings__dialog>header button:hover{background:var(--muted);color:var(--ink);}
.mast-settings__body{height:calc(100% - 70px);display:grid;grid-template-columns:190px minmax(0,1fr);}
.mast-settings__body>nav{padding:18px 12px;background:var(--muted);border-right:1px solid var(--line);}
.mast-settings__body>nav button{width:100%;border:0;background:transparent;border-radius:8px;padding:9px 11px;text-align:left;color:var(--soft);font:550 11.5px inherit;cursor:pointer;margin-bottom:3px;}
.mast-settings__body>nav button:hover{background:#eeeeea;color:var(--ink);}.mast-settings__body>nav button.on{background:#171717;color:#fff;}
.mast-settings__content{padding:26px 30px;overflow:auto;}.mast-settings__panel{display:none;}.mast-settings__panel.on{display:block;}
.mast-settings__title{margin-bottom:24px;}.mast-settings__title h3{font-size:17px;margin-bottom:5px;}.mast-settings__title p{font-size:11px;color:var(--soft);line-height:1.5;}
.mast-settings__panel>label{display:block;font-size:10.5px;font-weight:600;color:#4b4b47;margin:14px 0;}
.mast-settings__panel input,.mast-settings__panel select{display:block;width:100%;height:38px;margin-top:6px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:0 11px;color:var(--ink);font:500 11.5px inherit;outline:none;}
.mast-settings__panel input:focus,.mast-settings__panel select:focus{border-color:#9bca2c;box-shadow:0 0 0 3px rgba(201,242,76,.22);}
.mast-profile-row{display:flex;align-items:center;gap:11px;background:var(--muted);border:1px solid var(--line2);border-radius:11px;padding:11px 12px;margin-bottom:20px;}
.mast-profile-row .gc-account__avatar{width:38px;height:38px;border-radius:11px;font-size:14px;}.mast-profile-row div{display:flex;flex-direction:column;}.mast-profile-row b{font-size:12px}.mast-profile-row small{font-size:10px;color:var(--soft);margin-top:3px;}
.mast-settings__actions{display:flex;justify-content:flex-end;margin-top:22px;padding-top:16px;border-top:1px solid var(--line2);}
.mast-settings button.primary,.mast-settings button.secondary{border-radius:8px;padding:7px 13px;font:650 10.5px inherit;cursor:pointer;}
.mast-settings button.primary{border:1px solid #cfe9d9;background:var(--green-soft);color:var(--green-deep);}.mast-settings button.secondary{border:1px solid var(--line);background:#fff;color:var(--ink);}
.mast-setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 2px;border-bottom:1px solid var(--line2);}
.mast-setting-row>div{display:flex;flex-direction:column;min-width:0}.mast-setting-row b{font-size:11.5px}.mast-setting-row small{font-size:9.8px;color:var(--soft);margin-top:4px;line-height:1.45;}
.mast-connection-summary{display:flex;align-items:center;gap:8px;padding:10px 12px;margin:-7px 0 12px;border:1px solid var(--line2);border-radius:10px;background:#f8f8f5;font-size:10px;color:var(--soft);}
.mast-connection-summary b{font-size:11px;color:var(--ink);}.mast-connection-summary em{margin-left:auto;font-style:normal;color:var(--green-deep);font-weight:700;}
.mast-connection-list{display:grid;gap:8px;}.mast-connection{display:grid;grid-template-columns:34px minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:11px;background:#fff;}
.mast-connection__mark{width:32px;height:32px;border-radius:9px;background:#f1f2ed;display:grid;place-items:center;font-size:10px;font-weight:800;color:#4d5147;}
.mast-connection>div{display:flex;flex-direction:column;min-width:0}.mast-connection>div b{font-size:11px;}.mast-connection>div small{margin-top:3px;color:var(--soft);font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mast-connection__state{font-size:8.5px;font-weight:800;border-radius:999px;padding:3px 7px;white-space:nowrap;color:#9a6403;background:var(--amber-soft);}.mast-connection__state.connected,.mast-connection__state.ready{color:var(--green-deep);background:var(--green-soft);}.mast-connection__state.failed{color:var(--red);background:var(--red-soft);}
.mast-agent-step{--agent-state:#babbb4;position:relative;overflow:visible;animation:mastAgentReveal .38s cubic-bezier(.22,.8,.3,1) both;animation-delay:calc(var(--stage,0) * 70ms)}.mast-agent-step::before{content:'';position:absolute;left:-1px;top:10px;bottom:10px;width:2px;border-radius:99px;background:var(--agent-state)}.mast-agent-step.is-ready,.mast-agent-step.is-locked{--agent-state:var(--green);border-color:#d5e8db;background:linear-gradient(145deg,#fff,#f8fcf9)}.mast-agent-step.is-active{--agent-state:#805be7;border-color:#d7cdf7;box-shadow:0 0 0 3px rgba(128,91,231,.07)}.mast-agent-step.is-active .mast-connection__mark{animation:mastAgentBreath 1.35s ease-in-out infinite}.mast-agent-step+.mast-agent-step::after{content:'';position:absolute;left:25px;top:-9px;width:2px;height:9px;background:linear-gradient(var(--agent-state),#dedfd9)}
@keyframes mastAgentReveal{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes mastAgentBreath{50%{box-shadow:0 0 0 5px rgba(128,91,231,.11);transform:scale(1.04)}}
@media(prefers-reduced-motion:reduce){.mast-agent-step,.mast-agent-step.is-active .mast-connection__mark{animation:none!important}}
.mast-connection .secondary{padding:6px 9px!important;font-size:9px!important;white-space:nowrap;}.mast-connection-note{margin-top:12px;padding:9px 11px;border-left:2px solid var(--green);background:var(--green-soft);font-size:9.5px;line-height:1.5;color:var(--green-deep);}
.mast-handshake-head{display:flex;align-items:center;gap:12px;margin:22px 0 10px;padding-top:18px;border-top:1px solid var(--line2)}.mast-handshake-head>div{display:flex;flex-direction:column;gap:3px}.mast-handshake-head b{font-size:12px}.mast-handshake-head small{font-size:9px;color:var(--soft);line-height:1.45}.mast-handshake-head>span{margin-left:auto;border-radius:999px;background:#f0ebff;color:#7650d8;padding:3px 8px;font-size:8.5px;font-weight:800}.mast-handshake-command{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:7px;margin-top:10px;padding:10px;border:1px solid #d9cfff;border-radius:11px;background:#fbf9ff}.mast-handshake-command[hidden]{display:none!important}.mast-handshake-command>div{display:flex;flex-direction:column;gap:3px}.mast-handshake-command span,.mast-handshake-command small{font-size:8.5px;color:var(--soft)}.mast-handshake-command b{font:800 12px 'JetBrains Mono',monospace;color:#6742cb}.mast-handshake-command a,.mast-handshake-command button{border:1px solid #d9cfff;border-radius:7px;background:#fff;color:#6742cb;padding:6px 8px;text-decoration:none;font:700 8.5px inherit;cursor:pointer;white-space:nowrap}.mast-handshake-command small{grid-column:1/-1;line-height:1.45}
.mast-switch{width:34px;height:20px;flex:none;border:0;border-radius:999px;background:#d7d7d1;padding:2px;cursor:pointer;transition:.18s;}.mast-switch i{display:block;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.22);transition:.18s;}.mast-switch.on{background:var(--green);}.mast-switch.on i{transform:translateX(14px);}
.mast-workspace-card{display:flex;align-items:center;gap:11px;border:1px solid #d8eadf;background:#f4fbf6;border-radius:12px;padding:13px;margin-bottom:14px;}
.mast-workspace-card__mark{width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:var(--green);color:#fff;font-weight:750;}.mast-workspace-card div{display:flex;flex-direction:column;}.mast-workspace-card b{font-size:12px}.mast-workspace-card small{font-size:9.5px;color:var(--soft);margin-top:3px;}.mast-workspace-card em{margin-left:auto;font-style:normal;font-size:9px;font-weight:700;color:var(--green-deep);background:#dff3e6;border-radius:999px;padding:3px 8px;}
.mast-status{font-size:9.5px;font-weight:700;color:var(--green-deep);background:var(--green-soft);border-radius:999px;padding:4px 9px;}

/* ===== 响应式 ===== */
@media(max-width:1100px){.g4,.g5,.g6{grid-template-columns:repeat(3,minmax(0,1fr));}.cols{grid-template-columns:repeat(2,minmax(0,1fr))!important;}}
/* 窗口 ≤1080:侧栏自动收成 64px 图标栏,正文让出同样宽度,不盖正文 */
@media(max-width:1080px){
  .gc-side{width:64px;padding:18px 9px;}
  .gc-side__logo{flex-direction:column;gap:9px;padding:0 0 12px;}
  .gc-side__brand,.gc-side__grp,.gc-side__toggle,.gc-nav .label,.gc-nav .badge,.gc-account__meta,.gc-account__chev,
  .gc-tenant__head,.gc-tenant__label,.gc-tenant__picker svg{display:none;}
  .gc-nav{justify-content:center;padding:9px 0;gap:0;}
  .gc-tenant__picker{width:39px;margin:auto;padding:5px;justify-content:center;}
  .gc-account{justify-content:center;padding:7px 0;}
  .main{margin-left:64px;}
}
/* 手机 / 窄窗 ≤860:侧栏变成顶部一条可横滑的导航,不占正文宽度(growth.html 共用,故加 html body 提高优先级) */
@media(max-width:860px){
  html body .gc-side{position:sticky;top:0;display:flex;flex-direction:row;align-items:center;gap:4px;width:100%;height:auto;
    padding:8px 12px;border-right:0;border-bottom:1px solid var(--line);overflow-x:auto;overflow-y:hidden;z-index:40;
    scrollbar-width:none;}
  html body .gc-side::-webkit-scrollbar{display:none;}
  html body .gc-side__logo,html body .gc-side__grp,html body .gc-side__account,html body .gc-side__foot{display:none;}
  html body .gc-nav{flex:none;justify-content:flex-start;gap:6px;padding:7px 11px;border-radius:999px;}
  html body .gc-nav span.label{display:inline;white-space:nowrap;}
  html body .gc-nav .badge{display:none;}
  html body .gc-nav.on{box-shadow:inset 0 0 0 1px var(--line);}
  html body .main,html body .gc-main{margin-left:0;}
  .g2,.g3,.g4,.g5,.g6{grid-template-columns:1fr;}
  .cols{grid-template-columns:1fr!important;}
  .page,.topbar{padding-left:16px;padding-right:16px;}
}
@media(max-width:640px){.mast-settings{padding:10px}.mast-settings__dialog{width:100%;height:calc(100vh - 20px)}.mast-settings__body{grid-template-columns:1fr}.mast-settings__body>nav{display:flex;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);padding:8px}.mast-settings__body>nav button{white-space:nowrap;width:auto;margin:0 3px}.mast-settings__content{padding:20px}.mast-settings__body{grid-template-rows:auto minmax(0,1fr)}.mast-account-menu{left:10px;bottom:10px}}


/* =====================================================================
 * 组件系统(2026-08-12 新增)
 * 目标是让「所有模块视觉重量一样」这件事在结构上不可能发生:
 * 卡片分四类,权重递减;语义分三套,证据/反证/未知一眼可辨。
 * ===================================================================== */

/* --- 卡片四类 ------------------------------------------------------- */
/* a. Summary:第一屏主锚点,唯一允许更大内距与更强标题 */
.card--summary{padding:var(--s5) var(--s5);}
.card--summary .card__h{font-size:var(--fs-sec);line-height:var(--lh-sec);}
/* b. Metric:指标,弱边框、无阴影,不与主卡争视线 */
.card--metric{padding:var(--s3) var(--s4);box-shadow:none;background:var(--panel);}
/* c. Section:报告正文区,默认态 */
/* d. Audit:审计区,顶部一条语义色细线标明它属于哪套体系 */
.card--audit{position:relative;overflow:hidden;}
.card--audit::before{content:"";position:absolute;inset:0 0 auto 0;height:2px;}
.card--audit.is-evidence::before{background:var(--green);}
.card--audit.is-counter::before{background:var(--red);}
.card--audit.is-unknown::before{background:var(--gold);}
.card:hover{box-shadow:var(--sh-hover);}
.card--metric:hover{box-shadow:none;}

/* --- 状态芯片:状态要有质感,不是一行字 --------------------------- */
.chip{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-badge);
  line-height:var(--lh-badge);font-weight:600;padding:4px 10px;border-radius:7px;
  border:1px solid transparent;white-space:nowrap;letter-spacing:.2px;}
.chip::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex:none;}
.chip--ok{color:var(--green-deep);background:var(--green-soft);border-color:#c5e8d2;}
.chip--warn{color:var(--gold-deep);background:var(--gold-soft);border-color:#f0dcb8;}
.chip--risk{color:var(--red-deep);background:var(--red-soft);border-color:#f4cccc;}
.chip--info{color:var(--blue-deep);background:var(--blue-soft);border-color:#ccd9fb;}
.chip--soft{color:var(--soft);background:var(--chip);border-color:var(--line);}
.chip--lg{font-size:var(--fs-meta);padding:6px 12px;}

/* --- 指标:数字之外必须有一句解释,否则用户不知道它是什么 --------- */
.metric{display:flex;flex-direction:column;gap:2px;}
.metric__k{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--soft);font-weight:500;}
.metric__v{font-size:22px;line-height:28px;font-weight:600;letter-spacing:-.5px;color:var(--ink);}
.metric__n{font-size:var(--fs-badge);line-height:var(--lh-badge);color:var(--faint);}
.metric-row{display:grid;gap:var(--s3);}

/* --- 阅读路径:不是 tab,是「越往后读得越深」 ---------------------- */
.steps{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:0;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);
  overflow:hidden;box-shadow:var(--sh);}
.step{position:relative;border:0;background:transparent;font:inherit;text-align:left;cursor:pointer;
  padding:var(--s3) var(--s4);border-right:1px solid var(--line);
  transition:background .18s ease;display:flex;flex-direction:column;gap:3px;}
.step:last-child{border-right:0;}
.step:hover{background:var(--muted);}
.step__i{display:flex;align-items:center;gap:8px;font-size:var(--fs-badge);
  line-height:var(--lh-badge);color:var(--faint);font-weight:600;letter-spacing:.3px;}
.step__i b{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;
  background:var(--chip);color:var(--soft);font-size:10px;font-weight:700;flex:none;}
.step__t{font-size:var(--fs-card);line-height:var(--lh-card);font-weight:600;color:var(--ink);}
.step__d{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--soft);}
.step.on{background:var(--panel);}
.step.on::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--ink);}
.step.on .step__i b{background:var(--ink);color:#fff;}
.step.on .step__i{color:var(--ink);}
.step:focus-visible{outline:2px solid var(--blue);outline-offset:-2px;}

/* --- 审计条目:三套语义体系,结构相同、语义色不同 ------------------ */
.audit{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s2) var(--s3);
  margin-bottom:var(--s1);background:var(--panel);transition:border-color .18s ease;}
.audit:last-child{margin-bottom:0;}
.audit:hover{border-color:#d6dae0;}
.audit__h{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin-bottom:5px;}
.audit__t{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:600;color:var(--ink);}
.audit__m{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--soft);}
.audit__note{font-size:var(--fs-meta);line-height:19px;color:var(--soft);margin-top:6px;
  padding:8px 10px;background:var(--muted);border-radius:var(--r-xs);}
/* 证据体系 */
.audit--evidence{border-color:#cfe7d8;background:#fbfefc;}
/* 反证体系 */
.audit--counter{border-color:#f2d2d2;background:#fffbfb;}
.audit--counter .audit__note{background:#fdf4f4;}
/* 未知体系 */
.audit--unknown{border-style:dashed;border-color:#e9d5ac;background:#fffcf6;}
.audit--unknown .audit__note{background:#fdf7ec;}
/* 推断:虚线,与「事实」在形状上就不同 */
.audit--infer{border-style:dashed;}

/* --- 分区标题:报告感来自标题真的像标题 --------------------------- */
.sect{margin-top:var(--s5);}
.sect__h{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);
  margin-bottom:var(--s3);}
.sect__t{font-size:var(--fs-sec);line-height:var(--lh-sec);font-weight:600;letter-spacing:-.3px;}
.sect__n{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--faint);}

/* =====================================================================
 * Trace 列表(参考 Langfuse 的 observability 列表模式)
 * 一行一条记录:左轨道标状态 → 主体 → 右侧评分徽章 → 展开出结构化详情。
 * 用它取代「一堆卡片」,因为审计场景要的是密集、可扫描、可展开,
 * 而不是每条都占一个卡片的空间。
 * ===================================================================== */
.trace-list{border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;}
.trace{border-bottom:1px solid var(--line2);background:var(--panel);}
.trace:last-child{border-bottom:0;}
.trace__row{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:var(--s2);
  padding:10px var(--s3) 10px var(--s2);cursor:pointer;align-items:start;
  transition:background .14s ease;}
.trace__row:hover{background:var(--muted);}
.trace__rail{display:flex;flex-direction:column;align-items:center;padding-top:4px;height:100%;}
.trace__dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--faint);}
.trace__line{width:1px;flex:1;background:var(--line);margin-top:4px;min-height:6px;}
.trace.is-fact  .trace__dot{background:var(--green);}
.trace.is-infer .trace__dot{background:transparent;border:1.5px dashed var(--soft);width:9px;height:9px;}
.trace.is-unk   .trace__dot{background:transparent;border:1.5px dashed var(--gold);width:9px;height:9px;}
.trace__k{font-family:'JetBrains Mono',monospace;font-size:var(--fs-badge);color:var(--faint);
  letter-spacing:.2px;margin-bottom:2px;}
.trace__t{font-size:var(--fs-body);line-height:20px;font-weight:500;color:var(--ink);}
.trace__meta{display:flex;align-items:center;gap:var(--s1);flex:none;padding-top:2px;}
.trace__score{font-family:'JetBrains Mono',monospace;font-size:var(--fs-badge);
  color:var(--soft);background:var(--muted);border:1px solid var(--line);
  padding:2px 7px;border-radius:var(--r-xs);white-space:nowrap;}
.trace__chev{width:14px;height:14px;color:var(--faint);flex:none;transition:transform .18s ease;
  fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.trace.open .trace__chev{transform:rotate(90deg);}
.trace__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .22s ease;}
.trace.open .trace__body{grid-template-rows:1fr;}
.trace__body>div{overflow:hidden;}
.trace__inner{padding:0 var(--s3) var(--s3) 34px;}

/* 展开后的证据条目 = Langfuse 的 observation */
.obs{border-left:1px solid var(--line);padding:8px 0 8px var(--s3);position:relative;}
.obs::before{content:"";position:absolute;left:-3.5px;top:14px;width:6px;height:6px;
  border-radius:50%;background:var(--line);}
.obs__h{display:flex;gap:var(--s1);align-items:center;flex-wrap:wrap;margin-bottom:4px;}
.obs__tier{font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:600;
  padding:1px 5px;border-radius:4px;background:var(--green-soft);color:var(--green-deep);}
.obs__ref{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--faint);}
.obs__x{font-size:13px;line-height:20px;color:var(--soft);}
/* 结构化键值块 */
.kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px var(--s2);
  font-size:var(--fs-meta);line-height:19px;margin-top:6px;}
.kv dt{color:var(--faint);white-space:nowrap;}
.kv dd{color:var(--soft);}

/* 三套语义分区:容器层面就不同,不靠用户读字分辨 */
.audit-sec{margin-bottom:var(--s5);}
.audit-sec__h{display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s2);}
.audit-sec__t{font-size:var(--fs-card);line-height:var(--lh-card);font-weight:600;}
.audit-sec__c{font-family:'JetBrains Mono',monospace;font-size:var(--fs-badge);
  color:var(--soft);background:var(--muted);padding:2px 7px;border-radius:var(--r-xs);}
.audit-sec__n{font-size:var(--fs-meta);color:var(--faint);margin-left:auto;}
.audit-sec--evidence .trace-list{border-color:#cfe7d8;}
.audit-sec--counter  .trace-list{border-color:#f2d2d2;}
.audit-sec--unknown  .trace-list{border-color:#e9d5ac;}

/* =====================================================================
 * Runbook §26 命名别名。旧名 17 个页面在用,不改;新增别名让新组件
 * 按 Runbook 的词汇书写,两套指向同一个值。
 * ===================================================================== */
:root{
  --bg-page:var(--bg); --bg-surface:var(--panel); --bg-muted:var(--muted);
  --text-primary:var(--ink); --text-secondary:var(--soft); --text-tertiary:var(--faint);
  --border-default:var(--line);
  --semantic-success:var(--green); --semantic-warning:var(--gold);
  --semantic-danger:var(--red); --semantic-info:var(--blue);
  --radius-card:var(--r-card); --radius-small:var(--r-sm);
  --space-xs:var(--s1); --space-sm:var(--s2); --space-md:var(--s3);
  --space-lg:var(--s5); --space-xl:var(--s6);
}

/* ===== Strategy Hero(§7)==============================================
 * 整个内容区顶部,100% 宽。它只回答五件事:这个客户是谁、卖给谁、
 * 靠什么赢、当前核心打法、当前状态。技术指标一律不进 Hero。
 * ===================================================================== */
.hero{background:var(--bg-surface);border:1px solid var(--border-default);
  border-radius:var(--radius-card);padding:var(--s5) var(--s6) var(--s4);
  box-shadow:var(--sh);}
.hero__eyebrow{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  margin-bottom:var(--s3);}
.hero__label{font-size:var(--fs-badge);line-height:var(--lh-badge);font-weight:600;
  letter-spacing:1.2px;color:var(--text-tertiary);text-transform:uppercase;}
.hero__name{font-size:24px;line-height:30px;font-weight:600;letter-spacing:-.6px;
  color:var(--text-primary);}
/* §44:Strategy Thesis 是页面最大视觉锚点 —— 靠字号 + 行高 + 篇幅取得体量 */
.hero__thesis{font-size:19px;line-height:31px;font-weight:400;color:var(--text-primary);
  margin-top:var(--s3);max-width:760px;text-wrap:pretty;letter-spacing:-.1px;}
.hero__facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:var(--s4);margin-top:var(--s5);padding-top:var(--s4);
  border-top:1px solid var(--line2);}
.hero__fact{min-width:0;}
.hero__k{font-size:var(--fs-badge);line-height:var(--lh-badge);font-weight:600;
  letter-spacing:.9px;color:var(--text-tertiary);text-transform:uppercase;
  margin-bottom:6px;display:block;}
.hero__v{font-size:var(--fs-body);line-height:21px;color:var(--text-primary);font-weight:500;}
.hero__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid var(--line2);flex-wrap:wrap;}
.hero__ev{display:flex;align-items:center;gap:var(--s2);font-size:var(--fs-meta);
  color:var(--text-secondary);}
.hero__ev b{font-size:var(--fs-body);color:var(--text-primary);font-weight:600;}
.hero__cta{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-meta);
  font-weight:600;color:var(--text-primary);background:none;border:0;cursor:pointer;
  font-family:inherit;padding:6px 0;transition:gap .18s ease;}
.hero__cta:hover{gap:9px;}
.hero__cta.is-blocked{color:var(--semantic-danger);}
.hero__cta:focus-visible{outline:2px solid var(--semantic-info);outline-offset:3px;}

/* 样板数据标记 */
.sample-note{display:flex;align-items:center;gap:var(--s1);font-size:var(--fs-meta);
  color:var(--gold-deep);background:var(--gold-soft);border:1px solid #f0dcb8;
  border-radius:var(--radius-small);padding:8px 13px;margin-bottom:var(--s3);}

/* =====================================================================
 * Research Card(§9 / §10)—— Who to Win / How to Win
 * 默认只给摘要,细节走 Drawer。它比 .card 更「研究简报」而非「后台面板」:
 * 更大的标题、成组的键值、底部一个明确的深入入口。
 * ===================================================================== */
.rcard{background:var(--bg-surface);border:1px solid var(--border-default);
  border-radius:var(--radius-card);padding:var(--s5);box-shadow:var(--sh);
  display:flex;flex-direction:column;min-height:100%;}
.rcard__h{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s2);
  margin-bottom:var(--s4);}
.rcard__t{font-size:var(--fs-badge);line-height:var(--lh-badge);font-weight:600;
  letter-spacing:1.1px;text-transform:uppercase;color:var(--text-tertiary);}
.rcard__lead{font-size:17px;line-height:26px;font-weight:600;letter-spacing:-.3px;
  color:var(--text-primary);margin-bottom:var(--s4);text-wrap:pretty;}
.rcard__rows{display:flex;flex-direction:column;gap:var(--s3);flex:1;}
.rrow{display:grid;grid-template-columns:96px minmax(0,1fr);gap:var(--s3);align-items:baseline;}
.rrow__k{font-size:var(--fs-badge);line-height:18px;font-weight:600;letter-spacing:.5px;
  color:var(--text-tertiary);text-transform:uppercase;}
.rrow__v{font-size:var(--fs-body);line-height:21px;color:var(--text-primary);}
.rrow__v .muted{color:var(--text-secondary);}
.rcard__foot{margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid var(--line2);}
.linkbtn{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-meta);
  font-weight:600;color:var(--text-primary);background:none;border:0;cursor:pointer;
  font-family:inherit;padding:4px 0;transition:gap .18s ease;}
.linkbtn:hover{gap:9px;}
.linkbtn:focus-visible{outline:2px solid var(--semantic-info);outline-offset:3px;}
.tagset{display:flex;flex-wrap:wrap;gap:6px;}
.tag{font-size:var(--fs-badge);line-height:var(--lh-badge);padding:2px 8px;
  border-radius:var(--r-xs);background:var(--bg-muted);color:var(--text-secondary);
  border:1px solid var(--line2);}
.tag--no{background:var(--red-soft);color:var(--red-deep);border-color:#f4cccc;}

/* ===== Evidence Health(§11)==========================================
 * 把散落的覆盖率/强度/反证/未知收敛成一个对象。
 * 首页只给「83% + 四个计数 + 待解决项」,强度 0.647 这类进详细审计。
 * ===================================================================== */
.health__big{display:flex;align-items:baseline;gap:var(--s2);margin-bottom:var(--s2);}
.health__pct{font-size:34px;line-height:38px;font-weight:600;letter-spacing:-1.2px;}
.health__cap{font-size:var(--fs-meta);color:var(--text-secondary);}
.health__bar{display:flex;height:6px;border-radius:3px;overflow:hidden;
  background:var(--line2);margin-bottom:var(--s3);}
.health__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s2) var(--s3);}
.hstat{display:flex;align-items:center;gap:var(--s1);font-size:var(--fs-meta);
  color:var(--text-secondary);}
.hstat b{font-family:'JetBrains Mono',monospace;font-size:var(--fs-body);
  color:var(--text-primary);font-weight:600;}
.hstat i{width:8px;height:8px;border-radius:2px;flex:none;}
/* §12 四种状态的视觉语义 —— 形状 + 颜色双编码 */
.hstat i.fact{background:var(--semantic-success);}
.hstat i.infer{background:transparent;border:1.5px dashed var(--text-secondary);border-radius:50%;}
.hstat i.counter{background:var(--semantic-danger);}
.hstat i.unknown{background:transparent;border:1.5px dashed var(--semantic-warning);border-radius:50%;}

/* ===== Forward Signals(§13)==========================================
 * ABM → Prediction 的桥。未 CONFIRMED 时为 Locked —— 系统必须先理解
 * 客户是谁,才有资格判断什么变化值得客户关注。
 * ===================================================================== */
.fwd__lock{display:flex;flex-direction:column;gap:var(--s2);align-items:flex-start;}
.fwd__lockicon{width:30px;height:30px;border-radius:var(--r-sm);display:grid;place-items:center;
  background:var(--bg-muted);border:1px solid var(--border-default);color:var(--text-tertiary);}
.fwd__lockicon svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;}
.fwd__msg{font-size:var(--fs-body);line-height:21px;color:var(--text-secondary);max-width:44ch;}
.fwd__count{font-size:var(--fs-meta);color:var(--text-tertiary);}
.fwd__list{display:flex;flex-direction:column;gap:0;}
.fwd__item{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);
  padding:9px 0;border-bottom:1px solid var(--line2);font-size:var(--fs-body);}
.fwd__item:last-child{border-bottom:0;}

/* ===== Drawer(§39 Evidence Detail)================================== */
.drawer{position:fixed;inset:0;z-index:60;display:none;}
.drawer.on{display:block;}
.drawer__bd{position:absolute;inset:0;background:rgba(9,9,11,.32);
  animation:dfade .18s ease;}
.drawer__panel{position:absolute;top:0;right:0;bottom:0;width:min(680px,92vw);
  background:var(--bg-surface);border-left:1px solid var(--border-default);
  display:flex;flex-direction:column;animation:dslide .24s cubic-bezier(.22,1,.36,1);}
@keyframes dfade{from{opacity:0}to{opacity:1}}
@keyframes dslide{from{transform:translateX(24px);opacity:.6}to{transform:none;opacity:1}}
.drawer__h{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  padding:var(--s4) var(--s5);border-bottom:1px solid var(--border-default);flex:none;}
.drawer__t{font-size:var(--fs-card);line-height:var(--lh-card);font-weight:600;}
.drawer__x{width:28px;height:28px;border-radius:var(--r-xs);border:1px solid var(--border-default);
  background:var(--bg-surface);cursor:pointer;color:var(--text-secondary);display:grid;
  place-items:center;flex:none;font-size:15px;line-height:1;font-family:inherit;}
.drawer__x:hover{background:var(--bg-muted);color:var(--text-primary);}
.drawer__b{padding:var(--s5);overflow-y:auto;flex:1;}
@media(prefers-reduced-motion:reduce){.drawer__panel,.drawer__bd{animation:none;}}
