/* 人员绩效视图(TeamKpiView)专属样式:仅消费 social-v2.css 的 token,类名前缀 sbi-kpi-。 金银铜名次徽标与图表网格色 #eef3f9 为本视图的功能色,其余颜色一律走 token。 */ .sbi-kpi-view { display: flex; flex-direction: column; gap: 16px; } /* ---------- Hero:1 大卡(环形进度)+ 3 小卡 ---------- */ .sbi-kpi-hero { display: grid; grid-template-columns: minmax(0, 1.8fr) repeat(3, minmax(0, 1fr)); gap: 16px; } .sbi-kpi-hero-body { display: flex; align-items: center; gap: 28px; padding: 18px; } .sbi-kpi-ring { --sbi-kpi-pct: 0; display: grid; flex: none; width: 138px; height: 138px; place-items: center; border-radius: 50%; background: conic-gradient(var(--sbi-accent) calc(var(--sbi-kpi-pct) * 1%), #eef3f9 0); } .sbi-kpi-ring-hole { display: grid; gap: 2px; width: 104px; height: 104px; place-content: center; place-items: center; border-radius: 50%; background: var(--sbi-card); } .sbi-kpi-ring-hole strong { font-size: 22px; font-variant-numeric: tabular-nums; } .sbi-kpi-ring-hole strong.is-muted { color: var(--sbi-text-3); font-size: 14px; font-weight: 700; } .sbi-kpi-ring-hole small { color: var(--sbi-text-3); font-size: 11px; } .sbi-kpi-hero-stats { display: grid; flex: 1; gap: 11px; min-width: 0; margin: 0; } .sbi-kpi-hero-stats > div { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding-bottom: 9px; border-bottom: 1px dashed var(--sbi-border); } .sbi-kpi-hero-stats > div:last-child { padding-bottom: 0; border-bottom: 0; } .sbi-kpi-hero-stats dt { color: var(--sbi-text-2); font-size: 12.5px; } .sbi-kpi-hero-stats dd { margin: 0; font-size: 17px; font-weight: 720; font-variant-numeric: tabular-nums; } .sbi-kpi-mini { display: flex; flex-direction: column; justify-content: center; gap: 5px; padding: 16px 18px; } .sbi-kpi-mini-label { align-self: flex-start; color: var(--sbi-text-2); font-size: 12.5px; font-weight: 640; } .sbi-kpi-mini-value { font-size: 22px; font-weight: 760; font-variant-numeric: tabular-nums; } .sbi-kpi-mini-note { color: var(--sbi-text-3); font-size: 11.5px; } /* ---------- 排行榜 ---------- */ .sbi-kpi-board-scroll { max-height: 620px; margin-top: 12px; border-radius: 0 0 var(--sbi-radius) var(--sbi-radius); } .sbi-kpi-rank { display: inline-grid; width: 24px; height: 24px; place-items: center; border-radius: 50%; background: #f1f5fa; color: var(--sbi-text-2); font-size: 12px; font-weight: 740; font-variant-numeric: tabular-nums; } .sbi-kpi-rank.is-gold { background: linear-gradient(135deg, #f6c34c, #d28f0e); color: #ffffff; } .sbi-kpi-rank.is-silver { background: linear-gradient(135deg, #cfd8e3, #97a4b4); color: #ffffff; } .sbi-kpi-rank.is-bronze { background: linear-gradient(135deg, #d9a06b, #a56a3c); color: #ffffff; } .sbi-kpi-person { display: grid; gap: 2px; } .sbi-kpi-person-top { display: flex; align-items: center; gap: 6px; } .sbi-kpi-person small { color: var(--sbi-text-3); font-size: 11.5px; } .sbi-kpi-app { display: inline-flex; align-items: center; gap: 7px; } .sbi-kpi-app-dot { flex: none; width: 8px; height: 8px; border-radius: 50%; } .sbi-kpi-attain { display: inline-flex; align-items: center; gap: 8px; } .sbi-kpi-bar { display: inline-block; width: 96px; height: 6px; overflow: hidden; border-radius: 999px; background: #eef3f9; } .sbi-kpi-bar-fill { display: block; height: 100%; border-radius: 999px; background: var(--sbi-accent-grad); } .sbi-kpi-bar-fill.is-done { background: var(--sbi-up); } .sbi-kpi-attain-value { min-width: 52px; text-align: right; font-variant-numeric: tabular-nums; } .sbi-kpi-no-target { color: var(--sbi-text-3); font-size: 12px; } /* ---------- 骨架 ---------- */ .sbi-kpi-hero-loading { display: flex; align-items: center; gap: 28px; padding: 18px; } .sbi-kpi-skeleton-ring { flex: none; width: 138px; height: 138px; border-radius: 50%; } .sbi-kpi-skeleton-lines { display: grid; flex: 1; gap: 14px; } .sbi-kpi-table-skeleton { display: grid; gap: 14px; padding: 18px; } /* ---------- 配置目标抽屉 ---------- */ .sbi-kpi-drawer-mask { position: fixed; inset: 0; z-index: 60; background: rgba(16, 27, 45, 0.42); } .sbi-kpi-drawer { position: absolute; top: 0; right: 0; bottom: 0; display: flex; flex-direction: column; width: min(760px, 94vw); border-left: 1px solid var(--sbi-border); background: var(--sbi-card); box-shadow: var(--sbi-shadow); animation: sbi-kpi-slide-in 180ms ease; } @keyframes sbi-kpi-slide-in { from { transform: translateX(28px); opacity: 0; } to { transform: translateX(0); opacity: 1; } } .sbi-kpi-drawer-header { display: flex; align-items: flex-start; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--sbi-border); } .sbi-kpi-drawer-title { display: grid; gap: 3px; } .sbi-kpi-drawer-title strong { font-size: 15px; } .sbi-kpi-drawer-title small { color: var(--sbi-text-3); font-size: 12px; } .sbi-kpi-drawer-close { display: grid; width: 30px; height: 30px; place-items: center; margin-left: auto; border: 1px solid var(--sbi-border); border-radius: 8px; background: var(--sbi-card); color: var(--sbi-text-2); font-size: 16px; line-height: 1; cursor: pointer; } .sbi-kpi-drawer-close:hover { border-color: var(--sbi-accent); color: var(--sbi-accent); } .sbi-kpi-drawer-body { flex: 1; overflow: auto; padding: 0 20px; } .sbi-kpi-drawer-footer { display: flex; align-items: center; justify-content: flex-end; gap: 10px; padding: 14px 20px; border-top: 1px solid var(--sbi-border); } .sbi-kpi-drawer-error { margin-right: auto; color: var(--sbi-down); font-size: 12.5px; } .sbi-kpi-input { width: 112px; height: 30px; padding: 0 8px; border: 1px solid var(--sbi-border); border-radius: 7px; background: var(--sbi-card); color: var(--sbi-text); font-size: 13px; text-align: right; font-variant-numeric: tabular-nums; } .sbi-kpi-input:focus { border-color: var(--sbi-accent); outline: none; box-shadow: 0 0 0 3px rgba(37, 87, 214, 0.12); } .sbi-kpi-input.is-invalid { border-color: var(--sbi-down); } /* App 总目标进度条(全员共同目标) */ .sbi-kpi-app-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; } .sbi-kpi-app-card { display: flex; flex-direction: column; gap: 8px; padding: 14px 18px; } .sbi-kpi-app-card-head { display: flex; align-items: center; gap: 8px; } .sbi-kpi-app-card-head strong { font-size: 14px; } .sbi-kpi-app-card-amounts strong { font-size: 20px; font-variant-numeric: tabular-nums; } .sbi-kpi-app-card-amounts small { color: var(--sbi-text-3); font-size: 12px; } .sbi-kpi-app-card-note { color: var(--sbi-text-3); font-size: 11.5px; } /* 目标抽屉分区 */ .sbi-kpi-drawer-section { margin-bottom: 18px; } .sbi-kpi-drawer-section > h4 { display: flex; align-items: baseline; gap: 8px; margin: 0 0 8px; color: var(--sbi-text); font-size: 13.5px; } .sbi-kpi-drawer-section > h4 > small { color: var(--sbi-text-3); font-size: 12px; font-weight: 500; }