/* ===== 超宽屏（1K/2K/3K）适配 2026-10-21 ===== */
/* 内容限宽居中：避免 2560/3840 下正文拉成一条长线 */
/* R5-023：超宽屏上限统一走 --shell 令牌（tokens.css 定义 1920px），不再逐选择器写死 */
@media (min-width:2200px){
  :root{--shell:2200px}
  .split{width:100%}
}
@media (min-width:3000px){
  :root{--shell:2560px;--gap:26px}
}

/* 网格随宽度增列，避免卡片被拉得过大 */
@media (min-width:1600px){
  .tools{grid-template-columns:repeat(6,minmax(0,1fr))}
  .kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
  .minis{grid-template-columns:repeat(6,minmax(0,1fr))}
  .svc-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .dash-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}
@media (min-width:2200px){
  .kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
  .dash-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}
  .split{grid-template-columns:minmax(0,1fr) clamp(320px,22vw,380px)}
}

/* ===== 版式统一修正（2026-10-21 审计驱动） ===== */
/* 1) 说明文字限宽，避免 1920/2560 下拉成超长行 */
.note,.sub,.panel > p,.panel-h p,.verdict p{max-width:76ch}

/* 2) 卡片等高：同一行内不出现高低参差 */
.tools,.svc-grid,.dash-grid,.minis,.kpis,.vip-grid{align-items:stretch}
.tools > *,.svc-grid > *,.dash-grid > *,.vip-grid > *{height:100%}
.dash-grid > .panel,.vip-grid > .panel{display:flex;flex-direction:column}
.dash-grid > .panel > .stack,.vip-grid > .panel > .stack{flex:1 1 auto}

/* 3) 点击区高度：导航与页脚链接至少 32px */
.nav a{display:inline-flex;align-items:center;min-height:32px;padding:6px 10px}
.ft-links a{display:inline-flex;align-items:center;min-height:32px;padding:4px 0}
.more{display:inline-flex;align-items:center;min-height:28px}

/* 4) 表格操作列按钮统一尺寸，避免行高不齐 */
.tbl .acts-cell .more,.tbl td .more{min-height:28px;padding:0 6px;font-size:var(--t-xs)}

/* 5) 页脚留白 */
.ft{padding-block:24px}

/* 6) 小号文字链接的点击区与行宽 */
.auth a,.authcard a,.links a,.ft-links a{display:inline-flex;align-items:center;min-height:32px}
.src-note,.ann-body .src-note,footer .src-note{max-width:76ch}

/* 7) 公告条重排：图标 / 标签 / 标题 / 来源 / 入口 五段对齐 */
.announce{gap:14px;padding:14px 20px}
.announce .ann-ico{width:34px;height:34px;border-radius:var(--r-md)}
.announce .ann-tag{flex:0 0 auto;height:24px;display:inline-flex;align-items:center;padding:0 10px;border-radius:999px;background:var(--blue-soft);color:var(--blue);font-size:var(--t-xs);font-weight:500}
.announce .ann-t{font-size:var(--t-body);font-weight:500;color:var(--ink)}
.announce .ann-body{display:flex;align-items:center;gap:12px;min-width:0;flex:1 1 auto}
.announce .ann-body .src-note{flex:0 0 auto;padding-left:12px;border-left:1px solid var(--line)}
.announce .ann-more{flex:0 0 auto}
@media (max-width:760px){
  .announce{align-items:flex-start;flex-wrap:wrap}
  .announce .ann-body{flex-wrap:wrap}
  .announce .ann-body .src-note{border-left:none;padding-left:0}
}

/* 8) 后台：最近操作占满整行 */
.svc-grid .svc-wide{grid-column:1/-1}
.svc-grid .svc-wide .table-scroll{margin-top:8px}

/* 9) 头像设置模块 */
/* R4-033：头像区与「账号安全」共用一套栅格（图标 32 / 缩进 44 / 头像 44）
   头像预览从 88px 方块收到 44px 圆形，与身份行头像、默认头像预设同尺寸，
   纵向起始线挂在 --pf-row 行高上，两列卡片的头行中心线平齐。 */
.avatar-set{display:grid;grid-template-columns:var(--pf-av,44px) minmax(0,1fr);column-gap:12px;align-items:start}
.avatar-prev{
  width:var(--pf-av,44px);height:var(--pf-av,44px);border-radius:50%;overflow:hidden;
  background:var(--wash);display:grid;place-items:center;
  margin-top:calc((var(--pf-row,78px) - var(--pf-av,44px)) / 2);
  box-shadow:inset 0 0 0 1px var(--line-soft);
}
.avatar-prev img{width:100%;height:100%;object-fit:cover;display:block}
.avatar-prev span{font-size:var(--t-body);font-weight:600;color:var(--blue)}
.avatar-opts{flex:1 1 320px;min-width:0}
.avatar-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.avatar-opt{width:var(--pf-av,44px);height:var(--pf-av,44px);border-radius:var(--r-m);overflow:hidden;border:2px solid transparent;padding:0;background:none;cursor:pointer}
.avatar-opt img{width:100%;height:100%;display:block;object-fit:cover}
.avatar-opt[aria-pressed=true]{border-color:var(--blue)}
.avatar-upload{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}

/* 个人资料：三段式布局（宽屏两列） */
[data-profile-body]{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gap)}
@media (min-width:1100px){
  /* R5-014：头像 / 账号安全 两卡等宽并排，align-items:stretch + 内容自适应撑高，
     不写死高度也不裁内容；身份行与基本信息仍整行铺开。 */
  [data-profile-body]{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch}
  [data-profile-body] > .panel:nth-child(1),
  [data-profile-body] > .panel:nth-child(2){grid-column:1/-1}
}
/* R5-015：退出登录整行横条，宽度 = 两卡合起来的整行宽度 */
.pf-logout{grid-column:1/-1;display:flex;flex-direction:column;gap:10px}
[data-profile-body] .pf-logout-bar{
  width:100%;min-height:52px;padding:14px 22px;
  border-radius:var(--r-m);
  background:var(--card);color:var(--red);
  font-size:var(--t-body);font-weight:500;
  box-shadow:inset 0 0 0 1px var(--red-line);
}
[data-profile-body] .pf-logout-bar:hover{background:var(--red);color:var(--card);box-shadow:inset 0 0 0 1px var(--red)}
[data-profile-body] .pf-logout-bar:active{transform:translateY(1px)}
[data-profile-body] .pf-logout-bar svg{width:18px;height:18px}
.pf-logout-note{margin:0}
[data-profile-body] .panel{padding:clamp(18px,2vw,26px)}
/* 行距交给 grid gap，卡片自带的外边距会让间距忽大忽小 */
[data-profile-body] > *{margin-bottom:0}
[data-profile-body] .panel-h{margin-bottom:14px}
[data-profile-body] .stack > form{margin-top:6px}
