/* ================= 管理端（iOS 浅色风） ================= */
html,body{background:#F2F4F8;color:#1F2329}
body{font:14px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans SC",sans-serif}
a{color:var(--blue)}
.adm{max-width:1480px;margin:0 auto;padding:0 18px 60px}

/* 顶栏 — 清晰分组（业务 | 配置），紧凑不乱 */
.adm-top{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid #E6EAF0;box-shadow:0 1px 0 rgba(31,35,41,.02)}
.adm-top-in{max-width:1480px;margin:0 auto;padding:10px 18px;display:flex;align-items:center;gap:16px}
.adm-brand{display:flex;align-items:center;gap:10px;flex:none;min-width:0}
.adm-logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#3771BB,#5A9DE0);color:#fff;display:grid;place-items:center;font-weight:700;flex:none;box-shadow:0 2px 6px rgba(55,113,187,.25)}
.adm-brand-text{display:flex;flex-direction:column;gap:0;line-height:1.2;min-width:0}
.adm-brand-text b{font-size:15px;letter-spacing:.02em;color:#1F2329}
.adm-brand-text .sub{font-size:11px;color:#8A93A6;font-weight:500}
.adm-nav{display:flex;align-items:center;gap:10px;flex:1;min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:2px 0}
.adm-nav::-webkit-scrollbar{display:none}
.adm-seg-wrap{display:flex;align-items:center;gap:8px;flex:none}
.adm-seg{display:flex;align-items:center;gap:2px;background:#F0F2F5;border-radius:10px;padding:3px;border:1px solid #E4E7EC}
.adm-seg button{padding:6px 12px;border-radius:8px;font-size:13px;font-weight:600;color:#5B6575;cursor:pointer;transition:all .16s;border:0;background:transparent;line-height:1.35;height:30px}
.adm-seg button:hover{color:#1F2329;background:rgba(255,255,255,.65)}
.adm-seg button.on{background:#fff;color:var(--blue);box-shadow:0 1px 3px rgba(31,35,41,.10)}
.adm-seg-cfg{background:#EEF2F8}
.adm-me{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:13px;color:#646566;flex:none}
.adm-me .av{width:30px;height:30px;font-size:12px;background:#E8F1FF;color:var(--blue);border-radius:50%;display:grid;place-items:center;font-weight:700}
.adm-me button{color:var(--blue);font-size:13px;cursor:pointer;padding:4px 8px;border-radius:6px;border:0;background:transparent;font-weight:600}
.adm-me button:hover{background:#E8F1FF}

/* 登录 */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(160deg,#EAF1FB,#F7F9FC 46%,#fff)}
.login-card{width:360px;background:#fff;border-radius:18px;padding:30px 26px;box-shadow:0 18px 50px rgba(31,35,41,.10);border:1px solid #EEF0F3}
.login-card .lg{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,#3771BB,#5A9DE0);color:#fff;display:grid;place-items:center;font-size:22px;font-weight:700;margin-bottom:14px}
.login-card h1{margin:0 0 4px;font-size:19px}
.login-card .tip{font-size:12px;color:var(--sub);margin:0 0 18px}
.login-card .inp{margin-bottom:12px}
.login-foot{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);font-size:12px;color:var(--sub);text-align:center}

/* 通用组件 */
.card{background:#fff;border:1px solid #EBEDF0;border-radius:14px;padding:16px 18px;box-shadow:0 1px 2px rgba(31,35,41,.04)}
.card h3{margin:0 0 12px;font-size:15px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 18px;border-radius:10px;font-weight:600;font-size:14px;cursor:pointer;transition:transform .15s,opacity .15s,background .15s; width:auto}
.btn.primary{background:var(--blue);color:#fff}
.btn.primary:active{background:#2C5FA3}
.btn.ghost{background:#fff;color:var(--blue);border:1px solid #C9DBF2}
.btn.ghost:active{background:#F3F7FC}
.btn.danger{background:#fff;color:var(--bad);border:1px solid #F3C2C7}
.btn.sm{height:32px;padding:0 12px;font-size:13px;border-radius:8px}
.btn.block{width:100%}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.inp,.area{border:1px solid #DDE1E7;background:#F8F9FB;border-radius:10px;padding:10px 12px;outline:0;transition:all .15s}
.inp:focus,.area:focus{border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(55,113,187,.12)}
.area{width:100%;min-height:96px;resize:vertical;font-family:ui-monospace,Menlo,monospace;font-size:12px}
select.inp{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,#8A8F99 50%),linear-gradient(135deg,#8A8F99 50%,transparent 50%);background-position:calc(100% - 16px) 16px,calc(100% - 11px) 16px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:30px}

.page-head{display:flex;align-items:flex-end;gap:14px;margin:22px 0 14px;flex-wrap:wrap}
.page-head h2{margin:0;font-size:22px}
.page-head .desc{color:var(--sub);font-size:13px;margin-top:2px}
.page-head .act{margin-left:auto;display:flex;gap:8px}

/* 类型卡片选择 */
.radiocards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin:6px 0 4px}
.radiocard{border:1.5px solid #E4E7EC;background:#fff;border-radius:12px;padding:13px 14px;cursor:pointer;text-align:left;transition:all .16s}
.radiocard b{display:block;font-size:14px;margin-bottom:2px}
.radiocard .m{font-size:12px;color:var(--sub)}
.radiocard.on{border-color:var(--blue);background:#F2F7FF;box-shadow:0 0 0 3px rgba(55,113,187,.08)}
.radiocard .ck{float:right;width:18px;height:18px;border-radius:50%;border:2px solid #C9CDD4;display:grid;place-items:center;font-size:10px;color:#fff}
.radiocard.on .ck{border-color:var(--blue);background:var(--blue)}

/* 上传区 */
.drop{border:1.5px dashed #B9CCE5;border-radius:14px;background:#F7FAFE;padding:26px;text-align:center;cursor:pointer;transition:all .16s}
.drop:hover,.drop.hl{border-color:var(--blue);background:#EEF5FF}
.drop .big{font-size:34px}
.drop b{font-size:15px}
.drop .m{font-size:12px;color:var(--sub);margin-top:4px}
.divider-or{display:flex;align-items:center;gap:10px;color:#B0B5BD;font-size:12px;margin:14px 0}
.divider-or::before,.divider-or::after{content:"";flex:1;height:1px;background:#E4E7EC}

/* 提示条 */
.alert{border-radius:12px;padding:11px 14px;margin:8px 0;font-size:13px;display:flex;gap:9px;align-items:flex-start}
.alert .ic{flex:none;margin-top:1px}
.alert ul{margin:4px 0 0;padding-left:2px;list-style:none}
.alert li{margin:4px 0;line-height:1.5}
.alert li b{font-weight:650}
.alert.warn{background:#FFF6E8;border:1px solid #F7E0B0;color:#8A5A12}
.alert.error{background:#FDEDED;border:1px solid #F5C3C8;color:#9B1B29}
.alert.ok{background:#EAF8F0;border:1px solid #B7E4C7;color:#17663A}
.alert.info{background:#EFF4FB;border:1px solid #C9DBF2;color:#2A4D7A}
.alert .num{display:inline-grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:99px;background:#fff;font-weight:700;font-size:11px;margin-right:4px}

/* 必填说明（红色，在演示表格上方） */
.req-legend{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin:4px 0 10px;font-size:12px;color:#B52B39}
.req-legend .rl{font-weight:700}
.req-legend .rf{background:#FDEDED;color:#C02A38;border-radius:6px;padding:2px 8px;font-weight:600}
.req-legend .rn{color:#8A8F99;font-weight:400}

/* 列映射条 */
.mapbar{display:flex;gap:9px;overflow-x:auto;padding:10px 2px 12px}
.mapchip{flex:none;width:218px;border:1.5px solid #E4E7EC;border-radius:12px;padding:10px;background:#fff}
.mapchip.auto{border-color:#BFE3CC;background:#F4FBF6}
.mapchip.suggest{border-color:#F3D39B;background:#FFFBF2}
.mapchip.none{border-color:#E4E7EC;background:#FAFBFC}
.mapchip.manual{border-color:#A9C6EB;background:#F4F8FE}
.mapchip .src{font-size:13px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}
.mapchip .src .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px}
.mapchip.auto .dot{background:#07C160}
.mapchip.suggest .dot{background:#F5A623;animation:pulse 1.4s infinite}
.mapchip.none .dot{background:#C0C4CC}
.mapchip.manual .dot{background:#3771BB}
.mapchip .via{font-size:11px;color:#969799;margin-bottom:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mapchip select{width:100%;height:32px;font-size:12px;border-radius:8px;padding:0 8px}
@keyframes pulse{50%{opacity:.35}}

/* 数据表格 */
.grid-wrap{border:1px solid #E4E7EC;border-radius:12px;overflow:auto;max-height:520px;background:#fff}
table.grid{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}
table.grid th,table.grid td{border-bottom:1px solid #EEF0F3;border-right:1px solid #F2F3F5;padding:0;text-align:left;white-space:nowrap;max-width:240px}
table.grid th{position:sticky;top:0;background:#F7F8FA;z-index:2;padding:9px 12px;font-weight:600;color:#4E5969;font-size:12px;white-space:nowrap}
table.grid th.req{color:#C02A38}
table.grid th.req::after{content:" *";color:#C02A38;font-weight:700}
table.grid th .rn{color:#B0B5BD;font-weight:400;margin-left:5px;font-size:11px}
table.grid td .cell{padding:8px 12px;min-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
table.grid td .cell.empty-cell{color:#B8BDC6}
table.grid tr:last-child td{border-bottom:0}
table.grid tr:hover td{background:#F8FBFF}
table.grid td.bad{background:#FEF0F0}
table.grid td.warn{background:#FFF7EB}
table.grid tr:hover td.bad{background:#FDE6E6}
table.grid tr:hover td.warn{background:#FFF2DE}
.issue-ic{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;font-size:11px;font-weight:700;margin-right:6px;cursor:help;vertical-align:-3px}
.issue-ic.error{background:#FDECEC;color:#EE0A24}
.issue-ic.warn{background:#FFF1D9;color:#C47F10}
.cell-inp{width:100%;border:0;outline:0;background:#fff;padding:8px 10px;font:inherit;min-width:80px}
.cell-inp.bad{background:#FFF5F5;box-shadow:inset 0 0 0 1.5px #EFA0A8}

/* 行内修正弹层 */
.fixpop{position:fixed;z-index:60;background:#fff;border-radius:12px;box-shadow:0 10px 36px rgba(15,40,71,.18);border:1px solid #E4E7EC;padding:12px 14px;width:268px;font-size:13px}
.fixpop .t{font-weight:650;margin-bottom:6px;display:flex;gap:7px;align-items:center}
.fixpop .m{color:#646566;font-size:12px;line-height:1.55;margin-bottom:10px}
.fixpop .row{display:flex;gap:8px}

/* 底部操作条 */
.footbar{position:sticky;bottom:0;z-index:20;margin-top:14px;background:rgba(255,255,255,.9);backdrop-filter:blur(12px);border:1px solid #E4E7EC;border-radius:14px;padding:12px 16px;display:flex;align-items:center;gap:12px;box-shadow:0 4px 18px rgba(31,35,41,.06)}
.footbar .stat{font-size:13px;color:#4E5969}
.footbar .stat b{color:var(--blue)}
.footbar .act{margin-left:auto;display:flex;gap:8px}

/* 表格列表 */
.tbl-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.tbl-item{background:#fff;border:1.5px solid #EBEDF0;border-radius:14px;padding:16px;cursor:pointer;transition:all .16s;display:block;width:100%;text-align:left}
.tbl-item:hover{border-color:#A9C6EB;box-shadow:0 6px 20px rgba(55,113,187,.08);transform:translateY(-1px)}
.tbl-item .top{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.tbl-item .ic{width:36px;height:36px;border-radius:10px;background:#E8F1FF;color:var(--blue);display:grid;place-items:center;font-size:17px;flex:none}
.tbl-item b{font-size:15px}
.tbl-item .meta{font-size:12px;color:var(--sub)}
.tbl-item .foot{display:flex;align-items:center;gap:8px;margin-top:10px}
.badge{display:inline-flex;align-items:center;gap:3px;padding:3px 10px;border-radius:10px;font-size:11px;font-weight:600;border:1px solid transparent;box-shadow:0 1px 2px rgba(31,35,41,.04)}
.badge.ok{background:#E8F8EF;color:#07914A;border-color:#C6EBD7}
.badge.warn{background:#FFF1D9;color:#B06B0B;border-color:#F3D39B}
.badge.gray{background:#F2F3F5;color:#86909C;border-color:#E4E7EC}
.badge.blue{background:#E8F1FF;color:#3771BB;border-color:#C9DBFF}

/* 设置（别名字典） */
.alias-schema{margin-bottom:14px}
.alias-field{border:1px solid #EEF0F3;border-radius:12px;padding:13px 15px;margin-bottom:10px;background:#fff}
.alias-field .fh{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.alias-field .fh b{font-size:14px}
.alias-field .fh .ty{font-size:11px;color:#86909C;background:#F2F3F5;border-radius:5px;padding:1px 7px}
.alias-tags{display:flex;flex-wrap:wrap;gap:6px}
.atag{display:inline-flex;align-items:center;gap:5px;background:#F2F6FC;border:1px solid #D7E4F5;color:#3771BB;border-radius:99px;padding:3px 10px;font-size:12px}
.atag.builtin{background:#F7F8FA;border-color:#E4E7EC;color:#86909C}
.atag .x{cursor:pointer;font-weight:700;opacity:.6}
.atag .x:hover{opacity:1;color:var(--bad)}
.alias-add{display:flex;gap:8px;margin-top:9px}
.alias-add .inp{height:34px;flex:1;margin:0}

.tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.tools .sp{margin-left:auto;display:flex;gap:8px;align-items:center}
.toggle{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#4E5969;cursor:pointer;user-select:none;padding:7px 11px;border:1px solid #E4E7EC;border-radius:9px;background:#fff}
.toggle.on{border-color:#A9C6EB;background:#F2F7FF;color:var(--blue);font-weight:600}
.sheetpills{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}
.sheetpill{padding:6px 13px;border-radius:99px;border:1px solid #DDE1E7;background:#fff;font-size:13px;cursor:pointer}
.sheetpill.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.muted2{color:var(--sub);font-size:12px}
.empty-state{text-align:center;padding:56px 20px;color:#8A8F99}
.empty-state .big{font-size:44px;margin-bottom:10px}
.mapchip select:disabled{background:#F2F6F2;color:#6A8F76;opacity:1;appearance:none;-webkit-appearance:none;background-image:none;padding-right:8px}
.toast{position:fixed;left:50%;bottom:34px;top:auto;transform:translateX(-50%);z-index:100}


/* ================= 工作台 ================= */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:16px}
.stat-card{border-radius:14px;padding:16px 18px;color:#fff;position:relative;overflow:hidden;box-shadow:0 2px 10px rgba(31,35,41,.06)}
.stat-card.blue{background:linear-gradient(135deg,#3771BB,#5A9DE0)}
.stat-card.green{background:linear-gradient(135deg,#0E9F6E,#34D399)}
.stat-card.amber{background:linear-gradient(135deg,#D97706,#FBBF24)}
.stat-card.purple{background:linear-gradient(135deg,#7C3AED,#A78BFA)}
.stat-card.rose{background:linear-gradient(135deg,#E11D48,#FB7185)}
.stat-card .st-ic{font-size:28px;opacity:.9}
.stat-card .st-num{font-size:30px;font-weight:700;margin-top:4px;line-height:1.1}
.stat-card .st-lb{font-size:13px;opacity:.9;margin-top:2px}
.stat-card .st-sub{font-size:11px;margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.2);opacity:.9;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.stat-card .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.7);margin-right:3px}
.stat-card .dot.warn{background:#FFE08A}
.stat-card .dot.ok{background:#C7F9D7}
.stat-card .dot.bad{background:#FFC4C4}
.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
@media(max-width:760px){.dash-grid{grid-template-columns:1fr}}
.card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.card-h h3{margin:0;font-size:15px}
.empty-sm{padding:18px;text-align:center;color:#B0B5BD;font-size:13px}
.biz-row{display:flex;align-items:center;justify-content:space-between;padding:11px 4px;border-bottom:1px solid #F2F3F5;cursor:pointer;transition:background .15s}
.biz-row:hover{background:#F7FAFF}
.biz-row:last-child{border-bottom:0}
.br-left{display:flex;align-items:center;gap:8px;font-size:13px}
.br-left b{font-size:14px}
.br-right{display:flex;align-items:center;gap:10px;font-size:12px}
.prio-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none}
.prio-dot.bad{background:#EE0A24}
.prio-dot.ok{background:#07C160}
.summary-row{padding:14px 0;border-bottom:1px solid #F2F3F5;cursor:pointer;transition:background .15s}
.summary-row:hover{background:#F7FAFF;border-radius:8px;padding:14px 8px;margin:0 -8px}
.summary-row:last-child{border-bottom:0}
.sr-top{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.sr-top b{font-size:14px;flex:1}
.sr-content{font-size:13px;color:#4E5969;line-height:1.5}
.sr-foot{margin-top:6px;font-size:12px}

/* ================= 业务列表 ================= */
.biz-tools{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.biz-tools .sp{flex:1;min-width:200px}
.biz-tools .inp{height:38px;margin:0}
.biz-table-wrap{border:1px solid #E4E7EC;border-radius:12px;overflow:auto;background:#fff}
.biz-table{width:100%;border-collapse:collapse;font-size:13px}
.biz-table th{background:#F7F8FA;padding:11px 14px;text-align:left;font-weight:600;color:#4E5969;font-size:12px;white-space:nowrap;position:sticky;top:0}
.biz-table td{padding:11px 14px;border-top:1px solid #EEF0F3;vertical-align:top}
.biz-table tbody tr{cursor:pointer;transition:background .15s}
.biz-table tbody tr:hover{background:#F7FAFF}
.biz-table .clip{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#4E5969}
.biz-table .sm{font-size:11px;margin-top:2px}
.biz-table .ops{white-space:nowrap;min-width:108px;vertical-align:middle}
.link-btn{color:var(--blue);font-size:13px;font-weight:600;cursor:pointer;background:none;border:0;padding:4px 8px;border-radius:6px;transition:background .15s}
.link-btn:hover{background:#E8F1FF}

/* 状态/类型标签（卡片化芯片） */
.st-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:10px;font-size:12px;font-weight:600;white-space:nowrap;border:1px solid transparent;box-shadow:0 1px 2px rgba(31,35,41,.05);line-height:1.35}
.st-badge.ok{background:#E7F8EE;color:#0E7A45;border-color:#C6EBD7}
.st-badge.warn{background:#FFF4E5;color:#B36B00;border-color:#F3D39B}
.st-badge.blue{background:#E8F1FF;color:#3771BB;border-color:#C9DBFF}
.st-badge.bad{background:#FDECEE;color:#C02A38;border-color:#F3C4CA}
.st-badge.gray{background:#F7F8FA;color:#6B7280;border-color:#E4E7EC}
.type-pill{display:inline-flex;align-items:center;padding:4px 11px;border-radius:10px;font-size:12px;font-weight:600;background:#F7F5FF;color:#6D28D9;white-space:nowrap;border:1px solid #E4DDF7;box-shadow:0 1px 2px rgba(31,35,41,.04);line-height:1.35}

/* ================= 模态框 ================= */
.modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.45);backdrop-filter:blur(4px);z-index:80;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .2s}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal{background:#fff;border-radius:16px;width:100%;max-width:560px;max-height:88vh;display:flex;flex-direction:column;border:1px solid rgba(231,236,243,.9);box-shadow:0 8px 16px rgba(15,23,42,.06),0 24px 64px rgba(15,23,42,.18);animation:popIn .22s cubic-bezier(.22,.61,.36,1);overflow:hidden}
.modal.wide{max-width:680px}
.modal.modal-org{max-width:440px}
@keyframes popIn{from{transform:scale(.96) translateY(6px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}
.modal-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 22px 14px;border-bottom:1px solid #EEF0F3;flex:none;background:linear-gradient(180deg,#FAFBFD,#fff)}
.modal-h h3{margin:0;font-size:17px;font-weight:700;color:#1F2329;letter-spacing:.01em}
.modal-kicker{font-size:11px;font-weight:700;color:#8A93A6;letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}
.modal-acts{display:flex;align-items:center;gap:6px}
.modal-x{width:32px;height:32px;border-radius:8px;font-size:15px;color:#8A8F99;cursor:pointer;display:grid;place-items:center;transition:all .15s;border:0;background:transparent;flex:none}
.modal-x:hover{background:#F2F3F5;color:#1F2329}
.modal-body{padding:18px 22px 8px;overflow:auto;flex:1}
.modal-f{display:flex;gap:10px;justify-content:flex-end;align-items:center;padding:14px 22px 18px;border-top:1px solid #EEF0F3;flex:none;background:#FAFBFD}
.modal-hint{font-size:13px;color:#5B6575;background:#F5F7FB;border:1px solid #E7ECF3;border-radius:10px;padding:10px 12px;margin-bottom:14px;line-height:1.45}
.modal-hint b{color:#1F2329;font-weight:650}
.form-stack{display:flex;flex-direction:column;gap:14px}
.form-stack .form-item{display:flex;flex-direction:column;gap:6px}
.form-stack .form-item label{font-size:13px;font-weight:600;color:#4E5969}
.form-stack .inp{height:40px;margin:0;border-radius:10px;border:1px solid #DDE1E7;background:#F8F9FB;padding:0 12px;font-size:14px}
.form-stack .inp:focus{border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(55,113,187,.12)}
.form-stack select.inp{padding-right:30px}

/* 表单 */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-item{display:flex;flex-direction:column;gap:6px}
.form-item.full{grid-column:1/-1}
.form-item label{font-size:13px;font-weight:600;color:#4E5969}
.form-item .req{color:#C02A38;margin-left:2px}
.form-item .inp{height:38px;margin:0}
.form-item .area{min-height:80px;height:auto;resize:vertical}
.form-group-title{grid-column:1/-1;font-size:12px;font-weight:700;color:#2E5F9E;letter-spacing:.05em;
  padding:6px 10px;margin-top:6px;background:linear-gradient(90deg,rgba(46,95,158,.08),transparent);
  border-left:3px solid #2E5F9E;border-radius:4px}
.inp.sm{height:30px;font-size:12.5px;padding:0 8px}
.btn[disabled]{opacity:.45;cursor:not-allowed}

/* 详情特殊区块 */
.detail-block{background:#F7F9FC;border:1px solid #E4E9F2;border-radius:10px;padding:12px 14px;margin-bottom:12px}
.detail-block .db-title{font-size:13px;font-weight:700;color:#1F2329;margin-bottom:10px;display:flex;align-items:center;flex-wrap:wrap}
.ki-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}
.ki-cell{background:#fff;border:1px solid #E4E9F2;border-radius:8px;padding:8px 10px}
.ki-cell span{display:block;font-size:11px;color:#8A8F99;margin-bottom:2px}
.ki-cell b{font-size:13px;color:#1F2329}
.transcript{background:#fff;border:1px solid #E4E9F2;border-radius:8px;padding:12px 14px;font-size:13px;line-height:1.9;color:#374151;max-height:220px;overflow:auto}
.stat-mini{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px}
.stat-mini > div{background:#fff;border:1px solid #E4E9F2;border-radius:8px;padding:10px 8px;text-align:center}
.stat-mini b{display:block;font-size:20px;color:#2E5F9E;font-weight:700}
.stat-mini span{font-size:11px;color:#8A8F99}

/* 详情 */
.detail-row{display:flex;padding:9px 0;border-bottom:1px dashed #EEF0F3;gap:14px}
.detail-row:last-child{border-bottom:0}
.detail-row .dl{flex:none;width:110px;color:#8A8F99;font-size:13px}
.detail-row .dv{flex:1;font-size:13px;color:#1F2329;line-height:1.6;word-break:break-word}

/* ============ 晨会看板（大屏 · 深藏蓝） ============ */
.board{border-radius:14px;overflow:hidden;background:linear-gradient(135deg,#0A1E3D,#0F2847);color:#fff;padding:0 0 20px}
.board-head{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-bottom:1px solid rgba(255,255,255,.12);font-size:18px}
.board-head b{letter-spacing:2px}
.board-head span{color:#8FB3E8;font-size:14px}
.board-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px 20px 4px}
.b-cell{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:16px 18px;min-height:150px}
.b-label{font-size:13px;color:#8FB3E8;letter-spacing:1px;margin-bottom:10px}
.b-num{font-size:56px;font-weight:700;line-height:1.1;font-family:'DIN Alternate',-apple-system,sans-serif}
.b-row{display:flex;gap:22px;font-size:15px;margin-top:10px}
.b-row.big{font-size:13px;color:#8FB3E8}
.b-row.big span{flex:1;text-align:center}
.b-row.big b{display:block;font-size:34px;color:#fff;margin-top:4px}
.b-row.sub{font-size:12.5px;color:#7A97C4}
.b-alert{background:rgba(238,10,36,.14);border-left:3px solid #EE5A6A;border-radius:6px;padding:9px 12px;font-size:14px;margin-bottom:8px}
.b-alert.dim{background:rgba(255,255,255,.06);border-left-color:#5A7CB4;color:#8FB3E8}
.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:9px;font-size:13.5px}
.bar-name{width:64px;color:#C9DAF5;text-align:right;flex:none}
.bar-track{flex:1;height:14px;background:rgba(255,255,255,.08);border-radius:7px;overflow:hidden}
.bar-fill{height:100%;background:linear-gradient(90deg,#3771BB,#5FA0E8);border-radius:7px}
.bar-num{width:22px;color:#fff;font-weight:600}
.trend{display:flex;gap:8px;align-items:flex-end;height:88px;padding-top:4px}
.t-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.t-col .t-bar{width:16px;background:linear-gradient(180deg,#5FA0E8,#3771BB);border-radius:3px 3px 0 0}
.t-col span{font-size:11px;color:#8FB3E8;margin-top:4px}
.t-col i{font-style:normal;font-size:11px;color:#fff}

/* ============ 一页纸周报（A4 单页） ============ */
.a4-page{background:#fff;border:1px solid #DDE3EC;border-radius:8px;max-width:820px;margin:0 auto;padding:36px 44px;box-shadow:0 2px 12px rgba(0,0,0,.06)}
.a4-title{font-size:22px;font-weight:700;text-align:center;letter-spacing:3px;padding-bottom:14px;border-bottom:2px solid #3771BB;margin-bottom:6px}
.a4-title span{font-size:14px;font-weight:400;color:#666;letter-spacing:0}
.a4-sec{margin-top:16px}
.a4-sec>b{display:block;font-size:15px;color:#3771BB;margin-bottom:6px}
.a4-row{font-size:13.5px;line-height:1.8;color:#323233}
.a4-row .a4-num{font-size:17px;color:#0A1E3D}
.a4-row .a4-ok{color:#07C160;font-size:15px}
.a4-row .a4-warn{color:#FF976A;font-size:15px}
@media print{
  .adm-top,.page-head,.biz-tools{display:none!important}
  .adm{padding:0!important}
  .a4-page{border:none;box-shadow:none;max-width:100%}
}

/* 网格添加模态按钮 */
.modal-ops{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.btn-ghost{padding:9px 18px;border-radius:8px;border:1px solid #D5DBE7;background:#fff;color:#5A6B85;cursor:pointer;font-size:14px}
.btn-ghost:hover{background:#F4F6FA}

/* ===== 管理端手机适配（窄屏：顶部导航横滚 + 网格降列） ===== */
@media (max-width: 900px){
  .adm-top-in{flex-wrap:wrap;padding:8px 12px;gap:8px}
  .adm-brand-text .sub{display:none}
  .adm-nav{width:100%;order:3;padding-bottom:2px}
  .adm-seg-wrap{flex:none}
  .adm-seg button{white-space:nowrap;padding:7px 11px;font-size:12.5px;flex:none;height:28px}
  .nav-cap{font-size:10px}
  .adm-me{margin-left:auto}
  .adm-me span{display:none}
  .adm{padding:12px!important}
  .biz-table-wrap{overflow-x:auto}
  .stat-grid{grid-template-columns:repeat(2,1fr)!important}
  .dash-grid{grid-template-columns:1fr!important}
  .board-grid{grid-template-columns:1fr!important}
  .form-grid{grid-template-columns:1fr!important}
  .page-head{flex-direction:column;gap:8px;align-items:flex-start}
  .modal.wide{width:96vw!important}
  .a4-page{padding:20px 18px}
}

/* ===== 导航分区（业务 | 配置） ===== */
.nav-cap{font-size:11px;font-weight:700;color:#8A93A6;letter-spacing:.06em;flex:none;white-space:nowrap}
.nav-div{width:1px;height:22px;background:#D8DEE8;flex:none;align-self:center;border-radius:1px}

/* ===== 网格管理卡片式 ===== */
.grid-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.gs-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;text-align:center}
.gs-num{font-size:26px;font-weight:800;color:var(--blue)}
.gs-label{font-size:12px;color:var(--sub);margin-top:2px}
.village-sec{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px}
.village-head{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px dashed #E7ECF3}
.village-name{font-size:15px;font-weight:700}
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.gcard{border:1.5px solid #E7ECF3;border-radius:12px;padding:12px 14px;background:#FAFBFD;transition:all .18s}
.gcard:hover{border-color:var(--blue);box-shadow:0 4px 14px rgba(48,112,209,.12);transform:translateY(-2px)}
.gcard-top{display:flex;justify-content:space-between;align-items:center}
.gcard-ops{display:flex;gap:2px}
.gcard-officer{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid #EDF0F6;border-radius:10px;padding:8px 10px}
.gcard-sel{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;color:var(--sub)}
.gcard-sel select{flex:1}
.av.sm{width:36px;height:36px;font-size:14px}
.obind{display:flex;align-items:center;gap:10px;background:#FAFBFD;border:1px solid #EDF0F6;border-radius:10px;padding:10px 12px}
.obind.warn{background:#FFF7F5;border-color:#F5D9D3}

/* 联动筛选 chip 选中态 / 在岗切换开关 */
.type-pill{cursor:pointer;background:#F7F9FC;border:1px solid #E1E6EF;color:#3D4654}
.type-pill.on{background:#EEF4FF;border-color:#1A66FF;color:#1A66FF;box-shadow:0 0 0 3px rgba(26,102,255,.12)}
.type-pill:hover{border-color:#B7C9E4}
.duty-dot{padding:4px 12px;border-radius:20px;border:1px solid #D5DBE7;background:#F4F6FA;color:#8A93A6;font-size:12px;cursor:pointer;transition:all .15s}
.duty-dot.on{background:#E8F7EE;border-color:#9FDDB6;color:#1D9E55}
.duty-dot.on::before{content:'● ';color:#1D9E55}
.duty-dot:hover{border-color:var(--blue,#3070D1)}

/* ===== 账号配置：头像 emoji 快选 ===== */
.avpick{display:flex;flex-wrap:wrap;gap:6px}
.avemj{width:34px;height:34px;border-radius:50%;border:1.5px solid #E2E7EF;background:#fff;font-size:17px;cursor:pointer;display:grid;place-items:center;transition:all .15s}
.avemj:hover{border-color:var(--blue,#3070D1);transform:scale(1.08)}
.avemj.on{border-color:var(--blue,#3070D1);background:#E8F1FF;box-shadow:0 0 0 2.5px rgba(48,112,209,.18)}
/* 列表小圆头像内的图片（复用 app.css img.avatar，保险起见补一份基础样式） */
.av.sm img.avatar{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}

/* 组织架构树：左侧部门树 + 右侧专门设置面板 */
.org-layout{display:grid;grid-template-columns:minmax(320px,1.2fr) minmax(280px,1fr);gap:14px;align-items:start}
.org-tree,.org-side{padding:14px 16px}
.org-tree-body{max-height:62vh;overflow:auto}
.org-row{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:8px;margin:2px 0;position:relative;min-height:34px}
.org-row:hover{background:#F5F7FB}
.org-row.on{background:#EEF4FF;outline:1px solid #C9DBFF}
.org-tog{width:22px;height:22px;border:0;background:transparent;cursor:pointer;color:#5B6575;flex:none}
.org-tog.blank{cursor:default;opacity:.35;display:inline-grid;place-items:center}
.org-name{border:0;background:transparent;text-align:left;cursor:pointer;flex:1;min-width:0;padding:0 4px 0 0;font:inherit;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 操作钮默认不占宽，避免把部门名挤成一字一竖行 */
.org-acts{display:none;gap:4px;flex-wrap:nowrap;flex:none;white-space:nowrap;margin-left:4px}
.org-row:hover .org-acts,.org-row.on .org-acts{display:flex}
@media (max-width:900px){
  .org-layout{grid-template-columns:1fr}
  .org-acts{display:flex;flex-wrap:wrap}
  .org-name{white-space:normal;overflow:visible;text-overflow:unset}
}

.org-tabs{display:flex;gap:8px;margin:0 0 14px;padding-bottom:12px;border-bottom:1px solid #E7ECF3;flex-wrap:wrap}
.org-tab{border:1px solid #DCE3EE;background:#fff;color:#3D4654;border-radius:12px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:0 1px 2px rgba(31,35,41,.04);transition:border-color .15s,background .15s,box-shadow .15s,color .15s}
.org-tab:hover{border-color:#B7C9E4;background:#F7FAFF}
.org-tab.on{background:#EEF4FF;border-color:#1A66FF;color:#1A66FF;box-shadow:0 0 0 3px rgba(26,102,255,.12)}
.org-layout{grid-template-columns:minmax(280px,.9fr) minmax(360px,1.3fr)}

/* ===== ticket/ops no-squash (v6) ===== */
.biz-table{min-width:1120px}
.biz-table select.inp.sm{min-width:112px;max-width:160px;width:auto;flex:none}
.biz-table .ops{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.biz-table .ops .link-btn{flex:none;white-space:nowrap;overflow:visible}
.biz-tools .type-pill{flex:none;align-items:center;padding:7px 14px;line-height:1.35;overflow:visible;border-radius:12px}
.link-btn{white-space:nowrap;flex:none}
.adm-seg button{flex:none;white-space:nowrap}

/* ===== top/org polish (v7) ===== */
.adm-top-in{max-width:1280px}
.adm .page-head{margin-top:18px}
.modal-f .btn,.modal-f .btn.primary,.modal-f .btn.ghost{min-width:88px}
.modal-org .modal-body{padding-bottom:16px}

/* 组织架构：理念提示 + 类型自增管理 */
.org-tip{margin:0 0 14px;padding:12px 14px;font-size:12.5px;line-height:1.55;color:#5B6575;background:linear-gradient(135deg,#F7F9FC,#EEF4FF);border:1px solid #DCE6F5}
.org-tip:before{content:"💡 ";}
.page-head .desc{line-height:1.55}
.kind-manage-tog{float:right;font-size:12px;font-weight:600}
.kind-manage{margin-top:10px;padding:12px;background:#F7F9FC;border:1px solid #E4EAF3;border-radius:12px}
.kind-manage-h{font-size:12px;font-weight:650;color:#5B6575;margin-bottom:10px}
.kind-chips{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.kind-chip{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #E4E7EC;border-radius:10px;padding:6px 8px 6px 10px}
.kind-chip .kind-rename{flex:1;min-width:0;height:32px;border:1px solid #E4E7EC;border-radius:8px;padding:0 10px;font-size:13px;background:#F8F9FB}
.kind-chip .kind-rename:focus{border-color:var(--blue);background:#fff;outline:0}
.kind-chip .kind-code{font-size:11px;color:#8A93A6;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;flex:none}
.kind-chip .link-btn[disabled]{opacity:.35;cursor:not-allowed}
.kind-add-row{display:flex;gap:8px;align-items:center}
.kind-add-row .inp{flex:1;height:36px;margin:0}
.modal.modal-org{max-width:480px}


/* ===== create/edit modal cards polish (v9) ===== */
.modal.modal-form{max-width:520px}
.modal.modal-acct{max-width:560px}
.modal.modal-biz{max-width:640px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:560px){.form-row{grid-template-columns:1fr}}
.form-stack .area,.form-stack textarea.inp{height:auto;min-height:88px;padding:10px 12px;line-height:1.5;resize:vertical}
.form-stack .inp:disabled{opacity:.72;background:#EEF0F3;color:#5B6575;cursor:not-allowed}
.form-stack .form-item .muted2{font-weight:400}
.av-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;background:#F8F9FB;border:1px solid #E7ECF3;border-radius:12px}
.modal .form-grid .inp,.modal .form-grid .area{border-radius:10px}
.modal .form-grid .inp:focus,.modal .form-grid .area:focus,
.form-item .inp:focus,.form-item .area:focus{
  border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(55,113,187,.12);outline:0
}
.form-grid-cards{gap:16px}
.modal-body .form-grid{margin-bottom:8px}
.modal-f .btn.danger{margin-right:auto}

/* ===== tickets photos + org adapt (v10) ===== */
.tk-thumbs{display:flex;align-items:center;gap:4px;flex-wrap:wrap;min-width:72px}
.tk-thumb{width:40px;height:40px;border-radius:8px;overflow:hidden;border:1px solid #E5E8EF;display:block;background:#F5F7FA;flex:none}
.tk-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.tk-photo-ph{font-size:12px;color:#5B6575;white-space:nowrap}
.tk-detail-shots{display:flex;flex-wrap:wrap;gap:8px}
.tk-shot{width:96px;height:96px;border-radius:12px;overflow:hidden;border:1px solid #E5E8EF;display:block;background:#F5F7FA}
.tk-shot img{width:100%;height:100%;object-fit:cover;display:block}
.tk-detail-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tk-detail-content{white-space:pre-wrap;line-height:1.55;font-size:14px;color:#1F2937}
.modal.modal-ticket{max-width:640px}
.org-tools{margin-top:0;padding-top:0}
.org-dist{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.org-dist-row{text-align:left;border:1px solid #E7ECF3;background:#F8F9FB;border-radius:12px;padding:12px 14px;cursor:pointer;transition:border-color .15s,background .15s}
.org-dist-row:hover{border-color:#B7C9E4;background:#fff}
.odr-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin-bottom:8px}
.odr-bar{height:6px;border-radius:999px;background:#E8ECF2;overflow:hidden}
.odr-bar>i{display:block;height:100%;background:linear-gradient(90deg,#3B82F6,#22C55E);border-radius:999px}
.odr-sub{margin-top:6px}


/* ===== tickets org tree picker (v11) ===== */
.tk-org-layout{display:flex;flex-direction:column;gap:12px;align-items:stretch;margin-top:12px}
.tk-org-pick{padding:12px 14px;position:static;max-height:none;min-width:0;width:100%}
.tk-org-pick-h{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}
.tk-org-pick-body{max-height:220px;overflow:auto;border:1px solid #E7ECF3;border-radius:12px;padding:6px 4px;background:#FBFCFD}
.tk-org-pick-foot{margin-top:10px;line-height:1.45}
.tk-org-row{display:flex;align-items:center;gap:4px;padding:4px 6px;border-radius:8px;margin:1px 0}
.tk-org-row:hover{background:#F0F4FA}
.tk-org-row.on{background:#EEF4FF;outline:1px solid #C9DBFF}
.tk-org-name{border:0;background:transparent;text-align:left;cursor:pointer;flex:1;min-width:0;padding:2px 4px;font:inherit;color:inherit;display:flex;flex-wrap:nowrap;gap:4px;align-items:baseline;overflow:hidden}
.tk-org-name:hover b{color:var(--blue,#3070D1)}
.tk-org-main{min-width:0}
@media (max-width:960px){
  .tk-org-layout{display:flex;flex-direction:column}
  .tk-org-pick{position:static}
  .tk-org-pick-body{max-height:240px}
}

/* v14 ticket toolbar extras */
.tk-main-toolbar{padding:12px 14px;position:static;z-index:5;margin:0;border-radius:14px;box-shadow:0 1px 3px rgba(31,35,41,.05)}
.tk-main-toolbar-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.tk-status-pills{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.tk-status-pills .type-pill{padding:7px 14px;border-radius:12px;min-height:34px}
.tk-filter-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;background:#fff;border:1px solid #E1E6EF;border-radius:12px;white-space:nowrap;box-shadow:0 1px 2px rgba(31,35,41,.04);color:#3D4654;font-weight:600}
.tk-filter-chip .muted2,.tk-filter-chip.muted2{color:#5B6575;font-weight:500}
.tk-table-wrap{border:1px solid #E7ECF3;border-radius:14px;background:#fff;box-shadow:0 1px 2px rgba(31,35,41,.03);overflow:auto}
.tk-table{min-width:1180px}
.tk-table .ops{min-width:132px}
.tk-empty{padding:40px 20px}
.tk-empty .muted2{margin-top:6px}
.tk-org-main{display:flex;flex-direction:column;gap:12px;min-width:0;width:100%}

/* ===== v16 卡片化标签 / 面板抛光 ===== */
.org-tree.card,.org-side.card,.tk-org-pick.card{
  border-radius:14px;box-shadow:0 1px 3px rgba(31,35,41,.05);border-color:#E7ECF3
}
.org-side .org-tabs{background:transparent}
.org-kind{
  display:inline-flex;align-items:center;padding:2px 8px;margin:0 2px;
  border-radius:8px;font-size:11px;font-weight:600;line-height:1.3;
  background:#F3F6FA;color:#5B6575;border:1px solid #E1E6EF;
  box-shadow:0 1px 1px rgba(31,35,41,.03);vertical-align:middle;white-space:nowrap
}
.org-kind.county{background:#EEF4FF;color:#1A66FF;border-color:#C9DBFF}
.org-kind.town,.org-kind.street{background:#F0FBF4;color:#0E7A45;border-color:#C6EBD7}
.org-kind.village,.org-kind.grid{background:#FFF8EB;color:#B36B00;border-color:#F3D39B}
.org-kind.station,.org-kind.squad{background:#F7F5FF;color:#6D28D9;border-color:#E4DDF7}
.org-meta-chip{
  display:inline-flex;align-items:center;padding:2px 7px;margin-left:4px;
  border-radius:8px;font-size:11px;font-weight:500;color:#6B7280;
  background:#F7F8FA;border:1px solid #EBEDF0;white-space:nowrap
}
.org-name{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}
.org-name b{flex:none;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.tk-org-name .org-kind,.tk-org-name .org-meta-chip{flex:none}
.tk-org-pick{box-shadow:0 1px 3px rgba(31,35,41,.05)}
.tk-org-pick-body{
  background:#FBFCFD;border:1px solid #E7ECF3;border-radius:12px;
  padding:8px 6px;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)
}
.tk-org-row.on{
  background:#EEF4FF;outline:1px solid #C9DBFF;
  box-shadow:0 1px 2px rgba(26,102,255,.08);border-radius:10px
}
.org-row.on{
  background:#EEF4FF;outline:1px solid #C9DBFF;
  box-shadow:0 1px 2px rgba(26,102,255,.08)
}
/* 表格内标签略收一点，避免撑破单元格 */
.biz-table .st-badge,.biz-table .type-pill,.biz-table .org-kind{
  max-width:100%;overflow:hidden;text-overflow:ellipsis
}
.biz-table .type-pill{padding:3px 9px;border-radius:9px}

/* ===== v17 合并组织 + 组织页抛光 ===== */
.tk-org-pick-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}
.tk-org-pick.is-merge{border-color:#C9DBFF;box-shadow:0 0 0 3px rgba(26,102,255,.08),0 1px 3px rgba(31,35,41,.05)}
.tk-org-pick.is-merge .tk-org-pick-h b{color:#1A66FF}
.tk-sel-bar{
  display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap;
  margin:0 0 10px;padding:10px 12px;background:#F7FAFF;border:1px solid #DCE8FA;border-radius:12px
}
.tk-sel-bar-inline{margin-top:10px;padding-top:10px;border-top:1px dashed #E1E6EF;background:transparent;border-left:0;border-right:0;border-bottom:0;border-radius:0}
.tk-sel-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0;flex:1}
.tk-sel-ops{display:flex;gap:8px;align-items:center;flex:none}
.tk-sel-chip{
  display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:12px;
  background:#fff;border:1px solid #D5E3F7;color:#1F2937;font-size:12px;font-weight:600;
  box-shadow:0 1px 2px rgba(31,35,41,.04);cursor:pointer;line-height:1.3
}
.tk-sel-chip:hover{border-color:#1A66FF;background:#EEF4FF}
.tk-sel-chip .tk-sel-x{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;background:#F0F3F8;color:#5B6575;font-size:12px;line-height:1}
.tk-sel-chip:hover .tk-sel-x{background:#FEE2E2;color:#C02A38}
.tk-org-row.merge{gap:6px}
.tk-org-check{
  width:18px;height:18px;border-radius:6px;border:1.5px solid #C9D3E3;background:#fff;
  display:inline-grid;place-items:center;font-size:11px;color:#fff;flex:none
}
.tk-org-check.on{background:#1A66FF;border-color:#1A66FF}
.tk-org-child-btn{flex:none;font-size:12px;padding:2px 8px}
.tk-org-row.merge .tk-org-name{min-width:0}

/* 组织架构页 */
.org-tree-head,.org-side-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}
.org-tree-head{justify-content:space-between}
.org-side-head{flex-direction:column;align-items:flex-start;gap:6px;padding-bottom:12px;border-bottom:1px solid #E7ECF3;margin-bottom:12px}
.org-side-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.org-side-name{font-size:16px;line-height:1.3}
.org-side-path{line-height:1.4}
.org-side-stats{display:flex;gap:6px;flex-wrap:wrap}
.org-panel-toolbar{
  display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;
  margin-bottom:12px;padding:10px 12px;background:#F7F9FC;border:1px solid #E7ECF3;border-radius:12px
}
.org-panel-body{min-width:0}
.org-row{
  border:1px solid transparent;transition:background .15s,border-color .15s,box-shadow .15s
}
.org-row:hover{
  background:#F5F7FB;border-color:#E7ECF3;box-shadow:0 1px 2px rgba(31,35,41,.03)
}
.org-row.on{
  background:#EEF4FF;outline:none;border-color:#C9DBFF;box-shadow:0 1px 2px rgba(26,102,255,.08)
}
.org-acts .link-btn{
  padding:3px 8px;border-radius:8px;background:#fff;border:1px solid #E1E6EF;box-shadow:0 1px 1px rgba(31,35,41,.03)
}
.org-acts .link-btn:hover{border-color:#B7C9E4;background:#F7FAFF}
.org-acts .link-btn.danger:hover{border-color:#F3C4CA;background:#FDECEE;color:#C02A38}
/* 保持：操作钮默认不占宽，避免竖排挤名 */
.org-acts{display:none}
.org-row:hover .org-acts,.org-row.on .org-acts{display:flex}


/* ===== v18 全部收起 + 同级调序 + 看板自定义 ===== */
.org-tree-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.org-tree-tools{display:flex;gap:6px;flex-wrap:wrap}
.org-acts .link-btn[disabled]{opacity:.35;pointer-events:none;cursor:default}
.tk-org-pick-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.tk-sel-chip.on{background:#EEF4FF;border-color:#C9DBFF}
.board-edit-panel{margin-bottom:12px;padding:14px 16px}
.board-edit-h{display:flex;align-items:baseline;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.board-edit-cells{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:8px}
.board-cell-tog{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border:1px solid #E3E9F2;border-radius:12px;background:#F8FAFD;font-size:13px;cursor:pointer}
.board-cell-tog input{accent-color:var(--blue,#3070D1)}
.board-edit-f{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.org-acts{display:none;gap:4px;flex-wrap:nowrap;flex:none;white-space:nowrap;margin-left:4px}
.org-row:hover .org-acts,.org-row.on .org-acts{display:flex}
.org-name{display:flex;align-items:center;gap:6px;flex:1;min-width:0;flex-wrap:nowrap;overflow:hidden;text-align:left;border:0;background:transparent;cursor:pointer;font:inherit;color:inherit;padding:2px 4px}
.org-name b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:none;max-width:100%}


/* 组织节点值班电话 */
.org-duty-card{margin:0 0 12px;padding:12px 14px;background:#F6F8FB;border:1px solid #E4EAF2;border-radius:12px}
.org-duty-lab{display:flex;align-items:baseline;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.org-duty-lab b{font-size:13.5px}
.org-duty-row{display:flex;gap:8px;align-items:center}
.org-duty-row .inp{flex:1;min-width:0}
