/* ===========================================================================
   人资管理系统 · 花名册  —  Ant 设计系统改造
   Ant 经典蓝主色 #1677FF / 白色工作底 / 扁平边框 / 企业信息密度
   =========================================================================== */
/* Ant 设计系统 tokens（权威层） */
:root {
  --bg: #ffffff;
  --surface: #f7f8fa;
  --surface-warm: #e6f4ff;
  --fg: #1f1f1f;
  --fg-2: #4b5563;
  --muted: #697386;
  --meta: #1677FF;
  --border: #d9dce3;
  --border-soft: #eef0f4;
  --accent: #1677FF;
  --accent-on: #ffffff;
  --accent-hover: color-mix(in oklab, #1677FF, black 8%);
  --accent-active: color-mix(in oklab, #1677FF, black 14%);
  --success: #22a06b;
  --warn: #faad14;
  --danger: #cf1322;
  --font-display: "Ant Sans", "Alibaba PuHuiTi", Inter, Arial, sans-serif;
  --font-body: "Ant Sans", "Alibaba PuHuiTi", Inter, Arial, sans-serif;
  --font-mono: "SF Mono", ui-monospace, Menlo, monospace;
  --text-xs: 12px;
  --text-sm: 14px;
  --text-base: 16px;
  --text-lg: 18px;
  --text-xl: 22px;
  --text-2xl: 32px;
  --text-3xl: 48px;
  --text-4xl: 64px;
  --leading-body: 1.52;
  --leading-tight: 1.08;
  --tracking-display: -0.018em;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;
  --section-y-desktop: 96px;
  --section-y-tablet: 68px;
  --section-y-phone: 48px;
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-pill: 9999px;
  --elev-flat: none;
  --elev-ring: 0 0 0 1px var(--border);
  --elev-raised: 0 18px 42px rgba(31, 31, 31, 0.10);
  --focus-ring: 0 0 0 4px rgba(22, 119, 255, 0.22);
  --motion-fast: 140ms;
  --motion-base: 220ms;
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --container-max: 1200px;
  --container-gutter-desktop: 36px;
  --container-gutter-tablet: 24px;
  --container-gutter-phone: 16px;
}

/* EP 兼容别名层（JS 里的 var(--ep-primary) 自动指向 Ant blue） */
:root {
  --ep-primary: #1677FF;
  --ep-primary-l3: color-mix(in oklab, #1677FF, white 20%);
  --ep-primary-l5: color-mix(in oklab, #1677FF, white 38%);
  --ep-primary-l7: color-mix(in oklab, #1677FF, white 55%);
  --ep-primary-l8: color-mix(in oklab, #1677FF, white 65%);
  --ep-primary-l9: color-mix(in oklab, #1677FF, white 88%);
  --ep-primary-d2: color-mix(in oklab, #1677FF, black 14%);
  --ep-success: #22a06b;
  --ep-warning: #faad14;
  --ep-danger: #cf1322;
  --ep-info: #697386;
  --ep-success-l9: #e6f4ee;
  --ep-warning-l9: #fffbe6;
  --ep-danger-l9: #fff1f0;
  --ep-info-l9: #f5f5f5;
  --ep-success-l5: #b4dfce;
  --ep-warning-l5: #ffe58f;
  --ep-danger-l5: #fcd4c8;
  --ep-info-l5: #d9dce3;
  --tx-1: #1f1f1f;
  --tx-2: #4b5563;
  --tx-3: #697386;
  --tx-4: #a8abb2;
  --bd: #d9dce3;
  --bd-l: #e4e7ed;
  --bd-ll: #eef0f4;
  --bd-xl: #f2f6fc;
  --bg-page: #f0f2f5;
  --fill: #f0f2f5;
  --fill-l: #f5f7fa;
  --fill-ll: #fafafa;
  --fill-bl: #f5f7fa;
  --r: 6px;
  --r-sm: 4px;
  --sh: 0 12px 32px 4px rgba(0,0,0,.04), 0 8px 20px rgba(0,0,0,.08);
  --sh-l: 0 0 12px rgba(0,0,0,.12);
  --sh-pop: 0 2px 12px 0 rgba(0,0,0,.1);
  --topbar-h: 56px;
  --sidebar-w: 216px;
  --org-w: 252px;
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Roboto, Helvetica, Arial, sans-serif;
  --mono: "SF Mono", "JetBrains Mono", "Roboto Mono", ui-monospace, Menlo, Consolas, monospace;
}
*{box-sizing:border-box;}
html,body{height:100%;}
body{margin:0;font-family:var(--font);font-size:14px;color:var(--tx-1);background:var(--bg-page);-webkit-font-smoothing:antialiased;line-height:1.5;}
h1,h2,h3,h4,p,ul,ol{margin:0;padding:0;}
ul,ol{list-style:none;}
button{font-family:inherit;cursor:pointer;}
a{color:var(--ep-primary);text-decoration:none;}
::-webkit-scrollbar{width:8px;height:8px;}
::-webkit-scrollbar-thumb{background:#d4d7de;border-radius:8px;}
::-webkit-scrollbar-thumb:hover{background:#c0c4cc;}
::-webkit-scrollbar-track{background:transparent;}

/* ---------- 应用骨架 ---------- */
.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--topbar-h) 1fr;height:100vh;overflow:hidden;}
.topbar{grid-column:1/3;display:flex;align-items:center;background:#fff;border-bottom:1px solid var(--bd-ll);padding:0 20px 0 0;z-index:20;}
.sidebar{grid-row:2;background:#fff;border-right:1px solid var(--bd-ll);overflow-y:auto;overflow-x:hidden;}
.main{grid-row:2;overflow:auto;background:var(--bg-page);}

/* ---------- 顶栏 ---------- */
.brand{display:flex;align-items:center;gap:10px;width:var(--sidebar-w);padding:0 16px;height:100%;border-right:1px solid var(--bd-ll);flex:none;}
.brand-logo{width:32px;height:32px;border-radius:7px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;letter-spacing:-.5px;flex:none;box-shadow:0 2px 6px color-mix(in oklab, var(--accent) 40%, transparent);}
.brand-name{font-weight:600;font-size:15px;color:var(--tx-1);white-space:nowrap;}
.brand-name small{display:block;font-weight:400;font-size:11px;color:var(--tx-3);letter-spacing:.5px;}
.topbar-crumb{display:flex;align-items:center;gap:8px;padding-left:20px;color:var(--tx-3);font-size:13px;}
.topbar-crumb b{color:var(--tx-1);font-weight:500;}
.topbar-spacer{flex:1;}
.topbar-tools{display:flex;align-items:center;gap:4px;}
.icon-btn{width:34px;height:34px;border-radius:var(--r);border:none;background:transparent;color:var(--tx-2);display:flex;align-items:center;justify-content:center;position:relative;transition:.15s;}
.icon-btn:hover{background:var(--fill-l);color:var(--ep-primary);}
.icon-btn .dot{position:absolute;top:6px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--ep-danger);border:1.5px solid #fff;}
.topbar-divider{width:1px;height:22px;background:var(--bd-l);margin:0 10px;}
.user{display:flex;align-items:center;gap:9px;padding:4px 8px;border-radius:var(--r);transition:.15s;}
.user:hover{background:var(--fill-l);}
.user-info{line-height:1.2;text-align:right;}
.user-info b{font-size:13px;font-weight:500;}
.user-info span{display:block;font-size:11px;color:var(--tx-3);}

/* ---------- 头像 ---------- */
.avatar{border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:500;flex:none;overflow:hidden;}
.avatar.sm{width:32px;height:32px;font-size:12px;}
.avatar.md{width:34px;height:34px;font-size:12px;}
.avatar.lg{width:84px;height:108px;border-radius:var(--radius-md);font-size:24px;}

/* ---------- 侧边菜单 ---------- */
.menu{padding:10px 0;}
.menu-group{padding:14px 20px 6px;font-size:12px;color:var(--tx-3);letter-spacing:.5px;}
.menu-item{display:flex;align-items:center;gap:11px;height:46px;padding:0 20px;color:var(--tx-2);font-size:14px;cursor:pointer;position:relative;transition:.15s;}
.menu-item svg{width:17px;height:17px;flex:none;}
.menu-item:hover{background:var(--ep-primary-l9);color:var(--ep-primary);}
.menu-item.active{color:var(--ep-primary);font-weight:500;background:var(--ep-primary-l9);}
.menu-item.active::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ep-primary);}

/* ---------- 内容页 ---------- */
.page{padding:16px 18px 22px;min-width:1080px;}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:14px;}
.page-head h1{font-size:21px;font-weight:600;letter-spacing:.5px;}
.page-head p{color:var(--tx-3);font-size:13px;margin-top:4px;}
.page-head .stat{font-size:12px;color:var(--tx-3);}
.page-head .stat b{color:var(--ep-primary);font-size:22px;font-family:var(--mono);font-weight:600;margin:0 2px;}

/* 左树右表 */
.roster{display:grid;grid-template-columns:var(--org-w) 1fr;gap:16px;align-items:start;}
.card{background:#fff;border:1px solid var(--bd-ll);border-radius:var(--r);}
.org-panel{position:sticky;top:0;}
.org-head{padding:12px 14px 10px;border-bottom:1px solid var(--bd-ll);}
.org-head .org-title{display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:14px;margin-bottom:10px;}
.org-head .org-title .reset-link{font-size:12px;font-weight:400;color:var(--ep-primary);cursor:pointer;}
.org-head .org-title .reset-link:hover{color:var(--ep-primary-d2);}
.org-body{padding:8px 6px 12px;max-height:calc(100vh - var(--topbar-h) - 220px);overflow:auto;}

/* ---------- 树 ---------- */
.tree-node{user-select:none;}
.tree-label{display:flex;align-items:center;gap:4px;height:34px;padding-right:10px;border-radius:var(--r);cursor:pointer;font-size:13px;color:var(--tx-2);white-space:nowrap;}
.tree-label:hover{background:var(--fill-l);}
.tree-node.selected>.tree-label{background:var(--ep-primary-l9);color:var(--ep-primary);font-weight:500;}
.tree-caret{width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex:none;color:var(--tx-3);transition:transform .2s;}
.tree-caret.open{transform:rotate(90deg);}
.tree-caret.leaf{visibility:hidden;}
.tree-ico{width:15px;height:15px;flex:none;color:var(--tx-3);}
.tree-node.selected>.tree-label .tree-ico{color:var(--ep-primary);}
.tree-name{overflow:hidden;text-overflow:ellipsis;flex:1;}
.tree-count{font-family:var(--mono);font-size:11px;color:var(--tx-4);background:var(--fill);border-radius:9px;padding:1px 7px;flex:none;}
.tree-node.selected>.tree-label .tree-count{background:#fff;color:var(--ep-primary);}
.tree-children{overflow:hidden;}
.tree-hl{color:var(--ep-warning);background:#fffbe6;border-radius:2px;}

/* ---------- 列表面板 ---------- */
.list-panel{min-width:0;display:flex;flex-direction:column;}
.list-panel .card{display:flex;flex-direction:column;}
.tabs{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--bd-ll);padding:0 14px;}
.tab{position:relative;padding:13px 16px;font-size:14px;color:var(--tx-2);cursor:pointer;transition:.15s;}
.tab:hover{color:var(--ep-primary);}
.tab.active{color:var(--ep-primary);font-weight:500;}
.tab.active::after{content:"";position:absolute;left:16px;right:16px;bottom:-1px;height:2px;background:var(--ep-primary);border-radius:2px;}
.tab .cnt{font-family:var(--mono);font-size:12px;color:var(--tx-4);margin-left:5px;}
.tabs-spacer{flex:1;}
.filter-toggle{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--tx-2);cursor:pointer;padding:0 6px;}
.filter-toggle:hover{color:var(--ep-primary);}
.filter-toggle svg{width:14px;height:14px;transition:transform .2s;}
.filter-toggle.open svg{transform:rotate(180deg);}

/* 高级筛选 */
.adv{border-bottom:1px solid var(--bd-ll);background:var(--fill-ll);overflow:hidden;transition:max-height .25s ease,opacity .2s,padding .25s;}
.adv.collapsed{max-height:0;opacity:0;padding-top:0;padding-bottom:0;border-bottom:none;}
.adv-inner{padding:16px 18px 6px;display:grid;grid-template-columns:repeat(4,1fr);gap:14px 18px;}
.adv .fi-age{display:flex;align-items:center;gap:6px;}
.adv .fi-age .ep-input{flex:1;}
.adv .fi-age .sep{color:var(--tx-3);}
.adv-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px;padding-top:4px;}

/* 工具栏 */
.toolbar{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;gap:12px;flex-wrap:wrap;}
.toolbar .tb-left{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.result-count{font-size:13px;color:var(--tx-2);}
.result-count b{color:var(--ep-primary);font-family:var(--mono);font-weight:600;font-size:15px;margin:0 2px;}
.active-filters{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.toolbar .tb-right{display:flex;align-items:center;gap:10px;}

/* ---------- 按钮（Ant 风格） ---------- */
.ep-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 15px;border-radius:var(--r);border:1px solid var(--bd);background:#fff;color:var(--tx-2);font-size:14px;line-height:1;transition:.1s;white-space:nowrap;}
.ep-btn svg{width:14px;height:14px;}
.ep-btn:hover{color:var(--ep-primary);border-color:var(--ep-primary);background:var(--ep-primary-l9);}
.ep-btn:active{color:var(--ep-primary-d2);border-color:var(--ep-primary-d2);}
.ep-btn.primary{background:var(--ep-primary);border-color:var(--ep-primary);color:#fff;}
.ep-btn.primary:hover{background:var(--ep-primary-l3);border-color:var(--ep-primary-l3);color:#fff;}
.ep-btn.primary:active{background:var(--ep-primary-d2);border-color:var(--ep-primary-d2);}
.ep-btn.danger{background:var(--ep-danger);border-color:var(--ep-danger);color:#fff;}
.ep-btn.danger:hover{background:color-mix(in oklab, var(--ep-danger), white 12%);border-color:color-mix(in oklab, var(--ep-danger), white 12%);color:#fff;}
.ep-btn.plain-danger{color:var(--ep-danger);border-color:var(--ep-danger-l5);background:var(--ep-danger-l9);}
.ep-btn.plain-danger:hover{background:var(--ep-danger);border-color:var(--ep-danger);color:#fff;}
.ep-btn.sm{height:28px;padding:0 11px;font-size:13px;}
.ep-btn.lg{height:38px;padding:0 19px;}
.ep-btn:disabled{cursor:not-allowed;color:var(--tx-4);background:#fff;border-color:var(--bd-l);}
.ep-btn-text{background:none;border:none;color:var(--ep-primary);font-size:13px;padding:2px 5px;border-radius:var(--r-sm);transition:.1s;}
.ep-btn-text:hover{background:var(--ep-primary-l9);}
.ep-btn-text.danger{color:var(--ep-danger);}
.ep-btn-text.danger:hover{background:var(--ep-danger-l9);}
.ep-btn-text.muted{color:var(--tx-3);}
.ep-btn-text.muted:hover{background:var(--fill-l);color:var(--tx-2);}

/* ---------- 表单控件（Ant 风格） ---------- */
.ep-input,.ep-select,.ep-textarea{width:100%;border:1px solid var(--bd);border-radius:var(--r);background:#fff;color:var(--tx-1);font-family:inherit;font-size:14px;transition:.15s;outline:none;}
.ep-input,.ep-select{height:32px;padding:0 11px;}
.ep-textarea{padding:6px 11px;line-height:1.6;resize:vertical;min-height:72px;}
.ep-input::placeholder,.ep-textarea::placeholder{color:var(--tx-4);}
.ep-input:hover,.ep-select:hover,.ep-textarea:hover{border-color:var(--ep-primary);}
.ep-input:focus,.ep-select:focus,.ep-textarea:focus{border-color:var(--ep-primary);box-shadow:var(--focus-ring);}
.ep-select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a8abb2' stroke-width='2.5' stroke-linecap='round'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 9px center;background-size:14px;padding-right:30px;cursor:pointer;}
.ep-input.is-error,.ep-select.is-error,.ep-textarea.is-error{border-color:var(--ep-danger);box-shadow:0 0 0 2px rgba(207,19,34,.12);}
.input-prefix{position:relative;}
.input-prefix .ep-input{padding-left:32px;}
.input-prefix svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--tx-4);}

/* radio button group */
.ep-radio-group{display:inline-flex;}
.ep-radio-btn{padding:0 14px;height:32px;display:inline-flex;align-items:center;border:1px solid var(--bd);border-left:none;background:#fff;color:var(--tx-2);font-size:14px;cursor:pointer;transition:.1s;}
.ep-radio-btn:first-child{border-left:1px solid var(--bd);border-radius:var(--r) 0 0 var(--r);}
.ep-radio-btn:last-child{border-radius:0 var(--r) var(--r) 0;}
.ep-radio-btn:hover{color:var(--ep-primary);}
.ep-radio-btn.active{background:var(--ep-primary);border-color:var(--ep-primary);color:#fff;}
.ep-radio-btn.active+.ep-radio-btn{border-left-color:var(--ep-primary);}

/* 原生 radio/checkbox 行 */
.ep-radio,.ep-check{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-size:14px;color:var(--tx-2);margin-right:22px;}
.ep-radio input,.ep-check input{accent-color:var(--ep-primary);width:15px;height:15px;cursor:pointer;}

/* upload 占位 */
.uploader{width:104px;height:128px;border:1px dashed var(--bd);border-radius:var(--radius-md);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;color:var(--tx-3);cursor:pointer;transition:.15s;background:var(--fill-ll);}
.uploader:hover{border-color:var(--ep-primary);color:var(--ep-primary);}
.uploader svg{width:26px;height:26px;}
.uploader span{font-size:12px;}
.uploader.has-photo{border-style:solid;padding:0;overflow:hidden;}

/* ---------- 表单网格（弹窗内） ---------- */
.ep-form{display:grid;grid-template-columns:repeat(3,1fr);gap:18px 22px;align-items:start;}
.ep-form.cols-2{grid-template-columns:repeat(2,1fr);}
.fi{display:flex;flex-direction:column;gap:6px;min-width:0;}
.fi.span-2{grid-column:span 2;}
.fi.span-3{grid-column:1/-1;}
.fi-label{font-size:13px;color:var(--tx-2);line-height:1.4;}
.fi-label .req{color:var(--ep-danger);margin-right:3px;}
.fi-err{font-size:12px;color:var(--ep-danger);min-height:0;display:none;}
.fi.is-error .fi-err{display:block;}
.fi-hint{font-size:12px;color:var(--tx-3);}

/* ---------- Tag（Ant 风格） ---------- */
.ep-tag{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:var(--radius-sm);font-size:12px;line-height:1;border:1px solid;white-space:nowrap;}
.ep-tag.primary{color:var(--ep-primary);background:var(--ep-primary-l9);border-color:var(--ep-primary-l7);}
.ep-tag.success{color:var(--ep-success);background:var(--ep-success-l9);border-color:var(--ep-success-l5);}
.ep-tag.warning{color:var(--ep-warning);background:var(--ep-warning-l9);border-color:var(--ep-warning-l5);}
.ep-tag.danger{color:var(--ep-danger);background:var(--ep-danger-l9);border-color:var(--ep-danger-l5);}
.ep-tag.info{color:var(--ep-info);background:var(--ep-info-l9);border-color:var(--ep-info-l5);}
.ep-tag.plain{color:var(--tx-2);background:#fff;border-color:var(--bd);}
.ep-tag.dot::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:5px;}
.filter-chip{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 7px 0 10px;border-radius:var(--r);font-size:12px;color:var(--ep-primary);background:var(--ep-primary-l9);border:1px solid var(--ep-primary-l7);}
.filter-chip .x{cursor:pointer;width:15px;height:15px;border-radius:50%;display:flex;align-items:center;justify-content:center;}
.filter-chip .x:hover{background:var(--ep-primary-l7);}

/* ---------- 表格 ---------- */
.table-wrap{overflow-x:auto;}
.ep-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;min-width:1020px;}
.ep-table th,.ep-table td{padding:0 12px;height:50px;text-align:left;border-bottom:1px solid var(--bd-ll);vertical-align:middle;}
.ep-table thead th{background:var(--fill-bl);color:var(--tx-2);font-weight:500;height:44px;white-space:nowrap;}
.ep-table tbody tr{transition:background .1s;}
.ep-table tbody tr:hover{background:var(--ep-primary-l9);}
.ep-table .col-chk{width:42px;text-align:center;padding:0;}
.ep-table .col-idx{width:50px;color:var(--tx-3);font-family:var(--mono);}
.ep-table .cell-name{display:flex;align-items:center;gap:10px;}
.ep-table .cell-name .nm{display:flex;flex-direction:column;line-height:1.3;}
.ep-table .cell-name .nm b{font-weight:500;color:var(--tx-1);}
.ep-table .cell-name .nm small{color:var(--tx-3);font-size:11px;font-family:var(--mono);}
.ep-table td.num{font-family:var(--mono);color:var(--tx-2);}
.ep-table .col-op{position:sticky;right:0;background:#fff;}
.ep-table thead .col-op{background:var(--fill-bl);}
.ep-table tbody tr:hover .col-op{background:var(--ep-primary-l9);}
.col-op{width:150px;box-shadow:-6px 0 8px -8px rgba(0,0,0,.18);}
.op-cell{display:flex;align-items:center;gap:2px;}
.cell-muted{color:var(--tx-3);}
.cell-ellipsis{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* 空状态 */
.empty{padding:64px 0;text-align:center;color:var(--tx-3);}
.empty svg{width:90px;height:90px;opacity:.85;margin-bottom:8px;}
.empty p{font-size:13px;}

/* ---------- 分页 ---------- */
.pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 16px;border-top:1px solid var(--bd-ll);font-size:13px;color:var(--tx-2);flex-wrap:wrap;}
.pager .total{margin-right:auto;color:var(--tx-3);}
.pager .ep-select{width:auto;height:28px;padding:0 28px 0 10px;font-size:13px;}
.pg-btn{min-width:28px;height:28px;padding:0 6px;border-radius:var(--r);border:none;background:transparent;color:var(--tx-2);font-size:13px;font-family:var(--mono);}
.pg-btn:hover:not(:disabled){color:var(--ep-primary);}
.pg-btn.active{background:var(--ep-primary);color:#fff;}
.pg-btn:disabled{color:var(--tx-4);cursor:not-allowed;}
.pg-jump{display:flex;align-items:center;gap:6px;}
.pg-jump .ep-input{width:42px;height:28px;text-align:center;padding:0 4px;font-family:var(--mono);}

/* ---------- 弹窗 ---------- */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;display:flex;align-items:flex-start;justify-content:center;opacity:0;transition:opacity .2s;overflow:auto;padding:0 20px;}
.overlay.show{opacity:1;}
.dialog{background:#fff;border-radius:var(--radius-md);box-shadow:var(--sh);width:920px;max-width:100%;margin:6vh 0 6vh;transform:translateY(-14px);transition:transform .2s;display:flex;flex-direction:column;max-height:88vh;}
.overlay.show .dialog{transform:translateY(0);}
.dialog.sm{width:440px;}
.dialog-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--bd-ll);flex:none;}
.dialog-head h3{font-size:17px;font-weight:600;display:flex;align-items:center;gap:9px;}
.dialog-head .sub{font-size:12px;color:var(--tx-3);font-weight:400;}
.dialog-close{width:30px;height:30px;border:none;background:none;color:var(--tx-3);border-radius:var(--r);display:flex;align-items:center;justify-content:center;}
.dialog-close:hover{background:var(--fill-l);color:var(--ep-danger);}
.dialog-close svg{width:18px;height:18px;}
.dialog-body{padding:8px 22px 14px;overflow-y:auto;flex:1;}
.dialog.confirm .dialog-body{padding:20px 22px 8px;}
.dialog-foot{padding:14px 22px;border-top:1px solid var(--bd-ll);display:flex;justify-content:flex-end;gap:12px;flex:none;}

/* 确认弹窗 */
.confirm-row{display:flex;gap:14px;}
.confirm-ico{width:24px;height:24px;flex:none;color:var(--ep-warning);}
.confirm-row h4{font-size:15px;font-weight:600;margin-bottom:8px;}
.confirm-row p{color:var(--tx-2);font-size:13px;line-height:1.7;}
.confirm-row b{color:var(--tx-1);}
.warn-box{margin-top:12px;background:var(--ep-danger-l9);border:1px solid var(--ep-danger-l5);border-radius:var(--r);padding:10px 13px;color:#cf1322;font-size:12.5px;line-height:1.7;display:flex;gap:8px;}
.warn-box svg{width:15px;height:15px;flex:none;margin-top:2px;}

/* ---------- 折叠面板（新增/编辑） ---------- */
.collapse-item{border:1px solid var(--bd-ll);border-radius:var(--radius-md);margin-bottom:14px;overflow:hidden;}
.collapse-head{display:flex;align-items:center;gap:9px;padding:13px 16px;background:var(--fill-bl);cursor:pointer;font-weight:600;font-size:14px;user-select:none;}
.collapse-head .ix{width:22px;height:22px;border-radius:var(--radius-sm);background:var(--ep-primary);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);flex:none;}
.collapse-head .caret{margin-left:auto;color:var(--tx-3);transition:transform .2s;}
.collapse-head .caret svg{width:16px;height:16px;}
.collapse-item.open .collapse-head .caret{transform:rotate(180deg);}
.collapse-head .req-note{font-size:12px;color:var(--tx-3);font-weight:400;margin-left:8px;}
.collapse-body{padding:18px 18px 6px;display:none;}
.collapse-item.open .collapse-body{display:block;}

/* ---------- Tab（查看详情） ---------- */
.dtabs{display:flex;gap:2px;border-bottom:1px solid var(--bd-ll);margin-bottom:18px;flex-wrap:wrap;position:sticky;top:0;background:#fff;z-index:2;}
.dtab{padding:11px 16px;font-size:14px;color:var(--tx-2);cursor:pointer;position:relative;}
.dtab:hover{color:var(--ep-primary);}
.dtab.active{color:var(--ep-primary);font-weight:500;}
.dtab.active::after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:2px;background:var(--ep-primary);}
.dpane{display:none;}
.dpane.active{display:block;}

/* ---------- 详情头卡 ---------- */
.detail-hero{display:flex;gap:18px;padding:4px 2px 20px;border-bottom:1px solid var(--bd-ll);margin-bottom:20px;}
.detail-hero .meta{flex:1;min-width:0;}
.detail-hero .meta h2{font-size:20px;font-weight:600;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.detail-hero .meta .role{color:var(--tx-2);font-size:14px;margin-top:6px;}
.detail-hero .meta .tags{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;}

/* ---------- 描述列表（只读） ---------- */
.desc{border:1px solid var(--bd-ll);border-radius:var(--r);overflow:hidden;}
.desc-title{font-size:14px;font-weight:600;margin:0 0 12px;display:flex;align-items:center;gap:7px;}
.desc-title::before{content:"";width:3px;height:14px;border-radius:2px;background:var(--ep-primary);}
.desc+.desc-title{margin-top:22px;}
.desc table{width:100%;border-collapse:collapse;font-size:13px;}
.desc th,.desc td{border:1px solid var(--bd-ll);padding:11px 14px;text-align:left;vertical-align:top;}
.desc th{background:var(--fill-bl);color:var(--tx-2);font-weight:500;width:120px;white-space:nowrap;}
.desc td{color:var(--tx-1);}
.desc td.long{white-space:pre-wrap;line-height:1.7;color:var(--tx-2);}
.desc .empty-val{color:var(--tx-4);}

/* 人事变动表 / 操作记录 */
.mini-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;border:1px solid var(--bd-ll);border-radius:var(--r);overflow:hidden;}
.mini-table th,.mini-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--bd-ll);}
.mini-table th{background:var(--fill-bl);color:var(--tx-2);font-weight:500;white-space:nowrap;}
.mini-table tr:last-child td{border-bottom:none;}
.mini-table td{color:var(--tx-2);}
.pane-empty{padding:48px 0;text-align:center;color:var(--tx-3);}
.pane-empty svg{width:64px;height:64px;opacity:.8;margin-bottom:6px;}

/* 时间线（操作记录） */
.timeline{padding:6px 4px 4px 4px;}
.tl-item{display:flex;gap:14px;padding-bottom:20px;position:relative;}
.tl-item::before{content:"";position:absolute;left:6px;top:16px;bottom:-4px;width:1px;background:var(--bd-l);}
.tl-item:last-child::before{display:none;}
.tl-dot{width:13px;height:13px;border-radius:50%;border:2px solid var(--ep-primary);background:#fff;flex:none;margin-top:3px;z-index:1;}
.tl-dot.create{border-color:var(--ep-success);}
.tl-dot.edit{border-color:var(--ep-warning);}
.tl-dot.view{border-color:var(--ep-info);}
.tl-body{flex:1;}
.tl-body .tl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.tl-body b{font-size:13.5px;font-weight:500;}
.tl-time{font-family:var(--mono);font-size:12px;color:var(--tx-3);}
.tl-body p{color:var(--tx-3);font-size:12.5px;margin-top:3px;}
.tl-body .who{color:var(--ep-primary);}

/* ---------- 全局 Toast ---------- */
.toast-host{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:3000;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none;}
.toast{display:flex;align-items:center;gap:9px;padding:11px 16px;border-radius:var(--radius-md);background:#fff;border:1px solid var(--bd-ll);box-shadow:var(--sh-pop);font-size:14px;color:var(--tx-1);min-width:200px;animation:toastIn .3s;}
.toast svg{width:16px;height:16px;flex:none;}
.toast.success{background:var(--ep-success-l9);border-color:var(--ep-success-l5);color:#1e7b50;}
.toast.warning{background:var(--ep-warning-l9);border-color:var(--ep-warning-l5);color:#ad8b00;}
.toast.danger{background:var(--ep-danger-l9);border-color:var(--ep-danger-l5);color:#cf1322;}
.toast.info{background:var(--ep-info-l9);border-color:var(--ep-info-l5);color:var(--tx-2);}
@keyframes toastIn{from{opacity:0;transform:translateY(-16px);}to{opacity:1;transform:translateY(0);}}
.toast.out{opacity:0;transform:translateY(-16px);transition:.3s;}

.divider{height:1px;background:var(--bd-ll);margin:18px 0;}
.nowrap{white-space:nowrap;}
.tnum{font-family:var(--mono);}

/* ---------- 较窄屏幕兜底 ---------- */
@media (max-width:1366px){
  :root{--org-w:228px;}
  .ep-form{grid-template-columns:repeat(2,1fr);}
  .adv-inner{grid-template-columns:repeat(3,1fr);}
}
@media (max-width:1180px){
  .adv-inner{grid-template-columns:repeat(2,1fr);}
}