/* Eva identity card: one shared surface. Semi owns the modal shell and buttons,
   GDS semantic tokens own the geometry/color, identity projections own the data. */
/* 关闭按钮几何由父容器统一声明：标题栏右侧预留空间、关闭尺寸与垂直居中位置都从这里推导，
   避免标题栏和关闭各自写死一份数字后再次失去同步。无标题栏状态（头像编辑器等）以 close-inset 作顶距。 */
.eva-person-card-modal{--eva-person-card-close:var(--gds-space-8);--eva-person-card-close-inset:var(--gds-space-4);--eva-person-card-head-height:56px}
.eva-person-card-modal .semi-modal{max-width:calc(100vw - 2 * var(--gds-space-4))}
.eva-person-card-modal .semi-modal-content{position:relative;padding:0;overflow:hidden;border-radius:var(--eva-radius-panel);background:var(--semi-color-bg-2);box-shadow:var(--eva-shadow-floating)}
/* Semi 的弹窗头在 title 为空时只剩关闭控件；资料卡自带头部，这里把默认头收敛掉。 */
.eva-person-card-modal .semi-modal-header{margin:0;padding:0;min-height:0}
.eva-person-card-modal .semi-modal-body-wrapper{display:block;margin:0;width:100%}
.eva-person-card-modal .semi-modal-body{padding:0;margin:0;width:100%;max-width:none}
.eva-person-card-modal .semi-modal-close{position:absolute;top:var(--eva-person-card-close-inset);right:var(--eva-person-card-close-inset);width:var(--eva-person-card-close);height:var(--eva-person-card-close);min-width:var(--eva-person-card-close);min-height:var(--eva-person-card-close);display:flex;align-items:center;justify-content:center;margin:0;z-index:3}
/* 有标题栏时，关闭按标题栏行中心对齐；与下方 __head 的右侧预留同源，改标题栏高度即同步。 */
.eva-person-card-modal .semi-modal-content:has(.eva-person-card__head) .semi-modal-close{top:calc((var(--eva-person-card-head-height) - var(--eva-person-card-close)) / 2)}

.eva-person-card{position:relative;display:flex;flex-direction:column;max-height:calc(100dvh - var(--topbar-height) - 2 * var(--gds-space-4) - 2 * var(--gds-border-standard));color:var(--semi-color-text-0);font-size:var(--gds-type-label-font-size);line-height:var(--gds-type-label-line-height)}
/* 资料卡 Portal 挂在 body 上，脱离应用内全局 border-box 作用域；满宽行 + 内边距必须自带盒模型。 */
.eva-person-card,.eva-person-card *{box-sizing:border-box}

/* 标题栏：左上返回（标准 Semi 圆形图标按钮，仅在可返回层出现），右上关闭由 Semi 承担。 */
.eva-person-card__head{flex:none;display:flex;align-items:center;gap:var(--gds-space-2);height:var(--eva-person-card-head-height);padding:0 calc(var(--eva-person-card-close-inset) + var(--eva-person-card-close) + var(--gds-space-3)) 0 var(--gds-space-6);border-bottom:1px solid var(--semi-color-border)}
.eva-person-card__title{min-width:0;margin:0;font-size:var(--gds-type-header-font-size);line-height:var(--gds-type-header-line-height);font-weight:var(--gds-font-weight-semibold);color:var(--semi-color-text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eva-person-card__back{flex:none;width:var(--gds-space-8);height:var(--gds-space-8);min-width:var(--gds-space-8);min-height:var(--gds-space-8);padding:0;margin:0;border-radius:var(--gds-radius-control);color:var(--semi-color-text-1)}

.eva-person-card__scroll{min-height:0;flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;padding:var(--eva-person-card-pad) var(--eva-person-card-pad) var(--eva-person-card-block-gap)}

/* 抬头：左对齐头像 + 名称/类型。 */
.eva-person-card__identity{display:flex;align-items:center;gap:var(--eva-person-card-inline-gap);text-align:left}
.eva-person-card__avatar{position:relative;display:inline-flex;flex:none}
/* 「更换头像」入口：复用头像编辑器的悬停配方（灰蒙版裁在圆内 + 居中相机）。
   点击即直传图片，不打开大编辑器；常态不可见（弹窗自动聚焦也不显示），仅悬停或键盘聚焦时显示；
   右下角 Eva 角标始终在蒙版之上。 */
.eva-person-card__avatar-edit{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:50%;background:rgba(0,0,0,.42);color:var(--semi-color-white,#fff);cursor:pointer;opacity:0;transition:opacity .15s ease;z-index:1}
.eva-person-card__avatar:hover .eva-person-card__avatar-edit,
.eva-person-card__avatar-edit:focus-visible{opacity:1}
.eva-person-card__avatar-edit:focus-visible{outline:var(--gds-border-focus) solid var(--gds-color-border-focus);outline-offset:var(--gds-space-0-5)}
.eva-profile-human-avatar{display:block;object-fit:cover;border-radius:50%;flex:none}
.eva-person-card__heading{min-width:0;display:flex;flex-direction:column;gap:var(--gds-space-1)}
.eva-person-card__name-row{display:flex;align-items:center;gap:var(--gds-space-2);min-width:0}
.eva-person-card__name-row h2{min-width:0;margin:0;font-size:var(--gds-type-header-font-size);line-height:var(--gds-type-header-line-height);font-weight:var(--gds-font-weight-semibold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eva-person-card__name-row .ai-badge{flex:none}
.eva-person-card__type{margin:0;color:var(--semi-color-text-2);font-size:var(--gds-type-caption-font-size);line-height:var(--gds-type-caption-line-height)}

/* ── 资料卡文字层级：三级，字号只取 GDS type token，不新增字号 ───────────────────
   L1 标题/姓名  16 / 24  semibold  --semi-color-text-0
   L2 行主值     14 / 22  medium    --semi-color-text-0
   L2 行标签     14 / 22  regular   --semi-color-text-1
   L3 副值与说明 12 / 16  regular   --semi-color-text-2（部门上层链路、行说明、类型、提示）
   行内层级靠三件事拉开：标签退到次要色、主值加重、副值降号降色；不靠缩进或额外装饰。 */

/* 资料区：填充式圆角行，统一为「固定标签列 + 左对齐值列」。标签列宽单点声明，
   全卡的值都从同一条 x 起排——这是左对齐版式能成立的前提。 */
/* ── 间距父容器规范：卡内所有纵向节奏与内边距只从这里取值 ─────────────────────
   block-gap  16 区块间距（抬头→资料区、资料区→操作区、免 @ 页提示与分节、滚动区收底）
   row-gap    12 资料行间距；也是部门行胶囊的底部内边距（行内底部空腔与行间呼吸同一个数）
   inline-gap 12 行内横向间距（标签↔值、抬头头像↔名称、所属人头像↔姓名）
   row-label  64 = 52 + 12：列宽由最长标签决定——「免 @ 回答」实测 63.3px，64 恰好容纳；
   短标签的空腔因此收到一个行内距的量级（部门 48 / 所属人 34 / 免 @ 回答 13），值列仍同一条 x 起排。
   pad        24 滚动区顶/左右内边距；row-pad-x 20 胶囊行内左右内边距
   row-anchor (52 − 22) / 2 首行锚点顶距：部门、简介等「从首行起排」的行由此推导
   两态卡片（真人 / 分身）共用这一份声明；子选择器禁止再写这些场景的死数字。 */
.eva-person-card{
 --eva-person-card-row-label:calc(var(--gds-space-13) + var(--gds-space-3));
 --eva-person-card-block-gap:var(--gds-space-4);
 --eva-person-card-row-gap:var(--gds-space-3);
 --eva-person-card-inline-gap:var(--gds-space-3);
 --eva-person-card-pad:var(--gds-space-6);
 --eva-person-card-row-pad-x:var(--gds-space-5);
 --eva-person-card-row-anchor:calc((var(--gds-space-13) - var(--gds-type-label-line-height)) / 2)}
.eva-person-card__details{display:flex;flex-direction:column;gap:var(--eva-person-card-row-gap);margin-top:var(--eva-person-card-block-gap)}
.eva-person-card__row{display:flex;align-items:center;gap:var(--eva-person-card-inline-gap);width:100%;min-height:var(--gds-space-13);margin:0;padding:0 var(--eva-person-card-row-pad-x);border:0;border-radius:var(--gds-radius-chip);background:var(--eva-surface-subtle);color:var(--semi-color-text-0);text-align:left;font-size:var(--gds-type-label-font-size);line-height:var(--gds-type-label-line-height)}
.eva-person-card__row-label{flex:0 0 auto;width:var(--eva-person-card-row-label);color:var(--semi-color-text-1);white-space:nowrap}
.eva-person-card__row-value{flex:1 1 auto;min-width:0;display:flex;align-items:center;justify-content:flex-start;color:var(--semi-color-text-0);font-weight:var(--gds-font-weight-medium);overflow-wrap:anywhere}
.eva-person-card__row p{margin:0}
/* 值会换行的行（简介）：标签仍留在标签列，标签与值的第一行对齐（同一 15px 顶距口径），正文左对齐换行。 */
.eva-person-card__row--multiline{align-items:flex-start;padding-top:var(--eva-person-card-row-anchor);padding-bottom:var(--eva-person-card-row-anchor)}
.eva-person-card__row--multiline .eva-person-card__row-value{display:block;font-weight:var(--gds-font-weight-regular);white-space:pre-wrap}
/* 「部门」按企业微信名片的信息层级（末级大字、上层链路小字）。
   第一行严格与其他行落在同一条文字中心线上（顶距 (52-22)/2 = 15）；
   52 是单行行的网格，两行块若也压进 52，副行小字会贴死胶囊底边（余量 ≤3px，视觉上像溢出），
   所以此行随内容增高、底部留出正常内边距；链路换行时同样自然增长，不截断。 */
.eva-person-card__row--org{align-items:flex-start;padding-top:var(--eva-person-card-row-anchor);padding-bottom:var(--eva-person-card-row-gap)}
.eva-person-card__row--org .eva-person-card__row-value{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:2px;font-weight:var(--gds-font-weight-regular)}
.eva-person-card__org-leaf{font-weight:var(--gds-font-weight-medium);word-break:keep-all;overflow-wrap:anywhere}
.eva-person-card__org-path{color:var(--semi-color-text-2);font-size:var(--gds-type-caption-font-size);line-height:var(--gds-type-caption-line-height);word-break:keep-all;overflow-wrap:anywhere}

/* 行内可点击值：去掉 Semi 按钮的壳，只保留内容与命中区。 */
.eva-person-card__details .eva-person-card__row .semi-button{height:auto;min-height:0;padding:0;max-width:100%;vertical-align:top;text-align:left;font-size:inherit;line-height:inherit;font-weight:inherit}
.eva-person-card__person-link .semi-button-content{display:flex;align-items:center;gap:var(--eva-person-card-inline-gap);min-width:0}
.eva-person-card__person-link .semi-button-content>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.eva-person-card__project-link .semi-button-content{display:flex;min-width:0;max-width:100%}
.eva-project-identity{display:inline-flex;align-items:center;gap:var(--gds-space-1);min-width:0;max-width:100%;color:inherit}
.eva-project-identity svg{flex:none}
.eva-project-identity__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 「免 @ 回答」行：整行可点，结构与普通行一致——标签列 + 值列（说明文案）+ 最右 chevron。
   本人分身的 Bot 免 @ 回答入口。 */
.eva-person-card__details>button.eva-person-card__row--button{display:flex;align-items:center;gap:var(--eva-person-card-inline-gap);width:100%;min-height:var(--gds-space-13);margin:0;padding:0 var(--eva-person-card-row-pad-x);border:0;border-radius:var(--gds-radius-chip);background:var(--eva-surface-subtle);color:var(--semi-color-text-0);text-align:left;cursor:pointer;font-size:var(--gds-type-label-font-size);line-height:var(--gds-type-label-line-height);font-weight:var(--gds-font-weight-regular)}
.eva-person-card__details>button.eva-person-card__row--button:hover{background:var(--semi-color-fill-1)}
.eva-person-card__details>button.eva-person-card__row--button:active{background:var(--semi-color-fill-2)}
.eva-person-card__details>button.eva-person-card__row--button:focus-visible{outline:var(--gds-border-focus) solid var(--gds-color-border-focus);outline-offset:var(--gds-space-0-5)}
.eva-person-card__details>button.eva-person-card__row--button .semi-button-content{display:flex;align-items:center;justify-content:flex-start;gap:var(--eva-person-card-inline-gap);width:100%}
.eva-person-card__details>button.eva-person-card__row--button .eva-person-card__row-value{font-weight:var(--gds-font-weight-regular)}
/* 导航/开关类控件仍留在行最右：左对齐说的是值列，不是控件。 */
.eva-person-card__row-chevron{flex:none;margin-left:auto;color:var(--semi-color-text-2)}
.eva-person-card__row-desc{color:var(--semi-color-text-2);font-size:var(--gds-type-caption-font-size);line-height:var(--gds-type-caption-line-height)}

/* 「免 @ 回答」：按群开关，已开启在上，其余在下；整块用细边框列表，避免一层灰药丸摞一层灰药丸。 */
.eva-person-card__mention-hint{margin:0 0 var(--eva-person-card-block-gap);color:var(--semi-color-text-2);font-size:var(--gds-type-caption-font-size);line-height:var(--gds-type-caption-line-height)}
.eva-person-card__mention-section+.eva-person-card__mention-section{margin-top:var(--eva-person-card-block-gap)}
.eva-person-card__mention-section-title{margin:0 0 var(--gds-space-2);color:var(--semi-color-text-2);font-size:var(--gds-type-caption-font-size);line-height:var(--gds-type-caption-line-height);font-weight:var(--gds-font-weight-medium)}
.eva-person-card__mention-list{display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--semi-color-border);border-radius:var(--gds-radius-chip)}
.eva-person-card__mention-row{display:flex;align-items:center;justify-content:space-between;gap:var(--gds-space-3);min-height:var(--gds-space-13);padding:var(--gds-space-2) var(--gds-space-5)}
.eva-person-card__mention-row+.eva-person-card__mention-row{border-top:1px solid var(--semi-color-border)}
.eva-person-card__mention-main{min-width:0;display:flex;flex-direction:column;gap:2px}
.eva-person-card__mention-name{min-width:0;color:var(--semi-color-text-0);font-size:var(--gds-type-label-font-size);line-height:var(--gds-type-label-line-height);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eva-person-card__mention-status{color:var(--semi-color-text-2);font-size:var(--gds-type-caption-font-size);line-height:var(--gds-type-caption-line-height)}
.eva-person-card__mention-row>.semi-switch{flex:none}
.eva-person-card__mention-empty{margin:0;padding:var(--gds-space-8) 0;color:var(--semi-color-text-2);text-align:center;font-size:var(--gds-type-label-font-size);line-height:var(--gds-type-label-line-height)}

/* 底部：整宽主行动，或居中提示文案。主按钮配色统一走 GDS「实心主按钮三件套」，
   组件只下发 Semi 的 primary 变量、不自己重画底色，避免状态被 Semi 默认样式抢走后黑跳蓝。 */
.eva-person-card__actions{flex:none;display:flex;flex-direction:column;gap:var(--gds-space-2);padding:var(--eva-person-card-block-gap) var(--eva-person-card-pad) var(--gds-space-5);border-top:1px solid var(--semi-color-border)}
.eva-person-card__actions>.semi-button{height:44px;min-height:44px;border-radius:var(--gds-radius-chip);font-size:var(--gds-type-body-medium-font-size);font-weight:var(--gds-font-weight-medium)}
.eva-person-card__cta{--semi-color-primary:var(--eva-action-primary-solid);--semi-color-primary-hover:var(--eva-action-primary-solid-hover);--semi-color-primary-active:var(--eva-action-primary-solid-hover);color:var(--eva-action-primary-solid-text)}
.eva-person-card__hint{margin:0;padding:var(--gds-space-2) 0;color:var(--semi-color-text-2);text-align:center;font-size:var(--gds-type-label-font-size);line-height:var(--gds-type-label-line-height)}
.eva-person-card__error{margin:0 0 var(--gds-space-3);color:var(--semi-color-danger);font-size:var(--gds-type-caption-font-size);line-height:var(--gds-type-chip-line-height)}
.eva-person-card__unavailable{margin:0;padding:var(--gds-space-12) var(--gds-space-6) var(--gds-space-6);color:var(--semi-color-text-1)}
.eva-identity-portal{position:fixed;inset:var(--topbar-height) 0 0;z-index:1000;pointer-events:none}
.eva-identity-portal .semi-modal-mask,.eva-identity-portal .semi-modal-wrap{position:absolute;inset:0;height:100%;pointer-events:auto}

@media(max-width:480px){
 /* 窄视口只收外层内边距；标签列宽随父容器单点声明，不再另设例外。 */
 .eva-person-card__scroll{padding:var(--gds-space-5)}
 .eva-person-card__actions{padding-left:var(--gds-space-5);padding-right:var(--gds-space-5)}
 .eva-person-card__head{padding-left:var(--gds-space-5)}
}
